Compare commits

..
6 Commits
2 changed files with 90 additions and 65 deletions
+1 -1
View File
@@ -12,7 +12,7 @@
<center>
<h4 align="center">Adblock for the Spotify desktop client on Linux & macOS</h4>
<p align="center">
<strong>Latest supported version:</strong> 1.3.1.234.g59d6bf59
<strong>Latest supported version:</strong> 1.3.3.264.gdaf3b824
</p>
</center>
+89 -64
View File
@@ -1,12 +1,12 @@
#!/usr/bin/env bash
buildVer="1.3.1.234.g59d6bf59"
rollbackVer="1.3.0.277.g5441bb3e"
buildVer="1.3.3.264.gdaf3b824"
rollbackVer="1.3.1.234.g59d6bf59"
latestB_X="5377"
latestB_A="5377"
rollbackB_X="5065"
rollbackB_A="5065"
latestB_X="5860"
latestB_A="5860"
rollbackB_X="5377"
rollbackB_A="5377"
clr='\033[0m'
green='\033[0;32m'
@@ -48,45 +48,45 @@ show_help() {
}
latestA_X=$(printf "%s" \
"eyJpc3MiOiJzY2RuLXVybC1zaWduZXIiLCJleHAiOjE3OTIyNTk4ODQsIm5iZiI6" \
"MTc4OTY2Nzg4NCwicGF0aCI6Ii91cGdyYWRlL2NsaWVudC9vc3gteDg2XzY0L3Nw" \
"b3RpZnktYXV0b3VwZGF0ZS0xLjMuMS4yMzQuZzU5ZDZiZjU5LTUzNzcudGJ6In0." \
"RcYRKYSl68_p9xaVtB2caQydmcjo_Txv1eRTetaKbQkdb3yqaWKU-xLuYXW0k6Xl" \
"CjiVlL3U9RkoIW8MdfBUJEBp1nGUYboSCHVnOfZaPEaZY_djRCWMaGVpa6n6lyjz" \
"1U-G1W-e7ifZdNphGw3LqCUzYPDNCxxJdUmAvWVMg2EphDU70uI4Go7Vgk3enFrt" \
"uPtSttfGaHgKaQxU0Nej10JYxEAjM2UJqoLZLd_fIjQA5OaDX8gQCo2Ao_ZTU5ul" \
"H1hf4Qq1RFfntrMTL1-RoOIk3tyKIy_AMsosxR44O0u1OpxtEdW55tj2qnc9uN0S" \
"8i6jxEzywCdyLDpW43-Arg")
"eyJpc3MiOiJzY2RuLXVybC1zaWduZXIiLCJleHAiOjE3OTM0NjU4ODQsIm5iZiI6" \
"MTc5MDg3Mzg4NCwicGF0aCI6Ii91cGdyYWRlL2NsaWVudC9vc3gteDg2XzY0L3Nw" \
"b3RpZnktYXV0b3VwZGF0ZS0xLjMuMy4yNjQuZ2RhZjNiODI0LTU4NjAudGJ6In0." \
"lin8PUfNnO0-av-IBNFhkyZtadVk_cNoTgZpikcfblhUxR2OOgmyX2iriARdPFoe" \
"qrKJopTKuXulXZoPhoODdaf0veR6vlksIKdWiUQgx6b9UX6G2bUFYTQZoGiIfE9X" \
"ytl5LQEstdjSWe9byMAuxEQMyVTJgiz43U4vq51iFCOsONFmsLmZXPsxWUiNdsgg" \
"ckiGiMso6FPLcCB96jwDIWXg4kWeKj-5Ib4Sd46olOxCvce3MrB-8HisykEn9PJ8" \
"_ZqkaBZVRBoGj4-AdIIP7Qd3CWsHkuMLjiw7w28RCPePRUu1gSbCKBBREGUZM4zq" \
"krM19rOyooA2rVW5cRB31g")
latestA_A=$(printf "%s" \
"eyJpc3MiOiJzY2RuLXVybC1zaWduZXIiLCJleHAiOjE3OTIyNTk4ODQsIm5iZiI6" \
"MTc4OTY2Nzg4NCwicGF0aCI6Ii91cGdyYWRlL2NsaWVudC9vc3gtYXJtNjQvc3Bv" \
"dGlmeS1hdXRvdXBkYXRlLTEuMy4xLjIzNC5nNTlkNmJmNTktNTM3Ny50YnoifQ.a" \
"0_2t3xnqCryQNvCySY2CmHnfXuKrd6xfJZox7XWGlfIBvaP-hEPZFFPPfSbWPI7U" \
"T7keTkQowi66OH7n2mAUThQxndbR2HdFuOf2Q2zfLaMefHQo1wDrHPrXTb25uxYD" \
"7zhjc3BKnyg2CuPJokgZHvtBxRo8X4Q00KsCvFViszTsWXWF0kRUVxLwt_rMCo5_" \
"bjfltFPcetIc5uAZ7aV-MWRgvqlH0bHdjVcKiZH1Ku-f7n-RL6PGLd8i4pnw5gs_" \
"ETL8PKgYVSmTuwh39COpuwV9joUAI1iU9K4hXCCzcWWUoJr9vecyefffwfZC6k9Y" \
"mDphQu1eG51KU5NE-DDXA")
"eyJpc3MiOiJzY2RuLXVybC1zaWduZXIiLCJleHAiOjE3OTM0NjU4ODMsIm5iZiI6" \
"MTc5MDg3Mzg4MywicGF0aCI6Ii91cGdyYWRlL2NsaWVudC9vc3gtYXJtNjQvc3Bv" \
"dGlmeS1hdXRvdXBkYXRlLTEuMy4zLjI2NC5nZGFmM2I4MjQtNTg2MC50YnoifQ.k" \
"996_vMOnNHbg2IoqZp0V3u5HigFxbN3iHkR3IA7RfOb336OFpFpqRHPca2NYy_6V" \
"51J9-LrnrvO0D0xOqVikWF1ceanUky9fRMUd4ijoE6ZxM2KV9puEl_QDWndrWE-S" \
"7t9sJFtX6iz22nTIRbd0lK5LerICQZyRJWAu1yV_-BmDYcFDH_atAW3U5d-cTPdk" \
"en2u7pCk2UJKmupGcoHUASwk5zFpKSkrpOMP8dExeptShxIFPK1699xKsduP9Nzw" \
"_RGVx-rlNZhqUtfmXjMYKgZHZ4mr-v5fICq0WXBwmrbUhPJlgU2L38pmcdiMA1VA" \
"XWdPa1V3BEVDl5ESQhJdg")
rollbackA_X=$(printf "%s" \
"eyJpc3MiOiJzY2RuLXVybC1zaWduZXIiLCJleHAiOjE3OTIyNDkwODQsIm5iZiI6" \
"MTc4OTY1NzA4NCwicGF0aCI6Ii91cGdyYWRlL2NsaWVudC9vc3gteDg2XzY0L3Nw" \
"b3RpZnktYXV0b3VwZGF0ZS0xLjMuMC4yNzcuZzU0NDFiYjNlLTUwNjUudGJ6In0." \
"q6MaKmmX76oFHP3-PnL2W0fMNVTp1XQ9GTM57DMPpu2sHIjdbkBHjdKNv_FQYoe_" \
"U_NrHJwViGmH7V4Y8_6_dA2ICvtjfG4jG0ZUSxFFlhNIldRelPEL2OxMluIdS3uH" \
"akJMGwVfs9vi75PpXckTUmcL1CDUgECSJhiqxq_dQMGgv7Vh7IF6Htrh3NVv2O0s" \
"I22hvOghWVTiDV_ufJmLvCqaYejmDcC8T3B09eeZj1hWA_Pz02M74W-9E0mdb5Av" \
"1cqMPHWRPaGzEMvboihbgpw6ctGzWkd1ELJlvxtgmtbitu-URLDanqMLT2TXVpyE" \
"8KhGaELk1emBFpBufM8M-w")
"eyJpc3MiOiJzY2RuLXVybC1zaWduZXIiLCJleHAiOjE3OTM0MzE2ODMsIm5iZiI6" \
"MTc5MDgzOTY4MywicGF0aCI6Ii91cGdyYWRlL2NsaWVudC9vc3gteDg2XzY0L3Nw" \
"b3RpZnktYXV0b3VwZGF0ZS0xLjMuMS4yMzQuZzU5ZDZiZjU5LTUzNzcudGJ6In0." \
"AZbMbTFdgyt_V6SwmN5IGyIt_NhNxZaBvANm2yi--8whmTbQxMLss-p-nFDSS2A5" \
"b5Pr2AawBa1iVw7DS9w7SpfhlScne-MyxEmujpDIcdd2yUiiTWCwfCX1J3bm9a5Y" \
"wZAsMdBS99HSIiJK0VdwfF3FDRX6-hAQZSncDOc4MFEl7gUv2cjhDi89EsNUDs7-" \
"VIIqrEk8q_GsQSOUBJzV0IVJAUQKBIomrrwIZZlItkTpHmuK2XmB4wqCwUZOLe1R" \
"riZEHncnX_tXD_uzyNoGRheXEqRQ8wZ_ikoGjwOR9ICeix168EdkAghXniEZ9Jda" \
"f1wadNA-qRNyQcja-u3brA")
rollbackA_A=$(printf "%s" \
"eyJpc3MiOiJzY2RuLXVybC1zaWduZXIiLCJleHAiOjE3OTIyNDkwODQsIm5iZiI6" \
"MTc4OTY1NzA4NCwicGF0aCI6Ii91cGdyYWRlL2NsaWVudC9vc3gtYXJtNjQvc3Bv" \
"dGlmeS1hdXRvdXBkYXRlLTEuMy4wLjI3Ny5nNTQ0MWJiM2UtNTA2NS50YnoifQ.c" \
"-oI-58aUa5MMUyJ9yk06IWAvG-3lqh0v7s2KLMROsE0Jmwk3PM_zQZsYMYSnaEww" \
"rr0TbHdKAIqa6gH0DLXo93j28TgRn_n4LvV1vlDiP_CTtfFzbxGga0I3iAeOuHVL" \
"FGxafwdz6oBwIs1C9aebAYa52jL0JNa9sBv-1dFySdWFY-7-VozKdSBw6D3oQwra" \
"G7Cv0EakxbeNS5Ef8wJMhPpwEsQY7GLp-RxnDOb7slSpCyEzhD6iHjJfFHnmqYa8" \
"57DTKq9rdRW1AWw91-FTr1Hi7ORjlYl4_8T2ecxOz6wyECJD5zhAfWJCqZSqi0wZ" \
"Sl_CW59WLbHF3nEHQVe2g")
"eyJpc3MiOiJzY2RuLXVybC1zaWduZXIiLCJleHAiOjE3OTM0MzE2ODMsIm5iZiI6" \
"MTc5MDgzOTY4MywicGF0aCI6Ii91cGdyYWRlL2NsaWVudC9vc3gtYXJtNjQvc3Bv" \
"dGlmeS1hdXRvdXBkYXRlLTEuMy4xLjIzNC5nNTlkNmJmNTktNTM3Ny50YnoifQ.A" \
"QRq06AJKAibeKXxp5lmpKI5p3TLQfPWuXDX4GN59pi-jt94c3cWHKK2r65RYjdRb" \
"oLD-EicXGhLzK5pmJVYnekvYPBmAN5y1OmXavYcvxr_0_CJZfV_xsW67dwOflXw6" \
"8PDn6S5MZpuq16IIXHnF7xe9CjDsbptz-hKFWeX0IORUVcohK16AQRJoH8WFHDEz" \
"xhXHbvVFZPnECARH-cayBIe97GNYn5EcbUqx3T7tGN8BG463fONWKWa4l7vj95lS" \
"DG9LHMTWJn9NFaci1ilF1Bsta7B4lI8rK1SJcOCp0zluaTBpzifa5Dv1eFeQrP6Z" \
"SZgbKvZiFkajA7PqOliJw")
while getopts ':BcdefF:hilopP:SvV:-:' flag; do
case "${flag}" in
@@ -246,25 +246,39 @@ macos_autoupdate_check() {
}
}
macos_client_arch() {
case "$(LC_ALL=C /usr/bin/file -b "${appBinary}" 2>/dev/null | LC_ALL=C /usr/bin/tr '[:upper:]' '[:lower:]')" in
"mach-o 64-bit executable arm64") archVar="arm64" ;;
"mach-o 64-bit executable x86_64") archVar="x86_64" ;;
*) archVar="" ;;
esac
[[ "${archVar}" ]] || {
echo -e "${red}Error:${clr} Client architecture not supported or could not be detected.\nConfirm the selected client is a readable macOS ARM64 or Intel Spotify installation.\n" >&2
exit 1
}
snapshotBinary="${appPath}/Contents/Frameworks/Chromium Embedded Framework.framework/Resources/v8_context_snapshot.${archVar}.bin"
[[ "${debug}" ]] && echo -e "${green}Debug:${clr} ${archVar} client detected"
}
macos_prepare() {
local tbzTpl=$(printf "%s" \
"9k0Um9mUYRGaatWZpJ1MltGNT90SOtmVZJ0MhpkWUNFROdlTTVzVTpHbVF2TGR1U" \
"2YVMVtEbyQFcOJjUphWbTREeVFmVSZlVVxmehRFbzMmVax2UXBHWVh3YtVmUstWV" \
"FZlVOpGcIZ1QKxmVSJFVUVVOFJFMWtmVKVTRihlVW9kRWZkVLxmMUBnRxYFaK52U" \
"1Y1VQ9mUYRGaaJDU2o0RkVHMIp1csdFZDBnbZBDdIpEdw42YopFbiZHbyMWeW1GZ" \
"3I1UMxmUYl1aChFZ2JFWkhWMTVWbsdEZ2J0MjZHMuNGaaZUYqpEWZdjUTxENONjY" \
"pBDShBjVYl1Rw5WWwQHSKV3aqNFRaZ0V3R3VTJzawElaWpWV1xGMjpEbtRFertWZ" \
"W5EbTBXOVFmaktWWvBHMR1EbXZVVWZkV1MnMVVjTYZ1VwtmV2YkVN5GcYVlSKZkU" \
"WZleZZjUsF1UaZVVwATRWBlUFRmRaZ1UPhnMWZFbUJlVSx2UwlTVhJFZWlVewVVZ" \
"sFDRhBjVYlVb5oWZpJlbMljUHJGcW5WU2o0RkdjUTxUOKhVWXVjMiBnTuNGbaNTZ" \
"rBzUaBjRHp1dWNjYwYFWZR3aupFcSNjY350MMlDaykVeGVEZ6lzRhdjUTxENONjY" \
"2FlbixGbHJma5MlWrZUbj5mQYRmd4ITW1RzRapmTuxEbSdVW5R2RjFTO5xkNNh0Y" \
"wIFShlWQ5J2bOdlW" \
| rev | base64 --decode | base64 --decode)
macos_requirements_check
macos_set_version
archVar=$(sysctl -n machdep.cpu.brand_string | grep -q "Apple" && echo "arm64" || echo "x86_64")
[[ "${debug}" ]] && echo -e "${green}Debug:${clr} ${archVar} detected"
hostArch=$(sysctl -n machdep.cpu.brand_string | grep -q "Apple" && echo "arm64" || echo "x86_64")
[[ "${debug}" ]] && echo -e "${green}Debug:${clr} ${hostArch} host detected"
[[ -z "${legacyMac+x}" ]] && {
[[ "${archVar}" == "arm64" && "${rollback}" ]] && { tbzBuild="${rollbackB_A}"; tbzFauth="${rollbackA_A}"; }
[[ "${archVar}" == "arm64" && -z "${rollback+x}" ]] && { tbzBuild="${latestB_A}"; tbzFauth="${latestA_A}"; }
[[ "${archVar}" == "x86_64" && "${rollback}" ]] && { tbzBuild="${rollbackB_X}"; tbzFauth="${rollbackA_X}"; }
[[ "${archVar}" == "x86_64" && -z "${rollback+x}" ]] && { tbzBuild="${latestB_X}"; tbzFauth="${latestA_X}"; }
[[ "${hostArch}" == "arm64" && "${rollback}" ]] && { tbzBuild="${rollbackB_A}"; tbzFauth="${rollbackA_A}"; }
[[ "${hostArch}" == "arm64" && -z "${rollback+x}" ]] && { tbzBuild="${latestB_A}"; tbzFauth="${latestA_A}"; }
[[ "${hostArch}" == "x86_64" && "${rollback}" ]] && { tbzBuild="${rollbackB_X}"; tbzFauth="${rollbackA_X}"; }
[[ "${hostArch}" == "x86_64" && -z "${rollback+x}" ]] && { tbzBuild="${latestB_X}"; tbzFauth="${latestA_X}"; }
grab3=$(eval "${tbzTpl}"); fileVar="${grab3%%\?*}"; fileVar="${fileVar##*/}"
}
[[ "${installMac}" && "${legacyMac}" ]] && macos_legacy_notice
@@ -278,7 +292,6 @@ macos_prepare() {
appBinary="${appPath}/Contents/MacOS/Spotify"
appBak="${appBinary}.bak"
cachePath="${HOME}/Library/Caches/com.spotify.client"
snapshotBinary="${appPath}/Contents/Frameworks/Chromium Embedded Framework.framework/Resources/v8_context_snapshot.${archVar}.bin"
xpuiPath="${appPath}/Contents/Resources/Apps"
[[ "${skipCodesign}" ]] && echo -e "${yellow}Warning:${clr} Codesigning has been skipped.\n" >&2 || true
}
@@ -979,6 +992,7 @@ run_cache_check() {
final_setup_check() {
[[ "${notInstalled}" ]] && { echo -e "${red}Error:${clr} Client not found\n" >&2; exit 1; }
[[ ! -f "${appBinary}" || ! -s "${appBinary}" || ! -r "${appBinary}" || ! -x "${appBinary}" ]] && { echo -e "${red}Error:${clr} Client executable not found or invalid.\nReinstall client then try again.\n" >&2; exit 1; }
[[ "${platformType}" == "macOS" ]] && macos_client_arch
[[ ! -f "${xpuiSpa}" ]] && { echo -e "${red}Error:${clr} Detected a modified client installation!\nReinstall client then try again.\n" >&2; exit 1; }
[[ "${clientVer}" ]] && (($(ver "${clientVer}") < $(ver "1.1.59.710"))) && { echo -e "${red}Error:${clr} ${clientVer} not supported by SpotX-Bash\n" >&2; exit 1; }
}
@@ -1141,6 +1155,7 @@ run_core_start() {
run_patches() {
perlVar "${aoEx[@]}"
perlVar "${naEx[@]}"
[[ "${paidPremium}" ]] && printf "\xE2\x9C\x94\x20\x44\x65\x74\x65\x63\x74\x65\x64\x20\x70\x72\x65\x6D\x69\x75\x6D\x2D\x74\x69\x65\x72\x20\x70\x6C\x61\x6E\n" || {
perlVar "${freeEx[@]}"
printf '\n%s\n%s\n%s\n%s' "${hideDLIcon}" "${hideDLMenu}" "${hideDLQual}" "${hideVeryHigh}" >> "${xpuiCss}"
@@ -1230,7 +1245,7 @@ perlVar="perl -0777pi -w -e"
hideDLIcon=' .BKsbV2Xl786X9a09XROH, .GWCBhKJqeZal3n5tCQwl, .pX3IkLhEry0wVfiU, .IOXdOZpz_OhQUj2M3A0e {display:none}'
hideDLMenu=' :is(.pzkhLqffqF_4hucrVVQA, .egE6UQjF_UUoCzvMxREj, .Y98_oiegQgSpY_o7hoKG, .tT_JypfxNakuY1jHgyBN, .zVA1h9TUy8QQBogj, .l7XabbfpobRNm8SpemYx)[role=menuitemcheckbox] {display:none}'
hideDLQual=' :is(.weV_qxFz4gF5sPotO10y, .BMtRRwqaJD_95vJFMFD0, .eguwzH_QWTBXry7hiNj3, .qV_CxbowaNkMarye, .Z6yfNoSJ6OjiEBGI5Osr):has([for="desktop.settings.downloadQuality"]) {display: none}'
hideSubfeed=' .cj6vRk3nFAi80HSVqX91, .c8Z2jJUocJTdV9g741cp, .x_HLN829yDsvJDgl {display:none}'
hideSubfeed=' .cj6vRk3nFAi80HSVqX91, .c8Z2jJUocJTdV9g741cp, .x_HLN829yDsvJDgl, .g8bL3bGxc63nO5u9gY7g {display:none}'
hideVeryHigh=' #desktop\.settings\.streamingQuality>option:nth-child(5) {display:none}'
lyricsBackgroundNew=' .FUYNhisXTCmbzt9IDxnT,\n .tr8V5eHsUaIkOYVw7eSG,\n .hW9km7ku6_iggdWDR_Lg,\n .lofIAg8Ixko3mfBrbfej,\n .bbJIIopLxggQmv5x,\n .Li269NgzkU2gI4KOP9sM,\n .I2WIloMMjsBeMaIS8H3v,\n .McI3hD7aCfpq015LJa6X,\n .gpDSOimnzH4zTJmE7UR5,\n .dh4zyndPBN0gul_w,\n .zboE1ICtt8SJrJQEVHTf,\n .bqldaBkacR41KxR2Z0jY {\n \t--lyrics-color-active: #C8C8C8 !important;\n \t--lyrics-color-inactive: #575757 !important;\n \t--lyrics-color-passed: #575757 !important;\n \t--lyrics-color-background: #121212 !important;\n }'
updatesEx=(
@@ -1243,7 +1258,7 @@ freeEx=(
'adsBillboard&.(?=\?\[.{1,6}[a-zA-Z].leaderboard,)&false&&xpuiJs&1.1.59.710&1.2.6.863'
'adConfig&/\Kv2/config&config&gs&xpuiJs&1.2.55.235'
'adsCosmos&(case .:|async enable\(.\)\{)(this.enabled=.+?\(.{1,3},"audio"\),|return this.enabled=...+?\(.{1,3},"audio"\))((;case 4:)?this.subscription=this.audioApi).+?this.onAdMessage\)&$1$3.cosmosConnector.increaseStreamTime(-100000000000)&&xpuiJs&1.1.59.710&1.1.92.647'
'adsEmptyBlock&adsEnabled:!\K0&1&&xpuiJs'
'adsEmptyBlock&(?:adsEnabled:!|setAdsEnabled:([\w\$]+)=>\{\1\.adsEnabled=!)\K0&1&&xpuiJs'
'connectOld1& connect-device-list-item--disabled&&&xpuiJs&1.1.70.610&1.1.90.859'
'connectOld2&connect-picker.unavailable-to-control&spotify-connect&&xpuiJs&1.1.70.610&1.1.90.859'
'connectOld3&("button",\{className:.,disabled:)(..)&$1false&&xpuiJs&1.1.70.610&1.1.90.859'
@@ -1254,17 +1269,21 @@ freeEx=(
'hideUpgradeButton&(return|.=.=>)"free"===(.+?)(return|.=.=>)"premium"===&$1"premium"===$2$3"free"===&g&xpuiJs&1.1.59.710&1.1.92.647'
'hideUpgradeButton2&(?|(===")free(")|(")free("===))&$1premium$2&g&xpuiJs&1.2.55.235'
'hptoEnabled&hptoEnabled:!\K0&1&s&xpuiJs&&1.2.94.583'
'hptoFetch&(fetchAndSetHomeAd:\(0,[\w\$]+\.useMemo\)\(\(\)=>)[\w\$]+\x26\x26[\w\$]+\?\.hpto(?=\?async\(\)=>)&$1false&&xpuiJs&1.3.3.1'
'hptoShown&isHptoShown:!\K0&1&gs&homeHptoJs&1.1.85.884&1.2.20.1218'
'hptoShown2&(ADS_PREMIUM,isPremium:)\w(.*?ADS_HPTO_HIDDEN,isHptoHidden:)\w&$1true$2true&&xpuiJs&1.2.21.1104'
'hptoShown2&(ADS_PREMIUM,isPremium:)\w(.*?ADS_HPTO_HIDDEN,isHptoHidden:)\w&$1true$2true&&xpuiJs&1.2.21.1104&1.3.1.234'
'payloadS&\x3F\x70\x61\x79\x6C\x6F\x61\x64&\x00\x00\x00\x00\x00\x00\x00\x00&gs&appBinary&1.2.53.437&1.2.93.667'
'sGate1&\x80\xBF.\x00\x00\x00\x01(?=\x75\x08\x0F\xB6\x87.\x00\x00\x00\xC3\x80\x7F.\x01\x75\x4B\x48\x83\xBF.\x00\x00\x00\x00\x74\x3C\x53\x48\x8B\x87.\x00\x00\x00\x48\x8B\x8F.\x00\x00\x00\x0F\xB6\xD1\x48\xC1\xE9\x08\x48\x8B\x04\xC8\xC1\xE2\x04\x48\x8B\x04\x10\x48\x8B\x08\x48\x89\xFB\x48\x89\xC7\xFF\x91..\x00\x00\x48\x89\xDF\x89\xC1\xB0\x01\x84\xC9\x5B\x75\x04\x0F\xB6\x47.\xC3\x31\xC0\xC3)&\xEB\x60\x0F\x1F\x44\x00\x00&s&appBinary&1.2.89.539&&Linux&x86_64&1'
'sGate2&\x80\xBF.\x00\x00\x00\x01(?=\x75\x08\x0F\xB6\x87.\x00\x00\x00\xC3\x80\x7F.\x01\x75\x56\x48\x83\xBF.\x00\x00\x00\x00\x74\x47\x55\x48\x89\xE5\x53\x50\x48\x8B\x87.\x00\x00\x00\x48\x8B\x8F.\x00\x00\x00\x0F\xB6\xD1\x48\xC1\xE9\x08\x48\x8B\x04\xC8\xC1\xE2\x04\x48\x8B\x04\x10\x48\x8B\x08\x48\x89\xFB\x48\x89\xC7\xFF\x91..\x00\x00\x48\x89\xDF\x89\xC1\xB0\x01\x84\xC9\x48\x8D\x64\x24\x08\x5B\x5D\x75\x04\x0F\xB6\x47.\xC3\x31\xC0\xC3)&\xEB\x6B\x0F\x1F\x44\x00\x00&s&appBinary&1.2.87.415&&macOS&x86_64&1'
'sGate3&\x08..\x39(?=\x1F\x05\x00\x71\x81\x00\x00\x54\x08..\x39\x00\x01\x00\x12\xC0\x03\x5F\xD6\x08..\x39\x1F\x05\x00\x71\x61\x03\x00\x54.{104}\xE0\x03\x00\x12\xC0\x03\x5F\xD6)&\x23\x00\x00\x14&s&appBinary&1.2.80.358&&macOS&arm64&1'
'stateS1&\x69\x6E\x69\x74\x69\x61\x6C\x5F(?=\x48)&\x00\x00\x00\x00\x00\x00\x00\x00&s&appBinary&1.2.53.437&1.2.55.235&macOS'
'stateS2&\x69\x6E\x69\x74\x69\x61\x6C\x5F(?=\x48)&\x00\x00\x00\x00\x00\x00\x00\x00&s&appBinary&1.2.53.437&1.2.84.476&Linux'
'stateS3&[\x00\x0A\x1A]\K\x69\x6E\x69\x74\x69\x61\x6C\x5F(?=\x73\x74\x61\x74\x65\x00)&\x00\x00\x00\x00\x00\x00\x00\x00&s&appBinary&1.2.55.235&&macOS'
'stateS4&[\x00\x0A\x1A]\K\x69\x6E\x69\x74\x69\x61\x6C\x5F(?=\x73\x74\x61\x74\x65\x00)&\x00\x00\x00\x00\x00\x00\x00\x00&s&appBinary&1.2.86.502&&Linux'
)
devEx=(
'dev1&(?:\xBE\x48\x26\x2A\x00.{20,40}?|[\x00\xFF][\x00\xFF]\x48\xB8\x65\x76\x65\x6C.{4}\x48.{36,50}?)\K(?<!\xE8)\xE8.{4}(?=(?:\x89[\xC0-\xC7].{20,100}\x83[\xE0-\xE7]\x02|\x41\x89[\xC0-\xC7].{20,100}\x41\x83[\xE0-\xE7]\x02))&\xB8\x03\x00\x00\x00&gs&appBinary&1.1.84.716'
'dev2&\xF8\xFF[\x37\x77\xB7\xF7][\x06-\x0F\x10-\x19]\x39\xFF.[\x00-\x04]\xB9\xE1[\x03\x43\x83\xC3][\x06-\x0F\x10-\x19]\x91\xE2.[\x02-\x0F\x13]\x91.{0,4}\K...[\x94\x97](?=[\xF0-\xFF]\x03)&\x60\x00\x80\xD2&s&appBinary&1.1.84.716&&macOS'
'dev1&(?:\xBE\x48\x26\x2A\x00.{20,40}?|[\x00\xFF][\x00\xFF]\x48\xB8\x65\x76\x65\x6C.{4}\x48.{36,50}?)\K(?<!\xE8)\xE8.{4}(?=(?:\x89[\xC0-\xC7].{20,100}\x83[\xE0-\xE7]\x02|\x41\x89[\xC0-\xC7].{20,100}\x41\x83[\xE0-\xE7]\x02))&\xB8\x03\x00\x00\x00&gs&appBinary&1.1.84.716&&&x86_64&1'
'dev2&\xF8\xFF[\x37\x77\xB7\xF7][\x06-\x0F\x10-\x19]\x39\xFF.[\x00-\x04]\xB9\xE1[\x03\x43\x83\xC3][\x06-\x0F\x10-\x19]\x91\xE2.[\x02-\x0F\x13]\x91.{0,4}\K...[\x94\x97](?=[\xF0-\xFF]\x03)&\x60\x00\x80\xD2&s&appBinary&1.1.84.716&&macOS&arm64&1'
'devDebug&(return ).{1,3}(\?(?:.{1,4}createElement|\(.{1,7}.jsxs\)))(\(.{3,7}\{displayText:"Debug Tools"(?:,children.{3,8}jsx\)|},.\.createElement))(\(.{4,6}role.*?Debug Window".*?\))(.*?Locales.{3,8})(:null)&$1true$2$4$6&&xpuiJs&1.1.92.644&1.2.59.518'
'enableDebugTools&debug tools and features for employees",default:\K!1&true&s&xpuiJs&1.2.60.564'
)
@@ -1365,9 +1384,9 @@ aoEx=(
'logSentry2&sentry\.io&localhost.io&&xpuiJs&1.1.70.610'
'lUnsupported&((?:\(?await )?.\.build.{20,60}encodeURIComponent.{20,140}"\/track\/\{trackId\}.+?)(.send)&$1.withHeaders([{key:"spotify-app-version",value:"1.2.45.454"}])$2&s&xpuiJs&1.1.70.610&1.2.45.451'
'logV3&sp://logging/v3/\w+&&g&xpuiJs&1.1.70.610'
're1&\xE8...[\xFE\xFF]\x4D\x8B.{1,2}\x4D\x85.\x75[\xA0-\xAF]\x48\x8D.{9,10}\K\xE8...[\xFE\xFF](?=[\x40-\x4F][\x80-\x8F])&\x0F\x1F\x44\x00\x00&gs&appBinary&1.2.29.605&&Linux&&2'
're2&\x24\x24\x4D\x85\xE4\x75\xA9\x48\x8D\x35...\x01\x48\x8D\xBD.[\xFE\xFF]\xFF\xFF\K\xE8....&\x0F\x1F\x44\x00\x00&gs&appBinary&1.2.29.605&&macOS&&2'
're3&[\x10-\x1F]\x01\x00\x39.{0,4}\xE0\x03[\x10-\x1F]\xAA...[\x90-\x9F].[\x02\x03]\x40\xF9[\x70-\x7F]\xFD\xFF\xB5..\x00.\x21..\x91\xE0.[\x00-\x0F]\x91\K....(?=[\xF0-\xFF][\x00-\x0F]....\x00)&\x1F\x20\x03\xD5&gs&appBinary&1.2.29.605&&macOS&&2'
're1&\xE8...[\xFE\xFF]\x4D\x8B.{1,2}\x4D\x85.\x75[\xA0-\xAF]\x48\x8D.{9,10}\K\xE8...[\xFE\xFF](?=[\x40-\x4F][\x80-\x8F])&\x0F\x1F\x44\x00\x00&gs&appBinary&1.2.29.605&&Linux&x86_64&2'
're2&\x24\x24\x4D\x85\xE4\x75\xA9\x48\x8D\x35...\x01\x48\x8D\xBD.[\xFE\xFF]\xFF\xFF\K\xE8....&\x0F\x1F\x44\x00\x00&gs&appBinary&1.2.29.605&&macOS&x86_64&2'
're3&[\x10-\x1F]\x01\x00\x39.{0,4}\xE0\x03[\x10-\x1F]\xAA...[\x90-\x9F].[\x02\x03]\x40\xF9[\x70-\x7F]\xFD\xFF\xB5..\x00.\x21..\x91\xE0.[\x00-\x0F]\x91\K....(?=[\xF0-\xFF][\x00-\x0F]....\x00)&\x1F\x20\x03\xD5&gs&appBinary&1.2.29.605&&macOS&arm64&2'
'searchFix1&(typeName])&$1 || []&s&xpuiJs&1.2.28.581&1.2.57.463'
'slotMid&\x70\x6F\x64\x63\x61\x73\x74\K\x2D\x6D\x69&\x20\x6D\x69&g&appBinary&1.0.29.605&1.0.29.605&macOS'
'slotPost&\x70\x6F\x64\x63\x61\x73\x74\K\x2D\x70\x6F&\x20\x70\x6F&g&appBinary&1.0.29.605&1.0.29.605&macOS'
@@ -1377,7 +1396,7 @@ aoEx=(
'sponsors3&allSponsorships&&g&xpuiJs&1.1.59.710'
'sponsors4&\/\K.{7}-ap4p&&g&xpuiJs&1.2.53.437'
'ucsC&\x00\K\x68(?=.{30}\x2F\x75\x73\x65\x72\x2D)&\x00&s&appBinary&1.2.55.235'
'useAdsSurfaceStateForAdOrchestration&Use ads-owned NPV and cinema surface state for ad orchestration",default:\K!.(?=})&false&s&xpuiJs&1.2.96.200'
'useAdsSurfaceStateForAdOrchestration&Use ads-owned NPV and cinema surface state for ad orchestration",default:\K!.(?=})&false&s&xpuiJs&1.2.96.200&1.3.1.234'
'webgateGabo&\@webgate\/(gabo)&"@" . $1&ge&vendorXpuiJs&1.1.70.610'
'webgateRemote&\@webgate\/(remote)&"@" . $1&ge&vendorXpuiJs&1.1.70.610'
)
@@ -1403,7 +1422,7 @@ expEx=(
'enableBLEJamBroadcasting&Jam Broadcasting for Bluetooth",default:\K!1&true&s&xpuiJs&1.2.76.256'
'enableBlockUsers&block users feature in clientX",default:\K!.(?=})&true&s&xpuiJs&1.1.70.610&1.2.50.335'
'enableBrowseViaPathfinder&Fetch Browse data from Pathfinder",default:\K!1&true&s&xpuiJs&1.1.88.595&1.2.24.756'
'enableCanvasContextMenuToggle&Canvas context menu toggle",default:\K!1&true&s&xpuiJs&1.2.96.200'
'enableCanvasContextMenuToggle&Canvas context menu toggle",default:\K!1&true&s&xpuiJs&1.2.96.200&1.3.1.234'
'enableCanvasNpv&short, looping visuals on tracks.",default:..\.\KCONTROL&CANVAS_PLAY_LOOP&s&xpuiJs&1.2.33.1039&1.2.62.580'
'enableCarouselsOnHome&Use carousels on Home",default:\K!1&true&s&xpuiJs&1.1.93.896&1.2.25.1011'
'enableCenteredLayout&Enable centered layout",default:\K!.(?=})&true&s&xpuiJs&1.2.39.578&1.2.50.335'
@@ -1562,6 +1581,12 @@ expEx=(
'shareButtonPositioning&Share button positioning in NPV",values:.{1,3},default:.{1,4}NPV_\K(HIDDEN|VISIBLE_ON_HOVER)&ALWAYS_VISIBLE&s&xpuiJs&1.2.39.578&1.2.50.335'
'showWrappedBanner&Show Wrapped banner on wrapped genre page",default:\K!1&true&s&xpuiJs&1.1.87.612&1.2.53.440'
)
naEx=(
'musicVideoPlaybackA&\x62\x01\x80\x52\x64\x03\x80\x52\x05\x00\x80\x52\K...[\x94-\x97](?=.{24}\x62\x01\x80\x52\xE4\x04\x80\x52\x25\x00\x80\x52)&\x20\x00\x80\x52&gs&appBinary&1.2.85.519&&macOS&arm64&1'
'musicVideoPlaybackX&\x48\x8D\x0D....\xBA\x0B\x00\x00\x00\x41\xB8\x1B\x00\x00\x00\x45\x31\xC9\K\xE8....(?=\x88.{3,6}.{0,12}\x48\x8D\x35....\x48\x8D\x0D....\xBA\x0B\x00\x00\x00\x41\xB8\x27\x00\x00\x00\x41\xB9\x01\x00\x00\x00)&\xB8\x01\x00\x00\x00&gs&appBinary&1.2.86.502&&&x86_64&1'
'musicVideoPremiumA&\x62\x01\x80\x52\x04\x04\x80\x52\x25\x00\x80\x52\K...[\x94-\x97](?=.{24}\x62\x01\x80\x52\x04\x06\x80\x52\x05\x00\x80\x52)&\x00\x00\x80\x52&gs&appBinary&1.2.85.519&&macOS&arm64&1'
'musicVideoPremiumX&\x48\x8D\x0D....\xBA\x0B\x00\x00\x00\x41\xB8\x20\x00\x00\x00\x41\xB9\x01\x00\x00\x00\K\xE8....(?=\x88.{3,6}.{0,12}\x48\x8D\x35....\x48\x8D\x0D....\xBA\x0B\x00\x00\x00\x41\xB8\x30\x00\x00\x00\x45\x31\xC9)&\x31\xC0\x90\x90\x90&gs&appBinary&1.2.86.502&&&x86_64&1'
)
premiumExpEx=(
'addYourDJToLibraryOnPlayback&Add Your DJ to library on playback",default:\K!1&true&s&xpuiJs&1.2.6.861&1.2.50.335'
'enableJamBroadcasting&Jam broadcasting and scanning",default:\K!1&true&s&xpuiJs&1.2.45.451&1.2.59.518'