YouTube Configuration

Read and Make YouTube Configuration

目前为 2023-05-04 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name YouTube Configuration
  3. // @name:en YouTube Configuration
  4. // @description Read and Make YouTube Configuration
  5. // @description:en Read and Make YouTube Configuration
  6.  
  7. // @version 0.1.2
  8. // @require https://gf.qytechs.cn/scripts/465421-vanilla-js-dialog/code/Vanilla%20JS%20Dialog.js?version=1184885
  9.  
  10. // @namespace http://tampermonkey.net/
  11. // @author CY Fung
  12. // @license MIT
  13. // @run-at document-start
  14. // @match https://www.youtube.com/*
  15. // @exclude /^https?://\S+\.(txt|png|jpg|jpeg|gif|xml|svg|manifest|log|ini)[^\/]*$/
  16. // @icon https://cdn-icons-png.flaticon.com/512/1850/1850952.png
  17.  
  18. // @grant GM_registerMenuCommand
  19. // @grant unsafeWindow
  20. // @noframes
  21. // ==/UserScript==
  22.  
  23. (function (uWind) {
  24. 'use strict';
  25. uWind = uWind || window;
  26.  
  27. function insertCSS(cssText) {
  28. const styleEl = document.createElement('style');
  29. styleEl.textContent = cssText;
  30. document.head.appendChild(styleEl);
  31. }
  32.  
  33.  
  34. function addCSSForList() {
  35.  
  36. const style =
  37. `
  38. html {
  39. --yc-background-color: #fbfbfb;
  40. --yc-text-color: #333;
  41. --yc-border-color: #ccc;
  42. --yc-selected-background-color: #cce6ff;
  43. --yc-input-outline-color: currentColor;
  44. --yc-list-entry-mainkey-color: rgb(158, 45, 30);
  45. --yc-list-entry-minorkey-same-color: rgb(194, 185, 193);
  46. --yc-list-entry-minorkey-diff-color: rgb(199, 29, 185);
  47. }
  48.  
  49. html[dark] {
  50. --yc-background-color: #222;
  51. --yc-text-color: #ddd;
  52. --yc-border-color: #555;
  53. --yc-selected-background-color: #4d4d4d;
  54. --yc-input-outline-color: #aaa;
  55. --yc-list-entry-mainkey-color: rgb(248, 160, 20);
  56. --yc-list-entry-minorkey-same-color: rgb(82, 77, 82);
  57. --yc-list-entry-minorkey-diff-color: rgb(228, 90, 217);
  58. }
  59.  
  60.  
  61. .list-container-wrapper{
  62.  
  63. display: block;
  64. overflow-x: scroll;
  65. white-space: nowrap;
  66. -webkit-overflow-scrolling: touch;
  67. max-width: 80vw;
  68. max-height: 60vh;
  69. overflow: auto;
  70. border: 1px solid var(--yc-border-color);
  71. }
  72. .list-container {
  73. font-family: monospace;
  74. font-size: 14px;
  75. margin: 10px auto;
  76. background-color: var(--yc-background-color);
  77. color: var(--yc-text-color);
  78. display: table;
  79. border-collapse: collapse;
  80. width: calc(100% - 16px);
  81. }
  82.  
  83. .list-container:focus {
  84. outline: 0;
  85. }
  86.  
  87. .list-entry {
  88. display: table-row;
  89. cursor: pointer;
  90.  
  91. }
  92.  
  93. html body .list-container[class] .list-entry[class]{
  94. user-select: none !important;
  95. }
  96.  
  97. .list-entry.selected {
  98. background-color: var(--yc-selected-background-color);
  99. }
  100.  
  101. .list-entry span.key,
  102. .list-entry span.value {
  103. display: table-cell;
  104. /* padding: 2px 8px; */
  105. padding:0;
  106. }
  107.  
  108. .list-entry span.key {
  109.  
  110. padding-left: 4px;
  111. padding-top: 2px;
  112. padding-bottom: 2px;
  113. max-width: 38em;
  114. min-width: 12em;
  115. }
  116.  
  117.  
  118. .list-entry span.value {
  119. max-width: 12em;
  120. min-width: 12em;
  121. }
  122.  
  123. .list-entry input.value {
  124. display: none;
  125. -webkit-appearance: none;
  126. -moz-appearance: none;
  127. appearance: none;
  128. border: none;
  129. padding: 0;
  130. font-family: inherit;
  131. font-size: inherit;
  132. cursor: text;
  133. border: 0;
  134. outline: 1px solid var(--yc-input-outline-color);
  135. border-radius: 4px;
  136. }
  137.  
  138. .list-entry.editing span.value div {
  139. display: none;
  140. }
  141.  
  142. .list-entry.editing input.value {
  143. display: table-cell;
  144. }
  145.  
  146. .list-entry span.key {
  147. margin-right: 5px;
  148. font-weight: normal;
  149. }
  150.  
  151. .list-entry.list-entry-mainkey span.key div{
  152. /* font-weight: 900 !important;*/
  153. /*
  154. color:rgb(158, 45, 30); */
  155. }
  156.  
  157. .list-entry.list-entry-mainkey span.key div::before{
  158.  
  159. display:block;
  160. content:'※';
  161.  
  162. color: var(--yc-list-entry-mainkey-color);
  163. float:left;
  164. margin-right:8px;
  165. }
  166.  
  167.  
  168.  
  169. .list-entry.list-entry-minorkey-diff span.key div ,
  170. .list-entry.list-entry-minorkey-diff span.value div {
  171.  
  172. font-weight: normal;
  173.  
  174. color:var(--yc-list-entry-minorkey-diff-color);
  175. }
  176.  
  177. .list-entry.list-entry-minorkey-same span.key div,
  178. .list-entry.list-entry-minorkey-same span.value div {
  179.  
  180. font-weight: normal;
  181.  
  182. color:var(--yc-list-entry-minorkey-same-color);
  183. }
  184.  
  185.  
  186. .list-container-wrapper::-webkit-scrollbar {
  187. width: 7px;
  188. height: 7px;
  189. }
  190.  
  191. .list-container-wrapper::-webkit-scrollbar-thumb {
  192. border-radius: 4px;
  193. background-color: rgba(0, 0, 0, .5);
  194. box-shadow: 0 0 1px rgba(255, 255, 255, .5);
  195. }
  196.  
  197. .list-container-wrapper::-webkit-scrollbar-thumb:hover {
  198. background-color: rgba(0, 0, 0, .7);
  199. }
  200. .list-entry span.key div,
  201. .list-entry span.value div {
  202. display: block;
  203. white-space: nowrap;
  204. overflow: hidden;
  205. text-overflow: ellipsis;
  206.  
  207. }
  208. .list-entry.selected.editing span.key div{
  209. white-space: pre-wrap;
  210. height:auto;
  211.  
  212. overflow-wrap: anywhere;
  213. white-space: pre-wrap !important;
  214.  
  215.  
  216. }
  217.  
  218. .list-entry input{
  219.  
  220. width: calc(100% - 32px) !important;
  221.  
  222. }
  223.  
  224. .list-hide-minor-same .list-entry.list-entry-minorkey-same{
  225. display:none;
  226. }
  227.  
  228. .list-entry .value::before{
  229. content:':';
  230. float:left;
  231. margin-right:1em;
  232. }
  233. `;
  234.  
  235. insertCSS(style);
  236.  
  237. }
  238.  
  239.  
  240. function getModuleGetConfig() {
  241.  
  242. function getConfig() {
  243. return uWind.yt.config_;
  244. }
  245.  
  246. const prefs = {
  247. 'PLAYER_CONFIG': 40,
  248. 'PLAYER_REFERENCE': 40,
  249. 'FEEDBACK_LOCALE_LANGUAGE': 40,
  250. 'SANDBAR_LOCALE': 40,
  251. 'HL_LOCALE': 40,
  252. 'GAPI_LOCALE': 38,
  253. 'IS_TABLET': 36,
  254. 'WEB_PLAYER_CONTEXT_CONFIGS': 34,
  255. 'HL': 34,
  256. 'FILLER_DATA.player': 32,
  257. 'FILLER_DATA.player.sts': 32,
  258. 'INNERTUBE_CONTEXT': 30,
  259. 'PAGE_NAME': 28,
  260. 'LIST_ID': 26,
  261. 'INNERTUBE_CONTEXT_GL': 24,
  262. 'INNERTUBE_CONTEXT_HL': 24,
  263. 'JS_COMMON_MODULE': 22,
  264. 'BUTTON_REWORK': 20,
  265.  
  266. 'SBOX_SETTINGS.IS_POLYMER': 18,
  267.  
  268. 'DISABLE_YT_IMG_DELAY_LOADING': 16,
  269.  
  270.  
  271.  
  272.  
  273.  
  274. 'LOGGED_IN': 14,
  275. 'DELEGATED_SESSION_ID': 14,
  276. 'INNERTUBE_CONTEXT.client.visitorData': 14,
  277. 'INNERTUBE_CONTEXT_CLIENT_NAME': 14,
  278. 'INNERTUBE_CONTEXT_CLIENT_VERSION': 14,
  279. 'ID_TOKEN': 14
  280. }
  281.  
  282. const flags = `
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292. polymer_verifiy_app_state
  293.  
  294. warm_load_nav_start_web
  295.  
  296. kevlar_player_response_swf_config_wrapper_killswitch
  297.  
  298. desktop_delay_player_resizing
  299.  
  300. desktop_player_touch_gestures
  301.  
  302. web_animated_like
  303.  
  304. web_animated_like_lazy_load
  305.  
  306. render_unicode_emojis_as_small_images
  307.  
  308. kevlar_refresh_on_theme_change
  309.  
  310.  
  311. kevlar_watch_cinematics
  312.  
  313. kevlar_watch_comments_panel_button
  314.  
  315.  
  316. kevlar_watch_hide_comments_while_panel_open
  317.  
  318.  
  319. kevlar_watch_comments_ep_disable_theater
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329. kevlar_updated_logo_icons
  330.  
  331. kevlar_updated_icons
  332.  
  333. kevlar_system_icons
  334.  
  335. kevlar_watch_color_update
  336.  
  337. desktop_mic_background
  338.  
  339. web_snackbar_ui_refresh
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347. web_darker_dark_theme
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357. kevlar_updated_logo_icons
  358.  
  359. kevlar_updated_icons
  360.  
  361. kevlar_system_icons
  362.  
  363. kevlar_watch_color_update
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370. kevlar_updated_logo_icons
  371.  
  372. kevlar_updated_icons
  373.  
  374. kevlar_system_icons
  375.  
  376. kevlar_watch_color_update
  377.  
  378. desktop_mic_background
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387. kevlar_updated_icons
  388.  
  389. kevlar_system_icons
  390.  
  391. kevlar_watch_color_update
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399. kevlar_watch_snap_sizing
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406. desktop_mic_background
  407.  
  408.  
  409.  
  410. polymer_verifiy_app_state
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420. kevlar_player_response_swf_config_wrapper_killswitch
  421.  
  422.  
  423. desktop_player_touch_gestures
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430. kevlar_updated_icons
  431.  
  432. kevlar_system_icons
  433.  
  434. kevlar_watch_color_update
  435.  
  436. kevlar_watch_structured_description_height_matches_player
  437.  
  438. kevlar_watch_skeleton
  439.  
  440. web_structure_description_show_metadata
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450. kevlar_unavailable_video_error_ui_client
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458. web_snackbar_ui_refresh
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465. kevlar_refresh_on_theme_change
  466.  
  467. kevlar_watch_cinematics
  468.  
  469. kevlar_watch_metadata_refresh
  470.  
  471. kevlar_watch_metadata_refresh_attached_subscribe
  472.  
  473. kevlar_watch_metadata_refresh_clickable_description
  474.  
  475. kevlar_watch_metadata_refresh_compact_view_count
  476.  
  477. kevlar_watch_metadata_refresh_description_info_dedicated_line
  478.  
  479. kevlar_watch_metadata_refresh_description_inline_expander
  480.  
  481. kevlar_watch_metadata_refresh_description_primary_color
  482.  
  483. kevlar_watch_metadata_refresh_for_live_killswitch
  484.  
  485. kevlar_watch_metadata_refresh_full_width_description
  486.  
  487. kevlar_watch_metadata_refresh_narrower_item_wrap
  488.  
  489. kevlar_watch_metadata_refresh_relative_date
  490.  
  491. kevlar_watch_metadata_refresh_top_aligned_actions
  492.  
  493. kevlar_watch_modern_metapanel
  494.  
  495. kevlar_watch_modern_panels
  496.  
  497. kevlar_watch_panel_height_matches_player
  498.  
  499. web_animated_like
  500.  
  501. web_button_rework
  502.  
  503. web_button_rework_with_live
  504.  
  505. web_darker_dark_theme
  506.  
  507. web_filled_subscribed_button
  508.  
  509. web_guide_ui_refresh
  510.  
  511. web_modern_ads
  512.  
  513. web_modern_buttons
  514.  
  515. web_modern_chips
  516.  
  517. web_modern_dialogs
  518.  
  519. web_modern_playlists
  520.  
  521. web_modern_subscribe
  522.  
  523. web_rounded_containers
  524.  
  525. web_rounded_thumbnails
  526.  
  527. web_searchbar_style
  528.  
  529. web_segmented_like_dislike_button
  530.  
  531. web_sheets_ui_refresh
  532.  
  533. web_snackbar_ui_refresh
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542. kevlar_watch_comments_panel_button
  543.  
  544. kevlar_watch_hide_comments_while_panel_open
  545.  
  546. kevlar_watch_comments_ep_disable_theater
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553. creator_enable_dark_theme_in_account_menu
  554.  
  555. enable_playlist_list_in_content
  556.  
  557. polymer_verifiy_app_state
  558.  
  559. studio_system_icons
  560.  
  561.  
  562.  
  563. `.replace(/\s*[\r\n]+\s*/g, '\n').trim().split('\n');
  564.  
  565. // console.log(flags)
  566.  
  567.  
  568. let pFlags = [...Object.keys(prefs)];
  569. let qFlags = new Set();
  570.  
  571. for (const f of pFlags) qFlags.add(`${f}`);
  572. for (const f of flags) qFlags.add(`EXPERIMENT_FLAGS.${f}`);
  573. console.log([...qFlags.keys()]);
  574.  
  575. const experFlags = {
  576.  
  577.  
  578.  
  579. }
  580.  
  581.  
  582. const logger = new Map();
  583.  
  584. const skipObjects = ['device', 'openPopupConfig', 'INNERTUBE_CONTEXT.client'];
  585. const skipper = new Set();
  586. for (const skipObject of skipObjects) {
  587. skipper.add(skipObject + '.');
  588.  
  589. }
  590.  
  591.  
  592. const keywords = [
  593. 'apiKey',
  594. 'api-key',
  595. 'API-KEY',
  596. 'SESSION',
  597. 'Id',
  598. 'ID',
  599. 'token',
  600. 'id',
  601. 'visitor',
  602. 'VISITOR',
  603. 'Visitor',
  604. 'datasyncId',
  605. 'DEVICE',
  606. 'Device',
  607. 'device',
  608. 'endpoint',
  609. 'GAPI-HINT-PARAMS',
  610. 'clickTracking',
  611. 'TRACKING',
  612. 'LOGIN-INFO',
  613. 'configData',
  614. 'SITEKEY',
  615. 'CLIENT',
  616. 'HASH',
  617. 'URL',
  618. 'URLS',
  619. 'client',
  620. 'TOKEN',
  621. 'rid',
  622. 'host',
  623. 'HOST',
  624. 'Host',
  625. 'Domain',
  626. 'DOMAIN',
  627. 'domain'
  628. ];
  629.  
  630. const keywordRegexp = new RegExp('\\b(' + keywords.join('|') + ')\\b')
  631.  
  632. function looper(obj, prefix, ws) {
  633. if (ws.has(obj)) return;
  634. ws.add(obj);
  635. if (obj instanceof Node) return;
  636. if (skipper.has(prefix)) return;
  637. for (const k of Object.keys(obj)) {
  638.  
  639.  
  640.  
  641.  
  642. let p = 0;
  643. switch (typeof obj[k]) {
  644. case 'boolean':
  645. p = 1;
  646. case 'string':
  647. case 'number':
  648. p = 2;
  649. break;
  650. case 'object':
  651. if (!obj[k]) {
  652. p = 1;
  653. }
  654. else {
  655. p = 3;
  656. }
  657. break;
  658. }
  659.  
  660. if (p == 2 || p == 3) {
  661.  
  662. if (keywordRegexp.test(k.replace(/[^a-zA-Z0-9]/g, '-'))) p = 0;
  663.  
  664. }
  665.  
  666. if (p === 1 || p === 2) {
  667.  
  668.  
  669. logger.set(prefix + k, obj[k]);
  670.  
  671. } else if (p === 3) {
  672.  
  673.  
  674. looper(obj[k], prefix + k + '.', ws);
  675. }
  676.  
  677. }
  678. }
  679.  
  680.  
  681.  
  682. let config_ = getConfig();
  683. logger.clear();
  684. looper(config_, '', new WeakSet());
  685.  
  686. let looperKeys = [...logger.keys()];
  687. looperKeys.sort();
  688. let p = {};
  689. for (const key of looperKeys) {
  690. p[key] = logger.get(key);
  691. }
  692.  
  693. return p;
  694.  
  695.  
  696. };
  697.  
  698.  
  699.  
  700. const mainKeys = [
  701. "PLAYER_CONFIG",
  702. "PLAYER_REFERENCE",
  703. "FEEDBACK_LOCALE_LANGUAGE",
  704. "SANDBAR_LOCALE",
  705. "HL_LOCALE",
  706. "GAPI_LOCALE",
  707. "IS_TABLET",
  708. "WEB_PLAYER_CONTEXT_CONFIGS",
  709. "HL",
  710. "FILLER_DATA.player",
  711. "FILLER_DATA.player.sts",
  712. "INNERTUBE_CONTEXT",
  713. "PAGE_NAME",
  714. "LIST_ID",
  715. "INNERTUBE_CONTEXT_GL",
  716. "INNERTUBE_CONTEXT_HL",
  717. "JS_COMMON_MODULE",
  718. "BUTTON_REWORK",
  719. "SBOX_SETTINGS.IS_POLYMER",
  720. "DISABLE_YT_IMG_DELAY_LOADING",
  721. "LOGGED_IN",
  722. "DELEGATED_SESSION_ID",
  723. "INNERTUBE_CONTEXT.client.visitorData",
  724. "INNERTUBE_CONTEXT_CLIENT_NAME",
  725. "INNERTUBE_CONTEXT_CLIENT_VERSION",
  726. "ID_TOKEN",
  727. "EXPERIMENT_FLAGS.polymer_verifiy_app_state",
  728. "EXPERIMENT_FLAGS.warm_load_nav_start_web",
  729. "EXPERIMENT_FLAGS.kevlar_player_response_swf_config_wrapper_killswitch",
  730. "EXPERIMENT_FLAGS.desktop_delay_player_resizing",
  731. "EXPERIMENT_FLAGS.desktop_player_touch_gestures",
  732. "EXPERIMENT_FLAGS.web_animated_like",
  733. "EXPERIMENT_FLAGS.web_animated_like_lazy_load",
  734. "EXPERIMENT_FLAGS.render_unicode_emojis_as_small_images",
  735. "EXPERIMENT_FLAGS.kevlar_refresh_on_theme_change",
  736. "EXPERIMENT_FLAGS.kevlar_watch_cinematics",
  737. "EXPERIMENT_FLAGS.kevlar_watch_comments_panel_button",
  738. "EXPERIMENT_FLAGS.kevlar_watch_hide_comments_while_panel_open",
  739. "EXPERIMENT_FLAGS.kevlar_watch_comments_ep_disable_theater",
  740. "EXPERIMENT_FLAGS.kevlar_updated_logo_icons",
  741. "EXPERIMENT_FLAGS.kevlar_updated_icons",
  742. "EXPERIMENT_FLAGS.kevlar_system_icons",
  743. "EXPERIMENT_FLAGS.kevlar_watch_color_update",
  744. "EXPERIMENT_FLAGS.desktop_mic_background",
  745. "EXPERIMENT_FLAGS.web_snackbar_ui_refresh",
  746. "EXPERIMENT_FLAGS.web_darker_dark_theme",
  747. "EXPERIMENT_FLAGS.kevlar_watch_snap_sizing",
  748. "EXPERIMENT_FLAGS.kevlar_watch_structured_description_height_matches_player",
  749. "EXPERIMENT_FLAGS.kevlar_watch_skeleton",
  750. "EXPERIMENT_FLAGS.web_structure_description_show_metadata",
  751. "EXPERIMENT_FLAGS.kevlar_unavailable_video_error_ui_client",
  752. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh",
  753. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_attached_subscribe",
  754. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_clickable_description",
  755. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_compact_view_count",
  756. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_description_info_dedicated_line",
  757. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_description_inline_expander",
  758. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_description_primary_color",
  759. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_for_live_killswitch",
  760. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_full_width_description",
  761. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_narrower_item_wrap",
  762. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_relative_date",
  763. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_top_aligned_actions",
  764. "EXPERIMENT_FLAGS.kevlar_watch_modern_metapanel",
  765. "EXPERIMENT_FLAGS.kevlar_watch_modern_panels",
  766. "EXPERIMENT_FLAGS.kevlar_watch_panel_height_matches_player",
  767. "EXPERIMENT_FLAGS.web_button_rework",
  768. "EXPERIMENT_FLAGS.web_button_rework_with_live",
  769. "EXPERIMENT_FLAGS.web_filled_subscribed_button",
  770. "EXPERIMENT_FLAGS.web_guide_ui_refresh",
  771. "EXPERIMENT_FLAGS.web_modern_ads",
  772. "EXPERIMENT_FLAGS.web_modern_buttons",
  773. "EXPERIMENT_FLAGS.web_modern_chips",
  774. "EXPERIMENT_FLAGS.web_modern_dialogs",
  775. "EXPERIMENT_FLAGS.web_modern_playlists",
  776. "EXPERIMENT_FLAGS.web_modern_subscribe",
  777. "EXPERIMENT_FLAGS.web_rounded_containers",
  778. "EXPERIMENT_FLAGS.web_rounded_thumbnails",
  779. "EXPERIMENT_FLAGS.web_searchbar_style",
  780. "EXPERIMENT_FLAGS.web_segmented_like_dislike_button",
  781. "EXPERIMENT_FLAGS.web_sheets_ui_refresh",
  782. "EXPERIMENT_FLAGS.creator_enable_dark_theme_in_account_menu",
  783. "EXPERIMENT_FLAGS.enable_playlist_list_in_content",
  784. "EXPERIMENT_FLAGS.studio_system_icons"
  785. ];
  786. const minorKeyValues =
  787.  
  788. {
  789. "BUTTON_REWORK": true,
  790. "CSI_SERVICE_NAME": "youtube",
  791. "DCLKSTAT": 1,
  792. "DEFERRED_DETACH": true,
  793. "DISABLE_WARM_LOADS": false,
  794. "DISABLE_YT_IMG_DELAY_LOADING": false,
  795. "ELEMENT_POOL_DEFAULT_CAP": 75,
  796. "EXPERIMENT_FLAGS.H5_async_logging_delay_ms": 30000,
  797. "EXPERIMENT_FLAGS.H5_enable_full_pacf_logging": true,
  798. "EXPERIMENT_FLAGS.H5_use_async_logging": true,
  799. "EXPERIMENT_FLAGS.addto_ajax_log_warning_fraction": 0.1,
  800. "EXPERIMENT_FLAGS.allow_skip_networkless": true,
  801. "EXPERIMENT_FLAGS.autoescape_tempdata_url": true,
  802. "EXPERIMENT_FLAGS.autoplay_pause_by_lact_sampling_fraction": 0,
  803. "EXPERIMENT_FLAGS.autoplay_pause_by_lact_sec": 0,
  804. "EXPERIMENT_FLAGS.autoplay_time": 8000,
  805. "EXPERIMENT_FLAGS.autoplay_time_for_fullscreen": 3000,
  806. "EXPERIMENT_FLAGS.autoplay_time_for_music_content": 3000,
  807. "EXPERIMENT_FLAGS.background_thread_flush_logs_due_to_batch_limit": true,
  808. "EXPERIMENT_FLAGS.botguard_async_snapshot_timeout_ms": 3000,
  809. "EXPERIMENT_FLAGS.browse_ajax_log_warning_fraction": 1,
  810. "EXPERIMENT_FLAGS.browse_next_continuations_migration_playlist": true,
  811. "EXPERIMENT_FLAGS.c3_watch_page_component": true,
  812. "EXPERIMENT_FLAGS.cache_utc_offset_minutes_in_pref_cookie": true,
  813. "EXPERIMENT_FLAGS.cancel_pending_navs": true,
  814. "EXPERIMENT_FLAGS.caption_edit_on_hover": true,
  815. "EXPERIMENT_FLAGS.check_navigator_accuracy_timeout_ms": 0,
  816. "EXPERIMENT_FLAGS.check_user_lact_at_prompt_shown_time_on_web": true,
  817. "EXPERIMENT_FLAGS.cinematic_watch_css_filter_blur_strength": 40,
  818. "EXPERIMENT_FLAGS.cinematic_watch_effect_opacity": 0.4,
  819. "EXPERIMENT_FLAGS.cinematic_watch_fade_out_duration": 500,
  820. "EXPERIMENT_FLAGS.clear_user_partitioned_ls": true,
  821. "EXPERIMENT_FLAGS.cloud_save_game_data_rate_limit_ms": 3000,
  822. "EXPERIMENT_FLAGS.cold_missing_history": true,
  823. "EXPERIMENT_FLAGS.compress_gel": true,
  824. "EXPERIMENT_FLAGS.compression_disable_point": 10,
  825. "EXPERIMENT_FLAGS.compression_performance_threshold": 250,
  826. "EXPERIMENT_FLAGS.csi_on_gel": true,
  827. "EXPERIMENT_FLAGS.debug_forced_internalcountrycode": "",
  828. "EXPERIMENT_FLAGS.decorate_autoplay_renderer": true,
  829. "EXPERIMENT_FLAGS.defer_menus": true,
  830. "EXPERIMENT_FLAGS.defer_overlays": true,
  831. "EXPERIMENT_FLAGS.defer_rendering_outside_visible_area": true,
  832. "EXPERIMENT_FLAGS.deprecate_csi_has_info": true,
  833. "EXPERIMENT_FLAGS.deprecate_pair_servlet_enabled": true,
  834. "EXPERIMENT_FLAGS.deprecate_two_way_binding_child": true,
  835. "EXPERIMENT_FLAGS.deprecate_two_way_binding_parent": true,
  836. "EXPERIMENT_FLAGS.desktop_add_to_playlist_renderer_dialog_popup": true,
  837. "EXPERIMENT_FLAGS.desktop_adjust_touch_target": true,
  838. "EXPERIMENT_FLAGS.desktop_animate_miniplayer": true,
  839. "EXPERIMENT_FLAGS.desktop_delay_player_resizing": true,
  840. "EXPERIMENT_FLAGS.desktop_enable_dmpanel_click_drag_scroll": true,
  841. "EXPERIMENT_FLAGS.desktop_enable_dmpanel_scroll": true,
  842. "EXPERIMENT_FLAGS.desktop_enable_dmpanel_wheel_scroll": true,
  843. "EXPERIMENT_FLAGS.desktop_image_cta_no_background": true,
  844. "EXPERIMENT_FLAGS.desktop_keyboard_capture_keydown_killswitch": true,
  845. "EXPERIMENT_FLAGS.desktop_log_img_click_location": true,
  846. "EXPERIMENT_FLAGS.desktop_mix_use_sampled_color_for_bottom_bar": true,
  847. "EXPERIMENT_FLAGS.desktop_mix_use_sampled_color_for_bottom_bar_search": true,
  848. "EXPERIMENT_FLAGS.desktop_mix_use_sampled_color_for_bottom_bar_watch_next": true,
  849. "EXPERIMENT_FLAGS.desktop_notification_high_priority_ignore_push": true,
  850. "EXPERIMENT_FLAGS.desktop_notification_set_title_bar": true,
  851. "EXPERIMENT_FLAGS.desktop_persistent_menu": true,
  852. "EXPERIMENT_FLAGS.desktop_search_bigger_thumbs_style": "DEFAULT",
  853. "EXPERIMENT_FLAGS.desktop_search_prominent_thumbs": true,
  854. "EXPERIMENT_FLAGS.desktop_search_suggestion_tap_target": 0,
  855. "EXPERIMENT_FLAGS.desktop_searchbar_style": "default",
  856. "EXPERIMENT_FLAGS.desktop_sparkles_light_cta_button": true,
  857. "EXPERIMENT_FLAGS.desktop_swipeable_guide": true,
  858. "EXPERIMENT_FLAGS.desktop_themeable_vulcan": true,
  859. "EXPERIMENT_FLAGS.desktop_touch_gestures_usage_log": true,
  860. "EXPERIMENT_FLAGS.desktop_use_new_history_manager": true,
  861. "EXPERIMENT_FLAGS.disable_child_node_auto_formatted_strings": true,
  862. "EXPERIMENT_FLAGS.disable_dependency_injection": true,
  863. "EXPERIMENT_FLAGS.disable_features_for_supex": true,
  864. "EXPERIMENT_FLAGS.disable_legacy_desktop_remote_queue": true,
  865. "EXPERIMENT_FLAGS.disable_pacf_logging_for_memory_limited_tv": true,
  866. "EXPERIMENT_FLAGS.disable_rich_grid_inline_player_pop_out": true,
  867. "EXPERIMENT_FLAGS.disable_simple_mixed_direction_formatted_strings": true,
  868. "EXPERIMENT_FLAGS.disable_thumbnail_preloading": true,
  869. "EXPERIMENT_FLAGS.embeds_web_enable_replace_unload_w_pagehide": true,
  870. "EXPERIMENT_FLAGS.embeds_web_enable_ve_logging_unification": true,
  871. "EXPERIMENT_FLAGS.embeds_web_nwl_disable_nocookie": true,
  872. "EXPERIMENT_FLAGS.embeds_web_synth_ch_headers_banned_urls_regex": "",
  873. "EXPERIMENT_FLAGS.enable_audio_pivot_back_nav_button": true,
  874. "EXPERIMENT_FLAGS.enable_button_behavior_reuse": true,
  875. "EXPERIMENT_FLAGS.enable_call_to_action_clarification_renderer_bottom_section_conditions": true,
  876. "EXPERIMENT_FLAGS.enable_channel_page_modern_profile_section": true,
  877. "EXPERIMENT_FLAGS.enable_desktop_amsterdam_info_panels": true,
  878. "EXPERIMENT_FLAGS.enable_dma_web_toast": true,
  879. "EXPERIMENT_FLAGS.enable_docked_chat_messages": true,
  880. "EXPERIMENT_FLAGS.enable_gel_log_commands": true,
  881. "EXPERIMENT_FLAGS.enable_h5_instream_watch_next_params_oarlib": true,
  882. "EXPERIMENT_FLAGS.enable_h5_video_ads_oarlib": true,
  883. "EXPERIMENT_FLAGS.enable_handles_account_menu_switcher": true,
  884. "EXPERIMENT_FLAGS.enable_handles_in_mention_suggest_posts": true,
  885. "EXPERIMENT_FLAGS.enable_header_channel_handler_ui": true,
  886. "EXPERIMENT_FLAGS.enable_image_poll_post_creation": true,
  887. "EXPERIMENT_FLAGS.enable_inline_shorts_on_wn": true,
  888. "EXPERIMENT_FLAGS.enable_madison_search_migration": true,
  889. "EXPERIMENT_FLAGS.enable_masthead_quartile_ping_fix": true,
  890. "EXPERIMENT_FLAGS.enable_memberships_and_purchases": true,
  891. "EXPERIMENT_FLAGS.enable_mentions_in_reposts": true,
  892. "EXPERIMENT_FLAGS.enable_microformat_data": true,
  893. "EXPERIMENT_FLAGS.enable_mini_app_container": true,
  894. "EXPERIMENT_FLAGS.enable_mixed_direction_formatted_strings": true,
  895. "EXPERIMENT_FLAGS.enable_multi_image_post_creation": true,
  896. "EXPERIMENT_FLAGS.enable_names_handles_account_switcher": true,
  897. "EXPERIMENT_FLAGS.enable_offer_suppression": true,
  898. "EXPERIMENT_FLAGS.enable_on_yt_command_executor_command_to_navigate": true,
  899. "EXPERIMENT_FLAGS.enable_pacf_through_ybfe_tv": true,
  900. "EXPERIMENT_FLAGS.enable_pacf_through_ysfe_tv": true,
  901. "EXPERIMENT_FLAGS.enable_poll_choice_border_on_web": true,
  902. "EXPERIMENT_FLAGS.enable_polymer_resin": true,
  903. "EXPERIMENT_FLAGS.enable_polymer_resin_migration": true,
  904. "EXPERIMENT_FLAGS.enable_post_cct_links": true,
  905. "EXPERIMENT_FLAGS.enable_post_scheduling": true,
  906. "EXPERIMENT_FLAGS.enable_premium_voluntary_pause": true,
  907. "EXPERIMENT_FLAGS.enable_product_list_skip_pdp_for_desktop": true,
  908. "EXPERIMENT_FLAGS.enable_programmed_playlist_color_sample": true,
  909. "EXPERIMENT_FLAGS.enable_programmed_playlist_redesign": true,
  910. "EXPERIMENT_FLAGS.enable_purchase_activity_in_paid_memberships": true,
  911. "EXPERIMENT_FLAGS.enable_reel_watch_sequence": true,
  912. "EXPERIMENT_FLAGS.enable_rejected_sasde_for_html5": true,
  913. "EXPERIMENT_FLAGS.enable_rendererstamper_listener_cleanup": true,
  914. "EXPERIMENT_FLAGS.enable_seedless_shorts_url": true,
  915. "EXPERIMENT_FLAGS.enable_server_stitched_dai": true,
  916. "EXPERIMENT_FLAGS.enable_service_ajax_csn": true,
  917. "EXPERIMENT_FLAGS.enable_servlet_errors_streamz": true,
  918. "EXPERIMENT_FLAGS.enable_servlet_streamz": true,
  919. "EXPERIMENT_FLAGS.enable_sfv_audio_pivot_url": true,
  920. "EXPERIMENT_FLAGS.enable_shorts_singleton_channel_web": true,
  921. "EXPERIMENT_FLAGS.enable_signals": true,
  922. "EXPERIMENT_FLAGS.enable_skip_ad_guidance_prompt": true,
  923. "EXPERIMENT_FLAGS.enable_skippable_ads_for_unplugged_ad_pod": true,
  924. "EXPERIMENT_FLAGS.enable_smearing_expansion_dai": true,
  925. "EXPERIMENT_FLAGS.enable_sparkles_web_clickable_description": true,
  926. "EXPERIMENT_FLAGS.enable_squiffle_gif_handles_landing_page": true,
  927. "EXPERIMENT_FLAGS.enable_streamline_repost_flow": true,
  928. "EXPERIMENT_FLAGS.enable_structured_description_shorts_web_mweb": true,
  929. "EXPERIMENT_FLAGS.enable_tectonic_ad_ux_for_halftime": true,
  930. "EXPERIMENT_FLAGS.enable_third_party_info": true,
  931. "EXPERIMENT_FLAGS.enable_topsoil_wta_for_halftime_live_infra": true,
  932. "EXPERIMENT_FLAGS.enable_unavailable_videos_watch_page": true,
  933. "EXPERIMENT_FLAGS.enable_watch_next_pause_autoplay_lact": true,
  934. "EXPERIMENT_FLAGS.enable_web_ketchup_hero_animation": true,
  935. "EXPERIMENT_FLAGS.enable_web_poster_hover_animation": true,
  936. "EXPERIMENT_FLAGS.enable_web_scheduler_signals": true,
  937. "EXPERIMENT_FLAGS.enable_web_shorts_audio_pivot": true,
  938. "EXPERIMENT_FLAGS.enable_window_constrained_buy_flow_dialog": true,
  939. "EXPERIMENT_FLAGS.enable_yoodle": true,
  940. "EXPERIMENT_FLAGS.enable_ypc_spinners": true,
  941. "EXPERIMENT_FLAGS.enable_yt_ata_iframe_authuser": true,
  942. "EXPERIMENT_FLAGS.enable_ytc_refunds_submit_form_signal_action": true,
  943. "EXPERIMENT_FLAGS.enable_ytc_self_serve_refunds": true,
  944. "EXPERIMENT_FLAGS.export_networkless_options": true,
  945. "EXPERIMENT_FLAGS.external_fullscreen": true,
  946. "EXPERIMENT_FLAGS.external_fullscreen_button_click_threshold": 2,
  947. "EXPERIMENT_FLAGS.external_fullscreen_button_shown_threshold": 10,
  948. "EXPERIMENT_FLAGS.external_fullscreen_with_edu": true,
  949. "EXPERIMENT_FLAGS.fill_single_video_with_notify_to_lasr": true,
  950. "EXPERIMENT_FLAGS.fix_scrubber_overlay_transition": true,
  951. "EXPERIMENT_FLAGS.formatted_description_log_warning_fraction": 0.01,
  952. "EXPERIMENT_FLAGS.gcf_config_store_enabled": true,
  953. "EXPERIMENT_FLAGS.gda_enable_playlist_download": true,
  954. "EXPERIMENT_FLAGS.gel_queue_timeout_max_ms": 300000,
  955. "EXPERIMENT_FLAGS.get_async_timeout_ms": 60000,
  956. "EXPERIMENT_FLAGS.gfeedback_for_signed_out_users_enabled": true,
  957. "EXPERIMENT_FLAGS.global_spacebar_pause": true,
  958. "EXPERIMENT_FLAGS.gpa_sparkles_ten_percent_layer": true,
  959. "EXPERIMENT_FLAGS.guide_business_info_countries.0": "KR",
  960. "EXPERIMENT_FLAGS.guide_legal_footer_enabled_countries.0": "NL",
  961. "EXPERIMENT_FLAGS.guide_legal_footer_enabled_countries.1": "ES",
  962. "EXPERIMENT_FLAGS.h5_companion_enable_adcpn_macro_substitution_for_click_pings": true,
  963. "EXPERIMENT_FLAGS.h5_enable_generic_error_logging_event": true,
  964. "EXPERIMENT_FLAGS.h5_inplayer_enable_adcpn_macro_substitution_for_click_pings": true,
  965. "EXPERIMENT_FLAGS.h5_reset_cache_and_filter_before_update_masthead": true,
  966. "EXPERIMENT_FLAGS.handles_in_mention_suggest_posts": true,
  967. "EXPERIMENT_FLAGS.high_priority_flyout_frequency": 3,
  968. "EXPERIMENT_FLAGS.html5_enable_single_video_vod_ivar_on_pacf": true,
  969. "EXPERIMENT_FLAGS.html5_log_trigger_events_with_debug_data": true,
  970. "EXPERIMENT_FLAGS.html5_recognize_predict_start_cue_point": true,
  971. "EXPERIMENT_FLAGS.html5_server_stitched_dai_group": true,
  972. "EXPERIMENT_FLAGS.html5_web_enable_halftime_preroll": true,
  973. "EXPERIMENT_FLAGS.il_use_view_model_logging_context": true,
  974. "EXPERIMENT_FLAGS.include_autoplay_count_in_playlists": true,
  975. "EXPERIMENT_FLAGS.initial_gel_batch_timeout": 2000,
  976. "EXPERIMENT_FLAGS.is_browser_support_for_webcam_streaming": true,
  977. "EXPERIMENT_FLAGS.is_part_of_any_user_engagement_experiment": true,
  978. "EXPERIMENT_FLAGS.json_condensed_response": true,
  979. "EXPERIMENT_FLAGS.kevlar_app_shortcuts": true,
  980. "EXPERIMENT_FLAGS.kevlar_appbehavior_attach_startup_tasks": true,
  981. "EXPERIMENT_FLAGS.kevlar_append_toggled_engagement_panels_top": true,
  982. "EXPERIMENT_FLAGS.kevlar_appshell_service_worker": true,
  983. "EXPERIMENT_FLAGS.kevlar_autofocus_menu_on_keyboard_nav": true,
  984. "EXPERIMENT_FLAGS.kevlar_autonav_popup_filtering": true,
  985. "EXPERIMENT_FLAGS.kevlar_av_eliminate_polling": true,
  986. "EXPERIMENT_FLAGS.kevlar_background_color_update": true,
  987. "EXPERIMENT_FLAGS.kevlar_cache_cold_load_response": true,
  988. "EXPERIMENT_FLAGS.kevlar_cache_on_ttl_player": true,
  989. "EXPERIMENT_FLAGS.kevlar_cache_on_ttl_search": true,
  990. "EXPERIMENT_FLAGS.kevlar_calculate_grid_collapsible": true,
  991. "EXPERIMENT_FLAGS.kevlar_cancel_scheduled_comment_jobs_on_navigate": true,
  992. "EXPERIMENT_FLAGS.kevlar_center_search_results": true,
  993. "EXPERIMENT_FLAGS.kevlar_channel_creation_form_resolver": true,
  994. "EXPERIMENT_FLAGS.kevlar_channel_trailer_multi_attach": true,
  995. "EXPERIMENT_FLAGS.kevlar_chapters_list_view_seek_by_chapter": true,
  996. "EXPERIMENT_FLAGS.kevlar_clear_duplicate_pref_cookie": true,
  997. "EXPERIMENT_FLAGS.kevlar_clear_non_displayable_url_params": true,
  998. "EXPERIMENT_FLAGS.kevlar_command_handler": true,
  999. "EXPERIMENT_FLAGS.kevlar_command_handler_clicks": true,
  1000. "EXPERIMENT_FLAGS.kevlar_command_handler_formatted_string": true,
  1001. "EXPERIMENT_FLAGS.kevlar_command_url": true,
  1002. "EXPERIMENT_FLAGS.kevlar_continue_playback_without_player_response": true,
  1003. "EXPERIMENT_FLAGS.kevlar_delay_watch_initial_data": true,
  1004. "EXPERIMENT_FLAGS.kevlar_disable_background_prefetch": true,
  1005. "EXPERIMENT_FLAGS.kevlar_disable_pending_command": true,
  1006. "EXPERIMENT_FLAGS.kevlar_dragdrop_fast_scroll": true,
  1007. "EXPERIMENT_FLAGS.kevlar_dropdown_fix": true,
  1008. "EXPERIMENT_FLAGS.kevlar_droppable_prefetchable_requests": true,
  1009. "EXPERIMENT_FLAGS.kevlar_early_popup_close": true,
  1010. "EXPERIMENT_FLAGS.kevlar_enable_download_upsell_type_a": true,
  1011. "EXPERIMENT_FLAGS.kevlar_enable_editable_playlists": true,
  1012. "EXPERIMENT_FLAGS.kevlar_enable_reorderable_playlists": true,
  1013. "EXPERIMENT_FLAGS.kevlar_enable_shorts_prefetch_in_sequence": true,
  1014. "EXPERIMENT_FLAGS.kevlar_enable_shorts_response_chunking": true,
  1015. "EXPERIMENT_FLAGS.kevlar_enable_up_arrow": true,
  1016. "EXPERIMENT_FLAGS.kevlar_enable_upsell_on_video_menu": true,
  1017. "EXPERIMENT_FLAGS.kevlar_enable_ybp_op_for_shoptube": true,
  1018. "EXPERIMENT_FLAGS.kevlar_exit_fullscreen_leaving_watch": true,
  1019. "EXPERIMENT_FLAGS.kevlar_fix_playlist_continuation": true,
  1020. "EXPERIMENT_FLAGS.kevlar_flexible_menu": true,
  1021. "EXPERIMENT_FLAGS.kevlar_fluid_touch_scroll": true,
  1022. "EXPERIMENT_FLAGS.kevlar_frontend_queue_recover": true,
  1023. "EXPERIMENT_FLAGS.kevlar_gel_error_routing": true,
  1024. "EXPERIMENT_FLAGS.kevlar_guide_refresh": true,
  1025. "EXPERIMENT_FLAGS.kevlar_help_use_locale": true,
  1026. "EXPERIMENT_FLAGS.kevlar_hide_playlist_playback_status": true,
  1027. "EXPERIMENT_FLAGS.kevlar_hide_pp_url_param": true,
  1028. "EXPERIMENT_FLAGS.kevlar_hide_time_continue_url_param": true,
  1029. "EXPERIMENT_FLAGS.kevlar_home_skeleton": true,
  1030. "EXPERIMENT_FLAGS.kevlar_home_skeleton_hide_later": true,
  1031. "EXPERIMENT_FLAGS.kevlar_js_fixes": true,
  1032. "EXPERIMENT_FLAGS.kevlar_keyboard_button_focus": true,
  1033. "EXPERIMENT_FLAGS.kevlar_larger_three_dot_tap": true,
  1034. "EXPERIMENT_FLAGS.kevlar_lazy_list_resume_for_autofill": true,
  1035. "EXPERIMENT_FLAGS.kevlar_link_capturing_mode": "",
  1036. "EXPERIMENT_FLAGS.kevlar_local_innertube_response": true,
  1037. "EXPERIMENT_FLAGS.kevlar_macro_markers_keyboard_shortcut": true,
  1038. "EXPERIMENT_FLAGS.kevlar_masthead_store": true,
  1039. "EXPERIMENT_FLAGS.kevlar_mealbar_above_player": true,
  1040. "EXPERIMENT_FLAGS.kevlar_mini_guide_width_threshold": 791,
  1041. "EXPERIMENT_FLAGS.kevlar_miniplayer": true,
  1042. "EXPERIMENT_FLAGS.kevlar_miniplayer_expand_top": true,
  1043. "EXPERIMENT_FLAGS.kevlar_miniplayer_play_pause_on_scrim": true,
  1044. "EXPERIMENT_FLAGS.kevlar_miniplayer_queue_user_activation": true,
  1045. "EXPERIMENT_FLAGS.kevlar_modern_sd": true,
  1046. "EXPERIMENT_FLAGS.kevlar_next_cold_on_auth_change_detected": true,
  1047. "EXPERIMENT_FLAGS.kevlar_nitrate_driven_tooltips": true,
  1048. "EXPERIMENT_FLAGS.kevlar_no_autoscroll_on_playlist_hover": true,
  1049. "EXPERIMENT_FLAGS.kevlar_op_infra": true,
  1050. "EXPERIMENT_FLAGS.kevlar_op_warm_pages": true,
  1051. "EXPERIMENT_FLAGS.kevlar_pandown_polyfill": true,
  1052. "EXPERIMENT_FLAGS.kevlar_passive_event_listeners": true,
  1053. "EXPERIMENT_FLAGS.kevlar_persistent_guide_width_threshold": 1312,
  1054. "EXPERIMENT_FLAGS.kevlar_playback_associated_queue": true,
  1055. "EXPERIMENT_FLAGS.kevlar_player_cached_load_config": true,
  1056. "EXPERIMENT_FLAGS.kevlar_player_check_ad_state_on_stop": true,
  1057. "EXPERIMENT_FLAGS.kevlar_player_load_player_no_op": true,
  1058. "EXPERIMENT_FLAGS.kevlar_player_new_bootstrap_adoption": true,
  1059. "EXPERIMENT_FLAGS.kevlar_player_playlist_use_local_index": true,
  1060. "EXPERIMENT_FLAGS.kevlar_playlist_drag_handles": true,
  1061. "EXPERIMENT_FLAGS.kevlar_playlist_use_x_close_button": true,
  1062. "EXPERIMENT_FLAGS.kevlar_prefetch": true,
  1063. "EXPERIMENT_FLAGS.kevlar_prevent_polymer_dynamic_font_load": true,
  1064. "EXPERIMENT_FLAGS.kevlar_queue_use_update_api": true,
  1065. "EXPERIMENT_FLAGS.kevlar_refresh_gesture": true,
  1066. "EXPERIMENT_FLAGS.kevlar_refresh_on_theme_change": true,
  1067. "EXPERIMENT_FLAGS.kevlar_rendererstamper_event_listener": true,
  1068. "EXPERIMENT_FLAGS.kevlar_replace_short_to_short_history_state": true,
  1069. "EXPERIMENT_FLAGS.kevlar_request_sequencing": true,
  1070. "EXPERIMENT_FLAGS.kevlar_resolve_command_for_confirm_dialog": true,
  1071. "EXPERIMENT_FLAGS.kevlar_response_command_processor_page": true,
  1072. "EXPERIMENT_FLAGS.kevlar_scroll_chips_on_touch": true,
  1073. "EXPERIMENT_FLAGS.kevlar_scrollbar_rework": true,
  1074. "EXPERIMENT_FLAGS.kevlar_service_command_check": true,
  1075. "EXPERIMENT_FLAGS.kevlar_set_internal_player_size": true,
  1076. "EXPERIMENT_FLAGS.kevlar_set_sd_enabled_browse_request": true,
  1077. "EXPERIMENT_FLAGS.kevlar_shell_for_downloads_page": true,
  1078. "EXPERIMENT_FLAGS.kevlar_should_maintain_stable_list": true,
  1079. "EXPERIMENT_FLAGS.kevlar_show_playlist_dl_btn": true,
  1080. "EXPERIMENT_FLAGS.kevlar_simp_shorts_reset_scroll": true,
  1081. "EXPERIMENT_FLAGS.kevlar_smart_downloads": true,
  1082. "EXPERIMENT_FLAGS.kevlar_smart_downloads_setting": true,
  1083. "EXPERIMENT_FLAGS.kevlar_startup_lifecycle": true,
  1084. "EXPERIMENT_FLAGS.kevlar_structured_description_content_inline": true,
  1085. "EXPERIMENT_FLAGS.kevlar_system_icons": true,
  1086. "EXPERIMENT_FLAGS.kevlar_tabs_gesture": true,
  1087. "EXPERIMENT_FLAGS.kevlar_text_inline_expander_formatted_snippet": true,
  1088. "EXPERIMENT_FLAGS.kevlar_three_dot_ink": true,
  1089. "EXPERIMENT_FLAGS.kevlar_thumbnail_fluid": true,
  1090. "EXPERIMENT_FLAGS.kevlar_time_caching_end_threshold": 15,
  1091. "EXPERIMENT_FLAGS.kevlar_time_caching_start_threshold": 15,
  1092. "EXPERIMENT_FLAGS.kevlar_toast_manager": true,
  1093. "EXPERIMENT_FLAGS.kevlar_tooltip_impression_cap": 2,
  1094. "EXPERIMENT_FLAGS.kevlar_topbar_logo_fallback_home": true,
  1095. "EXPERIMENT_FLAGS.kevlar_touch_feedback": true,
  1096. "EXPERIMENT_FLAGS.kevlar_touch_feedback_lockups": true,
  1097. "EXPERIMENT_FLAGS.kevlar_touch_gesture_ves": true,
  1098. "EXPERIMENT_FLAGS.kevlar_transcript_engagement_panel": true,
  1099. "EXPERIMENT_FLAGS.kevlar_tuner_default_comments_delay": 1000,
  1100. "EXPERIMENT_FLAGS.kevlar_tuner_run_default_comments_delay": true,
  1101. "EXPERIMENT_FLAGS.kevlar_tuner_scheduler_soft_state_timer_ms": 800,
  1102. "EXPERIMENT_FLAGS.kevlar_tuner_should_defer_detach": true,
  1103. "EXPERIMENT_FLAGS.kevlar_tuner_thumbnail_factor": 1,
  1104. "EXPERIMENT_FLAGS.kevlar_tuner_visibility_time_between_jobs_ms": 100,
  1105. "EXPERIMENT_FLAGS.kevlar_typography_spacing_update": true,
  1106. "EXPERIMENT_FLAGS.kevlar_typography_update": true,
  1107. "EXPERIMENT_FLAGS.kevlar_undo_delete": true,
  1108. "EXPERIMENT_FLAGS.kevlar_unified_errors_init": true,
  1109. "EXPERIMENT_FLAGS.kevlar_unified_player_logging_threshold": 1,
  1110. "EXPERIMENT_FLAGS.kevlar_use_response_ttl_to_invalidate_cache": true,
  1111. "EXPERIMENT_FLAGS.kevlar_use_vimio_behavior": true,
  1112. "EXPERIMENT_FLAGS.kevlar_use_ytd_player": true,
  1113. "EXPERIMENT_FLAGS.kevlar_variable_youtube_sans": true,
  1114. "EXPERIMENT_FLAGS.kevlar_vimio_use_shared_monitor": true,
  1115. "EXPERIMENT_FLAGS.kevlar_voice_logging_fix": true,
  1116. "EXPERIMENT_FLAGS.kevlar_voice_search": true,
  1117. "EXPERIMENT_FLAGS.kevlar_watch_cinematics": true,
  1118. "EXPERIMENT_FLAGS.kevlar_watch_color_update": true,
  1119. "EXPERIMENT_FLAGS.kevlar_watch_comments_ep_disable_theater": true,
  1120. "EXPERIMENT_FLAGS.kevlar_watch_contents_data_provider": true,
  1121. "EXPERIMENT_FLAGS.kevlar_watch_contents_data_provider_persistent": true,
  1122. "EXPERIMENT_FLAGS.kevlar_watch_disable_legacy_metadata_updates": true,
  1123. "EXPERIMENT_FLAGS.kevlar_watch_drag_handles": true,
  1124. "EXPERIMENT_FLAGS.kevlar_watch_flexy_fullscreen_manager": true,
  1125. "EXPERIMENT_FLAGS.kevlar_watch_flexy_loading_state_manager": true,
  1126. "EXPERIMENT_FLAGS.kevlar_watch_flexy_metadata_height": 136,
  1127. "EXPERIMENT_FLAGS.kevlar_watch_flexy_miniplayer_manager": true,
  1128. "EXPERIMENT_FLAGS.kevlar_watch_flexy_navigation_manager": true,
  1129. "EXPERIMENT_FLAGS.kevlar_watch_flexy_player_loop_manager": true,
  1130. "EXPERIMENT_FLAGS.kevlar_watch_flexy_scroll_manager": true,
  1131. "EXPERIMENT_FLAGS.kevlar_watch_flexy_title_manager": true,
  1132. "EXPERIMENT_FLAGS.kevlar_watch_flexy_use_controller": true,
  1133. "EXPERIMENT_FLAGS.kevlar_watch_focus_on_engagement_panels": true,
  1134. "EXPERIMENT_FLAGS.kevlar_watch_gesture_pandown": true,
  1135. "EXPERIMENT_FLAGS.kevlar_watch_hide_comments_teaser": true,
  1136. "EXPERIMENT_FLAGS.kevlar_watch_hide_comments_while_panel_open": true,
  1137. "EXPERIMENT_FLAGS.kevlar_watch_js_panel_height": true,
  1138. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh": true,
  1139. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_attached_subscribe": true,
  1140. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_clickable_description": true,
  1141. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_compact_view_count": true,
  1142. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_description_info_dedicated_line": true,
  1143. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_description_inline_expander": true,
  1144. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_description_lines": 3,
  1145. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_description_primary_color": true,
  1146. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_for_live_killswitch": true,
  1147. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_full_width_description": true,
  1148. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_left_aligned_video_actions": true,
  1149. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_lower_case_video_actions": true,
  1150. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_narrower_item_wrap": true,
  1151. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_relative_date": true,
  1152. "EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_top_aligned_actions": true,
  1153. "EXPERIMENT_FLAGS.kevlar_watch_modern_metapanel": true,
  1154. "EXPERIMENT_FLAGS.kevlar_watch_modern_panels": true,
  1155. "EXPERIMENT_FLAGS.kevlar_watch_panel_height_matches_player": true,
  1156. "EXPERIMENT_FLAGS.kevlar_woffle": true,
  1157. "EXPERIMENT_FLAGS.kevlar_woffle_fallback_image": true,
  1158. "EXPERIMENT_FLAGS.kevlar_ytb_live_badges": true,
  1159. "EXPERIMENT_FLAGS.killswitch_toggle_button_behavior_resolve_command": true,
  1160. "EXPERIMENT_FLAGS.live_chat_banner_expansion_fix": true,
  1161. "EXPERIMENT_FLAGS.live_chat_chunk_rendering": 0,
  1162. "EXPERIMENT_FLAGS.live_chat_collapse_merch_banner": true,
  1163. "EXPERIMENT_FLAGS.live_chat_enable_mod_view": true,
  1164. "EXPERIMENT_FLAGS.live_chat_enable_qna_banner_overflow_menu_actions": true,
  1165. "EXPERIMENT_FLAGS.live_chat_enable_qna_channel": true,
  1166. "EXPERIMENT_FLAGS.live_chat_filter_emoji_suggestions": true,
  1167. "EXPERIMENT_FLAGS.live_chat_increased_min_height": true,
  1168. "EXPERIMENT_FLAGS.live_chat_max_chunk_size": 5,
  1169. "EXPERIMENT_FLAGS.live_chat_min_chunk_interval_ms": 300,
  1170. "EXPERIMENT_FLAGS.live_chat_over_playlist": true,
  1171. "EXPERIMENT_FLAGS.live_chat_unicode_emoji_json_url": "https://www.gstatic.com/youtube/img/emojis/emojis-svg-9.json",
  1172. "EXPERIMENT_FLAGS.live_chat_web_enable_command_handler": true,
  1173. "EXPERIMENT_FLAGS.live_chat_web_use_emoji_manager_singleton": true,
  1174. "EXPERIMENT_FLAGS.log_errors_through_nwl_on_retry": true,
  1175. "EXPERIMENT_FLAGS.log_gel_compression_latency": true,
  1176. "EXPERIMENT_FLAGS.log_heartbeat_with_lifecycles": true,
  1177. "EXPERIMENT_FLAGS.log_vis_on_tab_change": true,
  1178. "EXPERIMENT_FLAGS.log_web_meta_interval_ms": 0,
  1179. "EXPERIMENT_FLAGS.log_window_onerror_fraction": 0.1,
  1180. "EXPERIMENT_FLAGS.max_body_size_to_compress": 500000,
  1181. "EXPERIMENT_FLAGS.max_duration_to_consider_mouseover_as_hover": 600000,
  1182. // "EXPERIMENT_FLAGS.max_prefetch_window_sec_for_livestream_optimization": 10,
  1183. "EXPERIMENT_FLAGS.mdx_enable_privacy_disclosure_ui": true,
  1184. "EXPERIMENT_FLAGS.mdx_load_cast_api_bootstrap_script": true,
  1185. "EXPERIMENT_FLAGS.migrate_events_to_ts": true,
  1186. "EXPERIMENT_FLAGS.min_mouse_still_duration": 100,
  1187. // "EXPERIMENT_FLAGS.min_prefetch_offset_sec_for_livestream_optimization": 20,
  1188. "EXPERIMENT_FLAGS.minimum_duration_to_consider_mouseover_as_hover": 500,
  1189. "EXPERIMENT_FLAGS.music_on_main_handle_playlist_edit_video_added_result_data": true,
  1190. "EXPERIMENT_FLAGS.music_on_main_open_playlist_recommended_videos_in_miniplayer": true,
  1191. "EXPERIMENT_FLAGS.mweb_actions_command_handler": true,
  1192. "EXPERIMENT_FLAGS.mweb_command_handler": true,
  1193. "EXPERIMENT_FLAGS.mweb_disable_set_autonav_state_in_player": true,
  1194. "EXPERIMENT_FLAGS.mweb_enable_consistency_service": true,
  1195. "EXPERIMENT_FLAGS.mweb_enable_hlp": true,
  1196. "EXPERIMENT_FLAGS.mweb_history_manager_cache_size": 100,
  1197. "EXPERIMENT_FLAGS.mweb_logo_use_home_page_ve": true,
  1198. "EXPERIMENT_FLAGS.mweb_navigate_to_watch_with_op": true,
  1199. "EXPERIMENT_FLAGS.mweb_render_crawler_description": true,
  1200. "EXPERIMENT_FLAGS.mweb_stop_truncating_meta_tags": true,
  1201. "EXPERIMENT_FLAGS.mweb_use_desktop_canonical_url": true,
  1202. "EXPERIMENT_FLAGS.network_polling_interval": 30000,
  1203. "EXPERIMENT_FLAGS.networkless_gel": true,
  1204. "EXPERIMENT_FLAGS.networkless_logging": true,
  1205. "EXPERIMENT_FLAGS.no_sub_count_on_sub_button": true,
  1206. "EXPERIMENT_FLAGS.nwl_send_fast_on_unload": true,
  1207. "EXPERIMENT_FLAGS.nwl_send_from_memory_when_online": true,
  1208. "EXPERIMENT_FLAGS.offline_error_handling": true,
  1209. "EXPERIMENT_FLAGS.pacf_logging_delay_milliseconds_through_ybfe_tv": 30000,
  1210. "EXPERIMENT_FLAGS.pageid_as_header_web": true,
  1211. "EXPERIMENT_FLAGS.pause_ad_video_on_desktop_engagement_panel_click": true,
  1212. "EXPERIMENT_FLAGS.pbj_navigate_limit": -1,
  1213. "EXPERIMENT_FLAGS.pdg_enable_flow_logging_for_super_chat": true,
  1214. "EXPERIMENT_FLAGS.pdg_enable_flow_logging_for_super_stickers": true,
  1215. "EXPERIMENT_FLAGS.play_ping_interval_ms": 300000,
  1216. "EXPERIMENT_FLAGS.player_allow_autonav_after_playlist": true,
  1217. "EXPERIMENT_FLAGS.player_bootstrap_method": true,
  1218. "EXPERIMENT_FLAGS.player_doubletap_to_seek": true,
  1219. "EXPERIMENT_FLAGS.player_enable_playback_playlist_change": true,
  1220. "EXPERIMENT_FLAGS.player_endscreen_ellipsis_fix": true,
  1221. "EXPERIMENT_FLAGS.polymer_bad_build_labels": true,
  1222. "EXPERIMENT_FLAGS.polymer_log_prop_change_observer_percent": 0,
  1223. "EXPERIMENT_FLAGS.polymer_task_manager_proxied_promise": true,
  1224. "EXPERIMENT_FLAGS.polymer_task_manager_status": "production",
  1225. "EXPERIMENT_FLAGS.polymer_verifiy_app_state": true,
  1226. "EXPERIMENT_FLAGS.polymer_video_renderer_defer_menu": true,
  1227. "EXPERIMENT_FLAGS.polymer_warm_thumbnail_preload": true,
  1228. "EXPERIMENT_FLAGS.polymer_ytdi_enable_global_injector": true,
  1229. "EXPERIMENT_FLAGS.post_type_icons_rearrange": 1,
  1230. "EXPERIMENT_FLAGS.prefetch_comments_ms_after_video": 0,
  1231. "EXPERIMENT_FLAGS.prefetch_coordinator_command_timeout_ms": 60000,
  1232. "EXPERIMENT_FLAGS.prefetch_coordinator_error_logging_sampling_rate": 1,
  1233. "EXPERIMENT_FLAGS.prefetch_coordinator_max_inflight_requests": 1,
  1234. "EXPERIMENT_FLAGS.problem_walkthrough_sd": true,
  1235. "EXPERIMENT_FLAGS.qoe_send_and_write": true,
  1236. "EXPERIMENT_FLAGS.record_app_crashed_web": true,
  1237. "EXPERIMENT_FLAGS.reload_without_polymer_innertube": true,
  1238. "EXPERIMENT_FLAGS.rich_grid_true_inline_playback_trigger_delay": 0,
  1239. "EXPERIMENT_FLAGS.rich_grid_watch_meta_side": true,
  1240. "EXPERIMENT_FLAGS.rich_grid_watch_open_animation_duration": 0,
  1241. "EXPERIMENT_FLAGS.rich_grid_watch_show_watch_next": true,
  1242. "EXPERIMENT_FLAGS.scheduler_use_raf_by_default": true,
  1243. "EXPERIMENT_FLAGS.search_ui_enable_pve_buy_button": true,
  1244. "EXPERIMENT_FLAGS.search_ui_official_cards_enable_paid_virtual_event_buy_button": true,
  1245. "EXPERIMENT_FLAGS.searchbox_reporting": true,
  1246. "EXPERIMENT_FLAGS.send_config_hash_timer": 0,
  1247. "EXPERIMENT_FLAGS.serve_pdp_at_canonical_url": true,
  1248. "EXPERIMENT_FLAGS.service_worker_enabled": true,
  1249. "EXPERIMENT_FLAGS.service_worker_push_enabled": true,
  1250. "EXPERIMENT_FLAGS.service_worker_push_force_notification_prompt_tag": "1",
  1251. "EXPERIMENT_FLAGS.service_worker_push_home_page_prompt": true,
  1252. "EXPERIMENT_FLAGS.service_worker_push_logged_out_prompt_watches": -1,
  1253. "EXPERIMENT_FLAGS.service_worker_push_prompt_cap": -1,
  1254. "EXPERIMENT_FLAGS.service_worker_push_prompt_delay_microseconds": 3888000000000,
  1255. "EXPERIMENT_FLAGS.service_worker_push_watch_page_prompt": true,
  1256. "EXPERIMENT_FLAGS.service_worker_scope": "/",
  1257. "EXPERIMENT_FLAGS.service_worker_subscribe_with_vapid_key": true,
  1258. "EXPERIMENT_FLAGS.shorts_desktop_watch_while_p2": true,
  1259. "EXPERIMENT_FLAGS.shorts_enable_snap_stop": true,
  1260. "EXPERIMENT_FLAGS.shorts_inline_player_triggering_delay": 500,
  1261. "EXPERIMENT_FLAGS.shorts_profile_header_c3po": true,
  1262. "EXPERIMENT_FLAGS.should_clear_video_data_on_player_cued_unstarted": true,
  1263. "EXPERIMENT_FLAGS.show_civ_reminder_on_web": true,
  1264. "EXPERIMENT_FLAGS.skip_invalid_ytcsi_ticks": true,
  1265. "EXPERIMENT_FLAGS.skip_ls_gel_retry": true,
  1266. "EXPERIMENT_FLAGS.skip_setting_info_in_csi_data_object": true,
  1267. "EXPERIMENT_FLAGS.slow_compressions_before_abandon_count": 4,
  1268. "EXPERIMENT_FLAGS.sponsorships_gifting_enable_opt_in": true,
  1269. "EXPERIMENT_FLAGS.super_sticker_emoji_picker_category_button_icon_filled": true,
  1270. "EXPERIMENT_FLAGS.suppress_error_204_logging": true,
  1271. "EXPERIMENT_FLAGS.track_webfe_innertube_auth_mismatch": true,
  1272. "EXPERIMENT_FLAGS.transport_use_scheduler": true,
  1273. "EXPERIMENT_FLAGS.tv_pacf_logging_sample_rate": 0.01,
  1274. "EXPERIMENT_FLAGS.use_ads_engagement_panel_desktop_footer_cta": true,
  1275. "EXPERIMENT_FLAGS.use_better_post_dismissals": true,
  1276. "EXPERIMENT_FLAGS.use_border_and_grid_wrapping_on_desktop_panel_tiles": true,
  1277. "EXPERIMENT_FLAGS.use_new_cml": true,
  1278. "EXPERIMENT_FLAGS.use_new_in_memory_storage": true,
  1279. "EXPERIMENT_FLAGS.use_new_nwl_initialization": true,
  1280. "EXPERIMENT_FLAGS.use_new_nwl_saw": true,
  1281. "EXPERIMENT_FLAGS.use_new_nwl_stw": true,
  1282. "EXPERIMENT_FLAGS.use_new_nwl_wts": true,
  1283. "EXPERIMENT_FLAGS.use_player_abuse_bg_library": true,
  1284. "EXPERIMENT_FLAGS.use_profilepage_event_label_in_carousel_playbacks": true,
  1285. "EXPERIMENT_FLAGS.use_request_time_ms_header": true,
  1286. "EXPERIMENT_FLAGS.use_session_based_sampling": true,
  1287. "EXPERIMENT_FLAGS.use_source_element_if_present_for_actions": true,
  1288. "EXPERIMENT_FLAGS.use_ts_visibilitylogger": true,
  1289. "EXPERIMENT_FLAGS.use_watch_fragments2": true,
  1290. "EXPERIMENT_FLAGS.user_engagement_experiments_rate_limit_ms": 86400000,
  1291. "EXPERIMENT_FLAGS.user_mention_suggestions_edu_impression_cap": 10,
  1292. "EXPERIMENT_FLAGS.verify_ads_itag_early": true,
  1293. "EXPERIMENT_FLAGS.visibility_time_between_jobs_ms": 100,
  1294. "EXPERIMENT_FLAGS.vss_final_ping_send_and_write": true,
  1295. "EXPERIMENT_FLAGS.vss_playback_use_send_and_write": true,
  1296. "EXPERIMENT_FLAGS.warm_load_nav_start_web": true,
  1297. "EXPERIMENT_FLAGS.warm_op_csn_cleanup": true,
  1298. "EXPERIMENT_FLAGS.watch_next_pause_autoplay_lact_sec": 4500,
  1299. "EXPERIMENT_FLAGS.web_always_load_chat_support": true,
  1300. "EXPERIMENT_FLAGS.web_amsterdam_playlists": true,
  1301. "EXPERIMENT_FLAGS.web_amsterdam_post_mvp_playlists": true,
  1302. "EXPERIMENT_FLAGS.web_animated_like": true,
  1303. "EXPERIMENT_FLAGS.web_animated_like_lazy_load": true,
  1304. "EXPERIMENT_FLAGS.web_api_url": true,
  1305. "EXPERIMENT_FLAGS.web_appshell_purge_trigger": true,
  1306. "EXPERIMENT_FLAGS.web_appshell_refresh_trigger": true,
  1307. "EXPERIMENT_FLAGS.web_autonav_allow_off_by_default": true,
  1308. "EXPERIMENT_FLAGS.web_button_rework": true,
  1309. "EXPERIMENT_FLAGS.web_cinematic_masthead": true,
  1310. "EXPERIMENT_FLAGS.web_darker_dark_theme": true,
  1311. "EXPERIMENT_FLAGS.web_darker_dark_theme_deprecate": true,
  1312. "EXPERIMENT_FLAGS.web_darker_dark_theme_live_chat": true,
  1313. "EXPERIMENT_FLAGS.web_dedupe_ve_grafting": true,
  1314. "EXPERIMENT_FLAGS.web_defer_shorts_ui": true,
  1315. "EXPERIMENT_FLAGS.web_defer_shorts_ui_phase2": true,
  1316. "EXPERIMENT_FLAGS.web_deprecate_service_ajax_map_dependency": true,
  1317. "EXPERIMENT_FLAGS.web_emulated_idle_callback_delay": 0,
  1318. "EXPERIMENT_FLAGS.web_enable_error_204": true,
  1319. "EXPERIMENT_FLAGS.web_enable_history_cache_map": true,
  1320. "EXPERIMENT_FLAGS.web_enable_video_preview_migration": true,
  1321. "EXPERIMENT_FLAGS.web_enable_voz_audio_feedback": true,
  1322. "EXPERIMENT_FLAGS.web_engagement_panel_show_description": true,
  1323. "EXPERIMENT_FLAGS.web_ep_chevron_tap_target_size": true,
  1324. "EXPERIMENT_FLAGS.web_filled_subscribed_button": true,
  1325. "EXPERIMENT_FLAGS.web_foreground_heartbeat_interval_ms": 28000,
  1326. "EXPERIMENT_FLAGS.web_forward_command_on_pbj": true,
  1327. "EXPERIMENT_FLAGS.web_gel_debounce_ms": 60000,
  1328. "EXPERIMENT_FLAGS.web_gel_timeout_cap": true,
  1329. "EXPERIMENT_FLAGS.web_guide_ui_refresh": true,
  1330. "EXPERIMENT_FLAGS.web_hide_autonav_headline": true,
  1331. "EXPERIMENT_FLAGS.web_hide_autonav_keyline": true,
  1332. "EXPERIMENT_FLAGS.web_home_feed_reload_delay": 1440,
  1333. "EXPERIMENT_FLAGS.web_home_feed_reload_experience": "none",
  1334. "EXPERIMENT_FLAGS.web_imp_thumbnail_click_fix_enabled": true,
  1335. "EXPERIMENT_FLAGS.web_inline_player_enabled": true,
  1336. "EXPERIMENT_FLAGS.web_inline_player_no_playback_ui_click_handler": true,
  1337. "EXPERIMENT_FLAGS.web_inline_player_triggering_delay": 1000,
  1338. "EXPERIMENT_FLAGS.web_kevlar_enable_adaptive_signals": true,
  1339. "EXPERIMENT_FLAGS.web_log_memory_total_kbytes": true,
  1340. "EXPERIMENT_FLAGS.web_log_player_watch_next_ticks": true,
  1341. "EXPERIMENT_FLAGS.web_log_reels_ticks": true,
  1342. "EXPERIMENT_FLAGS.web_logging_max_batch": 150,
  1343. "EXPERIMENT_FLAGS.web_modern_ads": true,
  1344. "EXPERIMENT_FLAGS.web_modern_buttons": true,
  1345. "EXPERIMENT_FLAGS.web_modern_buttons_bl_survey": true,
  1346. "EXPERIMENT_FLAGS.web_modern_chips": true,
  1347. "EXPERIMENT_FLAGS.web_modern_dialogs": true,
  1348. "EXPERIMENT_FLAGS.web_modern_playlists": true,
  1349. "EXPERIMENT_FLAGS.web_modern_subscribe": true,
  1350. "EXPERIMENT_FLAGS.web_modern_subscribe_style": "filled",
  1351. "EXPERIMENT_FLAGS.web_move_autoplay_video_under_chip": true,
  1352. "EXPERIMENT_FLAGS.web_moved_super_title_link": true,
  1353. "EXPERIMENT_FLAGS.web_one_platform_error_handling": true,
  1354. "EXPERIMENT_FLAGS.web_paused_only_miniplayer_shortcut_expand": true,
  1355. "EXPERIMENT_FLAGS.web_player_add_ve_conversion_logging_to_outbound_links": true,
  1356. "EXPERIMENT_FLAGS.web_player_autonav_empty_suggestions_fix": true,
  1357. "EXPERIMENT_FLAGS.web_player_autonav_toggle_always_listen": true,
  1358. "EXPERIMENT_FLAGS.web_player_autonav_use_server_provided_state": true,
  1359. // "EXPERIMENT_FLAGS.web_player_caption_language_preference_stickiness_duration": 15,
  1360. "EXPERIMENT_FLAGS.web_player_decouple_autonav": true,
  1361. "EXPERIMENT_FLAGS.web_player_disable_inline_scrubbing": true,
  1362. "EXPERIMENT_FLAGS.web_player_enable_early_warning_snackbar": true,
  1363. "EXPERIMENT_FLAGS.web_player_enable_featured_product_banner_on_desktop": true,
  1364. "EXPERIMENT_FLAGS.web_player_enable_ipp": true,
  1365. "EXPERIMENT_FLAGS.web_player_enable_premium_hbr_in_h5_api": true,
  1366. "EXPERIMENT_FLAGS.web_player_enable_premium_hbr_playback_cap": true,
  1367. "EXPERIMENT_FLAGS.web_player_entities_middleware": true,
  1368. "EXPERIMENT_FLAGS.web_player_log_click_before_generating_ve_conversion_params": true,
  1369. "EXPERIMENT_FLAGS.web_player_move_autonav_toggle": true,
  1370. "EXPERIMENT_FLAGS.web_player_mutable_event_label": true,
  1371. "EXPERIMENT_FLAGS.web_player_should_honor_include_asr_setting": true,
  1372. "EXPERIMENT_FLAGS.web_player_small_hbp_settings_menu": true,
  1373. "EXPERIMENT_FLAGS.web_player_topify_subtitles_for_shorts": true,
  1374. "EXPERIMENT_FLAGS.web_player_touch_mode_improvements": true,
  1375. "EXPERIMENT_FLAGS.web_player_use_new_api_for_quality_pullback": true,
  1376. "EXPERIMENT_FLAGS.web_player_ve_conversion_fixes_for_channel_info": true,
  1377. "EXPERIMENT_FLAGS.web_player_watch_next_response": true,
  1378. "EXPERIMENT_FLAGS.web_prefetch_preload_video": true,
  1379. "EXPERIMENT_FLAGS.web_prs_testing_mode_killswitch": true,
  1380. "EXPERIMENT_FLAGS.web_replace_thumbnail_with_image": true,
  1381. "EXPERIMENT_FLAGS.web_rounded_thumbnails": true,
  1382. "EXPERIMENT_FLAGS.web_search_inline_playback_mouse_enter": true,
  1383. "EXPERIMENT_FLAGS.web_search_inline_player_triggering_delay": 500,
  1384. "EXPERIMENT_FLAGS.web_search_shorts_inline_playback_duration_ms": 0,
  1385. "EXPERIMENT_FLAGS.web_segmented_like_dislike_button": true,
  1386. "EXPERIMENT_FLAGS.web_set_inline_preview_setting_in_home_browse_request": true,
  1387. "EXPERIMENT_FLAGS.web_sheets_ui_refresh": true,
  1388. "EXPERIMENT_FLAGS.web_shorts_early_player_load": true,
  1389. "EXPERIMENT_FLAGS.web_shorts_error_logging_threshold": 0.001,
  1390. "EXPERIMENT_FLAGS.web_shorts_expanded_overlay_type": "DEFAULT",
  1391. "EXPERIMENT_FLAGS.web_shorts_inline_playback_preview_ms": 0,
  1392. "EXPERIMENT_FLAGS.web_shorts_intersection_observer_threshold_override": 0,
  1393. "EXPERIMENT_FLAGS.web_shorts_nvc_dark": true,
  1394. "EXPERIMENT_FLAGS.web_shorts_overlay_vertical_orientation": "bottom",
  1395. "EXPERIMENT_FLAGS.web_shorts_progress_bar": true,
  1396. "EXPERIMENT_FLAGS.web_shorts_scrubber_threshold_sec": 0,
  1397. "EXPERIMENT_FLAGS.web_shorts_shelf_fixed_position": 9,
  1398. "EXPERIMENT_FLAGS.web_shorts_shelf_on_search": true,
  1399. "EXPERIMENT_FLAGS.web_shorts_skip_loading_same_index": true,
  1400. "EXPERIMENT_FLAGS.web_shorts_storyboard_threshold_seconds": 0,
  1401. "EXPERIMENT_FLAGS.web_smoothness_test_duration_ms": 0,
  1402. "EXPERIMENT_FLAGS.web_smoothness_test_method": 0,
  1403. "EXPERIMENT_FLAGS.web_snackbar_ui_refresh": true,
  1404. "EXPERIMENT_FLAGS.web_structured_description_show_more": true,
  1405. "EXPERIMENT_FLAGS.web_suggestion_box_restyle": true,
  1406. "EXPERIMENT_FLAGS.web_system_health_fraction": 0.01,
  1407. "EXPERIMENT_FLAGS.web_turn_off_imp_on_thumbnail_mousedown": true,
  1408. "EXPERIMENT_FLAGS.web_use_cache_for_image_fallback": true,
  1409. "EXPERIMENT_FLAGS.web_yt_config_context": true,
  1410. "EXPERIMENT_FLAGS.woffle_clean_up_after_entity_migration": true,
  1411. "EXPERIMENT_FLAGS.woffle_enable_download_status": true,
  1412. "EXPERIMENT_FLAGS.woffle_orchestration": true,
  1413. "EXPERIMENT_FLAGS.woffle_playlist_optimization": true,
  1414. "EXPERIMENT_FLAGS.woffle_undo_delete": true,
  1415. "EXPERIMENT_FLAGS.yoodle_base_url": "",
  1416. "EXPERIMENT_FLAGS.yoodle_end_time_utc": 0,
  1417. "EXPERIMENT_FLAGS.yoodle_start_time_utc": 0,
  1418. "EXPERIMENT_FLAGS.yoodle_webp_base_url": "",
  1419. "EXPERIMENT_FLAGS.your_data_entrypoint": true,
  1420. "EXPERIMENT_FLAGS.yt_network_manager_component_to_lib_killswitch": true,
  1421. "EXPERIMENT_FLAGS.ytidb_clear_embedded_player": true,
  1422. "EXPERIMENT_FLAGS.ytidb_fetch_datasync_ids_for_data_cleanup": true,
  1423. "EXPERIMENT_FLAGS.ytidb_remake_db_retries": 3,
  1424. "EXPERIMENT_FLAGS.ytidb_reopen_db_retries": 3,
  1425. "EXPERIMENT_FLAGS.ytidb_transaction_ended_event_rate_limit": 0.02,
  1426. "EXPERIMENT_FLAGS.ytidb_transaction_ended_event_rate_limit_session": 0.2,
  1427. "EXPERIMENT_FLAGS.ytidb_transaction_ended_event_rate_limit_transaction": 0.1,
  1428. "FEXP_EXPERIMENTS.0": 23983296,
  1429. // "FEXP_EXPERIMENTS.1": 23986031,
  1430. "FEXP_EXPERIMENTS.10": 24433679,
  1431. "FEXP_EXPERIMENTS.11": 24437577,
  1432. "FEXP_EXPERIMENTS.12": 24439361,
  1433. // "FEXP_EXPERIMENTS.13": 24449113,
  1434. // "FEXP_EXPERIMENTS.14": 24453783,
  1435. "FEXP_EXPERIMENTS.15": 24468691,
  1436. // "FEXP_EXPERIMENTS.16": 24470719,
  1437. // "FEXP_EXPERIMENTS.17": 24499116,
  1438. // "FEXP_EXPERIMENTS.18": 24499792,
  1439. // "FEXP_EXPERIMENTS.19": 24512415,
  1440. "FEXP_EXPERIMENTS.2": 24004644,
  1441. // "FEXP_EXPERIMENTS.20": 24514873,
  1442. "FEXP_EXPERIMENTS.21": 24516157,
  1443. "FEXP_EXPERIMENTS.22": 24550458,
  1444. "FEXP_EXPERIMENTS.23": 24558190,
  1445. "FEXP_EXPERIMENTS.24": 24559764,
  1446. "FEXP_EXPERIMENTS.25": 24693103,
  1447. "FEXP_EXPERIMENTS.26": 39323074,
  1448. "FEXP_EXPERIMENTS.3": 24007246,
  1449. "FEXP_EXPERIMENTS.4": 24080738,
  1450. "FEXP_EXPERIMENTS.5": 24135310,
  1451. // "FEXP_EXPERIMENTS.6": 24219381,
  1452. // "FEXP_EXPERIMENTS.7": 24255163,
  1453. // "FEXP_EXPERIMENTS.8": 24406084,
  1454. // "FEXP_EXPERIMENTS.9": 24415864,
  1455. "FILLER_DATA.browse.filler": true,
  1456. "FILLER_DATA.browse.page": "browse",
  1457. "FILLER_DATA.search.filler": true,
  1458. "FILLER_DATA.search.page": "search",
  1459. "FILLER_DATA.watch.filler": true,
  1460. "FILLER_DATA.watch.page": "watch",
  1461. "FILLER_DATA.watch.playerResponse.playabilityStatus.status": "OK",
  1462. // "GAPI_LOCALE": "en_US",
  1463. // "GL": "JP",
  1464. // "GOOGLE_FEEDBACK_PRODUCT_DATA.accept_language": "en-US,en;q=0.9",
  1465. "GOOGLE_FEEDBACK_PRODUCT_DATA.polymer": "active",
  1466. "GOOGLE_FEEDBACK_PRODUCT_DATA.polymer2": "active",
  1467. // "HL": "en",
  1468. "HTML_DIR": "ltr",
  1469. // "HTML_LANG": "en",
  1470. "INNERTUBE_API_VERSION": "v1",
  1471. "INNERTUBE_CONTEXT.request.useSsl": true,
  1472. "INNERTUBE_CONTEXT.user.lockedSafetyMode": false,
  1473. // "INNERTUBE_CONTEXT_GL": "JP",
  1474. // "INNERTUBE_CONTEXT_HL": "en",
  1475. "IS_TABLET": false,
  1476. "IS_WATCH_PAGE_COLD": true,
  1477. "LIVE_CHAT_BASE_TANGO_CONFIG.channelUri": "https://client-channel.google.com/client-channel/client",
  1478. "LIVE_CHAT_BASE_TANGO_CONFIG.clientName": "yt-live-comments",
  1479. // "LIVE_CHAT_BASE_TANGO_CONFIG.requiresAuthToken": true,
  1480. "LIVE_CHAT_BASE_TANGO_CONFIG.senderUri": "https://clients4.google.com/invalidation/lcs/client",
  1481. "LIVE_CHAT_BASE_TANGO_CONFIG.useNewTango": true,
  1482. "LIVE_CHAT_SEND_MESSAGE_ACTION": "live_chat/watch_page/send",
  1483. // "LOGGED_IN": false,
  1484. "MENTIONS_EDU_HELP_LINK": "https://support.google.com/youtube/?p=creator_community",
  1485. "NON_DEFERRED_HORIZONTAL_LIST_ITEM_COUNT": 5,
  1486. "NON_DEFERRED_HORIZONTAL_LIST_ROW_COUNT": 0,
  1487. "NO_EMPTY_DATA_IMG": true,
  1488. "NUM_NAV": 0,
  1489. "PAGE_BUILD_LABEL": "youtube.desktop.web_20230502_04_RC00",
  1490. "PAGE_CL": 528763904,
  1491. "RAW_COLD_CONFIG_GROUP.experimentFlags.45352180.booleanFlagValue": true,
  1492. "RAW_COLD_CONFIG_GROUP.experimentFlags.45353397.booleanFlagValue": true,
  1493. "RAW_COLD_CONFIG_GROUP.experimentFlags.45358145.booleanFlagValue": true,
  1494. "RAW_COLD_CONFIG_GROUP.experimentFlags.45364993.booleanFlagValue": true,
  1495. "RAW_COLD_CONFIG_GROUP.experimentFlags.45366266.intFlagValue": 60000,
  1496. "RAW_COLD_CONFIG_GROUP.experimentFlags.45366267.intFlagValue": 1,
  1497. "RAW_COLD_CONFIG_GROUP.experimentFlags.45366268.doubleFlagValue": 1,
  1498. "RAW_COLD_CONFIG_GROUP.experimentFlags.45367987.booleanFlagValue": true,
  1499. "RAW_COLD_CONFIG_GROUP.experimentFlags.45368386.booleanFlagValue": true,
  1500. "RAW_COLD_CONFIG_GROUP.experimentFlags.45368498.booleanFlagValue": true,
  1501. "RAW_COLD_CONFIG_GROUP.experimentFlags.45368787.intFlagValue": 200,
  1502. "RAW_COLD_CONFIG_GROUP.experimentFlags.45370961.booleanFlagValue": true,
  1503. "RAW_COLD_CONFIG_GROUP.experimentFlags.45372814.booleanFlagValue": true,
  1504. "RAW_COLD_CONFIG_GROUP.experimentFlags.45374306.booleanFlagValue": true,
  1505. "RAW_COLD_CONFIG_GROUP.experimentFlags.45374860.booleanFlagValue": true,
  1506. "RAW_COLD_CONFIG_GROUP.experimentFlags.45375564.booleanFlagValue": true,
  1507. "RAW_COLD_CONFIG_GROUP.experimentFlags.45375565.booleanFlagValue": true,
  1508. "RAW_COLD_CONFIG_GROUP.experimentFlags.45379855.booleanFlagValue": true,
  1509. "RAW_COLD_CONFIG_GROUP.experimentFlags.45388742.booleanFlagValue": true,
  1510. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.androidEnablePip": false,
  1511. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.androidNgwUiEnabled": false,
  1512. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.androidRestoreBrowseContentsFromBackStack": false,
  1513. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.androidThumbnailMonitorCount": 0,
  1514. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.androidThumbnailMonitorEnabled": false,
  1515. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.androidThumbnailMonitorMinimumWidth": 0,
  1516. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.enableDetailedNetworkStatusReporting": false,
  1517. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.enableGhostCards": false,
  1518. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.enableInlineMuted": false,
  1519. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.enableMobileAutoOffline": false,
  1520. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.hourToReportNetworkStatus": 0,
  1521. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.iosEnableDynamicFontSizing": false,
  1522. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.iosSearchviewRefactoryEnabled": false,
  1523. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.iosSsoSafariFsiPromoEnabled": true,
  1524. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.iosTodayWidgetEnabled": false,
  1525. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.iosWatchExpandTransitionWithoutSnapshot": false,
  1526. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.networkStatusReportingWindowSecs": 0,
  1527. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.ngwFlexyEnabled": false,
  1528. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.ngwFlexyMaxCropRatio": 1,
  1529. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.postsV2": false,
  1530. "RAW_COLD_CONFIG_GROUP.mainAppColdConfig.searchHintExp": "search_youtube",
  1531. "RAW_HOT_CONFIG_GROUP.experimentFlags.45353338.booleanFlagValue": true,
  1532. "RAW_HOT_CONFIG_GROUP.experimentFlags.45355378.booleanFlagValue": true,
  1533. "RAW_HOT_CONFIG_GROUP.experimentFlags.45356954.booleanFlagValue": true,
  1534. "RAW_HOT_CONFIG_GROUP.experimentFlags.45356979.booleanFlagValue": true,
  1535. "RAW_HOT_CONFIG_GROUP.experimentFlags.45362297.booleanFlagValue": true,
  1536. "RAW_HOT_CONFIG_GROUP.experimentFlags.45365137.booleanFlagValue": true,
  1537. "RAW_HOT_CONFIG_GROUP.experimentFlags.45365843.booleanFlagValue": true,
  1538. "RAW_HOT_CONFIG_GROUP.experimentFlags.45366943.booleanFlagValue": true,
  1539. "RAW_HOT_CONFIG_GROUP.experimentFlags.45367289.doubleFlagValue": 2,
  1540. "RAW_HOT_CONFIG_GROUP.experimentFlags.45369552.booleanFlagValue": true,
  1541. "RAW_HOT_CONFIG_GROUP.experimentFlags.45371287.booleanFlagValue": true,
  1542. "RAW_HOT_CONFIG_GROUP.experimentFlags.45375292.booleanFlagValue": true,
  1543. "RAW_HOT_CONFIG_GROUP.experimentFlags.45375445.booleanFlagValue": true,
  1544. "RAW_HOT_CONFIG_GROUP.experimentFlags.45377081.booleanFlagValue": true,
  1545. "RAW_HOT_CONFIG_GROUP.experimentFlags.45377737.booleanFlagValue": true,
  1546. "RAW_HOT_CONFIG_GROUP.experimentFlags.45379169.booleanFlagValue": true,
  1547. "RAW_HOT_CONFIG_GROUP.experimentFlags.45382142.booleanFlagValue": true,
  1548. "RAW_HOT_CONFIG_GROUP.experimentFlags.45382537.booleanFlagValue": true,
  1549. "RAW_HOT_CONFIG_GROUP.experimentFlags.45389043.booleanFlagValue": true,
  1550. "RAW_HOT_CONFIG_GROUP.experimentFlags.45390547.booleanFlagValue": true,
  1551. "RAW_HOT_CONFIG_GROUP.experimentFlags.45399984.booleanFlagValue": true,
  1552. "RAW_HOT_CONFIG_GROUP.loggingHotConfig.eventLoggingConfig.enabled": true,
  1553. "RAW_HOT_CONFIG_GROUP.loggingHotConfig.eventLoggingConfig.maxAgeHours": 720,
  1554. "RAW_HOT_CONFIG_GROUP.loggingHotConfig.eventLoggingConfig.requestRetryEnabled": true,
  1555. "RAW_HOT_CONFIG_GROUP.loggingHotConfig.eventLoggingConfig.retryConfig.fixedBatchRetryEnabled": false,
  1556. "RAW_HOT_CONFIG_GROUP.loggingHotConfig.eventLoggingConfig.shouldForceSetAllPayloadsToImmediateTier": false,
  1557. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.exposeConfigRefreshSetting": false,
  1558. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosEarlySetWatchTransition": false,
  1559. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosEnableSearchButtonOnPlayerOverlay": false,
  1560. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosFreshFullRefresh": false,
  1561. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosFreshHomeIntervalSecs": 0,
  1562. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosFreshNotificationsInboxIntervalSecs": 0,
  1563. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosFreshSubscriptionsIntervalSecs": 0,
  1564. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosMinimumTooltipDurationMsecs": 1000,
  1565. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosTodayWidgetRefreshIntervalSecs": 28800,
  1566. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.iosWatchExpandTransition": false,
  1567. "RAW_HOT_CONFIG_GROUP.mainAppHotConfig.signedOutNotificationsIosPrompt": true,
  1568. "REMAINING_DOVA_DEFERRED_CHUNKS": 6,
  1569. "REUSE_COMPONENTS": true,
  1570. "ROOT_VE_TYPE": 3832,
  1571. // "SBOX_LABELS.SUGGESTION_DISMISSED_LABEL": "Suggestion removed",
  1572. // "SBOX_LABELS.SUGGESTION_DISMISS_LABEL": "Remove",
  1573. "SBOX_SETTINGS.ENABLE_DELETE_ICON": false,
  1574. "SBOX_SETTINGS.ENABLE_DELETE_ICON_HOVER": false,
  1575. "SBOX_SETTINGS.HAS_ON_SCREEN_KEYBOARD": false,
  1576. "SBOX_SETTINGS.HIDE_REMOVE_LINK": false,
  1577. "SBOX_SETTINGS.IS_FUSION": false,
  1578. "SBOX_SETTINGS.IS_POLYMER": true,
  1579. // "SBOX_SETTINGS.REQUEST_LANGUAGE": "en",
  1580. // "SBOX_SETTINGS.SBOX_STRINGS.SBOX_REPORT_SUGGESTIONS": "Report search predictions",
  1581. "SBOX_SETTINGS.SEARCHBOX_BEHAVIOR_EXPERIMENT": "zero-prefix",
  1582. "SBOX_SETTINGS.SEARCHBOX_ENABLE_REFINEMENT_SUGGEST": true,
  1583. "SBOX_SETTINGS.SEARCHBOX_REPORTING": true,
  1584. "SBOX_SETTINGS.SEARCHBOX_TAP_TARGET_EXPERIMENT": 0,
  1585. "SBOX_SETTINGS.SEARCHBOX_ZERO_TYPING_SUGGEST_USE_REGULAR_SUGGEST": "always",
  1586. // "SBOX_SETTINGS.SUGGESTION_BOX_RESTYLE": true,
  1587. "SBOX_SETTINGS.SUGGESTION_BOX_RESTYLE_BOLDER": false,
  1588. "SCHEDULED_LAZY_LIST": true,
  1589. "SERVER_NAME": "WebFE",
  1590. "SERVER_VERSION": "prod",
  1591. "SERVICE_WORKER_PROMPT_NOTIFICATIONS": true,
  1592. "STAMPER_STABLE_LIST": true,
  1593. "START_IN_FULL_WINDOW_MODE": false,
  1594. "START_IN_THEATER_MODE": false,
  1595. "STS": 19478,
  1596. // "TIME_CREATED_MS": 1683185951488,
  1597. "TIMING_ACTION": "watch",
  1598. "TIMING_AFT_KEYS.0": "pbs",
  1599. "TIMING_AFT_KEYS.1": "pbp",
  1600. "TIMING_AFT_KEYS.2": "pbu",
  1601. "TIMING_INFO.yt_ad": "1",
  1602. "VISIBILITY_TIME_BETWEEN_JOBS_MS": 100,
  1603. "XSRF_FIELD_NAME": "session_token",
  1604. // "initialBodyClientWidth": 1464,
  1605. // "initialInnerHeight": 765,
  1606. // "initialInnerWidth": 1464,
  1607. "networkless_performanceTIMING_ACTION": "networkless_performance",
  1608. "player_attTIMING_ACTION": "player_att",
  1609. "scheduler.timeout": 20,
  1610. "scheduler.useRaf": true,
  1611. "wn_commentsTIMING_ACTION": "wn_comments"
  1612. }
  1613. ;
  1614. function createConfigEditor(container, entries) {
  1615.  
  1616. const buildEntry = (key, value) => {
  1617. const entry = document.createElement('div');
  1618. entry.classList.add('list-entry');
  1619. let displayValue = typeof value !== 'string' ? value + "" : `"${value}"`;
  1620.  
  1621. const keySpan = document.createElement('span');
  1622. keySpan.className = 'key';
  1623. keySpan.setAttribute('title', key)
  1624. const keyDiv = document.createElement('div');
  1625. keyDiv.textContent = `${key}`;
  1626. keySpan.appendChild(keyDiv);
  1627.  
  1628. const valueSpan = document.createElement('span');
  1629. valueSpan.className = 'value';
  1630. valueSpan.setAttribute('title', displayValue)
  1631. const valueDiv = document.createElement('div');
  1632. valueDiv.textContent = displayValue;
  1633. valueSpan.appendChild(valueDiv);
  1634.  
  1635. const valueInput = document.createElement('input');
  1636. valueInput.className = 'value';
  1637. valueInput.type = 'text';
  1638. valueInput.value = displayValue;
  1639.  
  1640. entry.appendChild(keySpan);
  1641. entry.appendChild(valueSpan);
  1642. valueSpan.appendChild(valueInput);
  1643.  
  1644. if (mainKeys.includes(key)) entry.classList.add('list-entry-mainkey');
  1645. if (key in minorKeyValues) {
  1646. if (minorKeyValues[key] === value) entry.classList.add('list-entry-minorkey-same');
  1647. else entry.classList.add('list-entry-minorkey-diff');
  1648. }
  1649.  
  1650. return entry;
  1651. };
  1652.  
  1653. for (const key in entries) {
  1654. const entry = buildEntry(key, entries[key]);
  1655. container.appendChild(entry);
  1656. }
  1657.  
  1658. function ensureElementIsInView(el) {
  1659. const rect = el.getBoundingClientRect();
  1660. const scrollable = findScrollableElement(el);
  1661. const viewHeight = scrollable.clientHeight;
  1662.  
  1663. if (rect.top < 0) el.scrollIntoView(true);
  1664. else if (rect.bottom > viewHeight) el.scrollIntoView(false);
  1665. }
  1666.  
  1667. function findScrollableElement(el) {
  1668. let p = el.parentNode;
  1669. while (p) {
  1670. if (p.scrollHeight > p.clientHeight) return p;
  1671. p = p.parentNode;
  1672. }
  1673. return document.documentElement;
  1674. }
  1675.  
  1676.  
  1677.  
  1678. let lastSelectedEntry = null;
  1679. let selectedEntries = [];
  1680. const toggleEntrySelection = (entry) => {
  1681. let beforeSelected = entry.classList.contains('selected');
  1682. let afterSelected = !beforeSelected;
  1683. if (!beforeSelected) {
  1684. if (entry.matches('.list-hide-minor-same .list-entry.list-entry-minorkey-same')) {
  1685. return;
  1686. }
  1687. }
  1688. entry.classList.toggle('selected');
  1689. if (afterSelected) {
  1690. lastSelectedEntry = entry;
  1691. ensureElementIsInView(entry);
  1692. }
  1693. let left = 0;
  1694. let right = selectedEntries.length - 1;
  1695. let insertIndex = selectedEntries.length;
  1696. while (left <= right) {
  1697. const mid = Math.floor((left + right) / 2);
  1698. if (entry.compareDocumentPosition(selectedEntries[mid]) & Node.DOCUMENT_POSITION_FOLLOWING) {
  1699. insertIndex = mid;
  1700. right = mid - 1;
  1701. } else {
  1702. left = mid + 1;
  1703. }
  1704. }
  1705. if (insertIndex === selectedEntries.length) {
  1706. selectedEntries.push(entry);
  1707. } else {
  1708. selectedEntries.splice(insertIndex, 0, entry);
  1709. }
  1710. };
  1711.  
  1712. const editEntries = (entries) => {
  1713. entries.forEach((entry) => {
  1714. // entry.classList.add('editing');
  1715. const input = entry.querySelector('input.value');
  1716. if (input) {
  1717. input.focus();
  1718. input.select();
  1719. }
  1720. });
  1721. };
  1722.  
  1723.  
  1724.  
  1725. let firstSelectedEntry = null;
  1726.  
  1727. function selectEntriesBetween(entry1, entry2) {
  1728. let startSelection = false;
  1729. let entries = Array.from(container.querySelectorAll('.list-entry'));
  1730. if (entries.indexOf(entry1) < 0 || entries.indexOf(entry2) < 0) return;
  1731. if (entry1 == entry2) {
  1732.  
  1733.  
  1734.  
  1735. for (const entry of entries) {
  1736. if (entry === entry1) {
  1737. if (!entry.classList.contains('selected'))
  1738. toggleEntrySelection(entry);
  1739. } else {
  1740. if (entry.classList.contains('selected'))
  1741. toggleEntrySelection(entry);
  1742. }
  1743. }
  1744.  
  1745. return;
  1746. }
  1747.  
  1748. for (const entry of entries) {
  1749. if (entry === entry1 || entry === entry2) {
  1750. startSelection = !startSelection;
  1751. if (!entry.classList.contains('selected'))
  1752. toggleEntrySelection(entry);
  1753. } else if (startSelection) {
  1754.  
  1755. if (!entry.classList.contains('selected'))
  1756. toggleEntrySelection(entry);
  1757. } else if (!startSelection) {
  1758.  
  1759. if (entry.classList.contains('selected'))
  1760. toggleEntrySelection(entry);
  1761. }
  1762. }
  1763. }
  1764.  
  1765. container.addEventListener('click', (e) => {
  1766. if (e.target.matches('.list-entry input')) return;
  1767.  
  1768. const entry = e.target.closest('.list-entry');
  1769. if (!entry) return;
  1770.  
  1771. if (e.detail === 2) {
  1772. editEntries(selectedEntries.length > 0 ? selectedEntries : [entry]);
  1773. } else {
  1774. if (e.ctrlKey || e.metaKey) {
  1775. toggleEntrySelection(entry);
  1776. if (!firstSelectedEntry) {
  1777. firstSelectedEntry = entry;
  1778. }
  1779. } else if (e.shiftKey && firstSelectedEntry) {
  1780. selectEntriesBetween(firstSelectedEntry, entry);
  1781. } else {
  1782. selectedEntries.forEach((e) => e.classList.remove('selected'));
  1783. selectedEntries = [entry];
  1784. firstSelectedEntry = entry;
  1785. toggleEntrySelection(entry);
  1786. }
  1787. }
  1788. });
  1789.  
  1790.  
  1791. container.addEventListener('blur', (e) => {
  1792. if (!e.target.matches('.list-entry input.value')) return;
  1793. const entry = e.target.closest('.list-entry');
  1794. let newValue = e.target.value.trim();
  1795.  
  1796. let valueDom = entry.querySelector('span.value div');
  1797. let oldValue = valueDom.textContent.trim();
  1798. if (oldValue !== newValue) {
  1799.  
  1800. const isBoolean = /^(true|false)$/i.test(oldValue);
  1801. if (isBoolean) {
  1802. if (/^(0)$/.test(newValue)) {
  1803. newValue = false;
  1804. } else
  1805. if (/^(1)$/.test(newValue)) {
  1806. newValue = true;
  1807. }
  1808. }
  1809.  
  1810. const isValidBoolean = /^(true|false)$/i.test(newValue);
  1811. const isValidNumber = /^-?\d+(\.\d+)?$/.test(newValue);
  1812. const isValidString = /^"([^"]|\\")*"$/.test(newValue);
  1813.  
  1814. if (!isValidBoolean && !isValidNumber && !isValidString) {
  1815. entry.classList.remove('editing');
  1816. e.target.value = oldValue;
  1817. } else {
  1818. entry.classList.remove('editing');
  1819. valueDom.textContent = newValue;
  1820. }
  1821. } else {
  1822. entry.classList.remove('editing');
  1823. }
  1824. }, true);
  1825.  
  1826. container.addEventListener('dblclick', (e) => {
  1827. if (!e.target.matches('.list-entry span.value')) return;
  1828. const target = e.target;
  1829. requestAnimationFrame(() => {
  1830.  
  1831. const entry = target.closest('.list-entry');
  1832. const input = entry.querySelector('input.value');
  1833. if (input) {
  1834. input.setSelectionRange(0, input.value.length);
  1835. }
  1836.  
  1837. })
  1838. });
  1839.  
  1840. const selectAdjacentEntry = (entry, direction, addToSelection) => {
  1841. if (!entry) return;
  1842.  
  1843. let adjacentEntry = direction === 'up' ? entry.previousElementSibling : entry.nextElementSibling;
  1844.  
  1845. if (!adjacentEntry) return;
  1846. while (adjacentEntry) {
  1847. if (adjacentEntry.matches('.list-hide-minor-same .list-entry.list-entry-minorkey-same')) {
  1848. adjacentEntry = direction === 'up' ? adjacentEntry.previousElementSibling : adjacentEntry.nextElementSibling;
  1849. } else {
  1850. break;
  1851. }
  1852. }
  1853.  
  1854. if (!adjacentEntry) return;
  1855.  
  1856. if (!addToSelection) {
  1857. selectedEntries.forEach((e) => e.classList.remove('selected'));
  1858. selectedEntries = [];
  1859. } else {
  1860. if (adjacentEntry.classList.contains('selected')) {
  1861. lastSelectedEntry = adjacentEntry;
  1862. toggleEntrySelection(entry);
  1863. return;
  1864. }
  1865. }
  1866.  
  1867. toggleEntrySelection(adjacentEntry);
  1868. };
  1869. function selectAllEntries() {
  1870. const entries = container.querySelectorAll('.list-entry:not(.selected)');
  1871. for (const entry of entries) {
  1872. toggleEntrySelection(entry);
  1873. }
  1874. }
  1875.  
  1876.  
  1877. container.addEventListener('keydown', (e) => {
  1878. if (e.target.matches('.list-entry input.value')) {
  1879.  
  1880.  
  1881. if (e.key === 'Enter') {
  1882. e.preventDefault();
  1883. let container = e.target.closest('.list-container');
  1884. e.target.blur();
  1885. container.focus();
  1886. }
  1887.  
  1888. if (e.key === 'Escape') {
  1889. e.preventDefault();
  1890. let container = e.target.closest('.list-container');
  1891. e.target.blur();
  1892. container.focus();
  1893. }
  1894.  
  1895. } else {
  1896.  
  1897.  
  1898. if ((e.ctrlKey || e.metaKey) && e.key === 'c') {
  1899. console.log(selectedEntries)
  1900. const lines = selectedEntries.map(entry => {
  1901. const key = entry.querySelector('.key div').textContent + ":";
  1902. const value = entry.querySelector('.value div').textContent;
  1903. return `${key} ${value}`;
  1904. });
  1905. const textToCopy = lines.join(',\n');
  1906. navigator.clipboard.writeText(textToCopy).then(() => {
  1907. console.log('Copied to clipboard');
  1908. }).catch((err) => {
  1909. console.error('Error copying to clipboard', err);
  1910. });
  1911. } else {
  1912.  
  1913. if (selectedEntries.length === 0) return;
  1914. if ((e.ctrlKey || e.metaKey) && e.key === 'a') {
  1915. e.preventDefault();
  1916. selectAllEntries();
  1917. } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
  1918. if (lastSelectedEntry !== null && selectedEntries.indexOf(lastSelectedEntry) >= 0) {
  1919. selectAdjacentEntry(lastSelectedEntry, e.key === 'ArrowUp' ? 'up' : 'down', e.shiftKey);
  1920. } else {
  1921. lastSelectedEntry = null;
  1922. }
  1923. e.preventDefault();
  1924. } else if (e.key === 'Enter') {
  1925. if (!selectedEntries.some(entry => entry.classList.contains('editing'))) {
  1926. editEntries(selectedEntries);
  1927. }
  1928. }
  1929. }
  1930. }
  1931. });
  1932.  
  1933.  
  1934. }
  1935.  
  1936. function createDialog() {
  1937.  
  1938. const _themeProps_ = {
  1939. dialogBackgroundColor: '#f6f6f6',
  1940. dialogBackgroundColorDark: '#23252a',
  1941. backdropColor: '#b5b5b568',
  1942. textColor: '#111111',
  1943. textColorDark: '#f0f3f4',
  1944. zIndex: 60000,
  1945. fontSize: '10pt',
  1946. dialogMinWidth: '32px',
  1947. dialogMinHeight: '24px',
  1948. };
  1949.  
  1950. class VJSD extends VanillaJSDialog {
  1951.  
  1952. get themeProps() {
  1953. return _themeProps_
  1954. }
  1955.  
  1956. isDarkTheme() {
  1957. return document.documentElement.hasAttribute('dark');
  1958. }
  1959.  
  1960. onBeforeShow() {
  1961.  
  1962. }
  1963.  
  1964. onFirstCreation() {
  1965.  
  1966. const S = this.S; /* this is the global method */
  1967.  
  1968. /* on top of the setup function, override the icon widget on global method */
  1969. S.widgets.icon = (iconTag) => {
  1970. return S.ce('i', { className: 'vjsd-icon fa-solid fa-' + iconTag });
  1971. }
  1972.  
  1973. /* you might also overide `S.importCSS` by the use of Userscript Manager's import */
  1974. S.importCSS(
  1975. 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/fontawesome.min.css#sha512=SgaqKKxJDQ/tAUAAXzvxZz33rmn7leYDYfBP+YoMRSENhf3zJyx3SBASt/OfeQwBHA1nxMis7mM3EV/oYT6Fdw==',
  1976. // 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/brands.min.css',
  1977. 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/solid.min.css#sha512=yDUXOUWwbHH4ggxueDnC5vJv4tmfySpVdIcN1LksGZi8W8EVZv4uKGrQc0pVf66zS7LDhFJM7Zdeow1sw1/8Jw=='
  1978. );
  1979.  
  1980. /* load CSS files, etc - You might overide the `getTheme()` in VanillaJSDialog */
  1981. this.themeSetup();
  1982. }
  1983.  
  1984. /* init is called after setup function is called */
  1985. init() {
  1986. const S = this.S; /* this is the global method */
  1987.  
  1988. const es = this.es; /* this is a store for HTMLElements binded to this dialog */
  1989.  
  1990. es.dialog = S.ce('div', {
  1991. className: 'vjsd-dialog'
  1992. }, {
  1993. '__vjsd__': ''
  1994. });
  1995.  
  1996. es.dialog.append(
  1997. es.header = S.ce('div', {
  1998. className: 'vjsd-dialog-header vjsd-hflex'
  1999. }),
  2000. es.body = S.ce('div', {
  2001. className: 'vjsd-dialog-body vjsd-gap-2 vjsd-overscroll-none vjsd-vflex'
  2002. }),
  2003.  
  2004. );
  2005.  
  2006.  
  2007. es.footer = S.ce('div', {
  2008. className: 'vjsd-dialog-footer vjsd-hflex'
  2009. });
  2010.  
  2011. es.header.append(
  2012. S.widgets.icon('circle-info', (a) => {
  2013.  
  2014. }),
  2015. S.widgets.title('YouTube Configuration', {
  2016. className: 'vjsd-flex-fill'
  2017. }),
  2018. S.widgets.buttonIcon('square-xmark', {
  2019. 'vjsd-clickable': '#dialogXmark'
  2020. })
  2021. );
  2022.  
  2023. const checkBoxChanged = () => {
  2024. let elmChoice1 = [...document.getElementsByName('tabview-tab-default')].filter(e => e.checked).map(e => e.value);
  2025. console.assert(elmChoice1.length <= 1);
  2026. es.checkboxSelectionDisplay.textContent = elmChoice1.length === 1 ? `The default tab will be set to ${elmChoice1[0]}` : `The default tab will be reset.`;
  2027. }
  2028.  
  2029. es.body.append(
  2030. es.ycConfigPlacholder = S.ce('div', { id: 'yc-config-placeholder' })
  2031. );
  2032.  
  2033. const onXMarkClicked = () => {
  2034. this.dismiss();
  2035. }
  2036.  
  2037. const onClearClicked = () => {
  2038. es.checkbox1.checked = false;
  2039. es.checkbox2.checked = false;
  2040. es.checkbox3.checked = false;
  2041. checkBoxChanged();
  2042. }
  2043.  
  2044. const onConfirmClicked = () => {
  2045. let myDefaultTab = null;
  2046. for (const checkbox of document.getElementsByName('tabview-tab-default')) {
  2047. if (checkbox.checked) myDefaultTab = checkbox.value;
  2048. }
  2049. myDefaultTab = myDefaultTab || null;
  2050. console.log(myDefaultTab)
  2051. setMyDefaultTab(myDefaultTab);
  2052. this.dismiss();
  2053. }
  2054.  
  2055. const onCancelClicked = () => {
  2056. this.dismiss();
  2057. }
  2058.  
  2059. es.footer.append(
  2060. es.clearButton = S.widgets.button('Clear', {
  2061. 'vjsd-clickable': '#clear'
  2062. }),
  2063. S.widgets.space(),
  2064. S.widgets.button('Cancel', {
  2065. 'vjsd-clickable': '#cancel'
  2066. }),
  2067. S.widgets.button('Confirm', {
  2068. 'vjsd-clickable': '#confirm'
  2069. }),
  2070. )
  2071.  
  2072. this.clickable('#cancel', onCancelClicked)
  2073. this.clickable('#clear', onClearClicked)
  2074. this.clickable('#confirm', onConfirmClicked)
  2075. this.clickable('#dialogXmark', onXMarkClicked);
  2076.  
  2077. this.backdrop = 'dismiss';
  2078. document.body.appendChild(es.dialog)
  2079. }
  2080. }
  2081.  
  2082. VJSD.setup1();
  2083. return new VJSD();
  2084. }
  2085.  
  2086.  
  2087.  
  2088.  
  2089. let dialog = null;
  2090.  
  2091.  
  2092. let containerWrapper = null;
  2093.  
  2094.  
  2095. GM_registerMenuCommand("Read", function () {
  2096.  
  2097. addCSSForList();
  2098.  
  2099.  
  2100. let p = getModuleGetConfig()
  2101. console.log(p);
  2102.  
  2103. const ytEntries = p;
  2104. let container = null;
  2105.  
  2106. if (containerWrapper === null) {
  2107.  
  2108. container = document.createElement('div');
  2109. container.className = 'list-container list-hide-minor-same';
  2110. container.setAttribute('tabindex', '0');
  2111.  
  2112. containerWrapper = document.createElement('div');
  2113. containerWrapper.className = 'list-container-wrapper';
  2114. containerWrapper.setAttribute('tabindex', '-1');
  2115.  
  2116. containerWrapper.appendChild(container);
  2117. } else {
  2118. container = containerWrapper.querySelector('.list-container');
  2119. container.textContent = '';
  2120. }
  2121.  
  2122. // const container = document.querySelector('#list-container');
  2123. // createConfigEditor(container, ytEntries);
  2124.  
  2125. createConfigEditor(container, ytEntries);
  2126. console.log(containerWrapper);
  2127.  
  2128.  
  2129.  
  2130. dialog = dialog || createDialog();
  2131. dialog.show();
  2132.  
  2133. document.querySelector('#yc-config-placeholder').appendChild(containerWrapper);
  2134.  
  2135.  
  2136.  
  2137.  
  2138. });
  2139.  
  2140.  
  2141.  
  2142. function moduleSetYC() {
  2143.  
  2144. let configMap = new WeakSet();
  2145.  
  2146. function cloneIt(target, source) {
  2147.  
  2148. if (!target) return;
  2149.  
  2150. if (configMap.has(target)) return;
  2151.  
  2152. configMap.add(target)
  2153.  
  2154. Object.assign(target, source);
  2155.  
  2156. return true;
  2157.  
  2158. }
  2159.  
  2160. function configSet() {
  2161.  
  2162. const yt = uWind.yt;
  2163. if (!yt) return;
  2164.  
  2165. if (yt && yt.config_) {
  2166.  
  2167. cloneIt(yt.config_, {
  2168. BUTTON_REWORK: false
  2169. })
  2170. }
  2171.  
  2172. if (yt && yt.config_ && yt.config_.EXPERIMENT_FLAGS) {
  2173.  
  2174. cloneIt(yt.config_.EXPERIMENT_FLAGS, {
  2175. enable_header_channel_handler_ui: false,
  2176. kevlar_unavailable_video_error_ui_client: false,
  2177. kevlar_refresh_on_theme_change: false,
  2178. kevlar_watch_cinematics: false,
  2179. kevlar_watch_metadata_refresh: false,
  2180. kevlar_watch_modern_metapanel: false,
  2181. web_amsterdam_playlists: false,
  2182. web_animated_like: false,
  2183. web_button_rework: false,
  2184. web_button_rework_with_live: false,
  2185. web_darker_dark_theme: false,
  2186. web_guide_ui_refresh: false,
  2187. web_modern_ads: false,
  2188. web_modern_buttons: false,
  2189. web_modern_chips: false,
  2190. web_modern_dialogs: false,
  2191. web_modern_playlists: false,
  2192. web_rounded_containers: false,
  2193. web_rounded_thumbnails: false,
  2194. web_searchbar_style: "default",
  2195. web_segmented_like_dislike_button: false,
  2196. web_sheets_ui_refresh: false,
  2197. web_snackbar_ui_refresh: false
  2198. });
  2199. }
  2200.  
  2201. // TODO
  2202.  
  2203.  
  2204. }
  2205. let afk = 0;
  2206. const MAX_AFK = 1e5; // don't change
  2207. const PROCESS_UNLOCK_MULTIPLER = 180; // 16 for slow PC; 180 for forced effectiveness
  2208. const FORCED_TIMEOUT = 4000; // actually 1000ms shall be fine
  2209. const af = async () => {
  2210. while (afk < MAX_AFK) {
  2211. // for Mac M1, afk ends at 1000
  2212.  
  2213. configSet();
  2214. if (((++afk) % PROCESS_UNLOCK_MULTIPLER) === 0) {
  2215. await Promise.race([new Promise(r => requestAnimationFrame(r)), new Promise(r => setTimeout(r, 0))]);
  2216. } else {
  2217. await Promise.resolve(0);
  2218. }
  2219.  
  2220. }
  2221. }
  2222. af();
  2223.  
  2224.  
  2225. const afBreakEventHandler = () => {
  2226. afk = MAX_AFK;
  2227. }
  2228.  
  2229. // play safe
  2230. setTimeout(afBreakEventHandler, FORCED_TIMEOUT);
  2231.  
  2232. // here we introduced two event hanlding to end the config force set.
  2233. document.addEventListener('navigate-finish', afBreakEventHandler, true);
  2234. document.addEventListener('yt-page-data-updated', afBreakEventHandler, true);
  2235.  
  2236. }
  2237.  
  2238. // moduleSetYC();
  2239.  
  2240.  
  2241. // Your code here...
  2242. })(typeof unsafeWindow === 'object' ? unsafeWindow : window);

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址