diff --git a/dist/build.txt b/dist/build.txt index c4962e17..11b00a4d 100644 --- a/dist/build.txt +++ b/dist/build.txt @@ -1 +1 @@ -version=1.9.96 \ No newline at end of file +version=1.9.101 \ No newline at end of file diff --git a/dist/redirect-files/googletagservices-gpt.js b/dist/redirect-files/googletagservices-gpt.js index d863e11c..f9b4c932 100644 --- a/dist/redirect-files/googletagservices-gpt.js +++ b/dist/redirect-files/googletagservices-gpt.js @@ -312,6 +312,7 @@ setCookieOptions: noopThis, setForceSafeFrame: noopThis, setLocation: noopThis, + setPrivacySettings: noopThis, setPublisherProvidedId: noopThis, setRequestNonPersonalizedAds: noopThis, setSafeFrameConfig: noopThis, diff --git a/dist/redirects.json b/dist/redirects.json index edf4451d..6610a671 100644 --- a/dist/redirects.json +++ b/dist/redirects.json @@ -71,6 +71,9 @@ }, { "title": "noopjson", + "aliases": [ + "noop.json" + ], "isBlocking": false, "contentType": "application/json;base64", "content": "e30=" @@ -253,7 +256,7 @@ ], "isBlocking": false, "contentType": "application/javascript;base64", - "content": "IWZ1bmN0aW9uKHNvdXJjZSxhcmdzKXtmdW5jdGlvbiBub29wRnVuYygpe31mdW5jdGlvbiBub29wVGhpcygpe3JldHVybiB0aGlzfWZ1bmN0aW9uIG5vb3BOdWxsKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gbm9vcEFycmF5KCl7cmV0dXJuW119ZnVuY3Rpb24gbm9vcFN0cigpe3JldHVybiIifWZ1bmN0aW9uIHRydWVGdW5jKCl7cmV0dXJuITB9Y29uc3QgdXBkYXRlZEFyZ3M9YXJncz9bXS5jb25jYXQoc291cmNlKS5jb25jYXQoYXJncyk6W3NvdXJjZV07dHJ5eyhmdW5jdGlvbihzb3VyY2Upe3ZhciBzbG90cz1uZXcgTWFwLHNsb3RzQnlJZD1uZXcgTWFwLHNsb3RzUGVyUGF0aD1uZXcgTWFwLHNsb3RDcmVhdGl2ZXM9bmV3IE1hcCxldmVudENhbGxiYWNrcz1uZXcgTWFwLGdUYXJnZXRpbmc9bmV3IE1hcCxhZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKG5hbWUsbGlzdGVuZXIpe3JldHVybiBldmVudENhbGxiYWNrcy5oYXMobmFtZSl8fGV2ZW50Q2FsbGJhY2tzLnNldChuYW1lLG5ldyBTZXQpLGV2ZW50Q2FsbGJhY2tzLmdldChuYW1lKS5hZGQobGlzdGVuZXIpLHRoaXN9LHJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24obmFtZSxsaXN0ZW5lcil7cmV0dXJuISFldmVudENhbGxiYWNrcy5oYXMobmFtZSkmJmV2ZW50Q2FsbGJhY2tzLmdldChuYW1lKS5kZWxldGUobGlzdGVuZXIpfSxmaXJlU2xvdEV2ZW50PWZ1bmN0aW9uKG5hbWUsc2xvdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyZXNvbHZlKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7Zm9yKHZhciBzaXplPVswLDBdLGNhbGxiYWNrc1NldD1ldmVudENhbGxiYWNrcy5nZXQobmFtZSl8fFtdLGNhbGxiYWNrQXJyYXk9QXJyYXkuZnJvbShjYWxsYmFja3NTZXQpLGk9MDtpPGNhbGxiYWNrQXJyYXkubGVuZ3RoO2krPTEpY2FsbGJhY2tBcnJheVtpXSh7aXNFbXB0eTohMCxzaXplOnNpemUsc2xvdDpzbG90fSk7cmVzb2x2ZSgpfSkpfSkpfSxkaXNwbGF5U2xvdD1mdW5jdGlvbihzbG90KXtpZihzbG90KXt2YXIgaWQ9c2xvdC5nZXRTbG90RWxlbWVudElkKCk7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKXt2YXIgcGFyZW50PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtwYXJlbnQmJnBhcmVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSksZnVuY3Rpb24oc2xvdCl7Zm9yKHZhciBub2RlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpKTtudWxsIT1ub2RlJiZub2RlLmxhc3RDaGlsZDspbm9kZS5sYXN0Q2hpbGQucmVtb3ZlKCl9KHNsb3QpLGZ1bmN0aW9uKHNsb3Qpe3ZhciBfZG9jdW1lbnQkZ2V0RWxlbWVudEIsZWlkPSJnb29nbGVfYWRzX2lmcmFtZV8iLmNvbmNhdChzbG90LmdldElkKCkpO251bGw9PT0oX2RvY3VtZW50JGdldEVsZW1lbnRCPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVpZCkpfHx2b2lkIDA9PT1fZG9jdW1lbnQkZ2V0RWxlbWVudEJ8fF9kb2N1bWVudCRnZXRFbGVtZW50Qi5yZW1vdmUoKTt2YXIgbm9kZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChzbG90LmdldFNsb3RFbGVtZW50SWQoKSk7aWYobm9kZSl7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zi5pZD1laWQsZi5zcmNkb2M9Ijxib2R5PjwvYm9keT4iLGYuc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDowOyBoZWlnaHQ6MDsgbGVmdDowOyByaWdodDowOyB6LWluZGV4Oi0xOyBib3JkZXI6MCIsZi5zZXRBdHRyaWJ1dGUoIndpZHRoIiwwKSxmLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwwKSxmLnNldEF0dHJpYnV0ZSgiZGF0YS1sb2FkLWNvbXBsZXRlIiwhMCksZi5zZXRBdHRyaWJ1dGUoImRhdGEtZ29vZ2xlLWNvbnRhaW5lci1pZCIsITApLGYuc2V0QXR0cmlidXRlKCJzYW5kYm94IiwiIiksbm9kZS5hcHBlbmRDaGlsZChmKX19KHNsb3QpLGZpcmVTbG90RXZlbnQoInNsb3RSZW5kZXJFbmRlZCIsc2xvdCksZmlyZVNsb3RFdmVudCgic2xvdFJlcXVlc3RlZCIsc2xvdCksZmlyZVNsb3RFdmVudCgic2xvdFJlc3BvbnNlUmVjZWl2ZWQiLHNsb3QpLGZpcmVTbG90RXZlbnQoInNsb3RPbmxvYWQiLHNsb3QpLGZpcmVTbG90RXZlbnQoImltcHJlc3Npb25WaWV3YWJsZSIsc2xvdCl9fX0sY29tcGFuaW9uQWRzU2VydmljZT17YWRkRXZlbnRMaXN0ZW5lcjphZGRFdmVudExpc3RlbmVyLHJlbW92ZUV2ZW50TGlzdGVuZXI6cmVtb3ZlRXZlbnRMaXN0ZW5lcixlbmFibGVTeW5jTG9hZGluZzpub29wRnVuYyxzZXRSZWZyZXNoVW5maWxsZWRTbG90czpub29wRnVuYyxnZXRTbG90czpub29wQXJyYXl9LGNvbnRlbnRTZXJ2aWNlPXthZGRFdmVudExpc3RlbmVyOmFkZEV2ZW50TGlzdGVuZXIscmVtb3ZlRXZlbnRMaXN0ZW5lcjpyZW1vdmVFdmVudExpc3RlbmVyLHNldENvbnRlbnQ6bm9vcEZ1bmN9O2Z1bmN0aW9uIFBhc3NiYWNrU2xvdCgpe31mdW5jdGlvbiBTaXplTWFwcGluZ0J1aWxkZXIoKXt9UGFzc2JhY2tTbG90LnByb3RvdHlwZS5kaXNwbGF5PW5vb3BGdW5jLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUuZ2V0PW5vb3BOdWxsLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUuc2V0PW5vb3BUaGlzLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUuc2V0Q2xpY2tVcmw9bm9vcFRoaXMsUGFzc2JhY2tTbG90LnByb3RvdHlwZS5zZXRUYWdGb3JDaGlsZERpcmVjdGVkVHJlYXRtZW50PW5vb3BUaGlzLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUuc2V0VGFyZ2V0aW5nPW5vb3BUaGlzLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcD1ub29wVGhpcyxTaXplTWFwcGluZ0J1aWxkZXIucHJvdG90eXBlLmFkZFNpemU9bm9vcFRoaXMsU2l6ZU1hcHBpbmdCdWlsZGVyLnByb3RvdHlwZS5idWlsZD1ub29wTnVsbDt2YXIgZ2V0VGFyZ2V0aW5nVmFsdWU9ZnVuY3Rpb24odil7aWYoInN0cmluZyI9PXR5cGVvZiB2KXJldHVyblt2XTt0cnl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5mbGF0LmNhbGwodil9Y2F0Y2goX3VudXNlZCl7fXJldHVybltdfSxkZWZpbmVTbG90PWZ1bmN0aW9uKGFkVW5pdFBhdGgsY3JlYXRpdmVzLG9wdERpdil7dmFyIF9kb2N1bWVudCRnZXRFbGVtZW50QjI7aWYoc2xvdHNCeUlkLmhhcyhvcHREaXYpKXJldHVybiBudWxsPT09KF9kb2N1bWVudCRnZXRFbGVtZW50QjI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0RGl2KSl8fHZvaWQgMD09PV9kb2N1bWVudCRnZXRFbGVtZW50QjJ8fF9kb2N1bWVudCRnZXRFbGVtZW50QjIucmVtb3ZlKCksc2xvdHNCeUlkLmdldChvcHREaXYpO3ZhciBhdHRyaWJ1dGVzPW5ldyBNYXAsdGFyZ2V0aW5nPW5ldyBNYXAsZXhjbHVzaW9ucz1uZXcgU2V0LHJlc3BvbnNlPXthZHZlcnRpc2VySWQ6dm9pZCAwLGNhbXBhaWduSWQ6dm9pZCAwLGNyZWF0aXZlSWQ6dm9pZCAwLGNyZWF0aXZlVGVtcGxhdGVJZDp2b2lkIDAsbGluZUl0ZW1JZDp2b2lkIDB9LHNpemVzPVt7Z2V0SGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIDJ9LGdldFdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIDJ9fV0sbnVtPShzbG90c1BlclBhdGguZ2V0KGFkVW5pdFBhdGgpfHwwKSsxO3Nsb3RzUGVyUGF0aC5zZXQoYWRVbml0UGF0aCxudW0pO3ZhciBpZD0iIi5jb25jYXQoYWRVbml0UGF0aCwiXyIpLmNvbmNhdChudW0pLGNsaWNrVXJsPSIiLGNvbGxhcHNlRW1wdHlEaXY9bnVsbCxzZXJ2aWNlcz1uZXcgU2V0LHNsb3Q9e2FkZFNlcnZpY2U6ZT0+KHNlcnZpY2VzLmFkZChlKSxzbG90KSxjbGVhckNhdGVnb3J5RXhjbHVzaW9uczpub29wVGhpcyxjbGVhclRhcmdldGluZyhrKXt2b2lkIDA9PT1rP3RhcmdldGluZy5jbGVhcigpOnRhcmdldGluZy5kZWxldGUoayl9LGRlZmluZVNpemVNYXBwaW5nKG1hcHBpbmcpe3JldHVybiBzbG90Q3JlYXRpdmVzLnNldChvcHREaXYsbWFwcGluZyksdGhpc30sZ2V0OmZ1bmN0aW9uKGspe3JldHVybiBhdHRyaWJ1dGVzLmdldChrKX0sZ2V0QWRVbml0UGF0aDpmdW5jdGlvbigpe3JldHVybiBhZFVuaXRQYXRofSxnZXRBdHRyaWJ1dGVLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oYXR0cmlidXRlcy5rZXlzKCkpfSxnZXRDYXRlZ29yeUV4Y2x1c2lvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbShleGNsdXNpb25zKX0sZ2V0Q2xpY2tVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gY2xpY2tVcmx9LGdldENvbGxhcHNlRW1wdHlEaXY6ZnVuY3Rpb24oKXtyZXR1cm4gY29sbGFwc2VFbXB0eURpdn0sZ2V0Q29udGVudFVybDpmdW5jdGlvbigpe3JldHVybiIifSxnZXREaXZTdGFydHNDb2xsYXBzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0RG9tSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gb3B0RGl2fSxnZXRFc2NhcGVkUWVtUXVlcnlJZDpmdW5jdGlvbigpe3JldHVybiIifSxnZXRGaXJzdExvb2s6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0SWQ6ZnVuY3Rpb24oKXtyZXR1cm4gaWR9LGdldEh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZ2V0TmFtZTpmdW5jdGlvbigpe3JldHVybiBpZH0sZ2V0T3V0T2ZQYWdlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldFJlc3BvbnNlSW5mb3JtYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gcmVzcG9uc2V9LGdldFNlcnZpY2VzOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oc2VydmljZXMpfSxnZXRTaXplczpmdW5jdGlvbigpe3JldHVybiBzaXplc30sZ2V0U2xvdEVsZW1lbnRJZDpmdW5jdGlvbigpe3JldHVybiBvcHREaXZ9LGdldFNsb3RJZDpmdW5jdGlvbigpe3JldHVybiBzbG90fSxnZXRUYXJnZXRpbmc6ZnVuY3Rpb24oayl7cmV0dXJuIHRhcmdldGluZy5nZXQoayl8fGdUYXJnZXRpbmcuZ2V0KGspfHxbXX0sZ2V0VGFyZ2V0aW5nS2V5czpmdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoQXJyYXkub2YoLi4uZ1RhcmdldGluZy5rZXlzKCksLi4udGFyZ2V0aW5nLmtleXMoKSkpKX0sZ2V0VGFyZ2V0aW5nTWFwOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmZyb21FbnRyaWVzKGdUYXJnZXRpbmcuZW50cmllcygpKSxPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0aW5nLmVudHJpZXMoKSkpfSxzZXQ6KGssdik9PihhdHRyaWJ1dGVzLnNldChrLHYpLHNsb3QpLHNldENhdGVnb3J5RXhjbHVzaW9uOmU9PihleGNsdXNpb25zLmFkZChlKSxzbG90KSxzZXRDbGlja1VybDp1PT4oY2xpY2tVcmw9dSxzbG90KSxzZXRDb2xsYXBzZUVtcHR5RGl2OnY9Pihjb2xsYXBzZUVtcHR5RGl2PSEhdixzbG90KSxzZXRTYWZlRnJhbWVDb25maWc6bm9vcFRoaXMsc2V0VGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudDpub29wVGhpcyxzZXRUYXJnZXRpbmc6KGssdik9Pih0YXJnZXRpbmcuc2V0KGssZ2V0VGFyZ2V0aW5nVmFsdWUodikpLHNsb3QpLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGlkfSx1cGRhdGVUYXJnZXRpbmdGcm9tTWFwOm1hcD0+KGZ1bmN0aW9uKHRhcmdldGluZyxtYXApe2lmKCJvYmplY3QiPT10eXBlb2YgbWFwKWZvcih2YXIga2V5IGluIG1hcClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobWFwLGtleSkmJnRhcmdldGluZy5zZXQoa2V5LGdldFRhcmdldGluZ1ZhbHVlKG1hcFtrZXldKSl9KHRhcmdldGluZyxtYXApLHNsb3QpfTtyZXR1cm4gc2xvdHMuc2V0KGFkVW5pdFBhdGgsc2xvdCksc2xvdHNCeUlkLnNldChvcHREaXYsc2xvdCksc2xvdENyZWF0aXZlcy5zZXQob3B0RGl2LGNyZWF0aXZlcyksc2xvdH0scHViQWRzU2VydmljZT17YWRkRXZlbnRMaXN0ZW5lcjphZGRFdmVudExpc3RlbmVyLHJlbW92ZUV2ZW50TGlzdGVuZXI6cmVtb3ZlRXZlbnRMaXN0ZW5lcixjbGVhcjpub29wRnVuYyxjbGVhckNhdGVnb3J5RXhjbHVzaW9uczpub29wVGhpcyxjbGVhclRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ6bm9vcFRoaXMsY2xlYXJUYXJnZXRpbmcoayl7dm9pZCAwPT09az9nVGFyZ2V0aW5nLmNsZWFyKCk6Z1RhcmdldGluZy5kZWxldGUoayl9LGNvbGxhcHNlRW1wdHlEaXZzOm5vb3BGdW5jLGRlZmluZU91dE9mUGFnZVBhc3NiYWNrOigpPT5uZXcgUGFzc2JhY2tTbG90LGRlZmluZVBhc3NiYWNrOigpPT5uZXcgUGFzc2JhY2tTbG90LGRpc2FibGVJbml0aWFsTG9hZDpub29wRnVuYyxkaXNwbGF5Om5vb3BGdW5jLGVuYWJsZUFzeW5jUmVuZGVyaW5nOm5vb3BGdW5jLGVuYWJsZUxhenlMb2FkOm5vb3BGdW5jLGVuYWJsZVNpbmdsZVJlcXVlc3Q6bm9vcEZ1bmMsZW5hYmxlU3luY1JlbmRlcmluZzpub29wRnVuYyxlbmFibGVWaWRlb0Fkczpub29wRnVuYyxnZXQ6bm9vcE51bGwsZ2V0QXR0cmlidXRlS2V5czpub29wQXJyYXksZ2V0VGFyZ2V0aW5nOm5vb3BBcnJheSxnZXRUYXJnZXRpbmdLZXlzOm5vb3BBcnJheSxnZXRTbG90czpub29wQXJyYXksaXNJbml0aWFsTG9hZERpc2FibGVkOnRydWVGdW5jLHJlZnJlc2g6bm9vcEZ1bmMsc2V0Om5vb3BUaGlzLHNldENhdGVnb3J5RXhjbHVzaW9uOm5vb3BUaGlzLHNldENlbnRlcmluZzpub29wRnVuYyxzZXRDb29raWVPcHRpb25zOm5vb3BUaGlzLHNldEZvcmNlU2FmZUZyYW1lOm5vb3BUaGlzLHNldExvY2F0aW9uOm5vb3BUaGlzLHNldFB1Ymxpc2hlclByb3ZpZGVkSWQ6bm9vcFRoaXMsc2V0UmVxdWVzdE5vblBlcnNvbmFsaXplZEFkczpub29wVGhpcyxzZXRTYWZlRnJhbWVDb25maWc6bm9vcFRoaXMsc2V0VGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudDpub29wVGhpcyxzZXRUYXJnZXRpbmc6bm9vcFRoaXMsc2V0VmlkZW9Db250ZW50Om5vb3BUaGlzLHVwZGF0ZUNvcnJlbGF0b3I6bm9vcEZ1bmN9LF93aW5kb3ckZ29vZ2xldGFnPXdpbmRvdy5nb29nbGV0YWcsZ29vZ2xldGFnPXZvaWQgMD09PV93aW5kb3ckZ29vZ2xldGFnP3t9Ol93aW5kb3ckZ29vZ2xldGFnLF9nb29nbGV0YWckY21kPWdvb2dsZXRhZy5jbWQsY21kPXZvaWQgMD09PV9nb29nbGV0YWckY21kP1tdOl9nb29nbGV0YWckY21kO2Zvcihnb29nbGV0YWcuYXBpUmVhZHk9ITAsZ29vZ2xldGFnLmNtZD1bXSxnb29nbGV0YWcuY21kLnB1c2g9ZnVuY3Rpb24oYSl7dHJ5e2EoKX1jYXRjaChleCl7fXJldHVybiAxfSxnb29nbGV0YWcuY29tcGFuaW9uQWRzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbXBhbmlvbkFkc1NlcnZpY2V9LGdvb2dsZXRhZy5jb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRlbnRTZXJ2aWNlfSxnb29nbGV0YWcuZGVmaW5lT3V0T2ZQYWdlU2xvdD1kZWZpbmVTbG90LGdvb2dsZXRhZy5kZWZpbmVTbG90PWRlZmluZVNsb3QsZ29vZ2xldGFnLmRlc3Ryb3lTbG90cz1mdW5jdGlvbigpe3Nsb3RzLmNsZWFyKCksc2xvdHNCeUlkLmNsZWFyKCl9LGdvb2dsZXRhZy5kaXNhYmxlUHVibGlzaGVyQ29uc29sZT1ub29wRnVuYyxnb29nbGV0YWcuZGlzcGxheT1mdW5jdGlvbihhcmcpe3ZhciBpZDtpZD1udWxsIT1hcmcmJmFyZy5nZXRTbG90RWxlbWVudElkP2FyZy5nZXRTbG90RWxlbWVudElkKCk6bnVsbCE9YXJnJiZhcmcubm9kZVR5cGU/YXJnLmlkOlN0cmluZyhhcmcpLGRpc3BsYXlTbG90KHNsb3RzQnlJZC5nZXQoaWQpKX0sZ29vZ2xldGFnLmVuYWJsZVNlcnZpY2VzPW5vb3BGdW5jLGdvb2dsZXRhZy5nZXRWZXJzaW9uPW5vb3BTdHIsZ29vZ2xldGFnLnB1YmFkcz1mdW5jdGlvbigpe3JldHVybiBwdWJBZHNTZXJ2aWNlfSxnb29nbGV0YWcucHViYWRzUmVhZHk9ITAsZ29vZ2xldGFnLnNldEFkSWZyYW1lVGl0bGU9bm9vcEZ1bmMsZ29vZ2xldGFnLnNpemVNYXBwaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTaXplTWFwcGluZ0J1aWxkZXJ9LHdpbmRvdy5nb29nbGV0YWc9Z29vZ2xldGFnOzAhPT1jbWQubGVuZ3RoOylnb29nbGV0YWcuY21kLnB1c2goY21kLnNoaWZ0KCkpOyFmdW5jdGlvbihzb3VyY2Upe2lmKCEwPT09c291cmNlLnZlcmJvc2Upe3RyeXt2YXIgbG9nPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksdHJhY2U9Y29uc29sZS50cmFjZS5iaW5kKGNvbnNvbGUpLHByZWZpeD1zb3VyY2UucnVsZVRleHR8fCIiO2lmKHNvdXJjZS5kb21haW5OYW1lKXt2YXIgcnVsZVN0YXJ0SW5kZXgsQUdfU0NSSVBUTEVUX01BUktFUj0iIyUjLy8iLFVCT19TQ1JJUFRMRVRfTUFSS0VSPSIjIytqcyI7c291cmNlLnJ1bGVUZXh0LmluY2x1ZGVzKEFHX1NDUklQVExFVF9NQVJLRVIpP3J1bGVTdGFydEluZGV4PXNvdXJjZS5ydWxlVGV4dC5pbmRleE9mKEFHX1NDUklQVExFVF9NQVJLRVIpOnNvdXJjZS5ydWxlVGV4dC5pbmNsdWRlcyhVQk9fU0NSSVBUTEVUX01BUktFUikmJihydWxlU3RhcnRJbmRleD1zb3VyY2UucnVsZVRleHQuaW5kZXhPZihVQk9fU0NSSVBUTEVUX01BUktFUikpO3ZhciBydWxlUGFydD1zb3VyY2UucnVsZVRleHQuc2xpY2UocnVsZVN0YXJ0SW5kZXgpO3ByZWZpeD0iIi5jb25jYXQoc291cmNlLmRvbWFpbk5hbWUpLmNvbmNhdChydWxlUGFydCl9bG9nKCIiLmNvbmNhdChwcmVmaXgsIiB0cmFjZSBzdGFydCIpKSx0cmFjZSYmdHJhY2UoKSxsb2coIiIuY29uY2F0KHByZWZpeCwiIHRyYWNlIGVuZCIpKX1jYXRjaChlKXt9ImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5fX2RlYnVnJiZ3aW5kb3cuX19kZWJ1Zyhzb3VyY2UpfX0oc291cmNlKX0pLmFwcGx5KHRoaXMsdXBkYXRlZEFyZ3MpfWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpfX0oe25hbWU6Imdvb2dsZXRhZ3NlcnZpY2VzLWdwdCIsYXJnczpbXX0sW10pOw==" + "content": "IWZ1bmN0aW9uKHNvdXJjZSxhcmdzKXtmdW5jdGlvbiBub29wRnVuYygpe31mdW5jdGlvbiBub29wVGhpcygpe3JldHVybiB0aGlzfWZ1bmN0aW9uIG5vb3BOdWxsKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gbm9vcEFycmF5KCl7cmV0dXJuW119ZnVuY3Rpb24gbm9vcFN0cigpe3JldHVybiIifWZ1bmN0aW9uIHRydWVGdW5jKCl7cmV0dXJuITB9Y29uc3QgdXBkYXRlZEFyZ3M9YXJncz9bXS5jb25jYXQoc291cmNlKS5jb25jYXQoYXJncyk6W3NvdXJjZV07dHJ5eyhmdW5jdGlvbihzb3VyY2Upe3ZhciBzbG90cz1uZXcgTWFwLHNsb3RzQnlJZD1uZXcgTWFwLHNsb3RzUGVyUGF0aD1uZXcgTWFwLHNsb3RDcmVhdGl2ZXM9bmV3IE1hcCxldmVudENhbGxiYWNrcz1uZXcgTWFwLGdUYXJnZXRpbmc9bmV3IE1hcCxhZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKG5hbWUsbGlzdGVuZXIpe3JldHVybiBldmVudENhbGxiYWNrcy5oYXMobmFtZSl8fGV2ZW50Q2FsbGJhY2tzLnNldChuYW1lLG5ldyBTZXQpLGV2ZW50Q2FsbGJhY2tzLmdldChuYW1lKS5hZGQobGlzdGVuZXIpLHRoaXN9LHJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24obmFtZSxsaXN0ZW5lcil7cmV0dXJuISFldmVudENhbGxiYWNrcy5oYXMobmFtZSkmJmV2ZW50Q2FsbGJhY2tzLmdldChuYW1lKS5kZWxldGUobGlzdGVuZXIpfSxmaXJlU2xvdEV2ZW50PWZ1bmN0aW9uKG5hbWUsc2xvdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyZXNvbHZlKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7Zm9yKHZhciBzaXplPVswLDBdLGNhbGxiYWNrc1NldD1ldmVudENhbGxiYWNrcy5nZXQobmFtZSl8fFtdLGNhbGxiYWNrQXJyYXk9QXJyYXkuZnJvbShjYWxsYmFja3NTZXQpLGk9MDtpPGNhbGxiYWNrQXJyYXkubGVuZ3RoO2krPTEpY2FsbGJhY2tBcnJheVtpXSh7aXNFbXB0eTohMCxzaXplOnNpemUsc2xvdDpzbG90fSk7cmVzb2x2ZSgpfSkpfSkpfSxkaXNwbGF5U2xvdD1mdW5jdGlvbihzbG90KXtpZihzbG90KXt2YXIgaWQ9c2xvdC5nZXRTbG90RWxlbWVudElkKCk7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKXt2YXIgcGFyZW50PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtwYXJlbnQmJnBhcmVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSksZnVuY3Rpb24oc2xvdCl7Zm9yKHZhciBub2RlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpKTtudWxsIT1ub2RlJiZub2RlLmxhc3RDaGlsZDspbm9kZS5sYXN0Q2hpbGQucmVtb3ZlKCl9KHNsb3QpLGZ1bmN0aW9uKHNsb3Qpe3ZhciBfZG9jdW1lbnQkZ2V0RWxlbWVudEIsZWlkPSJnb29nbGVfYWRzX2lmcmFtZV8iLmNvbmNhdChzbG90LmdldElkKCkpO251bGw9PT0oX2RvY3VtZW50JGdldEVsZW1lbnRCPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVpZCkpfHx2b2lkIDA9PT1fZG9jdW1lbnQkZ2V0RWxlbWVudEJ8fF9kb2N1bWVudCRnZXRFbGVtZW50Qi5yZW1vdmUoKTt2YXIgbm9kZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChzbG90LmdldFNsb3RFbGVtZW50SWQoKSk7aWYobm9kZSl7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zi5pZD1laWQsZi5zcmNkb2M9Ijxib2R5PjwvYm9keT4iLGYuc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDowOyBoZWlnaHQ6MDsgbGVmdDowOyByaWdodDowOyB6LWluZGV4Oi0xOyBib3JkZXI6MCIsZi5zZXRBdHRyaWJ1dGUoIndpZHRoIiwwKSxmLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwwKSxmLnNldEF0dHJpYnV0ZSgiZGF0YS1sb2FkLWNvbXBsZXRlIiwhMCksZi5zZXRBdHRyaWJ1dGUoImRhdGEtZ29vZ2xlLWNvbnRhaW5lci1pZCIsITApLGYuc2V0QXR0cmlidXRlKCJzYW5kYm94IiwiIiksbm9kZS5hcHBlbmRDaGlsZChmKX19KHNsb3QpLGZpcmVTbG90RXZlbnQoInNsb3RSZW5kZXJFbmRlZCIsc2xvdCksZmlyZVNsb3RFdmVudCgic2xvdFJlcXVlc3RlZCIsc2xvdCksZmlyZVNsb3RFdmVudCgic2xvdFJlc3BvbnNlUmVjZWl2ZWQiLHNsb3QpLGZpcmVTbG90RXZlbnQoInNsb3RPbmxvYWQiLHNsb3QpLGZpcmVTbG90RXZlbnQoImltcHJlc3Npb25WaWV3YWJsZSIsc2xvdCl9fX0sY29tcGFuaW9uQWRzU2VydmljZT17YWRkRXZlbnRMaXN0ZW5lcjphZGRFdmVudExpc3RlbmVyLHJlbW92ZUV2ZW50TGlzdGVuZXI6cmVtb3ZlRXZlbnRMaXN0ZW5lcixlbmFibGVTeW5jTG9hZGluZzpub29wRnVuYyxzZXRSZWZyZXNoVW5maWxsZWRTbG90czpub29wRnVuYyxnZXRTbG90czpub29wQXJyYXl9LGNvbnRlbnRTZXJ2aWNlPXthZGRFdmVudExpc3RlbmVyOmFkZEV2ZW50TGlzdGVuZXIscmVtb3ZlRXZlbnRMaXN0ZW5lcjpyZW1vdmVFdmVudExpc3RlbmVyLHNldENvbnRlbnQ6bm9vcEZ1bmN9O2Z1bmN0aW9uIFBhc3NiYWNrU2xvdCgpe31mdW5jdGlvbiBTaXplTWFwcGluZ0J1aWxkZXIoKXt9UGFzc2JhY2tTbG90LnByb3RvdHlwZS5kaXNwbGF5PW5vb3BGdW5jLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUuZ2V0PW5vb3BOdWxsLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUuc2V0PW5vb3BUaGlzLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUuc2V0Q2xpY2tVcmw9bm9vcFRoaXMsUGFzc2JhY2tTbG90LnByb3RvdHlwZS5zZXRUYWdGb3JDaGlsZERpcmVjdGVkVHJlYXRtZW50PW5vb3BUaGlzLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUuc2V0VGFyZ2V0aW5nPW5vb3BUaGlzLFBhc3NiYWNrU2xvdC5wcm90b3R5cGUudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcD1ub29wVGhpcyxTaXplTWFwcGluZ0J1aWxkZXIucHJvdG90eXBlLmFkZFNpemU9bm9vcFRoaXMsU2l6ZU1hcHBpbmdCdWlsZGVyLnByb3RvdHlwZS5idWlsZD1ub29wTnVsbDt2YXIgZ2V0VGFyZ2V0aW5nVmFsdWU9ZnVuY3Rpb24odil7aWYoInN0cmluZyI9PXR5cGVvZiB2KXJldHVyblt2XTt0cnl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5mbGF0LmNhbGwodil9Y2F0Y2goX3VudXNlZCl7fXJldHVybltdfSxkZWZpbmVTbG90PWZ1bmN0aW9uKGFkVW5pdFBhdGgsY3JlYXRpdmVzLG9wdERpdil7dmFyIF9kb2N1bWVudCRnZXRFbGVtZW50QjI7aWYoc2xvdHNCeUlkLmhhcyhvcHREaXYpKXJldHVybiBudWxsPT09KF9kb2N1bWVudCRnZXRFbGVtZW50QjI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0RGl2KSl8fHZvaWQgMD09PV9kb2N1bWVudCRnZXRFbGVtZW50QjJ8fF9kb2N1bWVudCRnZXRFbGVtZW50QjIucmVtb3ZlKCksc2xvdHNCeUlkLmdldChvcHREaXYpO3ZhciBhdHRyaWJ1dGVzPW5ldyBNYXAsdGFyZ2V0aW5nPW5ldyBNYXAsZXhjbHVzaW9ucz1uZXcgU2V0LHJlc3BvbnNlPXthZHZlcnRpc2VySWQ6dm9pZCAwLGNhbXBhaWduSWQ6dm9pZCAwLGNyZWF0aXZlSWQ6dm9pZCAwLGNyZWF0aXZlVGVtcGxhdGVJZDp2b2lkIDAsbGluZUl0ZW1JZDp2b2lkIDB9LHNpemVzPVt7Z2V0SGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIDJ9LGdldFdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIDJ9fV0sbnVtPShzbG90c1BlclBhdGguZ2V0KGFkVW5pdFBhdGgpfHwwKSsxO3Nsb3RzUGVyUGF0aC5zZXQoYWRVbml0UGF0aCxudW0pO3ZhciBpZD0iIi5jb25jYXQoYWRVbml0UGF0aCwiXyIpLmNvbmNhdChudW0pLGNsaWNrVXJsPSIiLGNvbGxhcHNlRW1wdHlEaXY9bnVsbCxzZXJ2aWNlcz1uZXcgU2V0LHNsb3Q9e2FkZFNlcnZpY2U6ZT0+KHNlcnZpY2VzLmFkZChlKSxzbG90KSxjbGVhckNhdGVnb3J5RXhjbHVzaW9uczpub29wVGhpcyxjbGVhclRhcmdldGluZyhrKXt2b2lkIDA9PT1rP3RhcmdldGluZy5jbGVhcigpOnRhcmdldGluZy5kZWxldGUoayl9LGRlZmluZVNpemVNYXBwaW5nKG1hcHBpbmcpe3JldHVybiBzbG90Q3JlYXRpdmVzLnNldChvcHREaXYsbWFwcGluZyksdGhpc30sZ2V0OmZ1bmN0aW9uKGspe3JldHVybiBhdHRyaWJ1dGVzLmdldChrKX0sZ2V0QWRVbml0UGF0aDpmdW5jdGlvbigpe3JldHVybiBhZFVuaXRQYXRofSxnZXRBdHRyaWJ1dGVLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oYXR0cmlidXRlcy5rZXlzKCkpfSxnZXRDYXRlZ29yeUV4Y2x1c2lvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbShleGNsdXNpb25zKX0sZ2V0Q2xpY2tVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gY2xpY2tVcmx9LGdldENvbGxhcHNlRW1wdHlEaXY6ZnVuY3Rpb24oKXtyZXR1cm4gY29sbGFwc2VFbXB0eURpdn0sZ2V0Q29udGVudFVybDpmdW5jdGlvbigpe3JldHVybiIifSxnZXREaXZTdGFydHNDb2xsYXBzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0RG9tSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gb3B0RGl2fSxnZXRFc2NhcGVkUWVtUXVlcnlJZDpmdW5jdGlvbigpe3JldHVybiIifSxnZXRGaXJzdExvb2s6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0SWQ6ZnVuY3Rpb24oKXtyZXR1cm4gaWR9LGdldEh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZ2V0TmFtZTpmdW5jdGlvbigpe3JldHVybiBpZH0sZ2V0T3V0T2ZQYWdlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldFJlc3BvbnNlSW5mb3JtYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gcmVzcG9uc2V9LGdldFNlcnZpY2VzOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oc2VydmljZXMpfSxnZXRTaXplczpmdW5jdGlvbigpe3JldHVybiBzaXplc30sZ2V0U2xvdEVsZW1lbnRJZDpmdW5jdGlvbigpe3JldHVybiBvcHREaXZ9LGdldFNsb3RJZDpmdW5jdGlvbigpe3JldHVybiBzbG90fSxnZXRUYXJnZXRpbmc6ZnVuY3Rpb24oayl7cmV0dXJuIHRhcmdldGluZy5nZXQoayl8fGdUYXJnZXRpbmcuZ2V0KGspfHxbXX0sZ2V0VGFyZ2V0aW5nS2V5czpmdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoQXJyYXkub2YoLi4uZ1RhcmdldGluZy5rZXlzKCksLi4udGFyZ2V0aW5nLmtleXMoKSkpKX0sZ2V0VGFyZ2V0aW5nTWFwOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmZyb21FbnRyaWVzKGdUYXJnZXRpbmcuZW50cmllcygpKSxPYmplY3QuZnJvbUVudHJpZXModGFyZ2V0aW5nLmVudHJpZXMoKSkpfSxzZXQ6KGssdik9PihhdHRyaWJ1dGVzLnNldChrLHYpLHNsb3QpLHNldENhdGVnb3J5RXhjbHVzaW9uOmU9PihleGNsdXNpb25zLmFkZChlKSxzbG90KSxzZXRDbGlja1VybDp1PT4oY2xpY2tVcmw9dSxzbG90KSxzZXRDb2xsYXBzZUVtcHR5RGl2OnY9Pihjb2xsYXBzZUVtcHR5RGl2PSEhdixzbG90KSxzZXRTYWZlRnJhbWVDb25maWc6bm9vcFRoaXMsc2V0VGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudDpub29wVGhpcyxzZXRUYXJnZXRpbmc6KGssdik9Pih0YXJnZXRpbmcuc2V0KGssZ2V0VGFyZ2V0aW5nVmFsdWUodikpLHNsb3QpLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGlkfSx1cGRhdGVUYXJnZXRpbmdGcm9tTWFwOm1hcD0+KGZ1bmN0aW9uKHRhcmdldGluZyxtYXApe2lmKCJvYmplY3QiPT10eXBlb2YgbWFwKWZvcih2YXIga2V5IGluIG1hcClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobWFwLGtleSkmJnRhcmdldGluZy5zZXQoa2V5LGdldFRhcmdldGluZ1ZhbHVlKG1hcFtrZXldKSl9KHRhcmdldGluZyxtYXApLHNsb3QpfTtyZXR1cm4gc2xvdHMuc2V0KGFkVW5pdFBhdGgsc2xvdCksc2xvdHNCeUlkLnNldChvcHREaXYsc2xvdCksc2xvdENyZWF0aXZlcy5zZXQob3B0RGl2LGNyZWF0aXZlcyksc2xvdH0scHViQWRzU2VydmljZT17YWRkRXZlbnRMaXN0ZW5lcjphZGRFdmVudExpc3RlbmVyLHJlbW92ZUV2ZW50TGlzdGVuZXI6cmVtb3ZlRXZlbnRMaXN0ZW5lcixjbGVhcjpub29wRnVuYyxjbGVhckNhdGVnb3J5RXhjbHVzaW9uczpub29wVGhpcyxjbGVhclRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ6bm9vcFRoaXMsY2xlYXJUYXJnZXRpbmcoayl7dm9pZCAwPT09az9nVGFyZ2V0aW5nLmNsZWFyKCk6Z1RhcmdldGluZy5kZWxldGUoayl9LGNvbGxhcHNlRW1wdHlEaXZzOm5vb3BGdW5jLGRlZmluZU91dE9mUGFnZVBhc3NiYWNrOigpPT5uZXcgUGFzc2JhY2tTbG90LGRlZmluZVBhc3NiYWNrOigpPT5uZXcgUGFzc2JhY2tTbG90LGRpc2FibGVJbml0aWFsTG9hZDpub29wRnVuYyxkaXNwbGF5Om5vb3BGdW5jLGVuYWJsZUFzeW5jUmVuZGVyaW5nOm5vb3BGdW5jLGVuYWJsZUxhenlMb2FkOm5vb3BGdW5jLGVuYWJsZVNpbmdsZVJlcXVlc3Q6bm9vcEZ1bmMsZW5hYmxlU3luY1JlbmRlcmluZzpub29wRnVuYyxlbmFibGVWaWRlb0Fkczpub29wRnVuYyxnZXQ6bm9vcE51bGwsZ2V0QXR0cmlidXRlS2V5czpub29wQXJyYXksZ2V0VGFyZ2V0aW5nOm5vb3BBcnJheSxnZXRUYXJnZXRpbmdLZXlzOm5vb3BBcnJheSxnZXRTbG90czpub29wQXJyYXksaXNJbml0aWFsTG9hZERpc2FibGVkOnRydWVGdW5jLHJlZnJlc2g6bm9vcEZ1bmMsc2V0Om5vb3BUaGlzLHNldENhdGVnb3J5RXhjbHVzaW9uOm5vb3BUaGlzLHNldENlbnRlcmluZzpub29wRnVuYyxzZXRDb29raWVPcHRpb25zOm5vb3BUaGlzLHNldEZvcmNlU2FmZUZyYW1lOm5vb3BUaGlzLHNldExvY2F0aW9uOm5vb3BUaGlzLHNldFByaXZhY3lTZXR0aW5nczpub29wVGhpcyxzZXRQdWJsaXNoZXJQcm92aWRlZElkOm5vb3BUaGlzLHNldFJlcXVlc3ROb25QZXJzb25hbGl6ZWRBZHM6bm9vcFRoaXMsc2V0U2FmZUZyYW1lQ29uZmlnOm5vb3BUaGlzLHNldFRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ6bm9vcFRoaXMsc2V0VGFyZ2V0aW5nOm5vb3BUaGlzLHNldFZpZGVvQ29udGVudDpub29wVGhpcyx1cGRhdGVDb3JyZWxhdG9yOm5vb3BGdW5jfSxfd2luZG93JGdvb2dsZXRhZz13aW5kb3cuZ29vZ2xldGFnLGdvb2dsZXRhZz12b2lkIDA9PT1fd2luZG93JGdvb2dsZXRhZz97fTpfd2luZG93JGdvb2dsZXRhZyxfZ29vZ2xldGFnJGNtZD1nb29nbGV0YWcuY21kLGNtZD12b2lkIDA9PT1fZ29vZ2xldGFnJGNtZD9bXTpfZ29vZ2xldGFnJGNtZDtmb3IoZ29vZ2xldGFnLmFwaVJlYWR5PSEwLGdvb2dsZXRhZy5jbWQ9W10sZ29vZ2xldGFnLmNtZC5wdXNoPWZ1bmN0aW9uKGEpe3RyeXthKCl9Y2F0Y2goZXgpe31yZXR1cm4gMX0sZ29vZ2xldGFnLmNvbXBhbmlvbkFkcz1mdW5jdGlvbigpe3JldHVybiBjb21wYW5pb25BZHNTZXJ2aWNlfSxnb29nbGV0YWcuY29udGVudD1mdW5jdGlvbigpe3JldHVybiBjb250ZW50U2VydmljZX0sZ29vZ2xldGFnLmRlZmluZU91dE9mUGFnZVNsb3Q9ZGVmaW5lU2xvdCxnb29nbGV0YWcuZGVmaW5lU2xvdD1kZWZpbmVTbG90LGdvb2dsZXRhZy5kZXN0cm95U2xvdHM9ZnVuY3Rpb24oKXtzbG90cy5jbGVhcigpLHNsb3RzQnlJZC5jbGVhcigpfSxnb29nbGV0YWcuZGlzYWJsZVB1Ymxpc2hlckNvbnNvbGU9bm9vcEZ1bmMsZ29vZ2xldGFnLmRpc3BsYXk9ZnVuY3Rpb24oYXJnKXt2YXIgaWQ7aWQ9bnVsbCE9YXJnJiZhcmcuZ2V0U2xvdEVsZW1lbnRJZD9hcmcuZ2V0U2xvdEVsZW1lbnRJZCgpOm51bGwhPWFyZyYmYXJnLm5vZGVUeXBlP2FyZy5pZDpTdHJpbmcoYXJnKSxkaXNwbGF5U2xvdChzbG90c0J5SWQuZ2V0KGlkKSl9LGdvb2dsZXRhZy5lbmFibGVTZXJ2aWNlcz1ub29wRnVuYyxnb29nbGV0YWcuZ2V0VmVyc2lvbj1ub29wU3RyLGdvb2dsZXRhZy5wdWJhZHM9ZnVuY3Rpb24oKXtyZXR1cm4gcHViQWRzU2VydmljZX0sZ29vZ2xldGFnLnB1YmFkc1JlYWR5PSEwLGdvb2dsZXRhZy5zZXRBZElmcmFtZVRpdGxlPW5vb3BGdW5jLGdvb2dsZXRhZy5zaXplTWFwcGluZz1mdW5jdGlvbigpe3JldHVybiBuZXcgU2l6ZU1hcHBpbmdCdWlsZGVyfSx3aW5kb3cuZ29vZ2xldGFnPWdvb2dsZXRhZzswIT09Y21kLmxlbmd0aDspZ29vZ2xldGFnLmNtZC5wdXNoKGNtZC5zaGlmdCgpKTshZnVuY3Rpb24oc291cmNlKXtpZighMD09PXNvdXJjZS52ZXJib3NlKXt0cnl7dmFyIGxvZz1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLHRyYWNlPWNvbnNvbGUudHJhY2UuYmluZChjb25zb2xlKSxwcmVmaXg9c291cmNlLnJ1bGVUZXh0fHwiIjtpZihzb3VyY2UuZG9tYWluTmFtZSl7dmFyIHJ1bGVTdGFydEluZGV4LEFHX1NDUklQVExFVF9NQVJLRVI9IiMlIy8vIixVQk9fU0NSSVBUTEVUX01BUktFUj0iIyMranMiO3NvdXJjZS5ydWxlVGV4dC5pbmNsdWRlcyhBR19TQ1JJUFRMRVRfTUFSS0VSKT9ydWxlU3RhcnRJbmRleD1zb3VyY2UucnVsZVRleHQuaW5kZXhPZihBR19TQ1JJUFRMRVRfTUFSS0VSKTpzb3VyY2UucnVsZVRleHQuaW5jbHVkZXMoVUJPX1NDUklQVExFVF9NQVJLRVIpJiYocnVsZVN0YXJ0SW5kZXg9c291cmNlLnJ1bGVUZXh0LmluZGV4T2YoVUJPX1NDUklQVExFVF9NQVJLRVIpKTt2YXIgcnVsZVBhcnQ9c291cmNlLnJ1bGVUZXh0LnNsaWNlKHJ1bGVTdGFydEluZGV4KTtwcmVmaXg9IiIuY29uY2F0KHNvdXJjZS5kb21haW5OYW1lKS5jb25jYXQocnVsZVBhcnQpfWxvZygiIi5jb25jYXQocHJlZml4LCIgdHJhY2Ugc3RhcnQiKSksdHJhY2UmJnRyYWNlKCksbG9nKCIiLmNvbmNhdChwcmVmaXgsIiB0cmFjZSBlbmQiKSl9Y2F0Y2goZSl7fSJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuX19kZWJ1ZyYmd2luZG93Ll9fZGVidWcoc291cmNlKX19KHNvdXJjZSl9KS5hcHBseSh0aGlzLHVwZGF0ZWRBcmdzKX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKX19KHtuYW1lOiJnb29nbGV0YWdzZXJ2aWNlcy1ncHQiLGFyZ3M6W119LFtdKTs=" }, { "title": "matomo", diff --git a/dist/redirects.yml b/dist/redirects.yml index a8fb2a50..4e56f2db 100644 --- a/dist/redirects.yml +++ b/dist/redirects.yml @@ -1,6 +1,6 @@ # # AdGuard Scriptlets (Redirects Source) -# Version 1.9.96 +# Version 1.9.101 # - title: 1x1-transparent.gif added: v1.0.4 @@ -127,6 +127,8 @@ ```adblock ||example.org/geo/location$xmlhttprequest,redirect=noopjson ``` + aliases: + - noop.json file: noopjson.json contentType: application/json content: '{}' @@ -2507,6 +2509,7 @@ setCookieOptions: noopThis, setForceSafeFrame: noopThis, setLocation: noopThis, + setPrivacySettings: noopThis, setPublisherProvidedId: noopThis, setRequestNonPersonalizedAds: noopThis, setSafeFrameConfig: noopThis, diff --git a/dist/scriptlets.corelibs.json b/dist/scriptlets.corelibs.json index 4a56c477..8882ef77 100644 --- a/dist/scriptlets.corelibs.json +++ b/dist/scriptlets.corelibs.json @@ -1,5 +1,5 @@ { - "version": "1.9.96", + "version": "1.9.101", "scriptlets": [ { "names": [ @@ -114,7 +114,7 @@ "ubo-set", "abp-override-property-read" ], - "scriptlet": "function setConstant(source,args){function noopFunc(){}function noopCallbackFunc(){return noopFunc}function trueFunc(){return!0}function falseFunc(){return!1}function throwFunc(){throw new Error}function noopPromiseReject(){return Promise.reject()}function noopPromiseResolve(){var responseUrl=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",responseType=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"default\";if(\"undefined\"!=typeof Response){var response=new Response(arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"{}\",{status:200,statusText:\"OK\"});return Object.defineProperties(response,{url:{value:responseUrl},type:{value:responseType}}),Promise.resolve(response)}}function getPropertyInChain(base,chain){var pos=chain.indexOf(\".\");if(-1===pos)return{base:base,prop:chain};var prop=chain.slice(0,pos);if(null===base)return{base:base,prop:prop,chain:chain};var nextBase=base[prop];return chain=chain.slice(pos+1),(base instanceof Object||\"object\"==typeof base)&&isEmptyObject(base)||null===nextBase?{base:base,prop:prop,chain:chain}:void 0!==nextBase?getPropertyInChain(nextBase,chain):(Object.defineProperty(base,prop,{configurable:!0}),{base:base,prop:prop,chain:chain})}function nativeIsNaN(num){return(Number.isNaN||window.isNaN)(num)}function isEmptyObject(obj){return 0===Object.keys(obj).length&&!obj.prototype}var updatedArgs=args?[].concat(source).concat(args):[source];try{(function(source,property,value){var parsedDelay,stack=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"\",valueWrapper=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"\",setProxyTrap=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if([\"set-constant.js\",\"ubo-set-constant.js\",\"set.js\",\"ubo-set.js\",\"ubo-set-constant\",\"ubo-set\"].includes(source.name)&&(1!==stack.length&&(nativeIsNaN(parsedDelay=parseInt(stack,10))||!parsedDelay)&&(valueWrapper=stack),stack=void 0),property&&function(stackMatch,stackTrace){if(!stackMatch||\"\"===stackMatch)return!0;if(function(stackMatch,stackTrace){var INLINE_SCRIPT_STRING=\"inlineScript\",INJECTED_SCRIPT_STRING=\"injectedScript\",INJECTED_SCRIPT_MARKER=\"\",isInlineScript=function(match){return match.includes(INLINE_SCRIPT_STRING)},isInjectedScript=function(match){return match.includes(INJECTED_SCRIPT_STRING)};if(!isInlineScript(stackMatch)&&!isInjectedScript(stackMatch))return!1;var documentURL=window.location.href,pos=documentURL.indexOf(\"#\");-1!==pos&&(documentURL=documentURL.slice(0,pos));var stackLines=stackTrace.split(\"\\n\").slice(2).map((function(line){return line.trim()})).map((function(line){var stack,getStackTraceURL=/(.*?@)?(\\S+)(:\\d+):\\d+\\)?$/.exec(line);if(getStackTraceURL){var _stackURL,_stackURL2,stackURL=getStackTraceURL[2];if(null!==(_stackURL=stackURL)&&void 0!==_stackURL&&_stackURL.startsWith(\"(\")&&(stackURL=stackURL.slice(1)),null!==(_stackURL2=stackURL)&&void 0!==_stackURL2&&_stackURL2.startsWith(INJECTED_SCRIPT_MARKER)){var _stackFunction;stackURL=INJECTED_SCRIPT_STRING;var stackFunction=void 0!==getStackTraceURL[1]?getStackTraceURL[1].slice(0,-1):line.slice(0,getStackTraceURL.index).trim();null!==(_stackFunction=stackFunction)&&void 0!==_stackFunction&&_stackFunction.startsWith(\"at\")&&(stackFunction=stackFunction.slice(2).trim()),stack=\"\".concat(stackFunction,\" \").concat(stackURL).trim()}else stack=stackURL}else stack=line;return stack}));if(stackLines)for(var index=0;index0&&void 0!==arguments[0]?arguments[0]:\"\",FORWARD_SLASH=\"/\";if(\"\"===input)return new RegExp(\".?\");var regExpStr,flagsStr,delimiterIndex=input.lastIndexOf(FORWARD_SLASH),flagsPart=input.substring(delimiterIndex+1),regExpPart=input.substring(0,delimiterIndex+1),isValidRegExpFlag=function(flag){if(!flag)return!1;try{return new RegExp(\"\",flag),!0}catch(ex){return!1}},flags=(flagsStr=flagsPart,(regExpStr=regExpPart).startsWith(FORWARD_SLASH)&®ExpStr.endsWith(FORWARD_SLASH)&&!regExpStr.endsWith(\"\\\\/\")&&isValidRegExpFlag(flagsStr)?flagsStr:\"\");if(input.startsWith(FORWARD_SLASH)&&input.endsWith(FORWARD_SLASH)||flags)return new RegExp((flags?regExpPart:input).slice(1,-1),flags);var escaped=input.replace(/\\\\'/g,\"'\").replace(/\\\\\"/g,'\"').replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\");return new RegExp(escaped)}(stackMatch),refinedStackTrace=stackTrace.split(\"\\n\").slice(2).map((function(line){return line.trim()})).join(\"\\n\");return function(){var descriptor=Object.getOwnPropertyDescriptor(RegExp.prototype,\"test\"),nativeRegexTest=null==descriptor?void 0:descriptor.value;if(descriptor&&\"function\"==typeof descriptor.value)return nativeRegexTest;throw new Error(\"RegExp.prototype.test is not a function\")}().call(stackRegexp,refinedStackTrace)}(stack,(new Error).stack)){var constantValue,isProxyTrapSet=!1;if(\"undefined\"===value)constantValue=void 0;else if(\"false\"===value)constantValue=!1;else if(\"true\"===value)constantValue=!0;else if(\"null\"===value)constantValue=null;else if(\"emptyArr\"===value)constantValue=[];else if(\"emptyObj\"===value)constantValue={};else if(\"noopFunc\"===value)constantValue=noopFunc;else if(\"noopCallbackFunc\"===value)constantValue=noopCallbackFunc;else if(\"trueFunc\"===value)constantValue=trueFunc;else if(\"falseFunc\"===value)constantValue=falseFunc;else if(\"throwFunc\"===value)constantValue=throwFunc;else if(\"noopPromiseResolve\"===value)constantValue=noopPromiseResolve;else if(\"noopPromiseReject\"===value)constantValue=noopPromiseReject;else if(/^\\d+$/.test(value)){if(nativeIsNaN(constantValue=parseFloat(value)))return;if(Math.abs(constantValue)>32767)return}else if(\"-1\"===value)constantValue=-1;else if(\"\"===value)constantValue=\"\";else if(\"yes\"===value)constantValue=\"yes\";else{if(\"no\"!==value)return;constantValue=\"no\"}[\"asFunction\",\"asCallback\",\"asResolved\",\"asRejected\"].includes(valueWrapper)&&(constantValue={asFunction:v=>function(){return v},asCallback:v=>function(){return function(){return v}},asResolved:v=>Promise.resolve(v),asRejected:v=>Promise.reject(v)}[valueWrapper](constantValue));var canceled=!1,mustCancel=function(value){return canceled||(canceled=void 0!==value&&void 0!==constantValue&&typeof value!=typeof constantValue&&null!==value)},trapProp=function(base,prop,configurable,handler){if(!handler.init(base[prop]))return!1;var prevSetter,origDescriptor=Object.getOwnPropertyDescriptor(base,prop);if(origDescriptor instanceof Object){if(!origDescriptor.configurable){var message=\"Property '\".concat(prop,\"' is not configurable\");return function(source,message){var forced=arguments.length>2&&void 0!==arguments[2]&&arguments[2],convertMessageToString=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],name=source.name,verbose=source.verbose;if(forced||verbose){var nativeConsole=console.log;convertMessageToString?nativeConsole(\"\".concat(name,\": \").concat(message)):nativeConsole(\"\".concat(name,\":\"),message)}}(source,message),!1}base[prop]&&(base[prop]=constantValue),origDescriptor.set instanceof Function&&(prevSetter=origDescriptor.set)}return Object.defineProperty(base,prop,{configurable:configurable,get:()=>handler.get(),set(a){if(void 0!==prevSetter&&prevSetter(a),a instanceof Object){var propertiesToCheck=property.split(\".\").slice(1);setProxyTrap&&!isProxyTrapSet&&(isProxyTrapSet=!0,a=new Proxy(a,{get:function(target,propertyKey,val){return propertiesToCheck.reduce((function(object,currentProp,index,array){var currentObj=null==object?void 0:object[currentProp];return currentObj&&index===array.length-1&¤tObj!==constantValue&&(object[currentProp]=constantValue),currentObj||object}),target),Reflect.get(target,propertyKey,val)}}))}handler.set(a)}}),!0};!function setChainPropAccess(owner,property){var chainInfo=getPropertyInChain(owner,property),base=chainInfo.base,prop=chainInfo.prop,chain=chainInfo.chain,inChainPropHandler={factValue:void 0,init(a){return this.factValue=a,!0},get(){return this.factValue},set(a){this.factValue!==a&&(this.factValue=a,a instanceof Object&&setChainPropAccess(a,chain))}},endPropHandler={init:a=>!mustCancel(a),get:()=>constantValue,set(a){mustCancel(a)&&(constantValue=a)}};if(chain)if(void 0===base||null!==base[prop]){(base instanceof Object||\"object\"==typeof base)&&isEmptyObject(base)&&trapProp(base,prop,!0,inChainPropHandler);var propValue=owner[prop];(propValue instanceof Object||\"object\"==typeof propValue&&null!==propValue)&&setChainPropAccess(propValue,chain),trapProp(base,prop,!0,inChainPropHandler)}else trapProp(base,prop,!0,inChainPropHandler);else trapProp(base,prop,!1,endPropHandler)&&function(source){if(!0===source.verbose){try{var log=console.log.bind(console),trace=console.trace.bind(console),prefix=source.ruleText||\"\";if(source.domainName){var ruleStartIndex,AG_SCRIPTLET_MARKER=\"#%#//\",UBO_SCRIPTLET_MARKER=\"##+js\";source.ruleText.includes(AG_SCRIPTLET_MARKER)?ruleStartIndex=source.ruleText.indexOf(AG_SCRIPTLET_MARKER):source.ruleText.includes(UBO_SCRIPTLET_MARKER)&&(ruleStartIndex=source.ruleText.indexOf(UBO_SCRIPTLET_MARKER));var rulePart=source.ruleText.slice(ruleStartIndex);prefix=\"\".concat(source.domainName).concat(rulePart)}log(\"\".concat(prefix,\" trace start\")),trace&&trace(),log(\"\".concat(prefix,\" trace end\"))}catch(e){}\"function\"==typeof window.__debug&&window.__debug(source)}}(source)}(window,property)}}).apply(this,updatedArgs)}catch(e){console.log(e)}}" + "scriptlet": "function setConstant(source,args){function noopFunc(){}function noopCallbackFunc(){return noopFunc}function trueFunc(){return!0}function falseFunc(){return!1}function throwFunc(){throw new Error}function noopPromiseReject(){return Promise.reject()}function noopPromiseResolve(){var responseUrl=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",responseType=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"default\";if(\"undefined\"!=typeof Response){var response=new Response(arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"{}\",{status:200,statusText:\"OK\"});return Object.defineProperties(response,{url:{value:responseUrl},type:{value:responseType}}),\"opaque\"===responseType&&Object.defineProperties(response,{body:{value:null},status:{value:0},statusText:{value:\"\"}}),Promise.resolve(response)}}function getPropertyInChain(base,chain){var pos=chain.indexOf(\".\");if(-1===pos)return{base:base,prop:chain};var prop=chain.slice(0,pos);if(null===base)return{base:base,prop:prop,chain:chain};var nextBase=base[prop];return chain=chain.slice(pos+1),(base instanceof Object||\"object\"==typeof base)&&isEmptyObject(base)||null===nextBase?{base:base,prop:prop,chain:chain}:void 0!==nextBase?getPropertyInChain(nextBase,chain):(Object.defineProperty(base,prop,{configurable:!0}),{base:base,prop:prop,chain:chain})}function nativeIsNaN(num){return(Number.isNaN||window.isNaN)(num)}function isEmptyObject(obj){return 0===Object.keys(obj).length&&!obj.prototype}var updatedArgs=args?[].concat(source).concat(args):[source];try{(function(source,property,value){var parsedDelay,stack=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"\",valueWrapper=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"\",setProxyTrap=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if([\"set-constant.js\",\"ubo-set-constant.js\",\"set.js\",\"ubo-set.js\",\"ubo-set-constant\",\"ubo-set\"].includes(source.name)&&(1!==stack.length&&(nativeIsNaN(parsedDelay=parseInt(stack,10))||!parsedDelay)&&(valueWrapper=stack),stack=void 0),property&&function(stackMatch,stackTrace){if(!stackMatch||\"\"===stackMatch)return!0;if(function(stackMatch,stackTrace){var INLINE_SCRIPT_STRING=\"inlineScript\",INJECTED_SCRIPT_STRING=\"injectedScript\",INJECTED_SCRIPT_MARKER=\"\",isInlineScript=function(match){return match.includes(INLINE_SCRIPT_STRING)},isInjectedScript=function(match){return match.includes(INJECTED_SCRIPT_STRING)};if(!isInlineScript(stackMatch)&&!isInjectedScript(stackMatch))return!1;var documentURL=window.location.href,pos=documentURL.indexOf(\"#\");-1!==pos&&(documentURL=documentURL.slice(0,pos));var stackLines=stackTrace.split(\"\\n\").slice(2).map((function(line){return line.trim()})).map((function(line){var stack,getStackTraceURL=/(.*?@)?(\\S+)(:\\d+):\\d+\\)?$/.exec(line);if(getStackTraceURL){var _stackURL,_stackURL2,stackURL=getStackTraceURL[2];if(null!==(_stackURL=stackURL)&&void 0!==_stackURL&&_stackURL.startsWith(\"(\")&&(stackURL=stackURL.slice(1)),null!==(_stackURL2=stackURL)&&void 0!==_stackURL2&&_stackURL2.startsWith(INJECTED_SCRIPT_MARKER)){var _stackFunction;stackURL=INJECTED_SCRIPT_STRING;var stackFunction=void 0!==getStackTraceURL[1]?getStackTraceURL[1].slice(0,-1):line.slice(0,getStackTraceURL.index).trim();null!==(_stackFunction=stackFunction)&&void 0!==_stackFunction&&_stackFunction.startsWith(\"at\")&&(stackFunction=stackFunction.slice(2).trim()),stack=\"\".concat(stackFunction,\" \").concat(stackURL).trim()}else stack=stackURL}else stack=line;return stack}));if(stackLines)for(var index=0;index0&&void 0!==arguments[0]?arguments[0]:\"\",FORWARD_SLASH=\"/\";if(\"\"===input)return new RegExp(\".?\");var regExpStr,flagsStr,delimiterIndex=input.lastIndexOf(FORWARD_SLASH),flagsPart=input.substring(delimiterIndex+1),regExpPart=input.substring(0,delimiterIndex+1),isValidRegExpFlag=function(flag){if(!flag)return!1;try{return new RegExp(\"\",flag),!0}catch(ex){return!1}},flags=(flagsStr=flagsPart,(regExpStr=regExpPart).startsWith(FORWARD_SLASH)&®ExpStr.endsWith(FORWARD_SLASH)&&!regExpStr.endsWith(\"\\\\/\")&&isValidRegExpFlag(flagsStr)?flagsStr:\"\");if(input.startsWith(FORWARD_SLASH)&&input.endsWith(FORWARD_SLASH)||flags)return new RegExp((flags?regExpPart:input).slice(1,-1),flags);var escaped=input.replace(/\\\\'/g,\"'\").replace(/\\\\\"/g,'\"').replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\");return new RegExp(escaped)}(stackMatch),refinedStackTrace=stackTrace.split(\"\\n\").slice(2).map((function(line){return line.trim()})).join(\"\\n\");return function(){var descriptor=Object.getOwnPropertyDescriptor(RegExp.prototype,\"test\"),nativeRegexTest=null==descriptor?void 0:descriptor.value;if(descriptor&&\"function\"==typeof descriptor.value)return nativeRegexTest;throw new Error(\"RegExp.prototype.test is not a function\")}().call(stackRegexp,refinedStackTrace)}(stack,(new Error).stack)){var constantValue,isProxyTrapSet=!1;if(\"undefined\"===value)constantValue=void 0;else if(\"false\"===value)constantValue=!1;else if(\"true\"===value)constantValue=!0;else if(\"null\"===value)constantValue=null;else if(\"emptyArr\"===value)constantValue=[];else if(\"emptyObj\"===value)constantValue={};else if(\"noopFunc\"===value)constantValue=noopFunc;else if(\"noopCallbackFunc\"===value)constantValue=noopCallbackFunc;else if(\"trueFunc\"===value)constantValue=trueFunc;else if(\"falseFunc\"===value)constantValue=falseFunc;else if(\"throwFunc\"===value)constantValue=throwFunc;else if(\"noopPromiseResolve\"===value)constantValue=noopPromiseResolve;else if(\"noopPromiseReject\"===value)constantValue=noopPromiseReject;else if(/^\\d+$/.test(value)){if(nativeIsNaN(constantValue=parseFloat(value)))return;if(Math.abs(constantValue)>32767)return}else if(\"-1\"===value)constantValue=-1;else if(\"\"===value)constantValue=\"\";else if(\"yes\"===value)constantValue=\"yes\";else{if(\"no\"!==value)return;constantValue=\"no\"}[\"asFunction\",\"asCallback\",\"asResolved\",\"asRejected\"].includes(valueWrapper)&&(constantValue={asFunction:v=>function(){return v},asCallback:v=>function(){return function(){return v}},asResolved:v=>Promise.resolve(v),asRejected:v=>Promise.reject(v)}[valueWrapper](constantValue));var canceled=!1,mustCancel=function(value){return canceled||(canceled=void 0!==value&&void 0!==constantValue&&typeof value!=typeof constantValue&&null!==value)},trapProp=function(base,prop,configurable,handler){if(!handler.init(base[prop]))return!1;var prevSetter,origDescriptor=Object.getOwnPropertyDescriptor(base,prop);if(origDescriptor instanceof Object){if(!origDescriptor.configurable){var message=\"Property '\".concat(prop,\"' is not configurable\");return function(source,message){var forced=arguments.length>2&&void 0!==arguments[2]&&arguments[2],convertMessageToString=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],name=source.name,verbose=source.verbose;if(forced||verbose){var nativeConsole=console.log;convertMessageToString?nativeConsole(\"\".concat(name,\": \").concat(message)):nativeConsole(\"\".concat(name,\":\"),message)}}(source,message),!1}base[prop]&&(base[prop]=constantValue),origDescriptor.set instanceof Function&&(prevSetter=origDescriptor.set)}return Object.defineProperty(base,prop,{configurable:configurable,get:()=>handler.get(),set(a){if(void 0!==prevSetter&&prevSetter(a),a instanceof Object){var propertiesToCheck=property.split(\".\").slice(1);setProxyTrap&&!isProxyTrapSet&&(isProxyTrapSet=!0,a=new Proxy(a,{get:function(target,propertyKey,val){return propertiesToCheck.reduce((function(object,currentProp,index,array){var currentObj=null==object?void 0:object[currentProp];return currentObj&&index===array.length-1&¤tObj!==constantValue&&(object[currentProp]=constantValue),currentObj||object}),target),Reflect.get(target,propertyKey,val)}}))}handler.set(a)}}),!0};!function setChainPropAccess(owner,property){var chainInfo=getPropertyInChain(owner,property),base=chainInfo.base,prop=chainInfo.prop,chain=chainInfo.chain,inChainPropHandler={factValue:void 0,init(a){return this.factValue=a,!0},get(){return this.factValue},set(a){this.factValue!==a&&(this.factValue=a,a instanceof Object&&setChainPropAccess(a,chain))}},endPropHandler={init:a=>!mustCancel(a),get:()=>constantValue,set(a){mustCancel(a)&&(constantValue=a)}};if(chain)if(void 0===base||null!==base[prop]){(base instanceof Object||\"object\"==typeof base)&&isEmptyObject(base)&&trapProp(base,prop,!0,inChainPropHandler);var propValue=owner[prop];(propValue instanceof Object||\"object\"==typeof propValue&&null!==propValue)&&setChainPropAccess(propValue,chain),trapProp(base,prop,!0,inChainPropHandler)}else trapProp(base,prop,!0,inChainPropHandler);else trapProp(base,prop,!1,endPropHandler)&&function(source){if(!0===source.verbose){try{var log=console.log.bind(console),trace=console.trace.bind(console),prefix=source.ruleText||\"\";if(source.domainName){var ruleStartIndex,AG_SCRIPTLET_MARKER=\"#%#//\",UBO_SCRIPTLET_MARKER=\"##+js\";source.ruleText.includes(AG_SCRIPTLET_MARKER)?ruleStartIndex=source.ruleText.indexOf(AG_SCRIPTLET_MARKER):source.ruleText.includes(UBO_SCRIPTLET_MARKER)&&(ruleStartIndex=source.ruleText.indexOf(UBO_SCRIPTLET_MARKER));var rulePart=source.ruleText.slice(ruleStartIndex);prefix=\"\".concat(source.domainName).concat(rulePart)}log(\"\".concat(prefix,\" trace start\")),trace&&trace(),log(\"\".concat(prefix,\" trace end\"))}catch(e){}\"function\"==typeof window.__debug&&window.__debug(source)}}(source)}(window,property)}}).apply(this,updatedArgs)}catch(e){console.log(e)}}" }, { "names": [ @@ -399,7 +399,7 @@ "ubo-no-fetch-if.js", "ubo-no-fetch-if" ], - "scriptlet": "function preventFetch(source,args){function hit(source){if(!0===source.verbose){try{var log=console.log.bind(console),trace=console.trace.bind(console),prefix=source.ruleText||\"\";if(source.domainName){var ruleStartIndex;source.ruleText.includes(\"#%#//\")?ruleStartIndex=source.ruleText.indexOf(\"#%#//\"):source.ruleText.includes(\"##+js\")&&(ruleStartIndex=source.ruleText.indexOf(\"##+js\"));var rulePart=source.ruleText.slice(ruleStartIndex);prefix=\"\".concat(source.domainName).concat(rulePart)}log(\"\".concat(prefix,\" trace start\")),trace&&trace(),log(\"\".concat(prefix,\" trace end\"))}catch(e){}\"function\"==typeof window.__debug&&window.__debug(source)}}function objectToString(obj){return obj&&\"object\"==typeof obj?function(obj){return 0===Object.keys(obj).length&&!obj.prototype}(obj)?\"{}\":Object.entries(obj).map((function(pair){var key=pair[0],value=pair[1],recordValueStr=value;return value instanceof Object&&(recordValueStr=\"{ \".concat(objectToString(value),\" }\")),\"\".concat(key,':\"').concat(recordValueStr,'\"')})).join(\" \"):String(obj)}function logMessage(source,message){var forced=arguments.length>2&&void 0!==arguments[2]&&arguments[2],convertMessageToString=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],name=source.name,verbose=source.verbose;if(forced||verbose){var nativeConsole=console.log;convertMessageToString?nativeConsole(\"\".concat(name,\": \").concat(message)):nativeConsole(\"\".concat(name,\":\"),message)}}function noopPromiseResolve(){var responseUrl=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",responseType=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"default\";if(\"undefined\"!=typeof Response){var response=new Response(arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"{}\",{status:200,statusText:\"OK\"});return Object.defineProperties(response,{url:{value:responseUrl},type:{value:responseType}}),Promise.resolve(response)}}var updatedArgs=args?[].concat(source).concat(args):[source];try{(function(source,propsToMatch){var responseBody=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"emptyObj\",responseType=arguments.length>3?arguments[3]:void 0;if(\"undefined\"!=typeof fetch&&\"undefined\"!=typeof Proxy&&\"undefined\"!=typeof Response){var strResponseBody,nativeRequestClone=Request.prototype.clone;if(\"\"===responseBody||\"emptyObj\"===responseBody)strResponseBody=\"{}\";else{if(\"emptyArr\"!==responseBody)return void logMessage(source,\"Invalid responseBody parameter: '\".concat(responseBody,\"'\"));strResponseBody=\"[]\"}if(void 0===responseType||function(responseType){return[\"default\",\"opaque\"].includes(responseType)}(responseType)){var fetchHandler={apply:async function(target,thisArg,args){var shouldPrevent,fetchData=function(args,nativeRequestClone){var fetchUrl,fetchInit,request,entries,fetchPropsObj={},resource=args[0];if(resource instanceof Request){var realData=nativeRequestClone.call(resource),requestData=(request=realData,entries=[\"url\",\"method\",\"headers\",\"body\",\"credentials\",\"cache\",\"redirect\",\"referrer\",\"referrerPolicy\",\"integrity\",\"keepalive\",\"signal\",\"mode\"].map((function(key){return[key,request[key]]})),Object.fromEntries(entries));fetchUrl=requestData.url,fetchInit=requestData}else fetchUrl=resource,fetchInit=args[1];return fetchPropsObj.url=fetchUrl,fetchInit instanceof Object&&Object.keys(fetchInit).forEach((function(prop){fetchPropsObj[prop]=fetchInit[prop]})),fetchPropsObj}(args,nativeRequestClone);if(void 0===propsToMatch)return logMessage(source,\"fetch( \".concat(objectToString(fetchData),\" )\"),!0),hit(source),Reflect.apply(target,thisArg,args);if(shouldPrevent=function(source,propsToMatch,requestData){if(\"\"===propsToMatch||\"*\"===propsToMatch)return!0;var isMatched,PROPS_DIVIDER,PAIRS_MARKER,isRequestProp,propsObj,data,parsedData=(PROPS_DIVIDER=\" \",PAIRS_MARKER=\":\",isRequestProp=function(prop){return[\"url\",\"method\",\"headers\",\"body\",\"credentials\",\"cache\",\"redirect\",\"referrer\",\"referrerPolicy\",\"integrity\",\"keepalive\",\"signal\",\"mode\"].includes(prop)},propsObj={},propsToMatch.split(PROPS_DIVIDER).forEach((function(prop){var dividerInd=prop.indexOf(PAIRS_MARKER),key=prop.slice(0,dividerInd);if(isRequestProp(key)){var value=prop.slice(dividerInd+1);propsObj[key]=value}else propsObj.url=prop})),propsObj);if(data=parsedData,Object.values(data).every((function(value){return function(input){var isValid,FORWARD_SLASH=\"/\",str=function(str){return str.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}(input);input[0]===FORWARD_SLASH&&input[input.length-1]===FORWARD_SLASH&&(str=input.slice(1,-1));try{isValid=new RegExp(str),isValid=!0}catch(e){isValid=!1}return isValid}(value)}))){var matchData=function(data){var matchData={};return Object.keys(data).forEach((function(key){matchData[key]=function(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",FORWARD_SLASH=\"/\";if(\"\"===input)return new RegExp(\".?\");var regExpStr,flagsStr,delimiterIndex=input.lastIndexOf(FORWARD_SLASH),flagsPart=input.substring(delimiterIndex+1),regExpPart=input.substring(0,delimiterIndex+1),isValidRegExpFlag=function(flag){if(!flag)return!1;try{return new RegExp(\"\",flag),!0}catch(ex){return!1}},flags=(flagsStr=flagsPart,(regExpStr=regExpPart).startsWith(FORWARD_SLASH)&®ExpStr.endsWith(FORWARD_SLASH)&&!regExpStr.endsWith(\"\\\\/\")&&isValidRegExpFlag(flagsStr)?flagsStr:\"\");if(input.startsWith(FORWARD_SLASH)&&input.endsWith(FORWARD_SLASH)||flags)return new RegExp((flags?regExpPart:input).slice(1,-1),flags);var escaped=input.replace(/\\\\'/g,\"'\").replace(/\\\\\"/g,'\"').replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\");return new RegExp(escaped)}(data[key])})),matchData}(parsedData);isMatched=Object.keys(matchData).every((function(matchKey){var matchValue=matchData[matchKey],dataValue=requestData[matchKey];return Object.prototype.hasOwnProperty.call(requestData,matchKey)&&\"string\"==typeof dataValue&&(null==matchValue?void 0:matchValue.test(dataValue))}))}else logMessage(source,\"Invalid parameter: \".concat(propsToMatch)),isMatched=!1;return isMatched}(source,propsToMatch,fetchData),shouldPrevent){hit(source);try{var origResponse=await Reflect.apply(target,thisArg,args);return origResponse.ok?function(origResponse){var _origResponse$headers,replacement=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{body:\"{}\"},headers={};null==origResponse||null===(_origResponse$headers=origResponse.headers)||void 0===_origResponse$headers||_origResponse$headers.forEach((function(value,key){headers[key]=value}));var modifiedResponse=new Response(replacement.body,{status:origResponse.status,statusText:origResponse.statusText,headers:headers});return Object.defineProperties(modifiedResponse,{url:{value:origResponse.url},type:{value:replacement.type||origResponse.type}}),modifiedResponse}(origResponse,{body:strResponseBody,type:responseType}):noopPromiseResolve(strResponseBody,fetchData.url,responseType)}catch(ex){return noopPromiseResolve(strResponseBody,fetchData.url,responseType)}}return Reflect.apply(target,thisArg,args)}};fetch=new Proxy(fetch,fetchHandler)}else logMessage(source,\"Invalid responseType parameter: '\".concat(responseType,\"'\"))}}).apply(this,updatedArgs)}catch(e){console.log(e)}}" + "scriptlet": "function preventFetch(source,args){function hit(source){if(!0===source.verbose){try{var log=console.log.bind(console),trace=console.trace.bind(console),prefix=source.ruleText||\"\";if(source.domainName){var ruleStartIndex;source.ruleText.includes(\"#%#//\")?ruleStartIndex=source.ruleText.indexOf(\"#%#//\"):source.ruleText.includes(\"##+js\")&&(ruleStartIndex=source.ruleText.indexOf(\"##+js\"));var rulePart=source.ruleText.slice(ruleStartIndex);prefix=\"\".concat(source.domainName).concat(rulePart)}log(\"\".concat(prefix,\" trace start\")),trace&&trace(),log(\"\".concat(prefix,\" trace end\"))}catch(e){}\"function\"==typeof window.__debug&&window.__debug(source)}}function objectToString(obj){return obj&&\"object\"==typeof obj?function(obj){return 0===Object.keys(obj).length&&!obj.prototype}(obj)?\"{}\":Object.entries(obj).map((function(pair){var key=pair[0],value=pair[1],recordValueStr=value;return value instanceof Object&&(recordValueStr=\"{ \".concat(objectToString(value),\" }\")),\"\".concat(key,':\"').concat(recordValueStr,'\"')})).join(\" \"):String(obj)}function logMessage(source,message){var forced=arguments.length>2&&void 0!==arguments[2]&&arguments[2],convertMessageToString=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],name=source.name,verbose=source.verbose;if(forced||verbose){var nativeConsole=console.log;convertMessageToString?nativeConsole(\"\".concat(name,\": \").concat(message)):nativeConsole(\"\".concat(name,\":\"),message)}}function noopPromiseResolve(){var responseUrl=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",responseType=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"default\";if(\"undefined\"!=typeof Response){var response=new Response(arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"{}\",{status:200,statusText:\"OK\"});return Object.defineProperties(response,{url:{value:responseUrl},type:{value:responseType}}),\"opaque\"===responseType&&Object.defineProperties(response,{body:{value:null},status:{value:0},statusText:{value:\"\"}}),Promise.resolve(response)}}var updatedArgs=args?[].concat(source).concat(args):[source];try{(function(source,propsToMatch){var responseBody=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"emptyObj\",responseType=arguments.length>3?arguments[3]:void 0;if(\"undefined\"!=typeof fetch&&\"undefined\"!=typeof Proxy&&\"undefined\"!=typeof Response){var strResponseBody,nativeRequestClone=Request.prototype.clone;if(\"\"===responseBody||\"emptyObj\"===responseBody)strResponseBody=\"{}\";else if(\"emptyArr\"===responseBody)strResponseBody=\"[]\";else{if(\"emptyStr\"!==responseBody)return void logMessage(source,\"Invalid responseBody parameter: '\".concat(responseBody,\"'\"));strResponseBody=\"\"}if(void 0===responseType||function(responseType){return[\"default\",\"opaque\"].includes(responseType)}(responseType)){var fetchHandler={apply:async function(target,thisArg,args){var shouldPrevent,fetchData=function(args,nativeRequestClone){var fetchUrl,fetchInit,request,entries,fetchPropsObj={},resource=args[0];if(resource instanceof Request){var realData=nativeRequestClone.call(resource),requestData=(request=realData,entries=[\"url\",\"method\",\"headers\",\"body\",\"credentials\",\"cache\",\"redirect\",\"referrer\",\"referrerPolicy\",\"integrity\",\"keepalive\",\"signal\",\"mode\"].map((function(key){return[key,request[key]]})),Object.fromEntries(entries));fetchUrl=requestData.url,fetchInit=requestData}else fetchUrl=resource,fetchInit=args[1];return fetchPropsObj.url=fetchUrl,fetchInit instanceof Object&&Object.keys(fetchInit).forEach((function(prop){fetchPropsObj[prop]=fetchInit[prop]})),fetchPropsObj}(args,nativeRequestClone);if(void 0===propsToMatch)return logMessage(source,\"fetch( \".concat(objectToString(fetchData),\" )\"),!0),hit(source),Reflect.apply(target,thisArg,args);if(shouldPrevent=function(source,propsToMatch,requestData){if(\"\"===propsToMatch||\"*\"===propsToMatch)return!0;var isMatched,PROPS_DIVIDER,PAIRS_MARKER,isRequestProp,propsObj,data,parsedData=(PROPS_DIVIDER=\" \",PAIRS_MARKER=\":\",isRequestProp=function(prop){return[\"url\",\"method\",\"headers\",\"body\",\"credentials\",\"cache\",\"redirect\",\"referrer\",\"referrerPolicy\",\"integrity\",\"keepalive\",\"signal\",\"mode\"].includes(prop)},propsObj={},propsToMatch.split(PROPS_DIVIDER).forEach((function(prop){var dividerInd=prop.indexOf(PAIRS_MARKER),key=prop.slice(0,dividerInd);if(isRequestProp(key)){var value=prop.slice(dividerInd+1);propsObj[key]=value}else propsObj.url=prop})),propsObj);if(data=parsedData,Object.values(data).every((function(value){return function(input){var isValid,FORWARD_SLASH=\"/\",str=function(str){return str.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}(input);input[0]===FORWARD_SLASH&&input[input.length-1]===FORWARD_SLASH&&(str=input.slice(1,-1));try{isValid=new RegExp(str),isValid=!0}catch(e){isValid=!1}return isValid}(value)}))){var matchData=function(data){var matchData={};return Object.keys(data).forEach((function(key){matchData[key]=function(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",FORWARD_SLASH=\"/\";if(\"\"===input)return new RegExp(\".?\");var regExpStr,flagsStr,delimiterIndex=input.lastIndexOf(FORWARD_SLASH),flagsPart=input.substring(delimiterIndex+1),regExpPart=input.substring(0,delimiterIndex+1),isValidRegExpFlag=function(flag){if(!flag)return!1;try{return new RegExp(\"\",flag),!0}catch(ex){return!1}},flags=(flagsStr=flagsPart,(regExpStr=regExpPart).startsWith(FORWARD_SLASH)&®ExpStr.endsWith(FORWARD_SLASH)&&!regExpStr.endsWith(\"\\\\/\")&&isValidRegExpFlag(flagsStr)?flagsStr:\"\");if(input.startsWith(FORWARD_SLASH)&&input.endsWith(FORWARD_SLASH)||flags)return new RegExp((flags?regExpPart:input).slice(1,-1),flags);var escaped=input.replace(/\\\\'/g,\"'\").replace(/\\\\\"/g,'\"').replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\");return new RegExp(escaped)}(data[key])})),matchData}(parsedData);isMatched=Object.keys(matchData).every((function(matchKey){var matchValue=matchData[matchKey],dataValue=requestData[matchKey];return Object.prototype.hasOwnProperty.call(requestData,matchKey)&&\"string\"==typeof dataValue&&(null==matchValue?void 0:matchValue.test(dataValue))}))}else logMessage(source,\"Invalid parameter: \".concat(propsToMatch)),isMatched=!1;return isMatched}(source,propsToMatch,fetchData),shouldPrevent){hit(source);try{var origResponse=await Reflect.apply(target,thisArg,args);return origResponse.ok?function(origResponse){var _origResponse$headers,replacement=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{body:\"{}\"},headers={};null==origResponse||null===(_origResponse$headers=origResponse.headers)||void 0===_origResponse$headers||_origResponse$headers.forEach((function(value,key){headers[key]=value}));var modifiedResponse=new Response(replacement.body,{status:origResponse.status,statusText:origResponse.statusText,headers:headers});return Object.defineProperties(modifiedResponse,{url:{value:origResponse.url},type:{value:replacement.type||origResponse.type}}),modifiedResponse}(origResponse,{body:strResponseBody,type:responseType}):noopPromiseResolve(strResponseBody,fetchData.url,responseType)}catch(ex){return noopPromiseResolve(strResponseBody,fetchData.url,responseType)}}return Reflect.apply(target,thisArg,args)}};fetch=new Proxy(fetch,fetchHandler)}else logMessage(source,\"Invalid responseType parameter: '\".concat(responseType,\"'\"))}}).apply(this,updatedArgs)}catch(e){console.log(e)}}" }, { "names": [ @@ -482,7 +482,7 @@ "names": [ "no-topics" ], - "scriptlet": "function noTopics(source,args){var updatedArgs=args?[].concat(source).concat(args):[source];try{(function(source){Document instanceof Object!=0&&Object.prototype.hasOwnProperty.call(Document.prototype,\"browsingTopics\")&&Document.prototype.browsingTopics instanceof Function!=0&&(Document.prototype.browsingTopics=function(){return function(){var responseUrl=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",responseType=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"default\";if(\"undefined\"!=typeof Response){var response=new Response(arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"{}\",{status:200,statusText:\"OK\"});return Object.defineProperties(response,{url:{value:responseUrl},type:{value:responseType}}),Promise.resolve(response)}}(\"[]\")},function(source){if(!0===source.verbose){try{var log=console.log.bind(console),trace=console.trace.bind(console),prefix=source.ruleText||\"\";if(source.domainName){var ruleStartIndex,AG_SCRIPTLET_MARKER=\"#%#//\",UBO_SCRIPTLET_MARKER=\"##+js\";source.ruleText.includes(AG_SCRIPTLET_MARKER)?ruleStartIndex=source.ruleText.indexOf(AG_SCRIPTLET_MARKER):source.ruleText.includes(UBO_SCRIPTLET_MARKER)&&(ruleStartIndex=source.ruleText.indexOf(UBO_SCRIPTLET_MARKER));var rulePart=source.ruleText.slice(ruleStartIndex);prefix=\"\".concat(source.domainName).concat(rulePart)}log(\"\".concat(prefix,\" trace start\")),trace&&trace(),log(\"\".concat(prefix,\" trace end\"))}catch(e){}\"function\"==typeof window.__debug&&window.__debug(source)}}(source))}).apply(this,updatedArgs)}catch(e){console.log(e)}}" + "scriptlet": "function noTopics(source,args){var updatedArgs=args?[].concat(source).concat(args):[source];try{(function(source){Document instanceof Object!=0&&Object.prototype.hasOwnProperty.call(Document.prototype,\"browsingTopics\")&&Document.prototype.browsingTopics instanceof Function!=0&&(Document.prototype.browsingTopics=function(){return function(){var responseUrl=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",responseType=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"default\";if(\"undefined\"!=typeof Response){var response=new Response(arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"{}\",{status:200,statusText:\"OK\"});return Object.defineProperties(response,{url:{value:responseUrl},type:{value:responseType}}),\"opaque\"===responseType&&Object.defineProperties(response,{body:{value:null},status:{value:0},statusText:{value:\"\"}}),Promise.resolve(response)}}(\"[]\")},function(source){if(!0===source.verbose){try{var log=console.log.bind(console),trace=console.trace.bind(console),prefix=source.ruleText||\"\";if(source.domainName){var ruleStartIndex,AG_SCRIPTLET_MARKER=\"#%#//\",UBO_SCRIPTLET_MARKER=\"##+js\";source.ruleText.includes(AG_SCRIPTLET_MARKER)?ruleStartIndex=source.ruleText.indexOf(AG_SCRIPTLET_MARKER):source.ruleText.includes(UBO_SCRIPTLET_MARKER)&&(ruleStartIndex=source.ruleText.indexOf(UBO_SCRIPTLET_MARKER));var rulePart=source.ruleText.slice(ruleStartIndex);prefix=\"\".concat(source.domainName).concat(rulePart)}log(\"\".concat(prefix,\" trace start\")),trace&&trace(),log(\"\".concat(prefix,\" trace end\"))}catch(e){}\"function\"==typeof window.__debug&&window.__debug(source)}}(source))}).apply(this,updatedArgs)}catch(e){console.log(e)}}" }, { "names": [ diff --git a/dist/scriptlets.js b/dist/scriptlets.js index 3550ecd9..ee968cab 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.9.96 + * Version 1.9.101 */ (function () { @@ -1184,6 +1184,23 @@ } }); + // In the case if responseType is opaque + // mock response' body, status & statusText to avoid adb checks + // https://github.com/AdguardTeam/Scriptlets/issues/364 + if (responseType === 'opaque') { + Object.defineProperties(response, { + body: { + value: null + }, + status: { + value: 0 + }, + statusText: { + value: '' + } + }); + } + // eslint-disable-next-line consistent-return return Promise.resolve(response); }; @@ -6402,6 +6419,7 @@ * defaults to `emptyObj`. Possible values: * - `emptyObj` — empty object * - `emptyArr` — empty array + * - `emptyStr` — empty string * - `responseType` — optional, string for defining response type, * original response type is used if not specified. Possible values: * - `default` @@ -6478,6 +6496,8 @@ strResponseBody = '{}'; } else if (responseBody === 'emptyArr') { strResponseBody = '[]'; + } else if (responseBody === 'emptyStr') { + strResponseBody = ''; } else { logMessage(source, "Invalid responseBody parameter: '".concat(responseBody, "'")); return; @@ -10158,7 +10178,8 @@ ubo: 'noop.js', abp: 'blank-js' }, { - adg: 'noopjson' + adg: 'noopjson', + ubo: 'noop.json' }, { adg: 'nooptext', ubo: 'noop.txt', @@ -11999,6 +12020,7 @@ setCookieOptions: noopThis, setForceSafeFrame: noopThis, setLocation: noopThis, + setPrivacySettings: noopThis, setPublisherProvidedId: noopThis, setRequestNonPersonalizedAds: noopThis, setSafeFrameConfig: noopThis, @@ -16895,6 +16917,7 @@ "noop.js": "noopjs.js", "blank-js": "noopjs.js", noopjson: "noopjson.json", + "noop.json": "noopjson.json", nooptext: "nooptext.js", "noop.txt": "nooptext.js", "blank-text": "nooptext.js", @@ -17044,6 +17067,8 @@ convertAdgRedirectToUbo }; + var version = "1.9.101"; + function abortCurrentInlineScript(source, args) { function abortCurrentInlineScript(source, property, search) { var searchRegexp = toRegExp(search); @@ -20841,6 +20866,19 @@ value: responseType } }); + if (responseType === "opaque") { + Object.defineProperties(response, { + body: { + value: null + }, + status: { + value: 0 + }, + statusText: { + value: "" + } + }); + } return Promise.resolve(response); } var updatedArgs = args ? [].concat(source).concat(args) : [source]; @@ -21757,6 +21795,8 @@ strResponseBody = "{}"; } else if (responseBody === "emptyArr") { strResponseBody = "[]"; + } else if (responseBody === "emptyStr") { + strResponseBody = ""; } else { logMessage(source, "Invalid responseBody parameter: '".concat(responseBody, "'")); return; @@ -21922,6 +21962,19 @@ value: responseType } }); + if (responseType === "opaque") { + Object.defineProperties(response, { + body: { + value: null + }, + status: { + value: 0 + }, + statusText: { + value: "" + } + }); + } return Promise.resolve(response); } function modifyResponse(origResponse) { @@ -24788,6 +24841,19 @@ value: responseType } }); + if (responseType === "opaque") { + Object.defineProperties(response, { + body: { + value: null + }, + status: { + value: 0 + }, + statusText: { + value: "" + } + }); + } return Promise.resolve(response); } function getPropertyInChain(base, chain) { @@ -28606,7 +28672,8 @@ convertAbpToAdg: convertAbpSnippetToAdg, convertScriptletToAdg, convertAdgToUbo: convertAdgScriptletToUbo, - redirects + redirects, + SCRIPTLETS_VERSION: version }; }(); diff --git a/dist/umd/scriptlets.d.ts b/dist/umd/scriptlets.d.ts index a20033d8..4d30f307 100644 --- a/dist/umd/scriptlets.d.ts +++ b/dist/umd/scriptlets.d.ts @@ -1,5 +1,10 @@ declare module '@adguard/scriptlets' { + /** + * Scriptlets version + */ + const SCRIPTLETS_VERSION: string; + /** * Scriptlet properties */ diff --git a/dist/umd/scriptlets.umd.js b/dist/umd/scriptlets.umd.js index 0edde342..2a3b6799 100644 --- a/dist/umd/scriptlets.umd.js +++ b/dist/umd/scriptlets.umd.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.9.96 + * Version 1.9.101 */ (function (factory) { @@ -1186,6 +1186,23 @@ } }); + // In the case if responseType is opaque + // mock response' body, status & statusText to avoid adb checks + // https://github.com/AdguardTeam/Scriptlets/issues/364 + if (responseType === 'opaque') { + Object.defineProperties(response, { + body: { + value: null + }, + status: { + value: 0 + }, + statusText: { + value: '' + } + }); + } + // eslint-disable-next-line consistent-return return Promise.resolve(response); }; @@ -6404,6 +6421,7 @@ * defaults to `emptyObj`. Possible values: * - `emptyObj` — empty object * - `emptyArr` — empty array + * - `emptyStr` — empty string * - `responseType` — optional, string for defining response type, * original response type is used if not specified. Possible values: * - `default` @@ -6480,6 +6498,8 @@ strResponseBody = '{}'; } else if (responseBody === 'emptyArr') { strResponseBody = '[]'; + } else if (responseBody === 'emptyStr') { + strResponseBody = ''; } else { logMessage(source, "Invalid responseBody parameter: '".concat(responseBody, "'")); return; @@ -10160,7 +10180,8 @@ ubo: 'noop.js', abp: 'blank-js' }, { - adg: 'noopjson' + adg: 'noopjson', + ubo: 'noop.json' }, { adg: 'nooptext', ubo: 'noop.txt', @@ -12001,6 +12022,7 @@ setCookieOptions: noopThis, setForceSafeFrame: noopThis, setLocation: noopThis, + setPrivacySettings: noopThis, setPublisherProvidedId: noopThis, setRequestNonPersonalizedAds: noopThis, setSafeFrameConfig: noopThis, @@ -16897,6 +16919,7 @@ "noop.js": "noopjs.js", "blank-js": "noopjs.js", noopjson: "noopjson.json", + "noop.json": "noopjson.json", nooptext: "nooptext.js", "noop.txt": "nooptext.js", "blank-text": "nooptext.js", @@ -17046,6 +17069,8 @@ convertAdgRedirectToUbo }; + var version = "1.9.101"; + function abortCurrentInlineScript(source, args) { function abortCurrentInlineScript(source, property, search) { var searchRegexp = toRegExp(search); @@ -20843,6 +20868,19 @@ value: responseType } }); + if (responseType === "opaque") { + Object.defineProperties(response, { + body: { + value: null + }, + status: { + value: 0 + }, + statusText: { + value: "" + } + }); + } return Promise.resolve(response); } var updatedArgs = args ? [].concat(source).concat(args) : [source]; @@ -21759,6 +21797,8 @@ strResponseBody = "{}"; } else if (responseBody === "emptyArr") { strResponseBody = "[]"; + } else if (responseBody === "emptyStr") { + strResponseBody = ""; } else { logMessage(source, "Invalid responseBody parameter: '".concat(responseBody, "'")); return; @@ -21924,6 +21964,19 @@ value: responseType } }); + if (responseType === "opaque") { + Object.defineProperties(response, { + body: { + value: null + }, + status: { + value: 0 + }, + statusText: { + value: "" + } + }); + } return Promise.resolve(response); } function modifyResponse(origResponse) { @@ -24790,6 +24843,19 @@ value: responseType } }); + if (responseType === "opaque") { + Object.defineProperties(response, { + body: { + value: null + }, + status: { + value: 0 + }, + statusText: { + value: "" + } + }); + } return Promise.resolve(response); } function getPropertyInChain(base, chain) { @@ -28608,7 +28674,8 @@ convertAbpToAdg: convertAbpSnippetToAdg, convertScriptletToAdg, convertAdgToUbo: convertAdgScriptletToUbo, - redirects + redirects, + SCRIPTLETS_VERSION: version }; }(); diff --git a/wiki/about-scriptlets.md b/wiki/about-scriptlets.md index 60c29a5a..79b1b301 100644 --- a/wiki/about-scriptlets.md +++ b/wiki/about-scriptlets.md @@ -1162,6 +1162,7 @@ example.org#%#//scriptlet('prevent-fetch'[, propsToMatch[, responseBody[, respon defaults to `emptyObj`. Possible values: - `emptyObj` — empty object - `emptyArr` — empty array + - `emptyStr` — empty string - `responseType` — optional, string for defining response type, original response type is used if not specified. Possible values: - `default`