muzical-ui 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/routes-manifest.json +6 -0
  5. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.rsc +17 -17
  16. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +17 -17
  17. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  18. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  20. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  21. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/.next/standalone/.next/server/app/api/youtube/audio/route/app-paths-manifest.json +3 -0
  23. package/.next/standalone/.next/server/app/api/youtube/audio/route/build-manifest.json +9 -0
  24. package/.next/standalone/.next/server/app/api/youtube/audio/route/server-reference-manifest.json +4 -0
  25. package/.next/standalone/.next/server/app/api/youtube/audio/route.js +7 -0
  26. package/.next/standalone/.next/server/app/api/youtube/audio/route.js.map +5 -0
  27. package/.next/standalone/.next/server/app/api/youtube/audio/route.js.nft.json +1 -0
  28. package/.next/standalone/.next/server/app/api/youtube/audio/route_client-reference-manifest.js +3 -0
  29. package/.next/standalone/.next/server/app/index.html +1 -1
  30. package/.next/standalone/.next/server/app/index.rsc +16 -16
  31. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  32. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +16 -16
  33. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  34. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +11 -11
  35. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  36. package/.next/standalone/.next/server/app/musicbrainz/page.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/musicbrainz/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/musicbrainz.html +1 -1
  39. package/.next/standalone/.next/server/app/musicbrainz.rsc +16 -16
  40. package/.next/standalone/.next/server/app/musicbrainz.segments/_full.segment.rsc +16 -16
  41. package/.next/standalone/.next/server/app/musicbrainz.segments/_head.segment.rsc +4 -4
  42. package/.next/standalone/.next/server/app/musicbrainz.segments/_index.segment.rsc +11 -11
  43. package/.next/standalone/.next/server/app/musicbrainz.segments/_tree.segment.rsc +2 -2
  44. package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz/__PAGE__.segment.rsc +2 -2
  45. package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz.segment.rsc +3 -3
  46. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/settings/browse/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/settings/browse/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/settings/browse.html +1 -1
  51. package/.next/standalone/.next/server/app/settings/browse.rsc +19 -19
  52. package/.next/standalone/.next/server/app/settings/browse.segments/_full.segment.rsc +19 -19
  53. package/.next/standalone/.next/server/app/settings/browse.segments/_head.segment.rsc +4 -4
  54. package/.next/standalone/.next/server/app/settings/browse.segments/_index.segment.rsc +11 -11
  55. package/.next/standalone/.next/server/app/settings/browse.segments/_tree.segment.rsc +2 -2
  56. package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse/__PAGE__.segment.rsc +3 -3
  57. package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse.segment.rsc +3 -3
  58. package/.next/standalone/.next/server/app/settings/browse.segments/settings.segment.rsc +4 -4
  59. package/.next/standalone/.next/server/app/settings/display/page.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/settings/display/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/settings/display.html +1 -1
  62. package/.next/standalone/.next/server/app/settings/display.rsc +19 -19
  63. package/.next/standalone/.next/server/app/settings/display.segments/_full.segment.rsc +19 -19
  64. package/.next/standalone/.next/server/app/settings/display.segments/_head.segment.rsc +4 -4
  65. package/.next/standalone/.next/server/app/settings/display.segments/_index.segment.rsc +11 -11
  66. package/.next/standalone/.next/server/app/settings/display.segments/_tree.segment.rsc +2 -2
  67. package/.next/standalone/.next/server/app/settings/display.segments/settings/display/__PAGE__.segment.rsc +3 -3
  68. package/.next/standalone/.next/server/app/settings/display.segments/settings/display.segment.rsc +3 -3
  69. package/.next/standalone/.next/server/app/settings/display.segments/settings.segment.rsc +4 -4
  70. package/.next/standalone/.next/server/app/settings/genius/page.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/settings/genius/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/settings/genius.html +1 -1
  73. package/.next/standalone/.next/server/app/settings/genius.rsc +19 -19
  74. package/.next/standalone/.next/server/app/settings/genius.segments/_full.segment.rsc +19 -19
  75. package/.next/standalone/.next/server/app/settings/genius.segments/_head.segment.rsc +4 -4
  76. package/.next/standalone/.next/server/app/settings/genius.segments/_index.segment.rsc +11 -11
  77. package/.next/standalone/.next/server/app/settings/genius.segments/_tree.segment.rsc +2 -2
  78. package/.next/standalone/.next/server/app/settings/genius.segments/settings/genius/__PAGE__.segment.rsc +3 -3
  79. package/.next/standalone/.next/server/app/settings/genius.segments/settings/genius.segment.rsc +3 -3
  80. package/.next/standalone/.next/server/app/settings/genius.segments/settings.segment.rsc +4 -4
  81. package/.next/standalone/.next/server/app/settings/lastfm/page.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/settings/lastfm/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/settings/lastfm.html +1 -1
  84. package/.next/standalone/.next/server/app/settings/lastfm.rsc +19 -19
  85. package/.next/standalone/.next/server/app/settings/lastfm.segments/_full.segment.rsc +19 -19
  86. package/.next/standalone/.next/server/app/settings/lastfm.segments/_head.segment.rsc +4 -4
  87. package/.next/standalone/.next/server/app/settings/lastfm.segments/_index.segment.rsc +11 -11
  88. package/.next/standalone/.next/server/app/settings/lastfm.segments/_tree.segment.rsc +2 -2
  89. package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm/__PAGE__.segment.rsc +3 -3
  90. package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm.segment.rsc +3 -3
  91. package/.next/standalone/.next/server/app/settings/lastfm.segments/settings.segment.rsc +4 -4
  92. package/.next/standalone/.next/server/app/settings/library/page.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/settings/library/page_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/settings/library.html +1 -1
  95. package/.next/standalone/.next/server/app/settings/library.rsc +19 -19
  96. package/.next/standalone/.next/server/app/settings/library.segments/_full.segment.rsc +19 -19
  97. package/.next/standalone/.next/server/app/settings/library.segments/_head.segment.rsc +4 -4
  98. package/.next/standalone/.next/server/app/settings/library.segments/_index.segment.rsc +11 -11
  99. package/.next/standalone/.next/server/app/settings/library.segments/_tree.segment.rsc +2 -2
  100. package/.next/standalone/.next/server/app/settings/library.segments/settings/library/__PAGE__.segment.rsc +3 -3
  101. package/.next/standalone/.next/server/app/settings/library.segments/settings/library.segment.rsc +3 -3
  102. package/.next/standalone/.next/server/app/settings/library.segments/settings.segment.rsc +4 -4
  103. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/settings/playback/page.js.nft.json +1 -1
  106. package/.next/standalone/.next/server/app/settings/playback/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/settings/playback.html +1 -1
  108. package/.next/standalone/.next/server/app/settings/playback.rsc +19 -19
  109. package/.next/standalone/.next/server/app/settings/playback.segments/_full.segment.rsc +19 -19
  110. package/.next/standalone/.next/server/app/settings/playback.segments/_head.segment.rsc +4 -4
  111. package/.next/standalone/.next/server/app/settings/playback.segments/_index.segment.rsc +11 -11
  112. package/.next/standalone/.next/server/app/settings/playback.segments/_tree.segment.rsc +2 -2
  113. package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback/__PAGE__.segment.rsc +3 -3
  114. package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback.segment.rsc +3 -3
  115. package/.next/standalone/.next/server/app/settings/playback.segments/settings.segment.rsc +4 -4
  116. package/.next/standalone/.next/server/app/settings/youtube/page.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/settings/youtube/page_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/settings/youtube.html +1 -1
  119. package/.next/standalone/.next/server/app/settings/youtube.rsc +19 -19
  120. package/.next/standalone/.next/server/app/settings/youtube.segments/_full.segment.rsc +19 -19
  121. package/.next/standalone/.next/server/app/settings/youtube.segments/_head.segment.rsc +4 -4
  122. package/.next/standalone/.next/server/app/settings/youtube.segments/_index.segment.rsc +11 -11
  123. package/.next/standalone/.next/server/app/settings/youtube.segments/_tree.segment.rsc +2 -2
  124. package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube/__PAGE__.segment.rsc +3 -3
  125. package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube.segment.rsc +3 -3
  126. package/.next/standalone/.next/server/app/settings/youtube.segments/settings.segment.rsc +4 -4
  127. package/.next/standalone/.next/server/app/settings.html +1 -1
  128. package/.next/standalone/.next/server/app/settings.rsc +18 -18
  129. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  130. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  131. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +11 -11
  132. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  133. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
  134. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +4 -4
  135. package/.next/standalone/.next/server/app/youtube/page.js.nft.json +1 -1
  136. package/.next/standalone/.next/server/app/youtube/page_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/youtube.html +1 -1
  138. package/.next/standalone/.next/server/app/youtube.rsc +16 -16
  139. package/.next/standalone/.next/server/app/youtube.segments/_full.segment.rsc +16 -16
  140. package/.next/standalone/.next/server/app/youtube.segments/_head.segment.rsc +4 -4
  141. package/.next/standalone/.next/server/app/youtube.segments/_index.segment.rsc +11 -11
  142. package/.next/standalone/.next/server/app/youtube.segments/_tree.segment.rsc +2 -2
  143. package/.next/standalone/.next/server/app/youtube.segments/youtube/__PAGE__.segment.rsc +2 -2
  144. package/.next/standalone/.next/server/app/youtube.segments/youtube.segment.rsc +3 -3
  145. package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
  146. package/.next/standalone/.next/server/chunks/[externals]__0j1rmnr._.js +3 -0
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ikt5.y._.js +3 -0
  148. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_youtube_audio_route_actions_0ix49ob.js +3 -0
  149. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-tq1if._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zs1ztp._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0w7m.s8._.js → [root-of-the-server]__13tszzt._.js} +2 -2
  152. package/.next/standalone/.next/server/chunks/ssr/_05uoimn._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/ssr/_0b8qx~m._.js +1 -1
  154. package/.next/standalone/.next/server/functions-config-manifest.json +3 -1
  155. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  156. package/.next/standalone/.next/server/pages/404.html +1 -1
  157. package/.next/standalone/.next/server/pages/500.html +1 -1
  158. package/.next/standalone/.next/static/chunks/0lhqk6x34unxe.css +3 -0
  159. package/.next/standalone/.next/static/chunks/0r32qvgl36~jc.js +1 -0
  160. package/.next/standalone/.next/static/chunks/0~phgwn0_69_u.js +1 -0
  161. package/.next/standalone/.next/static/chunks/{0pmdnv4s~ewq~.js → 16kria84.v_he.js} +1 -1
  162. package/.next/standalone/package.json +101 -100
  163. package/package.json +101 -100
  164. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03-3mbr._.js +0 -3
  165. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rojnap._.js +0 -3
  166. package/.next/standalone/.next/static/chunks/0.lupx4pzsf~o.css +0 -3
  167. package/.next/standalone/.next/static/chunks/015agggs30k0p.js +0 -1
  168. package/.next/standalone/.next/static/chunks/02r.ik~_51-c2.js +0 -1
  169. /package/.next/standalone/.next/static/{boRiHjPbPt3qjgYApnVFs → Ez87CktJcg9_xUZRSbiRz}/_buildManifest.js +0 -0
  170. /package/.next/standalone/.next/static/{boRiHjPbPt3qjgYApnVFs → Ez87CktJcg9_xUZRSbiRz}/_clientMiddlewareManifest.js +0 -0
  171. /package/.next/standalone/.next/static/{boRiHjPbPt3qjgYApnVFs → Ez87CktJcg9_xUZRSbiRz}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[91465,(a,b,c)=>{"use strict";var d=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,e=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,f=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,g=/\\([\u000b\u0020-\u00ff])/g,h=/([\\"])/g,i=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function j(a){this.parameters=Object.create(null),this.type=a}c.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.parameters,c=a.type;if(!c||!i.test(c))throw TypeError("invalid type");var d=c;if(b&&"object"==typeof b)for(var g,j=Object.keys(b).sort(),k=0;k<j.length;k++){if(g=j[k],!f.test(g))throw TypeError("invalid parameter name");d+="; "+g+"="+function(a){var b=String(a);if(f.test(b))return b;if(b.length>0&&!e.test(b))throw TypeError("invalid parameter value");return'"'+b.replace(h,"\\$1")+'"'}(b[g])}return d},c.parse=function(a){if(!a)throw TypeError("argument string is required");var b,c,e,f="object"==typeof a?function(a){var b;if("function"==typeof a.getHeader?b=a.getHeader("content-type"):"object"==typeof a.headers&&(b=a.headers&&a.headers["content-type"]),"string"!=typeof b)throw TypeError("content-type header is missing from object");return b}(a):a;if("string"!=typeof f)throw TypeError("argument string is required to be a string");var h=f.indexOf(";"),k=-1!==h?f.slice(0,h).trim():f.trim();if(!i.test(k))throw TypeError("invalid media type");var l=new j(k.toLowerCase());if(-1!==h){for(d.lastIndex=h;c=d.exec(f);){if(c.index!==h)throw TypeError("invalid parameter format");h+=c[0].length,b=c[1].toLowerCase(),34===(e=c[2]).charCodeAt(0)&&-1!==(e=e.slice(1,-1)).indexOf("\\")&&(e=e.replace(g,"$1")),l.parameters[b]=e}if(h!==f.length)throw TypeError("invalid parameter format")}return l}},96151,(a,b,c)=>{"use strict";var d=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,e=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,f=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;function g(a,b,c){this.type=a,this.subtype=b,this.suffix=c}c.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.subtype,c=a.suffix,f=a.type;if(!f||!e.test(f))throw TypeError("invalid type");if(!b||!d.test(b))throw TypeError("invalid subtype");var g=f+"/"+b;if(c){if(!e.test(c))throw TypeError("invalid suffix");g+="+"+c}return g},c.parse=function(a){if(!a)throw TypeError("argument string is required");if("string"!=typeof a)throw TypeError("argument string is required to be a string");var b,c=f.exec(a.toLowerCase());if(!c)throw TypeError("invalid media type");var d=c[1],e=c[2],h=e.lastIndexOf("+");return -1!==h&&(b=e.substr(h+1),e=e.substr(0,h)),new g(d,e,b)},c.test=function(a){if(!a)throw TypeError("argument string is required");if("string"!=typeof a)throw TypeError("argument string is required to be a string");return f.test(a.toLowerCase())}},58760,14142,41994,96332,4355,27120,79340,14269,88965,18975,40210,67486,80977,34991,47179,17479,24388,44803,91320,16564,73972,22451,2196,a=>{"use strict";a.s(["LibraryProvider",()=>ce,"useLibrary",()=>cf],58760);var b=a.i(61401),c=a.i(59021);function d(a){return`${a.source}\u0000${a.query.trim().toLowerCase()}`}function e(a){}a.s(["RECENT_BROWSE_SEARCHES_LIMIT",0,12],14142);let f="muzical-library",g="libraryRoots",h="libraryCatalog",i=[".mp3",".flac",".m4a",".aac",".ogg",".opus",".wav",".webm",".aiff",".aif",".alac",".wma"];a.s(["LIBRARY_AUDIO_EXTENSIONS",0,i,"LIBRARY_CATALOG_STORE_NAME",0,h,"LIBRARY_DB_NAME",0,f,"LIBRARY_DB_VERSION",0,3,"LIBRARY_STORE_NAME",0,g],41994);let j="catalog",k="favorites";function l(a,b,c){if(!a.objectStoreNames.contains(h))return Promise.reject(Error(`Missing object store ${h}`));let d={key:j,rootIds:[...b].sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})),tracks:[...c],savedAt:Date.now()};return new Promise((b,c)=>{let e=a.transaction(h,"readwrite"),f=e.objectStore(h).put(d);f.onerror=()=>{c(f.error??Error("IndexedDB catalog put failed"))},e.oncomplete=()=>{b()},e.onerror=()=>{c(e.error??Error("IndexedDB catalog transaction failed"))}})}let m=()=>({key:k,songIds:[],artistNames:[],albumKeys:[]}),n=new Set(i);function o(a,b){let c=a.lastIndexOf(".");if(c<0)return a;let d=a.slice(c).toLowerCase();return(b??n).has(d)?a.slice(0,c):a}function p(a){let b=a.library;if(!b)return null;let{fileLastModified:c,fileSize:d}=b;return"number"==typeof c&&Number.isFinite(c)&&"number"==typeof d&&Number.isFinite(d)&&!(d<0)?{fileLastModified:c,fileSize:d}:null}a.s(["parseBlob",()=>aZ,"scanAppendingHeaders",()=>a$],96332),a.i(17588);var q=a.i(1766),r=a.i(1962),s=a.i(82663),t=a.i(35617);let u={get:a=>({signature:r.UINT32_LE.get(a,0),compressedSize:r.UINT32_LE.get(a,8),uncompressedSize:r.UINT32_LE.get(a,12)}),len:16},v={get(a){let b=r.UINT16_LE.get(a,6);return{signature:r.UINT32_LE.get(a,0),minVersion:r.UINT16_LE.get(a,4),dataDescriptor:!!(8&b),compressedMethod:r.UINT16_LE.get(a,8),compressedSize:r.UINT32_LE.get(a,18),uncompressedSize:r.UINT32_LE.get(a,22),filenameLength:r.UINT16_LE.get(a,26),extraFieldLength:r.UINT16_LE.get(a,28),filename:null}},len:30},w={get:a=>({signature:r.UINT32_LE.get(a,0),nrOfThisDisk:r.UINT16_LE.get(a,4),nrOfThisDiskWithTheStart:r.UINT16_LE.get(a,6),nrOfEntriesOnThisDisk:r.UINT16_LE.get(a,8),nrOfEntriesOfSize:r.UINT16_LE.get(a,10),sizeOfCd:r.UINT32_LE.get(a,12),offsetOfStartOfCd:r.UINT32_LE.get(a,16),zipFileCommentLength:r.UINT16_LE.get(a,20)}),len:22},x={get(a){let b=r.UINT16_LE.get(a,8);return{signature:r.UINT32_LE.get(a,0),minVersion:r.UINT16_LE.get(a,6),dataDescriptor:!!(8&b),compressedMethod:r.UINT16_LE.get(a,10),compressedSize:r.UINT32_LE.get(a,20),uncompressedSize:r.UINT32_LE.get(a,24),filenameLength:r.UINT16_LE.get(a,28),extraFieldLength:r.UINT16_LE.get(a,30),fileCommentLength:r.UINT16_LE.get(a,32),relativeOffsetOfLocalHeader:r.UINT32_LE.get(a,42),filename:null}},len:46};function y(a){let b=new Uint8Array(r.UINT32_LE.len);return r.UINT32_LE.put(b,0,a),b}let z=(0,t.default)("tokenizer:inflate"),A=y(0x8074b50),B=y(0x6054b50);class C{constructor(a){this.tokenizer=a,this.syncBuffer=new Uint8Array(262144)}async isZip(){return await this.peekSignature()===0x4034b50}peekSignature(){return this.tokenizer.peekToken(r.UINT32_LE)}async findEndOfCentralDirectoryLocator(){let a=this.tokenizer,b=Math.min(16384,a.fileInfo.size),c=this.syncBuffer.subarray(0,b);await this.tokenizer.readBuffer(c,{position:a.fileInfo.size-b});for(let d=c.length-4;d>=0;d--)if(c[d]===B[0]&&c[d+1]===B[1]&&c[d+2]===B[2]&&c[d+3]===B[3])return a.fileInfo.size-b+d;return -1}async readCentralDirectory(){if(!this.tokenizer.supportsRandomAccess())return void z("Cannot reading central-directory without random-read support");z("Reading central-directory...");let a=this.tokenizer.position,b=await this.findEndOfCentralDirectoryLocator();if(b>0){z("Central-directory 32-bit signature found");let c=await this.tokenizer.readToken(w,b),d=[];this.tokenizer.setPosition(c.offsetOfStartOfCd);for(let a=0;a<c.nrOfEntriesOfSize;++a){let b=await this.tokenizer.readToken(x);if(0x2014b50!==b.signature)throw Error("Expected Central-File-Header signature");b.filename=await this.tokenizer.readToken(new r.StringType(b.filenameLength,"utf-8")),await this.tokenizer.ignore(b.extraFieldLength),await this.tokenizer.ignore(b.fileCommentLength),d.push(b),z(`Add central-directory file-entry: n=${a+1}/${d.length}: filename=${d[a].filename}`)}return this.tokenizer.setPosition(a),d}this.tokenizer.setPosition(a)}async unzip(a){let b=await this.readCentralDirectory();if(b)return this.iterateOverCentralDirectory(b,a);let c=!1;do{let b,d=await this.readLocalFileHeader();if(!d)break;let e=a(d);if(c=!!e.stop,await this.tokenizer.ignore(d.extraFieldLength),d.dataDescriptor&&0===d.compressedSize){let a=[],b=262144;z("Compressed-file-size unknown, scanning for next data-descriptor-signature....");let c=-1;for(;c<0&&262144===b;){b=await this.tokenizer.peekBuffer(this.syncBuffer,{mayBeLess:!0});let d=(c=function(a,b){let c=a.length,d=b.length;if(d>c)return -1;for(let e=0;e<=c-d;e++){let c=!0;for(let f=0;f<d;f++)if(a[e+f]!==b[f]){c=!1;break}if(c)return e}return -1}(this.syncBuffer.subarray(0,b),A))>=0?c:b;if(e.handler){let b=new Uint8Array(d);await this.tokenizer.readBuffer(b),a.push(b)}else await this.tokenizer.ignore(d)}z(`Found data-descriptor-signature at pos=${this.tokenizer.position}`),e.handler&&await this.inflate(d,function(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}(a),e.handler)}else e.handler?(z(`Reading compressed-file-data: ${d.compressedSize} bytes`),b=new Uint8Array(d.compressedSize),await this.tokenizer.readBuffer(b),await this.inflate(d,b,e.handler)):(z(`Ignoring compressed-file-data: ${d.compressedSize} bytes`),await this.tokenizer.ignore(d.compressedSize));if(z(`Reading data-descriptor at pos=${this.tokenizer.position}`),d.dataDescriptor&&0x8074b50!==(await this.tokenizer.readToken(u)).signature)throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-u.len}`)}while(!c)}async iterateOverCentralDirectory(a,b){for(let c of a){let a=b(c);if(a.handler){this.tokenizer.setPosition(c.relativeOffsetOfLocalHeader);let b=await this.readLocalFileHeader();if(b){await this.tokenizer.ignore(b.extraFieldLength);let d=new Uint8Array(c.compressedSize);await this.tokenizer.readBuffer(d),await this.inflate(b,d,a.handler)}}if(a.stop)break}}async inflate(a,b,c){if(0===a.compressedMethod)return c(b);if(8!==a.compressedMethod)throw Error(`Unsupported ZIP compression method: ${a.compressedMethod}`);return z(`Decompress filename=${a.filename}, compressed-size=${b.length}`),c(await C.decompressDeflateRaw(b))}static async decompressDeflateRaw(a){let b=new ReadableStream({start(b){b.enqueue(a),b.close()}}),c=new DecompressionStream("deflate-raw"),d=b.pipeThrough(c);try{let a=new Response(d),b=await a.arrayBuffer();return new Uint8Array(b)}catch(a){throw TypeError(a instanceof Error?`Failed to deflate ZIP entry: ${a.message}`:"Unknown decompression error in ZIP entry")}}async readLocalFileHeader(){let a=await this.tokenizer.peekToken(r.UINT32_LE);if(0x4034b50===a){let a=await this.tokenizer.readToken(v);return a.filename=await this.tokenizer.readToken(new r.StringType(a.filenameLength,"utf-8")),a}if(0x2014b50===a)return!1;if(0xe011cfd0===a)throw Error("Encrypted ZIP");throw Error("Unexpected signature")}}class D{constructor(a){this.tokenizer=a}inflate(){let a=this.tokenizer;return new ReadableStream({async pull(b){let c=new Uint8Array(1024),d=await a.readBuffer(c,{mayBeLess:!0});0===d?b.close():b.enqueue(c.subarray(0,d))}}).pipeThrough(new DecompressionStream("gzip"))}}var E=a.i(37187);let F={get:(a,b)=>127&a[b+3]|a[b+2]<<7|a[b+1]<<14|a[b]<<21,len:4},G=0x80000000-1,H=new Set(["Unexpected signature","Encrypted ZIP","Expected Central-File-Header signature"]),I=["ZIP entry count exceeds ","Unsupported ZIP compression method:","ZIP entry compressed data exceeds ","ZIP entry decompressed data exceeds ","Expected data-descriptor-signature at position "],J=new Set(["Z_BUF_ERROR","Z_DATA_ERROR","ERR_INVALID_STATE"]);class K extends Error{}function L(a,b,c){if(!Number.isFinite(a)||a<0||a>b)throw new K(`${c} has invalid size ${a} (maximum ${b} bytes)`);return a}async function M(a,b,{maximumLength:c=0x1000000,reason:d="skip"}={}){let e=L(b,c,d);await a.ignore(e)}async function N(a,b,c,{maximumLength:d=b.length,reason:e="read"}={}){let f=L(c?.length??b.length,d,e);return a.readBuffer(b,{...c,length:f})}async function O(a,{maximumLength:b=1048576}={}){let c=new ReadableStream({start(b){b.enqueue(a),b.close()}}).pipeThrough(new DecompressionStream("deflate-raw")).getReader(),d=[],e=0;try{for(;;){let{done:a,value:f}=await c.read();if(a)break;if((e+=f.length)>b)throw await c.cancel(),Error(`ZIP entry decompressed data exceeds ${b} bytes`);d.push(f)}}finally{c.releaseLock()}let f=new Uint8Array(e),g=0;for(let a of d)f.set(a,g),g+=a.length;return f}async function P(a,{shouldBuffer:b,maximumLength:c=1048576}={}){let{syncBuffer:d}=a,{length:e}=d,f=[],g=0;for(;;){let h=await a.tokenizer.peekBuffer(d,{mayBeLess:!0}),i=function(a,b){if(a.length<16)return -1;let c=a.length-16;for(let d=0;d<=c;d++)if(0x8074b50===r.UINT32_LE.get(a,d)&&r.UINT32_LE.get(a,d+8)===b+d)return d;return -1}(d.subarray(0,h),g),j=i>=0?0:h===e?Math.min(15,h-1):0,k=i>=0?i:h-j;if(0===k)break;if((g+=k)>c)throw Error(`ZIP entry compressed data exceeds ${c} bytes`);if(b){let b=new Uint8Array(k);await a.tokenizer.readBuffer(b),f.push(b)}else await a.tokenizer.ignore(k);if(i>=0)break}if(U(a.tokenizer)||(a.knownSizeDescriptorScannedBytes+=g),b){let a=new Uint8Array(g),b=0;for(let c of f)a.set(c,b),b+=c.length;return a}}async function Q(a,b,{shouldBuffer:c,maximumDescriptorLength:d=1048576}={}){var e;let f;if(b.dataDescriptor&&0===b.compressedSize)return P(a,{shouldBuffer:c,maximumLength:d});if(!c)return void await M(a.tokenizer,b.compressedSize,{maximumLength:U(a.tokenizer)?1048576:a.tokenizer.fileInfo.size,reason:"ZIP entry compressed data"});let g=Math.min(Number.isFinite(f=(e=a.tokenizer).fileInfo.size)?Math.max(0,f-e.position):Number.MAX_SAFE_INTEGER,G);if(!Number.isFinite(b.compressedSize)||b.compressedSize<0||b.compressedSize>g)throw Error(`ZIP entry compressed data exceeds ${g} bytes`);let h=new Uint8Array(b.compressedSize);return await a.tokenizer.readBuffer(h),h}async function R(a,b){return new Y(b).fromBuffer(a)}function S(a){switch(a=a.toLowerCase()){case"application/epub+zip":return{ext:"epub",mime:a};case"application/vnd.oasis.opendocument.text":return{ext:"odt",mime:a};case"application/vnd.oasis.opendocument.text-template":return{ext:"ott",mime:a};case"application/vnd.oasis.opendocument.spreadsheet":return{ext:"ods",mime:a};case"application/vnd.oasis.opendocument.spreadsheet-template":return{ext:"ots",mime:a};case"application/vnd.oasis.opendocument.presentation":return{ext:"odp",mime:a};case"application/vnd.oasis.opendocument.presentation-template":return{ext:"otp",mime:a};case"application/vnd.oasis.opendocument.graphics":return{ext:"odg",mime:a};case"application/vnd.oasis.opendocument.graphics-template":return{ext:"otg",mime:a};case"application/vnd.openxmlformats-officedocument.presentationml.slideshow":return{ext:"ppsx",mime:a};case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":return{ext:"xlsx",mime:a};case"application/vnd.ms-excel.sheet.macroenabled":return{ext:"xlsm",mime:"application/vnd.ms-excel.sheet.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.template":return{ext:"xltx",mime:a};case"application/vnd.ms-excel.template.macroenabled":return{ext:"xltm",mime:"application/vnd.ms-excel.template.macroenabled.12"};case"application/vnd.ms-powerpoint.slideshow.macroenabled":return{ext:"ppsm",mime:"application/vnd.ms-powerpoint.slideshow.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return{ext:"docx",mime:a};case"application/vnd.ms-word.document.macroenabled":return{ext:"docm",mime:"application/vnd.ms-word.document.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.template":return{ext:"dotx",mime:a};case"application/vnd.ms-word.template.macroenabledtemplate":return{ext:"dotm",mime:"application/vnd.ms-word.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.template":return{ext:"potx",mime:a};case"application/vnd.ms-powerpoint.template.macroenabled":return{ext:"potm",mime:"application/vnd.ms-powerpoint.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.presentation":return{ext:"pptx",mime:a};case"application/vnd.ms-powerpoint.presentation.macroenabled":return{ext:"pptm",mime:"application/vnd.ms-powerpoint.presentation.macroenabled.12"};case"application/vnd.ms-visio.drawing":return{ext:"vsdx",mime:"application/vnd.visio"};case"application/vnd.ms-package.3dmanufacturing-3dmodel+xml":return{ext:"3mf",mime:"model/3mf"}}}function T(a,b,c){for(let[d,e]of(c={offset:0,...c},b.entries()))if(c.mask){if(e!==(c.mask[d]&a[d+c.offset]))return!1}else if(e!==a[d+c.offset])return!1;return!0}function U(a){let b=a.fileInfo.size;return!Number.isFinite(b)||b===Number.MAX_SAFE_INTEGER}function V(a,b,c){return U(a)&&a.position-b>c}function W(a,b=1048576){for(let c of[a.compressedSize,a.uncompressedSize])if(!Number.isFinite(c)||c<0||c>b)return!1;return!0}function X(a){if(a.hasContentTypesEntry&&!a.hasUnparseableContentTypes&&!a.isParsingContentTypes&&!a.hasParsedContentTypesEntry){if(a.hasWordDirectory)return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(a.hasPresentationDirectory)return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(a.hasSpreadsheetDirectory)return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};if(a.hasThreeDimensionalModelEntry)return{ext:"3mf",mime:"model/3mf"}}}C.prototype.inflate=async function(a,b,c){if(0===a.compressedMethod)return c(b);if(8!==a.compressedMethod)throw Error(`Unsupported ZIP compression method: ${a.compressedMethod}`);return c(await O(b,{maximumLength:1048576}))},C.prototype.unzip=async function(a){let b=!1,c=0,d=this.tokenizer.position;this.knownSizeDescriptorScannedBytes=0;do{if(V(this.tokenizer,d,0x1000000))throw new K("ZIP stream probing exceeds 16777216 bytes");let e=await this.readLocalFileHeader();if(!e)break;if(++c>1024)throw Error("ZIP entry count exceeds 1024");let f=a(e);b=!!f.stop,await this.tokenizer.ignore(e.extraFieldLength);let g=await Q(this,e,{shouldBuffer:!!f.handler,maximumDescriptorLength:Math.min(1048576,U(this.tokenizer)?Math.max(0,0x1000000-(this.tokenizer.position-d)):Math.max(0,1048576-this.knownSizeDescriptorScannedBytes))});if(f.handler&&await this.inflate(e,g,f.handler),e.dataDescriptor){let a=new Uint8Array(16);if(await this.tokenizer.readBuffer(a),0x8074b50!==r.UINT32_LE.get(a,0))throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-a.length}`)}if(V(this.tokenizer,d,0x1000000))throw new K("ZIP stream probing exceeds 16777216 bytes")}while(!b)};class Y{constructor(a){const b=function(a){return Number.isFinite(a)?Math.max(0,Math.min(4098,Math.trunc(a))):0}(a?.mpegOffsetTolerance);this.options={...a,mpegOffsetTolerance:b},this.detectors=[...this.options.customDetectors??[],{id:"core",detect:this.detectConfident},{id:"core.imprecise",detect:this.detectImprecise}],this.tokenizerOptions={abortSignal:this.options.signal},this.gzipProbeDepth=0}getTokenizerOptions(){return{...this.tokenizerOptions}}createTokenizerFromWebStream(a){return function(a){let b=a?.streamReader;if(b?.constructor?.name!=="WebStreamByobReader")return a;let{reader:c}=b,d=async()=>{await c.cancel(),c.releaseLock()};return b.close=d,b.abort=async()=>{b.interrupted=!0,await d()},a}(q.fromWebStream(a,this.getTokenizerOptions()))}async parseTokenizer(a,b=0){this.detectionReentryCount=b;let c=a.position;for(let b of this.detectors){let d;try{d=await b.detect(a)}catch(a){if(a instanceof s.EndOfStreamError||a instanceof K)return;throw a}if(d)return d;if(c!==a.position)return}}async fromTokenizer(a){try{return await this.parseTokenizer(a)}finally{await a.close()}}async fromBuffer(a){if(!(a instanceof Uint8Array||a instanceof ArrayBuffer))throw TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof a}\``);let b=a instanceof Uint8Array?a:new Uint8Array(a);if(b?.length>1)return this.fromTokenizer(q.fromBuffer(b,this.getTokenizerOptions()))}async fromBlob(a){this.options.signal?.throwIfAborted();let b=q.fromBlob(a,this.getTokenizerOptions());return this.fromTokenizer(b)}async fromStream(a){this.options.signal?.throwIfAborted();let b=this.createTokenizerFromWebStream(a);return this.fromTokenizer(b)}async toDetectionStream(a,b){var c,d,e;let f,g,h=Number.isFinite(c=b?.sampleSize??4100)?Math.max(1,Math.trunc(c)):4100,i=a.getReader({mode:"byob"});try{let{value:a,done:b}=await (d=new Uint8Array(h),e=this.options.signal,void 0===e?i.read(d):(e.throwIfAborted(),new Promise((a,b)=>{let c=()=>{e.removeEventListener("abort",f)},f=()=>{let a=e.reason;c(),(async()=>{try{await i.cancel(a)}catch{}})(),b(a)};e.addEventListener("abort",f,{once:!0}),(async()=>{try{let b=await i.read(d);c(),a(b)}catch(a){c(),b(a)}})()})));if(g=a,!b&&a)try{f=await this.fromBuffer(a.subarray(0,h))}catch(a){if(!(a instanceof s.EndOfStreamError))throw a;f=void 0}g=a}finally{i.releaseLock()}let j=new TransformStream({async start(a){a.enqueue(g)},transform(a,b){b.enqueue(a)}}),k=a.pipeThrough(j);return k.fileType=f,k}async detectGzip(a){let b,c,d,e,f,g,h,i,j;if(this.gzipProbeDepth>=1)return{ext:"gz",mime:"application/gzip"};let k=(f=new D(a).inflate().getReader(),g=0,h=!1,i=!1,j=async a=>{h||i||(i=!0,await f.cancel(a))},new ReadableStream({async pull(a){if(g>=0x1000000){a.close(),await j();return}let{done:b,value:c}=await f.read();if(b||!c){h=!0,a.close();return}let d=0x1000000-g;if(c.length>d){a.enqueue(c.subarray(0,d)),g+=d,a.close(),await j();return}a.enqueue(c),g+=c.length},async cancel(a){await j(a)}})),l=U(a);if(l){let a=new AbortController;b=setTimeout(()=>{a.abort(new DOMException("Operation timed out after 100 ms","TimeoutError"))},100),c=void 0===this.options.signal?a.signal:AbortSignal.any([this.options.signal,a.signal]),(d=new Y({...this.options,signal:c})).gzipProbeDepth=this.gzipProbeDepth+1}else this.gzipProbeDepth++;try{e=await (d??this).fromStream(k)}catch(a){if(a?.name==="AbortError"&&c?.reason?.name!=="TimeoutError")throw a}finally{clearTimeout(b),!l&&this.gzipProbeDepth--}return e?.ext==="tar"?{ext:"tar.gz",mime:"application/gzip"}:{ext:"gz",mime:"application/gzip"}}check(a,b){return T(this.buffer,a,b)}checkString(a,b){return this.check(function(a,b){if("utf-16le"===b){let b=[];for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);b.push(255&d,d>>8&255)}return b}if("utf-16be"===b){let b=[];for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);b.push(d>>8&255,255&d)}return b}return[...a].map(a=>a.charCodeAt(0))}(a,b?.encoding),b)}detectConfident=async a=>{if(this.buffer=new Uint8Array(4100),void 0===a.fileInfo.size&&(a.fileInfo.size=Number.MAX_SAFE_INTEGER),this.tokenizer=a,U(a)&&(await a.peekBuffer(this.buffer,{length:3,mayBeLess:!0}),this.check([31,139,8])))return this.detectGzip(a);if(await a.peekBuffer(this.buffer,{length:32,mayBeLess:!0}),this.check([66,77]))return{ext:"bmp",mime:"image/bmp"};if(this.check([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"};if(this.check([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(this.check([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if(this.check([37,33]))return(await a.peekBuffer(this.buffer,{length:24,mayBeLess:!0}),this.checkString("PS-Adobe-",{offset:2})&&this.checkString(" EPSF-",{offset:14}))?{ext:"eps",mime:"application/eps"}:{ext:"ps",mime:"application/postscript"};if(this.check([31,160])||this.check([31,157]))return{ext:"Z",mime:"application/x-compress"};if(this.check([199,113]))return{ext:"cpio",mime:"application/x-cpio"};if(this.check([96,234]))return{ext:"arj",mime:"application/x-arj"};if(this.check([239,187,191])){if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,await this.tokenizer.ignore(3),this.detectConfident(a)}if(this.check([71,73,70]))return{ext:"gif",mime:"image/gif"};if(this.check([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(this.check([31,139,8]))return this.detectGzip(a);if(this.check([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(this.checkString("ID3")){await M(a,6,{maximumLength:6,reason:"ID3 header prefix"});let b=await a.readToken(F),c=U(a);if(!Number.isFinite(b)||b<0||c&&(b>0x1000000||a.position+b>0x1000000))return;if(a.position+b>a.fileInfo.size){if(c)return;return{ext:"mp3",mime:"audio/mpeg"}}try{await M(a,b,{maximumLength:c?0x1000000:a.fileInfo.size,reason:"ID3 payload"})}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,this.parseTokenizer(a,this.detectionReentryCount)}if(this.checkString("MP+"))return{ext:"mpc",mime:"audio/x-musepack"};if((67===this.buffer[0]||70===this.buffer[0])&&this.check([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(this.check([255,216,255]))return this.check([247],{offset:3})?{ext:"jls",mime:"image/jls"}:{ext:"jpg",mime:"image/jpeg"};if(this.check([79,98,106,1]))return{ext:"avro",mime:"application/avro"};if(this.checkString("FLIF"))return{ext:"flif",mime:"image/flif"};if(this.checkString("8BPS"))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(this.checkString("MPCK"))return{ext:"mpc",mime:"audio/x-musepack"};if(this.checkString("FORM"))return{ext:"aif",mime:"audio/aiff"};if(this.checkString("icns",{offset:0}))return{ext:"icns",mime:"image/icns"};if(this.check([80,75,3,4])){let b,c={hasContentTypesEntry:!1,hasParsedContentTypesEntry:!1,isParsingContentTypes:!1,hasUnparseableContentTypes:!1,hasWordDirectory:!1,hasPresentationDirectory:!1,hasSpreadsheetDirectory:!1,hasThreeDimensionalModelEntry:!1};try{await new C(a).unzip(a=>{var d;(d=a.filename).startsWith("word/")&&(c.hasWordDirectory=!0),d.startsWith("ppt/")&&(c.hasPresentationDirectory=!0),d.startsWith("xl/")&&(c.hasSpreadsheetDirectory=!0),d.startsWith("3D/")&&d.endsWith(".model")&&(c.hasThreeDimensionalModelEntry=!0);let e="[Content_Types].xml"===a.filename,f=X(c);if(!e&&f)return b=f,{stop:!0};switch(a.filename){case"META-INF/mozilla.rsa":return b={ext:"xpi",mime:"application/x-xpinstall"},{stop:!0};case"META-INF/MANIFEST.MF":return b={ext:"jar",mime:"application/java-archive"},{stop:!0};case"mimetype":if(!W(a,1048576))return{};return{async handler(a){let c=new TextDecoder("utf-8").decode(a).trim();b=S(c)},stop:!0};case"[Content_Types].xml":if(c.hasContentTypesEntry=!0,!W(a,1048576))return c.hasUnparseableContentTypes=!0,{};return c.isParsingContentTypes=!0,{async handler(a){let d=new TextDecoder("utf-8").decode(a),e=function(a){let b=a.indexOf('.main+xml"');if(-1===b){let b="application/vnd.ms-package.3dmanufacturing-3dmodel+xml";return a.includes(`ContentType="${b}"`)?b:void 0}let c=a.slice(0,b),d=c.lastIndexOf('"');return c.slice(d+1)}(d);e&&(b=S(e)),c.hasParsedContentTypesEntry=!0,c.isParsingContentTypes=!1},stop:!0};default:if(/classes\d*\.dex/.test(a.filename))return b={ext:"apk",mime:"application/vnd.android.package-archive"},{stop:!0};return{}}})}catch(a){if(!function(a){if(a instanceof s.EndOfStreamError||a instanceof K)return!0;if(!(a instanceof Error))return!1;if(H.has(a.message)||J.has(a.code))return!0;for(let b of I)if(a.message.startsWith(b))return!0;return!1}(a))throw a;c.isParsingContentTypes&&(c.isParsingContentTypes=!1,c.hasUnparseableContentTypes=!0)}return b??X(c)??{ext:"zip",mime:"application/zip"}}if(this.checkString("OggS")){await a.ignore(28);let b=new Uint8Array(8);return(await a.readBuffer(b),T(b,[79,112,117,115,72,101,97,100]))?{ext:"opus",mime:"audio/ogg; codecs=opus"}:T(b,[128,116,104,101,111,114,97])?{ext:"ogv",mime:"video/ogg"}:T(b,[1,118,105,100,101,111,0])?{ext:"ogm",mime:"video/ogg"}:T(b,[127,70,76,65,67])?{ext:"oga",mime:"audio/ogg"}:T(b,[83,112,101,101,120,32,32])?{ext:"spx",mime:"audio/ogg"}:T(b,[1,118,111,114,98,105,115])?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"}}if(this.check([80,75])&&(3===this.buffer[2]||5===this.buffer[2]||7===this.buffer[2])&&(4===this.buffer[3]||6===this.buffer[3]||8===this.buffer[3]))return{ext:"zip",mime:"application/zip"};if(this.checkString("MThd"))return{ext:"mid",mime:"audio/midi"};if(this.checkString("wOFF")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff",mime:"font/woff"};if(this.checkString("wOF2")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(this.check([212,195,178,161])||this.check([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(this.checkString("DSD "))return{ext:"dsf",mime:"audio/x-dsf"};if(this.checkString("LZIP"))return{ext:"lz",mime:"application/x-lzip"};if(this.checkString("fLaC"))return{ext:"flac",mime:"audio/flac"};if(this.check([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(this.checkString("wvpk"))return{ext:"wv",mime:"audio/wavpack"};if(this.checkString("%PDF"))return{ext:"pdf",mime:"application/pdf"};if(this.check([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(this.check([73,73])){let a=await this.readTiffHeader(!1);if(a)return a}if(this.check([77,77])){let a=await this.readTiffHeader(!0);if(a)return a}if(this.checkString("MAC "))return{ext:"ape",mime:"audio/ape"};if(this.check([26,69,223,163])){async function b(){let b=await a.peekNumber(r.UINT8),c=128,d=0;for(;(b&c)==0&&0!==c;)++d,c>>=1;let e=new Uint8Array(d+1);return await N(a,e,void 0,{maximumLength:e.length,reason:"EBML field"}),e}async function c(){let a=await b(),c=await b();c[0]^=128>>c.length-1;let d=Math.min(6,c.length),e=new DataView(a.buffer),f=new DataView(c.buffer,c.length-d,d);return{id:(0,E.getUintBE)(e),len:(0,E.getUintBE)(f)}}async function d(b){let d=0;for(;b>0;){if(++d>256||V(a,f,0x1000000))return;let e=a.position,g=await c();if(17026===g.id){if(g.len>64)return;let b=L(g.len,64,"EBML DocType");return(await a.readToken(new r.StringType(b))).replaceAll(/\00.*$/g,"")}if(U(a)&&(!Number.isFinite(g.len)||g.len<0||g.len>1048576)||(await M(a,g.len,{maximumLength:U(a)?1048576:a.fileInfo.size,reason:"EBML payload"}),--b,a.position<=e))return}}let e=await c(),f=a.position;switch(await d(e.len)){case"webm":return{ext:"webm",mime:"video/webm"};case"matroska":return{ext:"mkv",mime:"video/matroska"};default:return}}if(this.checkString("SQLi"))return{ext:"sqlite",mime:"application/x-sqlite3"};if(this.check([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(this.checkString("Cr24"))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(this.checkString("MSCF")||this.checkString("ISc("))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(this.check([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(this.check([197,208,211,198]))return{ext:"eps",mime:"application/eps"};if(this.check([40,181,47,253]))return{ext:"zst",mime:"application/zstd"};if(this.check([127,69,76,70]))return{ext:"elf",mime:"application/x-elf"};if(this.check([33,66,68,78]))return{ext:"pst",mime:"application/vnd.ms-outlook"};if(this.checkString("PAR1")||this.checkString("PARE"))return{ext:"parquet",mime:"application/vnd.apache.parquet"};if(this.checkString("ttcf"))return{ext:"ttc",mime:"font/collection"};if(this.check([254,237,250,206])||this.check([254,237,250,207])||this.check([206,250,237,254])||this.check([207,250,237,254]))return{ext:"macho",mime:"application/x-mach-binary"};if(this.check([4,34,77,24]))return{ext:"lz4",mime:"application/x-lz4"};if(this.checkString("regf"))return{ext:"dat",mime:"application/x-ft-windows-registry-hive"};if(this.checkString("$FL2")||this.checkString("$FL3"))return{ext:"sav",mime:"application/x-spss-sav"};if(this.check([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(this.checkString("#!AMR"))return{ext:"amr",mime:"audio/amr"};if(this.checkString("{\\rtf"))return{ext:"rtf",mime:"application/rtf"};if(this.check([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(this.checkString("IMPM"))return{ext:"it",mime:"audio/x-it"};if(this.checkString("-lh0-",{offset:2})||this.checkString("-lh1-",{offset:2})||this.checkString("-lh2-",{offset:2})||this.checkString("-lh3-",{offset:2})||this.checkString("-lh4-",{offset:2})||this.checkString("-lh5-",{offset:2})||this.checkString("-lh6-",{offset:2})||this.checkString("-lh7-",{offset:2})||this.checkString("-lzs-",{offset:2})||this.checkString("-lz4-",{offset:2})||this.checkString("-lz5-",{offset:2})||this.checkString("-lhd-",{offset:2}))return{ext:"lzh",mime:"application/x-lzh-compressed"};if(this.check([0,0,1,186])){if(this.check([33],{offset:4,mask:[241]}))return{ext:"mpg",mime:"video/MP1S"};if(this.check([68],{offset:4,mask:[196]}))return{ext:"mpg",mime:"video/MP2P"}}if(this.checkString("ITSF"))return{ext:"chm",mime:"application/vnd.ms-htmlhelp"};if(this.check([202,254,186,190])){let a=r.UINT32_BE.get(this.buffer,4),b=r.UINT16_BE.get(this.buffer,6);if(a>0&&a<=30)return{ext:"macho",mime:"application/x-mach-binary"};if(b>30)return{ext:"class",mime:"application/java-vm"}}if(this.checkString(".RMF"))return{ext:"rm",mime:"application/vnd.rn-realmedia"};if(this.checkString("DRACO"))return{ext:"drc",mime:"application/vnd.google.draco"};if(this.check([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(this.checkString("<?xml "))return{ext:"xml",mime:"application/xml"};if(this.check([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(this.check([82,97,114,33,26,7])&&(0===this.buffer[6]||1===this.buffer[6]))return{ext:"rar",mime:"application/x-rar-compressed"};if(this.checkString("solid "))return{ext:"stl",mime:"model/stl"};if(this.checkString("AC")){let a=new r.StringType(4,"latin1").get(this.buffer,2);if(a.match("^d*")&&a>=1e3&&a<=1050)return{ext:"dwg",mime:"image/vnd.dwg"}}if(this.checkString("070707"))return{ext:"cpio",mime:"application/x-cpio"};if(this.checkString("BLENDER"))return{ext:"blend",mime:"application/x-blender"};if(this.checkString("!<arch>"))return(await a.ignore(8),"debian-binary"===await a.readToken(new r.StringType(13,"ascii")))?{ext:"deb",mime:"application/x-deb"}:{ext:"ar",mime:"application/x-unix-archive"};if(this.checkString("WEBVTT")&&["\n","\r"," "," ","\0"].some(a=>this.checkString(a,{offset:6})))return{ext:"vtt",mime:"text/vtt"};if(this.check([137,80,78,71,13,10,26,10])){let b={ext:"png",mime:"image/png"},c={ext:"apng",mime:"image/apng"};async function e(){return{length:await a.readToken(r.INT32_BE),type:await a.readToken(new r.StringType(4,"latin1"))}}await a.ignore(8);let d=U(a),f=a.position,g=0,h=!1;do{if(++g>512||V(a,f,0x1000000))break;let i=a.position,j=await e();if(j.length<0)return;if("IHDR"===j.type){if(13!==j.length)return;h=!0}switch(j.type){case"IDAT":return b;case"acTL":return c;default:if(!h&&"CgBI"!==j.type)return;if(d&&j.length>1048576)return h&&(32&j.type.codePointAt(0))!=0?b:void 0;try{await M(a,j.length+4,{maximumLength:d?1048580:a.fileInfo.size,reason:"PNG chunk payload"})}catch(a){if(!d&&(a instanceof K||a instanceof s.EndOfStreamError))return b;throw a}}if(a.position<=i)break}while(a.position+8<a.fileInfo.size)return b}if(this.check([65,82,82,79,87,49,0,0]))return{ext:"arrow",mime:"application/vnd.apache.arrow.file"};if(this.check([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};if(this.check([102,114,101,101],{offset:4})||this.check([109,100,97,116],{offset:4})||this.check([109,111,111,118],{offset:4})||this.check([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(this.check([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(this.checkString("gimp xcf "))return{ext:"xcf",mime:"image/x-xcf"};if(this.checkString("ftyp",{offset:4})&&(96&this.buffer[8])!=0){let a=new r.StringType(4,"latin1").get(this.buffer,8).replace("\0"," ").trim();switch(a){case"avif":case"avis":return{ext:"avif",mime:"image/avif"};case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt":return{ext:"mov",mime:"video/quicktime"};case"M4V":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P":return{ext:"m4p",mime:"video/mp4"};case"M4B":return{ext:"m4b",mime:"audio/mp4"};case"M4A":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V":return{ext:"f4v",mime:"video/mp4"};case"F4P":return{ext:"f4p",mime:"video/mp4"};case"F4A":return{ext:"f4a",mime:"audio/mp4"};case"F4B":return{ext:"f4b",mime:"audio/mp4"};case"crx":return{ext:"cr3",mime:"image/x-canon-cr3"};default:if(a.startsWith("3g")){if(a.startsWith("3g2"))return{ext:"3g2",mime:"video/3gpp2"};return{ext:"3gp",mime:"video/3gpp"}}return{ext:"mp4",mime:"video/mp4"}}}if(this.checkString("REGEDIT4\r\n"))return{ext:"reg",mime:"application/x-ms-regedit"};if(this.check([82,73,70,70])){if(this.checkString("WEBP",{offset:8}))return{ext:"webp",mime:"image/webp"};if(this.check([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(this.check([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/wav"};if(this.check([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(this.check([73,73,85,0,24,0,0,0,136,231,116,216]))return{ext:"rw2",mime:"image/x-panasonic-rw2"};if(this.check([48,38,178,117,142,102,207,17,166,217])){let b=!1;try{async function f(){let b=new Uint8Array(16);return await N(a,b,void 0,{maximumLength:b.length,reason:"ASF header GUID"}),{id:b,size:Number(await a.readToken(r.UINT64_LE))}}await M(a,30,{maximumLength:30,reason:"ASF header prelude"});let c=U(a),d=a.position,e=0;for(;a.position+24<a.fileInfo.size&&!(++e>512||V(a,d,0x1000000));){let d=a.position,e=await f(),g=e.size-24;if(!Number.isFinite(g)||g<0){b=!0;break}if(T(e.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){let b=new Uint8Array(16);if(g-=await N(a,b,void 0,{maximumLength:b.length,reason:"ASF stream type GUID"}),T(b,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"audio/x-ms-asf"};if(T(b,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"video/x-ms-asf"};break}if(c&&g>1048576||(await M(a,g,{maximumLength:c?1048576:a.fileInfo.size,reason:"ASF header payload"}),a.position<=d)){b=!0;break}}}catch(c){if(c instanceof s.EndOfStreamError||c instanceof K)U(a)&&(b=!0);else throw c}if(b)return;return{ext:"asf",mime:"application/vnd.ms-asf"}}if(this.check([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if((this.check([126,16,4])||this.check([126,24,4]))&&this.check([48,77,73,69],{offset:4}))return{ext:"mie",mime:"application/x-mie"};if(this.check([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:"shp",mime:"application/x-esri-shape"};if(this.check([255,79,255,81]))return{ext:"j2c",mime:"image/j2c"};if(this.check([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await a.ignore(20),await a.readToken(new r.StringType(4,"ascii"))){case"jp2 ":return{ext:"jp2",mime:"image/jp2"};case"jpx ":return{ext:"jpx",mime:"image/jpx"};case"jpm ":return{ext:"jpm",mime:"image/jpm"};case"mjp2":return{ext:"mj2",mime:"image/mj2"};default:return}if(this.check([255,10])||this.check([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:"jxl",mime:"image/jxl"};if(this.check([254,255]))return this.checkString("<?xml ",{offset:2,encoding:"utf-16be"})?{ext:"xml",mime:"application/xml"}:void 0;if(this.check([208,207,17,224,161,177,26,225]))return{ext:"cfb",mime:"application/x-cfb"};if(await a.peekBuffer(this.buffer,{length:Math.min(256,a.fileInfo.size),mayBeLess:!0}),this.check([97,99,115,112],{offset:36}))return{ext:"icc",mime:"application/vnd.iccprofile"};if(this.checkString("**ACE",{offset:7})&&this.checkString("**",{offset:12}))return{ext:"ace",mime:"application/x-ace-compressed"};if(this.checkString("BEGIN:")){if(this.checkString("VCARD",{offset:6}))return{ext:"vcf",mime:"text/vcard"};if(this.checkString("VCALENDAR",{offset:6}))return{ext:"ics",mime:"text/calendar"}}if(this.checkString("FUJIFILMCCD-RAW"))return{ext:"raf",mime:"image/x-fujifilm-raf"};if(this.checkString("Extended Module:"))return{ext:"xm",mime:"audio/x-xm"};if(this.checkString("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(this.check([4,0,0,0])&&this.buffer.length>=16){let a=new DataView(this.buffer.buffer).getUint32(12,!0);if(a>12&&this.buffer.length>=a+16)try{let b=new TextDecoder().decode(this.buffer.subarray(16,a+16));if(JSON.parse(b).files)return{ext:"asar",mime:"application/x-asar"}}catch{}}if(this.check([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(this.checkString("SCRM",{offset:44}))return{ext:"s3m",mime:"audio/x-s3m"};if(this.check([71])&&this.check([71],{offset:188})||this.check([71],{offset:4})&&this.check([71],{offset:196}))return{ext:"mts",mime:"video/mp2t"};if(this.check([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(this.check([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(this.check([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(this.check([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(this.checkString("Kaydara FBX Binary \0"))return{ext:"fbx",mime:"application/x.autodesk.fbx"};if(this.check([76,80],{offset:34})&&(this.check([0,0,1],{offset:8})||this.check([1,0,2],{offset:8})||this.check([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(this.check([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:"indd",mime:"application/x-indesign"};if(this.check([255,255,0,0,7,0,0,0,4,0,0,0,1,0,1,0])||this.check([0,0,255,255,0,0,0,7,0,0,0,4,0,1,0,1]))return{ext:"jmp",mime:"application/x-jmp-data"};if(await a.peekBuffer(this.buffer,{length:Math.min(512,a.fileInfo.size),mayBeLess:!0}),this.checkString("ustar",{offset:257})&&(this.checkString("\0",{offset:262})||this.checkString(" ",{offset:262}))||this.check([0,0,0,0,0,0],{offset:257})&&function(a,b=0){let c=Number.parseInt(new r.StringType(6).get(a,148).replace(/\0.*$/,"").trim(),8);if(Number.isNaN(c))return!1;let d=256;for(let c=b;c<b+148;c++)d+=a[c];for(let c=b+156;c<b+512;c++)d+=a[c];return c===d}(this.buffer))return{ext:"tar",mime:"application/x-tar"};if(this.check([255,254])){let a="utf-16le";return this.checkString("<?xml ",{offset:2,encoding:a})?{ext:"xml",mime:"application/xml"}:this.check([255,14],{offset:2})&&this.checkString("SketchUp Model",{offset:4,encoding:a})?{ext:"skp",mime:"application/vnd.sketchup.skp"}:this.checkString("Windows Registry Editor Version 5.00\r\n",{offset:2,encoding:a})?{ext:"reg",mime:"application/x-ms-regedit"}:void 0}if(this.checkString("-----BEGIN PGP MESSAGE-----"))return{ext:"pgp",mime:"application/pgp-encrypted"}};detectImprecise=async a=>{var b;this.buffer=new Uint8Array(4100);let c=Number.isFinite(b=a.fileInfo.size)?Math.max(0,b):Number.MAX_SAFE_INTEGER;if(await a.peekBuffer(this.buffer,{length:Math.min(8,c),mayBeLess:!0}),this.check([0,0,1,186])||this.check([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(this.check([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(this.check([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(this.check([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(await a.peekBuffer(this.buffer,{length:Math.min(2+this.options.mpegOffsetTolerance,c),mayBeLess:!0}),this.buffer.length>=2+this.options.mpegOffsetTolerance)for(let a=0;a<=this.options.mpegOffsetTolerance;++a){let b=this.scanMpeg(a);if(b)return b}};async readTiffTag(a){let b=await this.tokenizer.readToken(a?r.UINT16_BE:r.UINT16_LE);switch(await this.tokenizer.ignore(10),b){case 50341:return{ext:"arw",mime:"image/x-sony-arw"};case 50706:return{ext:"dng",mime:"image/x-adobe-dng"}}}async readTiffIFD(a){let b=await this.tokenizer.readToken(a?r.UINT16_BE:r.UINT16_LE);if(!(b>512)&&(!U(this.tokenizer)||!(2+12*b>0x1000000)))for(let c=0;c<b;++c){let b=await this.readTiffTag(a);if(b)return b}}async readTiffHeader(a){let b={ext:"tif",mime:"image/tiff"},c=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,2),d=(a?r.UINT32_BE:r.UINT32_LE).get(this.buffer,4);if(42===c){let c;if(d>=6){if(this.checkString("CR",{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(d>=8){let b=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,8),c=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,10);if(28===b&&254===c||31===b&&11===c)return{ext:"nef",mime:"image/x-nikon-nef"}}}if(U(this.tokenizer)&&d>1048576)return b;let e=U(this.tokenizer)?0x1000000:this.tokenizer.fileInfo.size;try{await M(this.tokenizer,d,{maximumLength:e,reason:"TIFF IFD offset"})}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}try{c=await this.readTiffIFD(a)}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}return c??b}if(43===c)return b}scanMpeg(a){if(this.check([255,224],{offset:a,mask:[255,224]})){if(this.check([16],{offset:a+1,mask:[22]}))return this.check([8],{offset:a+1,mask:[8]}),{ext:"aac",mime:"audio/aac"};if(this.check([2],{offset:a+1,mask:[6]}))return{ext:"mp3",mime:"audio/mpeg"};if(this.check([4],{offset:a+1,mask:[6]}))return{ext:"mp2",mime:"audio/mpeg"};if(this.check([6],{offset:a+1,mask:[6]}))return{ext:"mp1",mime:"audio/mpeg"}}}}var Z=a.i(91465),$=a.i(96151),_=a.i(44753);let aa={multiple:!1},ab={year:aa,track:aa,disk:aa,title:aa,artist:aa,artists:{multiple:!0,unique:!0},albumartist:aa,albumartists:{multiple:!0,unique:!0},album:aa,date:aa,originaldate:aa,originalyear:aa,releasedate:aa,comment:{multiple:!0,unique:!1},genre:{multiple:!0,unique:!0},picture:{multiple:!0,unique:!0},composer:{multiple:!0,unique:!0},lyrics:{multiple:!0,unique:!1},albumsort:{multiple:!1,unique:!0},titlesort:{multiple:!1,unique:!0},work:{multiple:!1,unique:!0},artistsort:{multiple:!1,unique:!0},albumartistsort:{multiple:!1,unique:!0},composersort:{multiple:!1,unique:!0},lyricist:{multiple:!0,unique:!0},writer:{multiple:!0,unique:!0},conductor:{multiple:!0,unique:!0},remixer:{multiple:!0,unique:!0},arranger:{multiple:!0,unique:!0},engineer:{multiple:!0,unique:!0},producer:{multiple:!0,unique:!0},technician:{multiple:!0,unique:!0},djmixer:{multiple:!0,unique:!0},mixer:{multiple:!0,unique:!0},label:{multiple:!0,unique:!0},grouping:aa,subtitle:{multiple:!0},discsubtitle:aa,totaltracks:aa,totaldiscs:aa,compilation:aa,rating:{multiple:!0},bpm:aa,mood:aa,media:aa,catalognumber:{multiple:!0,unique:!0},tvShow:aa,tvShowSort:aa,tvSeason:aa,tvEpisode:aa,tvEpisodeId:aa,tvNetwork:aa,podcast:aa,podcasturl:aa,releasestatus:aa,releasetype:{multiple:!0},releasecountry:aa,script:aa,language:aa,copyright:aa,license:aa,encodedby:aa,encodersettings:aa,gapless:aa,barcode:aa,isrc:{multiple:!0},asin:aa,musicbrainz_recordingid:aa,musicbrainz_trackid:aa,musicbrainz_albumid:aa,musicbrainz_artistid:{multiple:!0},musicbrainz_albumartistid:{multiple:!0},musicbrainz_releasegroupid:aa,musicbrainz_workid:aa,musicbrainz_trmid:aa,musicbrainz_discid:aa,acoustid_id:aa,acoustid_fingerprint:aa,musicip_puid:aa,musicip_fingerprint:aa,website:aa,"performer:instrument":{multiple:!0,unique:!0},averageLevel:aa,peakLevel:aa,notes:{multiple:!0,unique:!1},key:aa,originalalbum:aa,originalartist:aa,discogs_artist_id:{multiple:!0,unique:!0},discogs_release_id:aa,discogs_label_id:aa,discogs_master_release_id:aa,discogs_votes:aa,discogs_rating:aa,replaygain_track_peak:aa,replaygain_track_gain:aa,replaygain_album_peak:aa,replaygain_album_gain:aa,replaygain_track_minmax:aa,replaygain_album_minmax:aa,replaygain_undo:aa,description:{multiple:!0},longDescription:aa,category:{multiple:!0},hdVideo:aa,keywords:{multiple:!0},movement:aa,movementIndex:aa,movementTotal:aa,podcastId:aa,showMovement:aa,stik:aa,playCounter:aa};class ac{static toIntOrNull(a){let b=Number.parseInt(a,10);return Number.isNaN(b)?null:b}static normalizeTrack(a){let b=a.toString().split("/");return{no:Number.parseInt(b[0],10)||null,of:Number.parseInt(b[1],10)||null}}constructor(a,b){this.tagTypes=a,this.tagMap=b}mapGenericTag(a,b){a={id:a.id,value:a.value},this.postMap(a,b);let c=this.getCommonName(a.id);return c?{id:c,value:a.value}:null}getCommonName(a){return this.tagMap[a]}postMap(a,b){}}ac.maxRatingScore=1;let ad={title:"title",artist:"artist",album:"album",year:"year",comment:"comment",track:"track",genre:"genre"};class ae extends ac{constructor(){super(["ID3v1"],ad)}}class af extends ac{constructor(a,b){const c={};for(const a of Object.keys(b))c[a.toUpperCase()]=b[a];super(a,c)}getCommonName(a){return this.tagMap[a.toUpperCase()]}}var ag=a.i(82670);let ah={TIT2:"title",TPE1:"artist","TXXX:Artists":"artists",TPE2:"albumartist",TALB:"album",TDRV:"date",TORY:"originalyear",TPOS:"disk",TCON:"genre",APIC:"picture",TCOM:"composer",USLT:"lyrics",TSOA:"albumsort",TSOT:"titlesort",TOAL:"originalalbum",TSOP:"artistsort",TSO2:"albumartistsort",TSOC:"composersort",TEXT:"lyricist","TXXX:Writer":"writer",TPE3:"conductor",TPE4:"remixer","IPLS:arranger":"arranger","IPLS:engineer":"engineer","IPLS:producer":"producer","IPLS:DJ-mix":"djmixer","IPLS:mix":"mixer",TPUB:"label",TIT1:"grouping",TIT3:"subtitle",TRCK:"track",TCMP:"compilation",POPM:"rating",TBPM:"bpm",TMED:"media","TXXX:CATALOGNUMBER":"catalognumber","TXXX:MusicBrainz Album Status":"releasestatus","TXXX:MusicBrainz Album Type":"releasetype","TXXX:MusicBrainz Album Release Country":"releasecountry","TXXX:RELEASECOUNTRY":"releasecountry","TXXX:SCRIPT":"script",TLAN:"language",TCOP:"copyright",WCOP:"license",TENC:"encodedby",TSSE:"encodersettings","TXXX:BARCODE":"barcode","TXXX:ISRC":"isrc",TSRC:"isrc","TXXX:ASIN":"asin","TXXX:originalyear":"originalyear","UFID:http://musicbrainz.org":"musicbrainz_recordingid","TXXX:MusicBrainz Release Track Id":"musicbrainz_trackid","TXXX:MusicBrainz Album Id":"musicbrainz_albumid","TXXX:MusicBrainz Artist Id":"musicbrainz_artistid","TXXX:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","TXXX:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","TXXX:MusicBrainz Work Id":"musicbrainz_workid","TXXX:MusicBrainz TRM Id":"musicbrainz_trmid","TXXX:MusicBrainz Disc Id":"musicbrainz_discid","TXXX:ACOUSTID_ID":"acoustid_id","TXXX:Acoustid Id":"acoustid_id","TXXX:Acoustid Fingerprint":"acoustid_fingerprint","TXXX:MusicIP PUID":"musicip_puid","TXXX:MusicMagic Fingerprint":"musicip_fingerprint",WOAR:"website",TDRC:"date",TYER:"year",TDOR:"originaldate","TIPL:arranger":"arranger","TIPL:engineer":"engineer","TIPL:producer":"producer","TIPL:DJ-mix":"djmixer","TIPL:mix":"mixer",TMOO:"mood",SYLT:"lyrics",TSST:"discsubtitle",TKEY:"key",COMM:"comment",TOPE:"originalartist","PRIV:AverageLevel":"averageLevel","PRIV:PeakLevel":"peakLevel","TXXX:DISCOGS_ARTIST_ID":"discogs_artist_id","TXXX:DISCOGS_ARTISTS":"artists","TXXX:DISCOGS_ARTIST_NAME":"artists","TXXX:DISCOGS_ALBUM_ARTISTS":"albumartist","TXXX:DISCOGS_CATALOG":"catalognumber","TXXX:DISCOGS_COUNTRY":"releasecountry","TXXX:DISCOGS_DATE":"originaldate","TXXX:DISCOGS_LABEL":"label","TXXX:DISCOGS_LABEL_ID":"discogs_label_id","TXXX:DISCOGS_MASTER_RELEASE_ID":"discogs_master_release_id","TXXX:DISCOGS_RATING":"discogs_rating","TXXX:DISCOGS_RELEASED":"date","TXXX:DISCOGS_RELEASE_ID":"discogs_release_id","TXXX:DISCOGS_VOTES":"discogs_votes","TXXX:CATALOGID":"catalognumber","TXXX:STYLE":"genre","TXXX:REPLAYGAIN_TRACK_PEAK":"replaygain_track_peak","TXXX:REPLAYGAIN_TRACK_GAIN":"replaygain_track_gain","TXXX:REPLAYGAIN_ALBUM_PEAK":"replaygain_album_peak","TXXX:REPLAYGAIN_ALBUM_GAIN":"replaygain_album_gain","TXXX:MP3GAIN_MINMAX":"replaygain_track_minmax","TXXX:MP3GAIN_ALBUM_MINMAX":"replaygain_album_minmax","TXXX:MP3GAIN_UNDO":"replaygain_undo",MVNM:"movement",MVIN:"movementIndex",PCST:"podcast",TCAT:"category",TDES:"description",TDRL:"releasedate",TGID:"podcastId",TKWD:"keywords",WFED:"podcasturl",GRP1:"grouping",PCNT:"playCounter"};class ai extends af{static toRating(a){return{source:a.email,rating:a.rating>0?(a.rating-1)/254*ac.maxRatingScore:void 0}}constructor(){super(["ID3v2.3","ID3v2.4"],ah)}postMap(a,b){switch(a.id){case"UFID":{let b=a.value;"http://musicbrainz.org"===b.owner_identifier&&(a.id+=`:${b.owner_identifier}`,a.value=(0,ag.decodeString)(b.identifier,"latin1"))}break;case"PRIV":{let c=a.value;switch(c.owner_identifier){case"AverageLevel":case"PeakValue":a.id+=`:${c.owner_identifier}`,a.value=4===c.data.length?r.UINT32_LE.get(c.data,0):null,null===a.value&&b.addWarning("Failed to parse PRIV:PeakValue");break;default:b.addWarning(`Unknown PRIV owner-identifier: ${c.data}`)}}break;case"POPM":a.value=ai.toRating(a.value)}}}let aj={Title:"title",Author:"artist","WM/AlbumArtist":"albumartist","WM/AlbumTitle":"album","WM/Year":"date","WM/OriginalReleaseTime":"originaldate","WM/OriginalReleaseYear":"originalyear",Description:"comment","WM/TrackNumber":"track","WM/PartOfSet":"disk","WM/Genre":"genre","WM/Composer":"composer","WM/Lyrics":"lyrics","WM/AlbumSortOrder":"albumsort","WM/TitleSortOrder":"titlesort","WM/ArtistSortOrder":"artistsort","WM/AlbumArtistSortOrder":"albumartistsort","WM/ComposerSortOrder":"composersort","WM/Writer":"lyricist","WM/Conductor":"conductor","WM/ModifiedBy":"remixer","WM/Engineer":"engineer","WM/Producer":"producer","WM/DJMixer":"djmixer","WM/Mixer":"mixer","WM/Publisher":"label","WM/ContentGroupDescription":"grouping","WM/SubTitle":"subtitle","WM/SetSubTitle":"discsubtitle","WM/IsCompilation":"compilation","WM/SharedUserRating":"rating","WM/BeatsPerMinute":"bpm","WM/Mood":"mood","WM/Media":"media","WM/CatalogNo":"catalognumber","MusicBrainz/Album Status":"releasestatus","MusicBrainz/Album Type":"releasetype","MusicBrainz/Album Release Country":"releasecountry","WM/Script":"script","WM/Language":"language",Copyright:"copyright",LICENSE:"license","WM/EncodedBy":"encodedby","WM/EncodingSettings":"encodersettings","WM/Barcode":"barcode","WM/ISRC":"isrc","MusicBrainz/Track Id":"musicbrainz_recordingid","MusicBrainz/Release Track Id":"musicbrainz_trackid","MusicBrainz/Album Id":"musicbrainz_albumid","MusicBrainz/Artist Id":"musicbrainz_artistid","MusicBrainz/Album Artist Id":"musicbrainz_albumartistid","MusicBrainz/Release Group Id":"musicbrainz_releasegroupid","MusicBrainz/Work Id":"musicbrainz_workid","MusicBrainz/TRM Id":"musicbrainz_trmid","MusicBrainz/Disc Id":"musicbrainz_discid","Acoustid/Id":"acoustid_id","Acoustid/Fingerprint":"acoustid_fingerprint","MusicIP/PUID":"musicip_puid","WM/ARTISTS":"artists","WM/InitialKey":"key",ASIN:"asin","WM/Work":"work","WM/AuthorURL":"website","WM/Picture":"picture"};class ak extends ac{static toRating(a){return{rating:Number.parseFloat(a+1)/5}}constructor(){super(["asf"],aj)}postMap(a){if("WM/SharedUserRating"===a.id){let b=a.id.split(":");a.value=ak.toRating(a.value),a.id=b[0]}}}let al={TT2:"title",TP1:"artist",TP2:"albumartist",TAL:"album",TYE:"year",COM:"comment",TRK:"track",TPA:"disk",TCO:"genre",PIC:"picture",TCM:"composer",TOR:"originaldate",TOT:"originalalbum",TXT:"lyricist",TP3:"conductor",TPB:"label",TT1:"grouping",TT3:"subtitle",TLA:"language",TCR:"copyright",WCP:"license",TEN:"encodedby",TSS:"encodersettings",WAR:"website",PCS:"podcast",TCP:"compilation",TDR:"date",TS2:"albumartistsort",TSA:"albumsort",TSC:"composersort",TSP:"artistsort",TST:"titlesort",WFD:"podcasturl",TBP:"bpm",GP1:"grouping"};class am extends af{constructor(){super(["ID3v2.2"],al)}}let an={Title:"title",Artist:"artist",Artists:"artists","Album Artist":"albumartist",Album:"album",Year:"date",Originalyear:"originalyear",Originaldate:"originaldate",Releasedate:"releasedate",Comment:"comment",Track:"track",Disc:"disk",DISCNUMBER:"disk",Genre:"genre","Cover Art (Front)":"picture","Cover Art (Back)":"picture",Composer:"composer",Lyrics:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",Lyricist:"lyricist",Writer:"writer",Conductor:"conductor",MixArtist:"remixer",Arranger:"arranger",Engineer:"engineer",Producer:"producer",DJMixer:"djmixer",Mixer:"mixer",Label:"label",Grouping:"grouping",Subtitle:"subtitle",DiscSubtitle:"discsubtitle",Compilation:"compilation",BPM:"bpm",Mood:"mood",Media:"media",CatalogNumber:"catalognumber",MUSICBRAINZ_ALBUMSTATUS:"releasestatus",MUSICBRAINZ_ALBUMTYPE:"releasetype",RELEASECOUNTRY:"releasecountry",Script:"script",Language:"language",Copyright:"copyright",LICENSE:"license",EncodedBy:"encodedby",EncoderSettings:"encodersettings",Barcode:"barcode",ISRC:"isrc",ASIN:"asin",musicbrainz_trackid:"musicbrainz_recordingid",musicbrainz_releasetrackid:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",Acoustid_Id:"acoustid_id",ACOUSTID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",Weblink:"website",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",MP3GAIN_MINMAX:"replaygain_track_minmax",MP3GAIN_UNDO:"replaygain_undo"};class ao extends af{constructor(){super(["APEv2"],an)}}let ap={"©nam":"title","©ART":"artist",aART:"albumartist","----:com.apple.iTunes:Band":"albumartist","©alb":"album","©day":"date","©cmt":"comment","©com":"comment",trkn:"track",disk:"disk","©gen":"genre",covr:"picture","©wrt":"composer","©lyr":"lyrics",soal:"albumsort",sonm:"titlesort",soar:"artistsort",soaa:"albumartistsort",soco:"composersort","----:com.apple.iTunes:LYRICIST":"lyricist","----:com.apple.iTunes:CONDUCTOR":"conductor","----:com.apple.iTunes:REMIXER":"remixer","----:com.apple.iTunes:ENGINEER":"engineer","----:com.apple.iTunes:PRODUCER":"producer","----:com.apple.iTunes:DJMIXER":"djmixer","----:com.apple.iTunes:MIXER":"mixer","----:com.apple.iTunes:LABEL":"label","©grp":"grouping","----:com.apple.iTunes:SUBTITLE":"subtitle","----:com.apple.iTunes:DISCSUBTITLE":"discsubtitle",cpil:"compilation",tmpo:"bpm","----:com.apple.iTunes:MOOD":"mood","----:com.apple.iTunes:MEDIA":"media","----:com.apple.iTunes:CATALOGNUMBER":"catalognumber",tvsh:"tvShow",tvsn:"tvSeason",tves:"tvEpisode",sosn:"tvShowSort",tven:"tvEpisodeId",tvnn:"tvNetwork",pcst:"podcast",purl:"podcasturl","----:com.apple.iTunes:MusicBrainz Album Status":"releasestatus","----:com.apple.iTunes:MusicBrainz Album Type":"releasetype","----:com.apple.iTunes:MusicBrainz Album Release Country":"releasecountry","----:com.apple.iTunes:SCRIPT":"script","----:com.apple.iTunes:LANGUAGE":"language",cprt:"copyright","©cpy":"copyright","----:com.apple.iTunes:LICENSE":"license","©too":"encodedby",pgap:"gapless","----:com.apple.iTunes:BARCODE":"barcode","----:com.apple.iTunes:ISRC":"isrc","----:com.apple.iTunes:ASIN":"asin","----:com.apple.iTunes:NOTES":"comment","----:com.apple.iTunes:MusicBrainz Track Id":"musicbrainz_recordingid","----:com.apple.iTunes:MusicBrainz Release Track Id":"musicbrainz_trackid","----:com.apple.iTunes:MusicBrainz Album Id":"musicbrainz_albumid","----:com.apple.iTunes:MusicBrainz Artist Id":"musicbrainz_artistid","----:com.apple.iTunes:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","----:com.apple.iTunes:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","----:com.apple.iTunes:MusicBrainz Work Id":"musicbrainz_workid","----:com.apple.iTunes:MusicBrainz TRM Id":"musicbrainz_trmid","----:com.apple.iTunes:MusicBrainz Disc Id":"musicbrainz_discid","----:com.apple.iTunes:Acoustid Id":"acoustid_id","----:com.apple.iTunes:Acoustid Fingerprint":"acoustid_fingerprint","----:com.apple.iTunes:MusicIP PUID":"musicip_puid","----:com.apple.iTunes:fingerprint":"musicip_fingerprint","----:com.apple.iTunes:replaygain_track_gain":"replaygain_track_gain","----:com.apple.iTunes:replaygain_track_peak":"replaygain_track_peak","----:com.apple.iTunes:replaygain_album_gain":"replaygain_album_gain","----:com.apple.iTunes:replaygain_album_peak":"replaygain_album_peak","----:com.apple.iTunes:replaygain_track_minmax":"replaygain_track_minmax","----:com.apple.iTunes:replaygain_album_minmax":"replaygain_album_minmax","----:com.apple.iTunes:replaygain_undo":"replaygain_undo",gnre:"genre","----:com.apple.iTunes:ALBUMARTISTSORT":"albumartistsort","----:com.apple.iTunes:ARTISTS":"artists","----:com.apple.iTunes:ORIGINALDATE":"originaldate","----:com.apple.iTunes:ORIGINALYEAR":"originalyear","----:com.apple.iTunes:RELEASEDATE":"releasedate",desc:"description",ldes:"longDescription","©mvn":"movement","©mvi":"movementIndex","©mvc":"movementTotal","©wrk":"work",catg:"category",egid:"podcastId",hdvd:"hdVideo",keyw:"keywords",shwm:"showMovement",stik:"stik",rate:"rating"};class aq extends af{constructor(){super(["iTunes"],ap)}postMap(a,b){"rate"===a.id&&(a.value={source:void 0,rating:Number.parseFloat(a.value)/100})}}let ar={TITLE:"title",ARTIST:"artist",ARTISTS:"artists",ALBUMARTIST:"albumartist","ALBUM ARTIST":"albumartist",ALBUM:"album",DATE:"date",ORIGINALDATE:"originaldate",ORIGINALYEAR:"originalyear",RELEASEDATE:"releasedate",COMMENT:"comment",TRACKNUMBER:"track",DISCNUMBER:"disk",GENRE:"genre",METADATA_BLOCK_PICTURE:"picture",COMPOSER:"composer",LYRICS:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",LYRICIST:"lyricist",WRITER:"writer",CONDUCTOR:"conductor",REMIXER:"remixer",ARRANGER:"arranger",ENGINEER:"engineer",PRODUCER:"producer",DJMIXER:"djmixer",MIXER:"mixer",LABEL:"label",GROUPING:"grouping",SUBTITLE:"subtitle",DISCSUBTITLE:"discsubtitle",TRACKTOTAL:"totaltracks",DISCTOTAL:"totaldiscs",COMPILATION:"compilation",RATING:"rating",BPM:"bpm",KEY:"key",MOOD:"mood",MEDIA:"media",CATALOGNUMBER:"catalognumber",RELEASESTATUS:"releasestatus",RELEASETYPE:"releasetype",RELEASECOUNTRY:"releasecountry",SCRIPT:"script",LANGUAGE:"language",COPYRIGHT:"copyright",LICENSE:"license",ENCODEDBY:"encodedby",ENCODERSETTINGS:"encodersettings",BARCODE:"barcode",ISRC:"isrc",ASIN:"asin",MUSICBRAINZ_TRACKID:"musicbrainz_recordingid",MUSICBRAINZ_RELEASETRACKID:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",ACOUSTID_ID:"acoustid_id",ACOUSTID_ID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",WEBSITE:"website",NOTES:"notes",TOTALTRACKS:"totaltracks",TOTALDISCS:"totaldiscs",DISCOGS_ARTIST_ID:"discogs_artist_id",DISCOGS_ARTISTS:"artists",DISCOGS_ARTIST_NAME:"artists",DISCOGS_ALBUM_ARTISTS:"albumartist",DISCOGS_CATALOG:"catalognumber",DISCOGS_COUNTRY:"releasecountry",DISCOGS_DATE:"originaldate",DISCOGS_LABEL:"label",DISCOGS_LABEL_ID:"discogs_label_id",DISCOGS_MASTER_RELEASE_ID:"discogs_master_release_id",DISCOGS_RATING:"discogs_rating",DISCOGS_RELEASED:"date",DISCOGS_RELEASE_ID:"discogs_release_id",DISCOGS_VOTES:"discogs_votes",CATALOGID:"catalognumber",STYLE:"genre",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",REPLAYGAIN_ALBUM_GAIN:"replaygain_album_gain",REPLAYGAIN_ALBUM_PEAK:"replaygain_album_peak",REPLAYGAIN_MINMAX:"replaygain_track_minmax",REPLAYGAIN_ALBUM_MINMAX:"replaygain_album_minmax",REPLAYGAIN_UNDO:"replaygain_undo"};class as extends ac{static toRating(a,b,c){return{source:a?a.toLowerCase():void 0,rating:Number.parseFloat(b)/c*ac.maxRatingScore}}constructor(){super(["vorbis"],ar)}postMap(a){if("RATING"===a.id)a.value=as.toRating(void 0,a.value,100);else if(0===a.id.indexOf("RATING:")){let b=a.id.split(":");a.value=as.toRating(b[1],a.value,1),a.id=b[0]}}}let at={IART:"artist",ICRD:"date",INAM:"title",TITL:"title",IPRD:"album",ITRK:"track",IPRT:"track",COMM:"comment",ICMT:"comment",ICNT:"releasecountry",GNRE:"genre",IWRI:"writer",RATE:"rating",YEAR:"year",ISFT:"encodedby",CODE:"encodedby",TURL:"website",IGNR:"genre",IENG:"engineer",ITCH:"technician",IMED:"media",IRPD:"album"};class au extends ac{constructor(){super(["exif"],at)}}let av={"segment:title":"title","album:ARTIST":"albumartist","album:ARTISTSORT":"albumartistsort","album:TITLE":"album","album:DATE_RECORDED":"originaldate","album:DATE_RELEASED":"releasedate","album:PART_NUMBER":"disk","album:TOTAL_PARTS":"totaltracks","track:ARTIST":"artist","track:ARTISTSORT":"artistsort","track:TITLE":"title","track:PART_NUMBER":"track","track:MUSICBRAINZ_TRACKID":"musicbrainz_recordingid","track:MUSICBRAINZ_ALBUMID":"musicbrainz_albumid","track:MUSICBRAINZ_ARTISTID":"musicbrainz_artistid","track:PUBLISHER":"label","track:GENRE":"genre","track:ENCODER":"encodedby","track:ENCODER_OPTIONS":"encodersettings","edition:TOTAL_PARTS":"totaldiscs",picture:"picture"};class aw extends af{constructor(){super(["matroska"],av)}}let ax={NAME:"title",AUTH:"artist","(c) ":"copyright",ANNO:"comment"};class ay extends ac{constructor(){super(["AIFF"],ax)}}var az=a.i(74777);class aA{constructor(){this.tagMappers={},[new ae,new am,new ai,new aq,new aq,new as,new ao,new ak,new au,new aw,new ay].forEach(a=>{this.registerTagMapper(a)})}mapTag(a,b,c){if(this.tagMappers[a])return this.tagMappers[a].mapGenericTag(b,c);throw new az.InternalParserError(`No generic tag mapper defined for tag-format: ${a}`)}registerTagMapper(a){for(let b of a.tagTypes)this.tagMappers[b]=a}}var aB=a.i(68231);let aC=/\[(\d{2}):(\d{2})\.(\d{2,3})]/,aD=(0,t.default)("music-metadata:collector"),aE=["matroska","APEv2","vorbis","ID3v2.4","ID3v2.3","ID3v2.2","exif","asf","iTunes","AIFF","ID3v1"];class aF{constructor(a){this.format={tagTypes:[],trackInfo:[]},this.native={},this.common={track:{no:null,of:null},disk:{no:null,of:null},movementIndex:{no:null,of:null}},this.quality={warnings:[]},this.commonOrigin={},this.originPriority={},this.tagMapper=new aA,this.opts=a;let b=1;for(const a of aE)this.originPriority[a]=b++;this.originPriority.artificial=500,this.originPriority.id3v1=600}hasAny(){return Object.keys(this.native).length>0}addStreamInfo(a){aD(`streamInfo: type=${a.type?_.TrackTypeValueToKeyMap[a.type]:"?"}, codec=${a.codecName}`),this.format.trackInfo.push(a)}setFormat(a,b){aD(`format: ${a} = ${b}`),this.format[a]=b,this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"format",id:a,value:b}})}setAudioOnly(){this.setFormat("hasAudio",!0),this.setFormat("hasVideo",!1)}async addTag(a,b,c){aD(`tag ${a}.${b} = ${c}`),this.native[a]||(this.format.tagTypes.push(a),this.native[a]=[]),this.native[a].push({id:b,value:c}),await this.toCommon(a,b,c)}addWarning(a){this.quality.warnings.push({message:a})}async postMap(a,b){switch(b.id){case"artist":return this.handleSingularArtistTag(a,b,"artist","artists");case"albumartist":return this.handleSingularArtistTag(a,b,"albumartist","albumartists");case"artists":return this.handlePluralArtistTag(a,b,"artist","artists");case"albumartists":return this.handlePluralArtistTag(a,b,"albumartist","albumartists");case"picture":return this.postFixPicture(b.value).then(c=>{null!==c&&(b.value=c,this.setGenericTag(a,b))});case"totaltracks":this.common.track.of=ac.toIntOrNull(b.value);return;case"totaldiscs":this.common.disk.of=ac.toIntOrNull(b.value);return;case"movementTotal":this.common.movementIndex.of=ac.toIntOrNull(b.value);return;case"track":case"disk":case"movementIndex":{let a=this.common[b.id].of;this.common[b.id]=ac.normalizeTrack(b.value),this.common[b.id].of=null!=a?a:this.common[b.id].of;return}case"bpm":case"year":case"originalyear":b.value=Number.parseInt(b.value,10);break;case"date":{let a=Number.parseInt(b.value.substr(0,4),10);Number.isNaN(a)||(this.common.year=a);break}case"discogs_label_id":case"discogs_release_id":case"discogs_master_release_id":case"discogs_artist_id":case"discogs_votes":b.value="string"==typeof b.value?Number.parseInt(b.value,10):b.value;break;case"replaygain_track_gain":case"replaygain_track_peak":case"replaygain_album_gain":case"replaygain_album_peak":b.value=(0,ag.toRatio)(b.value);break;case"replaygain_track_minmax":b.value=b.value.split(",").map(a=>Number.parseInt(a,10));break;case"replaygain_undo":{let a=b.value.split(",").map(a=>Number.parseInt(a,10));b.value={leftChannel:a[0],rightChannel:a[1]};break}case"gapless":case"compilation":case"podcast":case"showMovement":b.value="1"===b.value||1===b.value;break;case"isrc":{let a=this.common[b.id];if(a&&-1!==a.indexOf(b.value))return;break}case"comment":"string"==typeof b.value&&(b.value={text:b.value}),"iTunPGAP"===b.value.descriptor&&this.setGenericTag(a,{id:"gapless",value:"1"===b.value.text});break;case"lyrics":var c,d;"string"==typeof b.value&&(c=b.value,b.value=aC.test(c)?function(a){let b=a.split("\n"),c=[];for(let a of b){let b=a.match(aC);if(b){let d=(60*Number.parseInt(b[1],10)+Number.parseInt(b[2],10))*1e3+(3===b[3].length?Number.parseInt(b[3],10):10*Number.parseInt(b[3],10)),e=a.replace(aC,"").trim();c.push({timestamp:d,text:e})}}return{contentType:aB.LyricsContentType.lyrics,timeStampFormat:aB.TimestampFormat.milliseconds,text:c.map(a=>a.text).join("\n"),syncText:c}}(c):(d=c,{contentType:aB.LyricsContentType.lyrics,timeStampFormat:aB.TimestampFormat.notSynchronized,text:d.trim(),syncText:[]}))}null!==b.value&&this.setGenericTag(a,b)}toCommonMetadata(){return{format:this.format,native:this.native,quality:this.quality,common:this.common}}handleSingularArtistTag(a,b,c,d){if(this.commonOrigin[c]===this.originPriority[a])return this.postMap("artificial",{id:d,value:b.value});this.common[d]||this.setGenericTag("artificial",{id:d,value:b.value}),this.setGenericTag(a,b)}handlePluralArtistTag(a,b,c,d){if((!this.common[c]||this.commonOrigin[c]===this.originPriority.artificial)&&(!this.common[d]||-1===this.common[d].indexOf(b.value))){var e;let a=(e=(this.common[d]||[]).concat([b.value])).length>2?`${e.slice(0,e.length-1).join(", ")} & ${e[e.length-1]}`:e.join(" & ");this.setGenericTag("artificial",{id:c,value:a})}this.setGenericTag(a,b)}async postFixPicture(a){if(a.data&&a.data.length>0){if(!a.format){let b=await R(Uint8Array.from(a.data));if(!b)return null;a.format=b.mime}return a.format=a.format.toLocaleLowerCase(),"image/jpg"===a.format&&(a.format="image/jpeg"),a}return this.addWarning("Empty picture tag found"),null}async toCommon(a,b,c){let d=this.tagMapper.mapTag(a,{id:b,value:c},this);d&&await this.postMap(a,d)}setGenericTag(a,b){var c,d;aD(`common.${b.id} = ${b.value}`);let e=this.commonOrigin[b.id]||1e3,f=this.originPriority[a];if(ab[c=b.id]&&!ab[c].multiple)if(!(f<=e))return aD(`Ignore native tag (singleton): ${a}.${b.id} = ${b.value}`);else this.common[b.id]=b.value,this.commonOrigin[b.id]=f;else if(f===e)(!ab[d=b.id].multiple||ab[d].unique)&&-1!==this.common[b.id].indexOf(b.value)?aD(`Ignore duplicate value: ${a}.${b.id} = ${b.value}`):this.common[b.id].push(b.value);else{if(!(f<e))return aD(`Ignore native tag (list): ${a}.${b.id} = ${b.value}`);this.common[b.id]=[b.value],this.commonOrigin[b.id]=f}this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"common",id:b.id,value:b.value}})}}let aG={parserType:"mpeg",extensions:[".mp2",".mp3",".m2a",".aac","aacp"],mimeTypes:["audio/mpeg","audio/mp3","audio/aacs","audio/aacp"],load:async()=>(await a.A(46769)).MpegParser},aH={parserType:"apev2",extensions:[".ape"],mimeTypes:["audio/ape","audio/monkeys-audio"],load:async()=>(await a.A(92102)).APEv2Parser},aI={parserType:"asf",extensions:[".asf",".wma",".wmv"],mimeTypes:["audio/ms-wma","video/ms-wmv","audio/ms-asf","video/ms-asf","application/vnd.ms-asf"],load:async()=>(await a.A(1995)).AsfParser},aJ={parserType:"dsdiff",extensions:[".dff"],mimeTypes:["audio/dsf","audio/dsd"],load:async()=>(await a.A(89469)).DsdiffParser},aK={parserType:"aiff",extensions:[".aif","aiff","aifc"],mimeTypes:["audio/aiff","audio/aif","audio/aifc","application/aiff"],load:async()=>(await a.A(60519)).AIFFParser},aL={parserType:"dsf",extensions:[".dsf"],mimeTypes:["audio/dsf"],load:async()=>(await a.A(48352)).DsfParser},aM={parserType:"flac",extensions:[".flac"],mimeTypes:["audio/flac"],load:async()=>(await a.A(17808)).FlacParser},aN={parserType:"matroska",extensions:[".mka",".mkv",".mk3d",".mks","webm"],mimeTypes:["audio/matroska","video/matroska","audio/webm","video/webm"],load:async()=>(await a.A(71875)).MatroskaParser},aO={parserType:"mp4",extensions:[".mp4",".m4a",".m4b",".m4pa","m4v","m4r","3gp",".mov",".movie",".qt"],mimeTypes:["audio/mp4","audio/m4a","video/m4v","video/mp4","video/quicktime"],load:async()=>(await a.A(7219)).MP4Parser},aP={parserType:"musepack",extensions:[".mpc"],mimeTypes:["audio/musepack"],load:async()=>(await a.A(75093)).MusepackParser},aQ={parserType:"ogg",extensions:[".ogg",".ogv",".oga",".ogm",".ogx",".opus",".spx"],mimeTypes:["audio/ogg","audio/opus","audio/speex","video/ogg"],load:async()=>(await a.A(99889)).OggParser},aR={parserType:"wavpack",extensions:[".wv",".wvp"],mimeTypes:["audio/wavpack"],load:async()=>(await a.A(56564)).WavPackParser},aS={parserType:"riff",extensions:[".wav","wave",".bwf"],mimeTypes:["audio/vnd.wave","audio/wav","audio/wave"],load:async()=>(await a.A(14180)).WaveParser},aT=(0,t.default)("music-metadata:parser:factory");class aU{constructor(){this.parsers=[],[aM,aG,aH,aO,aN,aS,aQ,aI,aK,aR,aP,aL,aJ].forEach(a=>{this.registerParser(a)})}registerParser(a){this.parsers.push(a)}async parse(a,b,c){if(a.supportsRandomAccess()?(aT("tokenizer supports random-access, scanning for appending headers"),await a$(a,c)):aT("tokenizer does not support random-access, cannot scan for appending headers"),!b){let c=new Uint8Array(4100);if(a.fileInfo.mimeType&&(b=this.findLoaderForContentType(a.fileInfo.mimeType)),!b&&a.fileInfo.path&&(b=this.findLoaderForExtension(a.fileInfo.path)),!b){aT("Guess parser on content..."),await a.peekBuffer(c,{mayBeLess:!0});let d=await R(c,{mpegOffsetTolerance:10});if(!d||!d.mime)throw new az.CouldNotDetermineFileTypeError("Failed to determine audio format");if(aT(`Guessed file type is mime=${d.mime}, extension=${d.ext}`),!(b=this.findLoaderForContentType(d.mime)))throw new az.UnsupportedFileTypeError(`Guessed MIME-type not supported: ${d.mime}`)}}aT(`Loading ${b.parserType} parser...`);let d=new aF(c),e=new(await b.load())(d,a,c??{});return aT(`Parser ${b.parserType} loaded`),await e.parse(),d.format.trackInfo&&(void 0===d.format.hasAudio&&d.setFormat("hasAudio",!!d.format.trackInfo.find(a=>a.type===_.TrackType.audio)),void 0===d.format.hasVideo&&d.setFormat("hasVideo",!!d.format.trackInfo.find(a=>a.type===_.TrackType.video))),d.toCommonMetadata()}findLoaderForExtension(a){var b;let c;if(!a)return;let d=(-1===(c=(b=a).lastIndexOf("."))?"":b.substring(c)).toLocaleLowerCase()||a;return this.parsers.find(a=>-1!==a.extensions.indexOf(d))}findLoaderForContentType(a){let b;if(!a)return;try{let c,d;c=Z.default.parse(a),b={type:(d=(0,$.parse)(c.type)).type,subtype:d.subtype,suffix:d.suffix,parameters:c.parameters}}catch(b){aT(`Invalid HTTP Content-Type header value: ${a}`);return}let c=0===b.subtype.indexOf("x-")?b.subtype.substring(2):b.subtype;return this.parsers.find(a=>a.mimeTypes.find(a=>-1!==a.indexOf(`${b.type}/${c}`)))}getSupportedMimeTypes(){let a=new Set;return this.parsers.forEach(b=>{b.mimeTypes.forEach(b=>{a.add(b),a.add(b.replace("/","/x-"))})}),Array.from(a)}}var aV=a.i(81318),aW=a.i(49597),aX=a.i(73635);async function aY(a){let b=a.fileInfo.size;if(b>=143){let c=new Uint8Array(15),d=a.position;await a.readBuffer(c,{position:b-143}),a.setPosition(d);let e=(0,aX.textDecode)(c,"latin1");if("LYRICS200"===e.substring(6))return Number.parseInt(e.substring(0,6),10)+15}return 0}async function aZ(a,b={}){let c=(0,q.fromBlob)(a);try{var d,e;return await (d=c,e=b,new aU().parse(d,void 0,e))}finally{await c.close()}}async function a$(a,b={}){let c=a.fileInfo.size;await (0,aW.hasID3v1Header)(a)&&(c-=128,c-=await aY(a)),b.apeHeader=await aV.APEv2Parser.findApeFooterOffset(a,c)}async function a_(a){try{let b=await aZ(a,{duration:!0}),c=b.common.title?.trim()??"",d=b.common.artist?.trim()||b.common.artists?.[0]?.trim()||b.common.albumartist?.trim()||b.common.albumartists?.[0]?.trim()||"",e=b.common.album?.trim()??"",f=b.format.duration,g="number"==typeof f&&Number.isFinite(f)?Math.round(f):0;return{title:c,artist:d,album:e,durationSec:g}}catch{return null}}async function a0(a,b,c,d,e,f,g,h){if(!(f.maxScanDepth>0)||!(e>=f.maxScanDepth))for await(let[i,j]of c.entries()){let c=d?`${d}/${i}`:i;if("directory"===j.kind){if(f.followSymlinks&&g.has(c))continue;let d=f.followSymlinks?new Set(g):g;f.followSymlinks&&d.add(c),await a0(a,b,j,c,e+1,f,d,h)}else"file"===j.kind&&function(a,b){let c=a.lastIndexOf(".");if(c<0)return!1;let d=a.slice(c).toLowerCase();return(b??n).has(d)}(i,f.enabledExtensions)&&h.push({rootId:a,rootDisplayName:b,relativePath:c,handle:j})}}function a1(a){let b=a.lastIndexOf("/");return b>=0?a.slice(b+1):a}function a2(a,b){let c=a.split("/").filter(Boolean);return c.length>1?c[c.length-2]??b:b}async function a3(a,b,c,d){let e=`lib:${a.rootId}:${a.relativePath}`,f=c.get(e),g=f?p(f):null,h=d?performance.now():0,i=(b,c)=>{var e;let f,g;return d&&(e={relativePath:a.relativePath,rootDisplayName:a.rootDisplayName,durationMs:performance.now()-h,outcome:b},f=`${e.rootDisplayName}/${e.relativePath}`,g="cached"===e.outcome?"cached":"parsed"===e.outcome?"parsed":"error",console.info(`[muzical scan] ${f} — ${e.durationMs.toFixed(1)} ms (${g})`)),c};try{let c=await a.handle.getFile();if(f&&g&&c.lastModified===g.fileLastModified&&c.size===g.fileSize)return i("cached",f);let d=a1(a.relativePath),h=o(d,b),j=a2(a.relativePath,a.rootDisplayName),k=await a_(c),l={id:e,title:k?.title?k.title:h,artist:k?.artist?k.artist:"Unknown artist",album:k?.album?k.album:j,durationSec:k?.durationSec&&k.durationSec>0?k.durationSec:0,audioUrl:null,library:{rootId:a.rootId,relativePath:a.relativePath}};return i("parsed",l.library?{...l,library:{...l.library,fileLastModified:c.lastModified,fileSize:c.size}}:l)}catch{let c,d;return i("error",(c=o(a1(a.relativePath),b),d=a2(a.relativePath,a.rootDisplayName),{id:`lib:${a.rootId}:${a.relativePath}`,title:c,artist:"Unknown artist",album:d,durationSec:0,audioUrl:null,library:{rootId:a.rootId,relativePath:a.relativePath}}))}}async function a4(a,b,c,d,e){if(0===a.length)return[];let f=Array(a.length),g=0,h=0,i=0,j=a.length,k=()=>{e?.({filesDone:h,filesTotal:j,filesSkipped:i})};k();let l=async()=>{for(;;){let e=g++;if(e>=a.length)break;let j=a[e],l=`lib:${j.rootId}:${j.relativePath}`,m=c.has(l);f[e]=await a3(j,b,c,d),m&&f[e]===c.get(l)&&(i+=1),h+=1,k()}},m=Math.min(8,a.length);return await Promise.all(Array.from({length:m},()=>l())),f}async function a5(a,b,c,d,e,f,g){g?.({phase:"walk"});let h=[];await a0(a,b,c,"",0,d,new Set,h);let i=function(a){let b=new Map;for(let c of a)c.library&&p(c)&&b.set(c.id,c);return b}(e.filter(b=>b.library?.rootId===a));return g?.({phase:"metadata",filesDone:0,filesTotal:h.length,filesSkipped:0}),f&&h.length>0&&console.info(`[muzical scan] ${b}: reading metadata for ${h.length} file${1===h.length?"":"s"}…`),a4(h,d.enabledExtensions,i,f,a=>{g?.({phase:"metadata",...a})})}async function a6(a,b,c,d,e,f){let g=[],h=0,i=null,j=a.filter(a=>b.has(a.id)),k=j.length,l=e?performance.now():0;e&&k>0&&console.info(`[muzical scan] Starting scan of ${k} root${1===k?"":"s"}…`);for(let a=0;a<j.length;a++){let l=j[a],m=b.get(l.id);if(!m)continue;let n=b=>{f?.({rootIndex:a,rootCount:k,rootName:l.name,phase:b.phase,filesDone:b.filesDone,filesTotal:b.filesTotal,filesSkipped:b.filesSkipped})};n({phase:"walk"});try{let a=await a5(l.id,l.name,m,c,d,e,a=>{"walk"===a.phase?n({phase:"walk"}):n({phase:"metadata",filesDone:a.filesDone,filesTotal:a.filesTotal,filesSkipped:a.filesSkipped})});g.push(...a)}catch(a){h+=1,i||(i=a instanceof DOMException?`${a.name}: ${a.message}`:a instanceof Error?a.message:String(a))}}if(g.sort((a,b)=>{let c=a.library?.rootId??"",d=b.library?.rootId??"",e=c.localeCompare(d,void 0,{sensitivity:"base"});if(0!==e)return e;let f=a.library?.relativePath??a.title,g=b.library?.relativePath??b.title;return f.localeCompare(g,void 0,{sensitivity:"base"})}),e){let a=performance.now()-l;console.info(`[muzical scan] Finished: ${g.length} track${1===g.length?"":"s"} in ${a.toFixed(0)} ms`)}return{tracks:g,failedRootCount:h,firstError:i}}function a7(a){return!a.library&&(!!("musicbrainz"===a.source||"youtube"===a.source||a.id.startsWith("musicbrainz:")||a.id.startsWith("youtube:"))||!!a.youtubeQuery?.trim())}function a8(a){return a?.trim()||"Unknown artist"}function a9(a,b){return`${a}\u0000${b}`}function ba(a,b){return a.filter(a=>a9(a.album,a.artist)===b)}function bb(a,b){let c=b.trim();return c?a.filter(a=>a8(a.artist)===c):[]}function bc(a,b){let c=b.artist.trim()||a.artist,d=b.album.trim()||a.album,e={...a,artist:c,album:d};return a.youtubeQuery?.trim()&&(e.youtubeQuery=`${a.title} ${c}`.trim(),e.youtubeVideoId=void 0),e}function bd(a,b){let c=b.artist.trim()||a.artist,d={...a,artist:c};return a.youtubeQuery?.trim()&&(d.youtubeQuery=`${a.title} ${c}`.trim(),d.youtubeVideoId=void 0),d}function be(a,b){let c=b.title.trim()||a.title,d=b.artist.trim()||a.artist,e=b.album.trim()||a.album,f={...a,title:c,artist:d,album:e};return a.youtubeQuery?.trim()&&(f.youtubeQuery=`${c} ${d}`.trim(),f.youtubeVideoId=void 0),f}async function bf(a,b){let c={mode:"readwrite"};try{let d=await a.queryPermission?.(c);if("granted"===d)return!0;if(!b)return!1;let e=await a.requestPermission?.(c);return"granted"===e}catch{return!1}}async function bg(a,b){let c=a.library;if(!c)return null;let d=b.get(c.rootId);if(!d)return null;let e=c.relativePath.split("/").filter(Boolean);if(0===e.length)return null;let f=d;for(let a=0;a<e.length-1;a++){let b=e[a];if(!b)return null;f=await f.getDirectoryHandle(b)}let g=e[e.length-1];return g?f.getFileHandle(g):null}function bh(a){let b=a.name.toLowerCase();if(b.endsWith(".mp3"))return"mp3";if(b.endsWith(".flac"))return"flac";let c=a.type.toLowerCase();return"audio/mpeg"===c||"audio/mp3"===c?"mp3":"audio/flac"===c||"audio/x-flac"===c?"flac":null}function bi(a){return String(a).split("").map(a=>a.charCodeAt(0))}function bj(a){return new Uint8Array(bi(a))}function bk(a){let b=new ArrayBuffer(2*a.length),c=new Uint8Array(b);return new Uint16Array(b).set(bi(a)),c}function bl(a){return[a>>>24&255,a>>>16&255,a>>>8&255,255&a]}a.s(["default",0,a7],4355);a.s(["albumCompositeKey",0,a9,"artistDisplayName",0,a8],27120),a.s(["default",0,ba],79340),a.s(["default",0,bb],14269),a.s(["default",0,bc],88965),a.s(["default",0,bd],18975);class bm{_setIntegerFrame(a,b){let c=parseInt(b,10);this.frames.push({name:a,value:c,size:11+c.toString().length})}_setStringFrame(a,b){let c=b.toString(),d=13+2*c.length;"TDAT"===a&&(d=11+c.length),this.frames.push({name:a,value:c,size:d})}_setPictureFrame(a,b,c,d){var e,f,g;let h=function(a){if(!a||!a.length)return null;if(255===a[0]&&216===a[1]&&255===a[2])return"image/jpeg";if(137===a[0]&&80===a[1]&&78===a[2]&&71===a[3])return"image/png";if(71===a[0]&&73===a[1]&&70===a[2])return"image/gif";if(87===a[8]&&69===a[9]&&66===a[10]&&80===a[11])return"image/webp";let b=73===a[0]&&73===a[1]&&42===a[2]&&0===a[3],c=77===a[0]&&77===a[1]&&0===a[2]&&42===a[3];return b||c?"image/tiff":66===a[0]&&77===a[1]?"image/bmp":0===a[0]&&0===a[1]&&1===a[2]&&0===a[3]?"image/x-icon":null}(new Uint8Array(b)),i=c.toString();if(!h)throw Error("Unknown picture MIME type");c||(d=!1),this.frames.push({name:"APIC",value:b,pictureType:a,mimeType:h,useUnicodeEncoding:d,description:i,size:(e=b.byteLength,f=h.length,g=i.length,11+f+1+1+(d?2+2*(g+1):g+1)+e)})}_setLyricsFrame(a,b,c){let d=a.split("").map(a=>a.charCodeAt(0)),e=b.toString(),f=c.toString();this.frames.push({name:"USLT",value:f,language:d,description:e,size:16+2*e.length+2+2+2*f.length})}_setCommentFrame(a,b,c){let d=a.split("").map(a=>a.charCodeAt(0)),e=b.toString(),f=c.toString();this.frames.push({name:"COMM",value:f,language:d,description:e,size:16+2*e.length+2+2+2*f.length})}_setPrivateFrame(a,b){let c=a.toString();this.frames.push({name:"PRIV",value:b,id:c,size:10+c.length+1+b.byteLength})}_setUserStringFrame(a,b){let c=a.toString(),d=b.toString();this.frames.push({name:"TXXX",description:c,value:d,size:13+2*c.length+2+2+2*d.length})}_setUrlLinkFrame(a,b){let c=b.toString();this.frames.push({name:a,value:c,size:10+c.length})}_setPairedTextFrame(a,b){let c;this.frames.push({name:a,value:b,size:(c=0,b.forEach(a=>{c+=2+2*a[0].length+2+2+2*a[1].length+2}),11+c)})}_setSynchronisedLyricsFrame(a,b,c,d,e){var f;let g,h=e.toString(),i=d.split("").map(a=>a.charCodeAt(0));this.frames.push({name:"SYLT",value:b,language:i,description:h,type:a,timestampFormat:c,size:(f=h.length,g=0,b.forEach(a=>{g+=2+2*a[0].length+2+4}),18+2*f+2+g)})}constructor(a){if(!a||"object"!=typeof a||!("byteLength"in a))throw Error("First argument should be an instance of ArrayBuffer or Buffer");this.arrayBuffer=a,this.padding=4096,this.frames=[],this.url=""}setFrame(a,b){switch(a){case"TPE1":case"TCOM":case"TCON":{if(!Array.isArray(b))throw Error(`${a} frame value should be an array of strings`);let c="TCON"===a?";":"/",d=b.join(c);this._setStringFrame(a,d);break}case"TLAN":case"TIT1":case"TIT2":case"TIT3":case"TALB":case"TPE2":case"TPE3":case"TPE4":case"TRCK":case"TPOS":case"TMED":case"TPUB":case"TCOP":case"TKEY":case"TEXT":case"TDAT":case"TCMP":case"TSSE":case"TSRC":this._setStringFrame(a,b);break;case"TBPM":case"TLEN":case"TYER":this._setIntegerFrame(a,b);break;case"USLT":if(b.language=b.language||"eng","object"!=typeof b||!("description"in b)||!("lyrics"in b))throw Error("USLT frame value should be an object with keys description and lyrics");if(b.language&&!b.language.match(/[a-z]{3}/i))throw Error("Language must be coded following the ISO 639-2 standards");this._setLyricsFrame(b.language,b.description,b.lyrics);break;case"APIC":if("object"!=typeof b||!("type"in b)||!("data"in b)||!("description"in b))throw Error("APIC frame value should be an object with keys type, data and description");if(b.type<0||b.type>20)throw Error("Incorrect APIC frame picture type");this._setPictureFrame(b.type,b.data,b.description,!!b.useUnicodeEncoding);break;case"TXXX":if("object"!=typeof b||!("description"in b)||!("value"in b))throw Error("TXXX frame value should be an object with keys description and value");this._setUserStringFrame(b.description,b.value);break;case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":this._setUrlLinkFrame(a,b);break;case"COMM":if(b.language=b.language||"eng","object"!=typeof b||!("description"in b)||!("text"in b))throw Error("COMM frame value should be an object with keys description and text");if(b.language&&!b.language.match(/[a-z]{3}/i))throw Error("Language must be coded following the ISO 639-2 standards");this._setCommentFrame(b.language,b.description,b.text);break;case"PRIV":if("object"!=typeof b||!("id"in b)||!("data"in b))throw Error("PRIV frame value should be an object with keys id and data");this._setPrivateFrame(b.id,b.data);break;case"IPLS":if(!Array.isArray(b)||!Array.isArray(b[0]))throw Error("IPLS frame value should be an array of pairs");this._setPairedTextFrame(a,b);break;case"SYLT":if("object"!=typeof b||!("type"in b)||!("text"in b)||!("timestampFormat"in b))throw Error("SYLT frame value should be an object with keys type, text and timestampFormat");if(!Array.isArray(b.text)||!Array.isArray(b.text[0]))throw Error("SYLT frame text value should be an array of pairs");if(b.type<0||b.type>6)throw Error("Incorrect SYLT frame content type");if(b.timestampFormat<1||b.timestampFormat>2)throw Error("Incorrect SYLT frame time stamp format");b.language=b.language||"eng",b.description=b.description||"",this._setSynchronisedLyricsFrame(b.type,b.text,b.timestampFormat,b.language,b.description);break;default:throw Error(`Unsupported frame ${a}`)}return this}removeTag(){var a;if(this.arrayBuffer.byteLength<10)return;let b=new Uint8Array(this.arrayBuffer),c=b[3],d=((a=[b[6],b[7],b[8],b[9]])[0]<<21)+(a[1]<<14)+(a[2]<<7)+a[3]+10;73!==b[0]||68!==b[1]||51!==b[2]||c<2||c>4||(this.arrayBuffer=new Uint8Array(b.subarray(d)).buffer)}addTag(){var a;this.removeTag();let b=[255,254],c=10+this.frames.reduce((a,b)=>a+b.size,0)+this.padding,d=new ArrayBuffer(this.arrayBuffer.byteLength+c),e=new Uint8Array(d),f=0,g=[];return g=[73,68,51,3],e.set(g,f),f+=g.length,f++,f++,g=[(a=c-10)>>>21&127,a>>>14&127,a>>>7&127,127&a],e.set(g,f),f+=g.length,this.frames.forEach(a=>{switch(g=bj(a.name),e.set(g,f),f+=g.length,g=bl(a.size-10),e.set(g,f),f+=g.length,f+=2,a.name){case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":g=bj(a.value),e.set(g,f),f+=g.length;break;case"TPE1":case"TCOM":case"TCON":case"TLAN":case"TIT1":case"TIT2":case"TIT3":case"TALB":case"TPE2":case"TPE3":case"TPE4":case"TRCK":case"TPOS":case"TKEY":case"TMED":case"TPUB":case"TCOP":case"TEXT":case"TSSE":case"TSRC":g=[1].concat(b),e.set(g,f),f+=g.length,g=bk(a.value),e.set(g,f),f+=g.length;break;case"TXXX":case"USLT":case"COMM":g=[1],"USLT"!==a.name&&"COMM"!==a.name||(g=g.concat(a.language)),g=g.concat(b),e.set(g,f),f+=g.length,g=bk(a.description),e.set(g,f),f+=g.length,g=[0,0].concat(b),e.set(g,f),f+=g.length,g=bk(a.value),e.set(g,f),f+=g.length;break;case"TBPM":case"TLEN":case"TDAT":case"TYER":f++,g=bj(a.value),e.set(g,f),f+=g.length;break;case"PRIV":g=bj(a.id),e.set(g,f),f+=g.length,f++,e.set(new Uint8Array(a.value),f),f+=a.value.byteLength;break;case"APIC":g=[+!!a.useUnicodeEncoding],e.set(g,f),f+=g.length,g=bj(a.mimeType),e.set(g,f),f+=g.length,g=[0,a.pictureType],e.set(g,f),f+=g.length,a.useUnicodeEncoding?(g=[].concat(b),e.set(g,f),f+=g.length,g=bk(a.description),e.set(g,f),f+=g.length,f+=2):(g=bj(a.description),e.set(g,f),f+=g.length,f++),e.set(new Uint8Array(a.value),f),f+=a.value.byteLength;break;case"IPLS":g=[1],e.set(g,f),f+=g.length,a.value.forEach(a=>{g=[].concat(b),e.set(g,f),f+=g.length,g=bk(a[0].toString()),e.set(g,f),f+=g.length,g=[0,0].concat(b),e.set(g,f),f+=g.length,g=bk(a[1].toString()),e.set(g,f),f+=g.length,g=[0,0],e.set(g,f),f+=g.length});break;case"SYLT":g=[1].concat(a.language).concat(a.timestampFormat).concat(a.type),e.set(g,f),f+=g.length,g=[].concat(b),e.set(g,f),f+=g.length,g=bk(a.description),e.set(g,f),f+=g.length,f+=2,a.value.forEach(a=>{g=[].concat(b),e.set(g,f),f+=g.length,g=bk(a[0].toString()),e.set(g,f),f+=g.length,g=[0,0],e.set(g,f),f+=g.length,g=bl(a[1]),e.set(g,f),f+=g.length})}}),f+=this.padding,e.set(new Uint8Array(this.arrayBuffer),f),this.arrayBuffer=d,d}getBlob(){return new Blob([this.arrayBuffer],{type:"audio/mpeg"})}getURL(){return this.url||(this.url=URL.createObjectURL(this.getBlob())),this.url}revokeURL(){URL.revokeObjectURL(this.url)}}async function bn(a,b){var c;let d,e;if("mp3"!==bh(a))throw Error("Unsupported file format");return c=await a.arrayBuffer(),(d=new bm(c)).setFrame("TIT2",b.title.trim()),d.setFrame("TPE1",[b.artist.trim()]),(e=b.album.trim())&&d.setFrame("TALB",e),d.addTag()}async function bo(a,b,c,d){let e;if(!a.library)return{ok:!1,reason:"Only local library files can be tagged on disk."};let f=c.get(a.library.rootId);if(!f)return{ok:!1,reason:"Library folder is not available. Try rescanning."};if(!await bf(f,d))return{ok:!1,reason:"Write permission is required. Re-add the library folder or allow write access when prompted."};let g=await bg(a,c);if(!g)return{ok:!1,reason:"Could not open the audio file."};let h=await g.getFile();if(!bh(h))return{ok:!1,reason:"Tag writing is supported for MP3 files only."};try{e=await bn(h,b)}catch{return{ok:!1,reason:"Failed to update embedded tags in this file."}}try{let a=await g.createWritable();await a.write(e),await a.close()}catch{return{ok:!1,reason:"Could not save tags to the file."}}return{ok:!0}}async function bp(a,b,c){let d=0,e=0,f=null;for(let g of a){if(!g.library)continue;let a=await bo(g,{title:g.title,artist:g.artist,album:g.album},b,c&&0===d&&0===e);a.ok?d+=1:(e+=1,f||(f=a.reason))}return{ok:0===e,writtenCount:d,failedCount:e,reason:f}}function bq(a,b){let c=new Map;for(let b of a)c.set(b.id,b);for(let a of b)a7(a)&&(c.has(a.id)||c.set(a.id,a));return[...c.values()]}function br(a){return a.library?{...a,source:a.source??"library"}:"youtube"===a.source||a.id.startsWith("youtube:")?{...a,source:"youtube",library:void 0}:"musicbrainz"===a.source||a.id.startsWith("musicbrainz:")?{...a,source:"musicbrainz",library:void 0}:a.youtubeQuery?.trim()?{...a,source:a.source??"musicbrainz",library:void 0}:{...a,library:void 0}}async function bs(a,b){let c=a.library;if(!c)return null;let d=b.get(c.rootId);if(!d)return null;let e=c.relativePath.split("/").filter(Boolean);if(0===e.length)return null;let f=d;for(let a=0;a<e.length-1;a++){let b=e[a];if(!b)return null;f=await f.getDirectoryHandle(b)}let g=e[e.length-1];return g?(await f.getFileHandle(g)).getFile():null}function bt(a){return[...a].sort((a,b)=>b.updatedAt-a.updatedAt)}function bu(a){let{tracks:d,contextLabel:e,onClose:f}=a,{playlists:g,addTracksToPlaylist:h,createPlaylist:i}=cf(),j=(0,c.useId)(),k=(0,c.useId)(),l=(0,c.useRef)(null),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(null),s=(0,c.useMemo)(()=>bt(g),[g]),t=(0,c.useCallback)(a=>{var b,c;r(null),p((b=h(a,d),c=d.length,0===b?"Already in playlist":b===c?`Added ${b} track${1===b?"":"s"}`:`Added ${b} new track${1===b?"":"s"} (${c-b} already present)`))},[h,d]),u=(0,c.useCallback)(()=>{r(null);let a=m.trim();if(!a)return void r("Enter a playlist name.");let b=i(a,d.map(a=>a.id));b?(n(""),p(`Created “${b.name}” with ${b.trackIds.length} track${1===b.trackIds.length?"":"s"}`)):r("Could not create playlist.")},[i,m,d]);return(0,c.useEffect)(()=>{let a=a=>{"Escape"===a.key&&f()};return document.addEventListener("keydown",a),l.current?.focus(),()=>document.removeEventListener("keydown",a)},[f]),(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:f,children:(0,b.jsxs)("div",{ref:l,role:"dialog","aria-modal":"true","aria-labelledby":j,tabIndex:-1,className:"flex max-h-[min(85vh,32rem)] w-full max-w-md flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"flex shrink-0 items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h2",{id:j,className:"truncate text-base font-semibold text-zinc-900 dark:text-zinc-100",children:"Add to playlist"}),(0,b.jsx)("p",{className:"truncate text-sm text-zinc-500",children:e})]}),(0,b.jsx)("button",{type:"button",onClick:f,className:"shrink-0 cursor-pointer rounded-lg px-2 py-1 text-sm font-medium text-zinc-600 transition hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-4",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)("label",{htmlFor:k,className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Create new playlist"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{id:k,type:"text",value:m,onChange:a=>n(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),u())},placeholder:"My playlist",className:"min-w-0 flex-1 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-sm text-zinc-900 outline-none transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100 dark:focus:border-accent-500/60",autoFocus:!0}),(0,b.jsx)("button",{type:"button",onClick:u,className:"shrink-0 cursor-pointer rounded-lg bg-accent-500 px-3 py-2 text-xs font-semibold text-zinc-950 transition hover:bg-accent-400",children:"Create"})]}),q?(0,b.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",children:q}):null,o?(0,b.jsx)("p",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:o}):null]}),(0,b.jsxs)("div",{className:"mt-5",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Existing playlists"}),0===s.length?(0,b.jsx)("p",{className:"px-1 text-xs text-zinc-500",children:"No playlists yet — create one above."}):(0,b.jsx)("ul",{className:"flex flex-col gap-1",children:s.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>t(a.id),className:"flex w-full cursor-pointer items-center justify-between gap-3 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-left text-sm transition hover:border-accent-400/60 hover:bg-accent-50/40 dark:border-zinc-800 dark:bg-zinc-900/40 dark:hover:bg-accent-950/30",children:[(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsx)("span",{className:"block truncate font-medium text-zinc-900 dark:text-zinc-100",children:a.name}),(0,b.jsxs)("span",{className:"block truncate text-xs text-zinc-500",children:[a.trackIds.length," track",1===a.trackIds.length?"":"s"]})]}),(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})},a.id))})]})]})]})})}function bv(a){let{progress:c,onDismiss:d}=a;return c?(0,b.jsxs)("div",{role:"status","aria-live":"polite","aria-busy":c.percent<100,className:"pointer-events-auto fixed bottom-4 right-4 z-50 w-[min(100vw-2rem,22rem)] rounded-xl border border-zinc-200/90 bg-white/95 p-4 pr-10 shadow-lg shadow-zinc-900/10 backdrop-blur-sm dark:border-zinc-700/80 dark:bg-zinc-900/95 dark:shadow-black/40",children:[(0,b.jsx)("button",{type:"button",onClick:d,className:"absolute right-2 top-2 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-100 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200","aria-label":"Dismiss notification",children:(0,b.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:(0,b.jsx)("path",{d:"M6 6l12 12M18 6L6 18",strokeLinecap:"round"})})}),(0,b.jsx)("p",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:c.percent>=100?"Library scan complete":"Scanning library"}),(0,b.jsx)("p",{className:"mt-1 truncate text-xs text-zinc-600 dark:text-zinc-400",children:c.label}),(0,b.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":c.percent,"aria-label":"Library scan progress",className:"mt-3 h-1.5 overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-accent-500 transition-[width] duration-200 ease-out dark:bg-accent-400",style:{width:`${c.percent}%`}})}),(0,b.jsxs)("p",{className:"mt-2 text-right text-[11px] tabular-nums text-zinc-500 dark:text-zinc-500",children:[c.percent,"%",c.filesTotal>0?(0,b.jsxs)("span",{className:"text-zinc-400",children:[" ","· ",c.filesDone,"/",c.filesTotal," files"]}):null]})]}):null}a.s(["default",0,bt],40210);var bw=a.i(68093);function bx(a){return(0,b.jsxs)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:a.className,children:[(0,b.jsx)("circle",{cx:"5",cy:"12",r:"1.75"}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,b.jsx)("circle",{cx:"19",cy:"12",r:"1.75"})]})}function by(a){let[d,e]=(0,c.useState)(!1),f=(0,c.useRef)(null),g=(0,c.useId)(),h=a.triggerLabel??"Track actions";return(0,c.useEffect)(()=>{if(!d)return;let a=a=>{let b=a.target;b instanceof Node&&(f.current?.contains(b)||e(!1))},b=a=>{"Escape"===a.key&&e(!1)};return document.addEventListener("pointerdown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("pointerdown",a),document.removeEventListener("keydown",b)}},[d]),(0,b.jsxs)("div",{ref:f,className:"relative shrink-0",children:[(0,b.jsx)("button",{type:"button","aria-haspopup":"menu","aria-expanded":d,"aria-controls":g,"aria-label":h,onClick:()=>e(a=>!a),className:"flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-200/80 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:(0,b.jsx)(bx,{className:"h-4 w-4"})}),d?(0,b.jsx)("div",{id:g,role:"menu",className:"absolute top-full right-0 z-30 mt-1 min-w-[11rem] overflow-hidden rounded-lg border border-zinc-200 bg-white py-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900",children:a.items.map(a=>(0,b.jsx)("button",{type:"button",role:"menuitem",disabled:a.disabled,onClick:()=>{a.disabled||(a.onSelect(),e(!1))},className:"block w-full cursor-pointer px-3 py-2 text-left text-xs font-medium text-zinc-800 transition hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-40 dark:text-zinc-200 dark:hover:bg-zinc-800",children:a.label},a.id))}):null]})}function bz(a){let b=Math.max(0,Math.floor(a)),c=Math.floor(b/60);return`${c}:${(b%60).toString().padStart(2,"0")}`}function bA(a){let b=[{id:"details",label:"View details",onSelect:()=>a.onViewDetails(a.track)}];return a.onViewRelatedSongs&&b.push({id:"related",label:"Related songs",onSelect:()=>a.onViewRelatedSongs(a.track)}),a.onAddToPlaylist&&b.push({id:"add-to-playlist",label:"Add to playlist…",onSelect:()=>a.onAddToPlaylist(a.track)}),a.onRemoveFromLibrary?b.push({id:"remove",label:"Remove from library",onSelect:a.onRemoveFromLibrary}):a.onSave&&b.push({id:"save",label:a.alreadySaved?"In library":"Add to library",disabled:a.alreadySaved,onSelect:a.onSave}),b}function bB(a){let{openTrackDetails:c,openRelatedSongs:d,removeFromLibrary:e}=cf(),f=a.compact?"px-1.5 py-1.5":"px-2 py-2",g=a.compact?"gap-1.5":"gap-2",h=a.subtitle??`${a.track.artist} \xb7 ${a.track.album}`;return(0,b.jsxs)("div",{className:`flex items-center ${g} rounded-lg ${f} hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:a.track.title}),(0,b.jsx)("p",{className:"truncate text-xs text-zinc-500",children:h})]}),(0,b.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:a.track.durationSec>0?bz(a.track.durationSec):"—"}),(0,b.jsx)(by,{triggerLabel:`Actions for ${a.track.title}`,items:bA({track:a.track,onViewDetails:c,onViewRelatedSongs:d,onSave:a.alreadySaved?void 0:()=>a.onSave(a.track),onRemoveFromLibrary:a.alreadySaved?()=>e(a.track):void 0})}),(0,b.jsx)("button",{type:"button",onClick:()=>a.onQueue(a.track),className:"shrink-0 cursor-pointer rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})}a.s(["default",()=>bB],47179),a.s(["default",0,by],67486),a.s(["formatDuration",0,bz],80977),a.s(["default",0,bA],34991);var bC=a.i(85543);async function bD(a,b){let c=a.artist.trim(),d=a.track.trim(),e=a.mbid?.trim();if(!e&&(!c||!d))return[];let f=(0,bC.default)();if(!f)throw Error("Add a Last.fm API key in Settings → Last.fm");let g=new URL("/api/lastfm/track-similar",window.location.origin);g.searchParams.set("artist",c),g.searchParams.set("track",d),e&&g.searchParams.set("mbid",e),void 0!==a.limit&&g.searchParams.set("limit",String(a.limit));let h=await fetch(g,{signal:b,headers:{"X-Muzical-Lastfm-Api-Key":f}}),i=await h.json().catch(()=>({}));if(!h.ok)throw console.error("[Last.fm] proxy request failed",{status:h.status,statusText:h.statusText,proxyUrl:g.toString(),body:i}),Error(i.error?.trim()||`Last.fm request failed (${h.status})`);if(Array.isArray(i.tracks))return i.tracks;if("number"==typeof i.error&&i.error>0)throw Error(i.message?.trim()||`Last.fm error ${i.error}`);let j=i.similartracks?.track;if(!j)return[];let k=Array.isArray(j)?j:[j],l=[];for(let a of k){let b=function(a){var b;let c=a.name?.trim(),d="string"==typeof(b=a.artist)?b.trim():b&&"object"==typeof b?(b.name?.trim()||b["#text"]?.trim())??"":"";if(!c||!d)return null;let e=a.mbid?.trim();return{name:c,artistName:d,mbid:e&&e.length>0?e:void 0,match:function(a){if(void 0===a)return;let b=Number.parseFloat(a);return Number.isFinite(b)?b:void 0}(a.match),url:a.url?.trim()||void 0,durationSec:function(a){if(void 0===a)return;let b=Number.parseInt(a,10);return Number.isFinite(b)&&b>0?b:void 0}(a.duration)}}(a);b&&l.push(b)}return l}function bE(a){let b=a.name.trim()||"Unknown title",c=a.artistName.trim()||"Unknown artist",d=a.mbid?.trim();return{id:d&&d.length>0?`musicbrainz:${d}`:`lastfm:${encodeURIComponent(c)}\u0000${encodeURIComponent(b)}`,title:b,artist:c,album:"Unknown album",durationSec:a.durationSec??0,youtubeQuery:`${b} ${c}`.trim(),source:d?"musicbrainz":void 0}}function bF(a){let{seedTrack:d,onClose:e}=a,{libraryTracks:f,addToQueue:g,addToLibrary:h,compactLists:i}=cf(),j=(0,c.useId)(),k=(0,c.useRef)(null),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)([]),r=(0,c.useMemo)(()=>new Set(f.map(a=>a.id)),[f]);(0,c.useEffect)(()=>{if(!d)return;if(!(0,bC.default)()){m(!1),o(null),q([]);return}let a=new AbortController;m(!0),o(null),q([]);let b=function(a){let b="musicbrainz:";if(!a.startsWith(b))return null;let c=a.slice(b.length).trim();return c.length>0?c:null}(d.id);return bD({artist:d.artist,track:d.title,mbid:b??void 0,limit:25},a.signal).then(a=>{q(a.map(bE))}).catch(b=>{a.signal.aborted||o(b instanceof Error?b.message:"Failed to load related songs")}).finally(()=>{a.signal.aborted||m(!1)}),()=>a.abort()},[d]),(0,c.useEffect)(()=>{if(!d)return;let a=a=>{"Escape"===a.key&&e()};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[d,e]);let s=(0,c.useCallback)(()=>{0!==p.length&&g(p)},[g,p]);if(!d)return null;let t=(0,bC.default)().length>0;return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:a=>{a.target===a.currentTarget&&e()},children:(0,b.jsxs)("div",{ref:k,role:"dialog","aria-modal":"true","aria-labelledby":j,className:"flex max-h-[min(85vh,36rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h2",{id:j,className:"text-base font-semibold text-zinc-900 dark:text-zinc-50",children:"Related songs"}),(0,b.jsxs)("p",{className:"mt-0.5 truncate text-sm text-zinc-600 dark:text-zinc-400",children:[d.title," · ",d.artist]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-zinc-500",children:"Via Last.fm listening similarity"})]}),(0,b.jsx)("button",{type:"button",onClick:e,className:"shrink-0 rounded-full px-2 py-1 text-sm font-medium text-zinc-600 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-2 py-3",children:[t?null:(0,b.jsxs)("p",{className:"px-2 py-4 text-sm text-zinc-600 dark:text-zinc-400",children:["Add a Last.fm API key in"," ",(0,b.jsx)(bw.default,{href:"/settings/lastfm",className:"font-medium text-accent-700 underline-offset-2 hover:underline dark:text-accent-400",onClick:e,children:"Settings → Last.fm"}),"."]}),l?(0,b.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Loading related songs…"}):null,n?(0,b.jsx)("p",{className:"px-2 py-4 text-sm text-red-600 dark:text-red-400",children:n}):null,l||n||!t||0!==p.length?null:(0,b.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"No similar tracks found."}),!l&&p.length>0?(0,b.jsx)("ul",{className:"space-y-0.5",children:p.map(a=>(0,b.jsx)("li",{children:(0,b.jsx)(bB,{track:a,compact:i,alreadySaved:r.has(a.id)||a7(a),onQueue:g,onSave:h})},a.id))}):null]}),p.length>0?(0,b.jsx)("div",{className:"border-t border-zinc-200 px-4 py-3 dark:border-zinc-800",children:(0,b.jsxs)("button",{type:"button",onClick:s,className:"w-full rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400",children:["Add all to queue (",p.length,")"]})}):null]})})}let bG="mt-1 block w-full rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-100";function bH(a){return{title:a.title,artist:a.artist,album:a.album}}function bI(a){let{track:d,canWriteToFile:e,saving:f,saveError:g,onSave:h}=a,[i,j]=(0,c.useState)(()=>bH(d)),[k,l]=(0,c.useState)(()=>bH(d));(0,c.useEffect)(()=>{let a=bH(d);j(a),l(a)},[d.id,d.title,d.artist,d.album]);let m=i.title!==k.title||i.artist!==k.artist||i.album!==k.album,n=m&&""!==i.title.trim()&&""!==i.artist.trim(),o=(0,c.useCallback)(()=>{j(k)},[k]),p=(0,c.useCallback)(async a=>{if(a.preventDefault(),!n||f)return;let b=be(d,i),c={title:b.title,artist:b.artist,album:b.album};await h(c),l(c),j(c)},[n,i,h,f,d]);return(0,b.jsxs)("form",{onSubmit:p,className:"space-y-3",children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Metadata"}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Title"}),(0,b.jsx)("input",{type:"text",value:i.title,onChange:a=>j(b=>({...b,title:a.target.value})),className:bG,autoComplete:"off",required:!0})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Artist"}),(0,b.jsx)("input",{type:"text",value:i.artist,onChange:a=>j(b=>({...b,artist:a.target.value})),className:bG,autoComplete:"off",required:!0})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Album"}),(0,b.jsx)("input",{type:"text",value:i.album,onChange:a=>j(b=>({...b,album:a.target.value})),className:bG,autoComplete:"off"})]}),e?(0,b.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving also writes ID3 tags to MP3 files when the library folder allows write access."}):null,d.youtubeQuery?.trim()?(0,b.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving updates the YouTube search query and clears any resolved video id for this track."}):null,g?(0,b.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",role:"alert",children:g}):null,(0,b.jsxs)("div",{className:"flex flex-wrap gap-2 pt-1",children:[(0,b.jsx)("button",{type:"submit",disabled:!n||f,className:"rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400 disabled:cursor-not-allowed disabled:opacity-50",children:f?"Saving…":"Save"}),(0,b.jsx)("button",{type:"button",disabled:!m||f,onClick:o,className:"rounded-full border border-zinc-300 bg-white px-4 py-2 text-sm font-medium text-zinc-800 transition hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700",children:"Revert"})]})]})}function bJ(a){if(!Number.isFinite(a)||a<0)return"—";if(a<1024)return`${a} B`;let b=["KB","MB","GB","TB"],c=a/1024,d=0;for(;c>=1024&&d<b.length-1;)c/=1024,d+=1;return`${c<10?c.toFixed(1):Math.round(c).toString()} ${b[d]}`}function bK(a,b,c,d=!1){if(null==c)return;let e="number"==typeof c?String(c):c.trim();e&&a.push({label:b,value:e,mono:d})}async function bL(a){let b=[];bK(b,"File name",a.name,!0),bK(b,"MIME type",a.type||"—"),b.push({label:"File size",value:bJ(a.size)}),b.push({label:"Last modified",value:new Date(a.lastModified).toLocaleString()});try{let{format:c,common:d}=await aZ(a,{duration:!0});c.container&&bK(b,"Container",c.container),c.codec&&bK(b,"Codec",c.codec),"number"==typeof c.bitrate&&c.bitrate>0&&bK(b,"Bitrate",`${Math.round(c.bitrate/1e3)} kbps`),"number"==typeof c.sampleRate&&c.sampleRate>0&&bK(b,"Sample rate",`${c.sampleRate} Hz`),"number"==typeof c.numberOfChannels&&bK(b,"Channels",c.numberOfChannels),"number"==typeof c.bitsPerSample&&c.bitsPerSample>0&&bK(b,"Bits per sample",c.bitsPerSample),bK(b,"Tag title",d.title),bK(b,"Tag artist",d.artist??d.artists?.join(", ")),bK(b,"Tag album artist",d.albumartist??d.albumartists?.join(", ")),bK(b,"Tag album",d.album),"number"==typeof d.year&&bK(b,"Tag year",d.year),d.genre?.length&&bK(b,"Tag genre",d.genre.join(", ")),"number"==typeof d.track?.no&&bK(b,"Tag track #",d.track.no),"number"==typeof d.disk?.no&&bK(b,"Tag disc #",d.disk.no),bK(b,"Tag composer",Array.isArray(d.composer)?d.composer.join(", "):d.composer),bK(b,"Tag comment",d.comment?.join(" · "))}catch{bK(b,"Embedded tags","Could not read metadata from this file")}return b}function bM(a,b,c,d=!1){let e=c?.trim();e&&a.push({label:b,value:e,mono:d})}function bN(a){return 0===a.rows.length?null:(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:a.title}),(0,b.jsx)("dl",{className:"mt-2 divide-y divide-zinc-100 rounded-lg border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800",children:a.rows.map(c=>(0,b.jsxs)("div",{className:"grid gap-0.5 px-3 py-2 sm:grid-cols-[7rem_1fr] sm:gap-3",children:[(0,b.jsx)("dt",{className:"text-xs font-medium text-zinc-500",children:c.label}),(0,b.jsx)("dd",{className:["text-sm break-words text-zinc-900 dark:text-zinc-100",c.mono?"font-mono text-xs":""].join(" "),children:c.value})]},`${a.title}-${c.label}`))})]})}function bO(a){let{track:d,onClose:e}=a,{roots:f,resolveFileForTrack:g,saveTrackMetadata:h}=cf(),i=(0,c.useId)(),j=(0,c.useRef)(null),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),u=(0,c.useMemo)(()=>{var a;let b;return d?(a={omitEditableTags:!0},b=[],a?.omitEditableTags||(bM(b,"Title",d.title),bM(b,"Artist",d.artist),bM(b,"Album",d.album)),d.durationSec>0&&b.push({label:"Duration",value:bz(d.durationSec)}),bM(b,"Source",d.library?"Local library file":"youtube"===d.source||d.id.startsWith("youtube:")?"YouTube":"musicbrainz"===d.source||d.id.startsWith("musicbrainz:")?"MusicBrainz":d.youtubeVideoId?.trim()?"YouTube":d.youtubeQuery?.trim()?"YouTube (search)":"library"===d.source?"Local library":"Unknown"),bM(b,"Track ID",d.id,!0),d.library&&(bM(b,"Library folder",f.find(a=>a.id===d.library?.rootId)?.name??d.library.rootId),bM(b,"Relative path",d.library.relativePath,!0),"number"==typeof d.library.fileSize&&Number.isFinite(d.library.fileSize)&&b.push({label:"File size (at scan)",value:bJ(d.library.fileSize)}),"number"==typeof d.library.fileLastModified&&Number.isFinite(d.library.fileLastModified)&&b.push({label:"Modified (at scan)",value:new Date(d.library.fileLastModified).toLocaleString()})),bM(b,"YouTube query",d.youtubeQuery,!0),bM(b,"YouTube video ID",d.youtubeVideoId,!0),b):[]},[d,f]),v=(0,c.useCallback)(async a=>{if(!d)return;r(!0),t(null);let b=await h(d.id,a);(r(!1),b.ok)?d.library&&g(d).then(async a=>{a&&l(await bL(a))}):t(b.reason)},[g,h,d]);return((0,c.useEffect)(()=>{if(!d?.library)return;let a=!1,b=requestAnimationFrame(()=>{a||(n(!0),p(null),l([]))});return g(d).then(async b=>{if(a)return;if(!b)return void p("Could not open the file. Try rescanning the library folder.");let c=await bL(b);a||l(c)}).catch(()=>{a||p("Failed to read file metadata.")}).finally(()=>{a||n(!1)}),()=>{a=!0,cancelAnimationFrame(b)}},[d,g]),(0,c.useEffect)(()=>{if(d?.library)return;let a=requestAnimationFrame(()=>{l([]),n(!1),p(null)});return()=>cancelAnimationFrame(a)},[d?.library,d?.id]),(0,c.useEffect)(()=>{if(!d)return;let a=a=>{"Escape"===a.key&&e()};return document.addEventListener("keydown",a),j.current?.focus(),()=>document.removeEventListener("keydown",a)},[d,e]),d)?(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:e,children:(0,b.jsxs)("div",{ref:j,role:"dialog","aria-modal":"true","aria-labelledby":i,tabIndex:-1,className:"flex max-h-[min(85vh,40rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"flex shrink-0 items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h2",{id:i,className:"truncate text-base font-semibold text-zinc-900 dark:text-zinc-100",children:d.title}),(0,b.jsxs)("p",{className:"truncate text-sm text-zinc-500",children:[d.artist," · ",d.album]})]}),(0,b.jsx)("button",{type:"button",onClick:e,className:"shrink-0 cursor-pointer rounded-lg px-2 py-1 text-sm font-medium text-zinc-600 transition hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 space-y-5 overflow-y-auto overscroll-contain px-4 py-4",children:[(0,b.jsx)(bI,{track:d,canWriteToFile:!!d.library,saving:q,saveError:s,onSave:v}),(0,b.jsx)(bN,{title:"Details",rows:u}),d.library?(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"File & embedded metadata"}),m?(0,b.jsx)("p",{className:"mt-2 text-sm text-zinc-500",children:"Reading file…"}):null,o?(0,b.jsx)("p",{className:"mt-2 text-sm text-red-600 dark:text-red-400",role:"alert",children:o}):null,m||o||!(k.length>0)?null:(0,b.jsx)("dl",{className:"mt-2 divide-y divide-zinc-100 rounded-lg border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800",children:k.map(a=>(0,b.jsxs)("div",{className:"grid gap-0.5 px-3 py-2 sm:grid-cols-[7rem_1fr] sm:gap-3",children:[(0,b.jsx)("dt",{className:"text-xs font-medium text-zinc-500",children:a.label}),(0,b.jsx)("dd",{className:["text-sm text-zinc-900 break-words dark:text-zinc-100",a.mono?"font-mono text-xs":""].join(" "),children:a.value})]},`file-${a.label}`))})]}):null]})]})}):null}function bP(){return{maxScanDepth:0,followSymlinks:!1,enabledExtensions:[...i]}}function bQ(){return bP()}function bR(a){return a.trim().replace(/\s+/g," ").slice(0,80)}function bS(a){}function bT(){return{trackIds:[],tracks:[],activeTrackId:null,positionSec:0}}function bU(a){let b=new Set,c=[];for(let d of a){let a=d.youtubeQuery?.trim();!(!a||d.youtubeVideoId?.trim())&&(b.has(d.id)||(b.add(d.id),c.push({trackId:d.id,query:a})))}return c}a.s(["default",0,bP],17479),a.s(["default",0,bU],24388);var bV=a.i(41090);async function bW(a,b){let c=a.trim();if(!c)return null;let d=new URL("/api/youtube/resolve",window.location.origin);d.searchParams.set("q",c);let e=await fetch(d.toString(),{signal:b});if(!e.ok)return null;let f=await e.json();return f.videoId?.trim()||null}var bX=a.i(37978);function bY(a){let b=a.toLowerCase();return b.includes("quota")||b.includes("quotaexceeded")}function bZ(){(0,bV.setYoutubeDataApiBlockedInternal)(!0)}a.s(["default",0,bY],44803),a.s(["default",0,bZ],91320),a.s(["YOUTUBE_DATA_API_MIN_INTERVAL_MS",0,900,"YOUTUBE_SEARCH_CACHE_TTL_MS",0,3e5,"YOUTUBE_SEARCH_DEBOUNCE_MS",0,500,"YOUTUBE_SEARCH_PAGE_SIZE",0,20],16564);let b$=0,b_=Promise.resolve();async function b0(){b_=b_.then(async()=>{let a=Math.max(0,900-(Date.now()-b$));a>0&&await new Promise(b=>setTimeout(b,a)),b$=Date.now()}),await b_}a.s(["default",0,b0],73972);let b1=new Map;function b2(a){let b=a.trim().toLowerCase();return b?b1.get(b)??null:null}async function b3(a,b,c){let d=a.trim(),e=b.trim();if(!d||!e||(0,bV.default)())return null;let f=b2(d);if(f)return f;let g=new URL("https://www.googleapis.com/youtube/v3/search");g.searchParams.set("part","snippet"),g.searchParams.set("type","video"),g.searchParams.set("maxResults","5"),g.searchParams.set("videoEmbeddable","true"),g.searchParams.set("q",d),g.searchParams.set("key",e),await b0();let h=await fetch(g,{signal:c}),i=await h.json();if(!h.ok){let a=i.error?.message?.trim()??"";return(i.error?.errors?.some(a=>"quotaExceeded"===a.reason)||bY(a))&&bZ(),null}for(let a of i.items??[]){let b=a.id?.videoId?.trim();if(b)return!function(a,b){let c=a.trim().toLowerCase(),d=b.trim();c&&d&&b1.set(c,d)}(d,b),b}return null}async function b4(a,b){let c=a.trim();if(!c)return null;let d=b2(c);if(d)return d;let e=(0,bX.default)().trim();if(e&&!(0,bV.default)()){let a=await b3(c,e,b);if(a)return a}return bW(c,b)}async function b5(a,b,c={}){if(0===a.length||(0,bV.default)())return;let d="number"==typeof c.maxConcurrent&&c.maxConcurrent>0?Math.floor(c.maxConcurrent):2,e=c.signal,f=0,g=async()=>{for(;f<a.length;){if(e?.aborted)return;let c=f;f+=1;let d=a[c];if((0,bV.default)())return;let g=null;try{g=await b4(d.query,e)}catch{continue}!(e?.aborted||(0,bV.default)())&&g&&b(d.trackId,g)}},h=Array.from({length:Math.min(d,a.length)},()=>g());await Promise.all(h)}a.s(["default",0,b4],22451),a.s(["default",0,b5],2196);var b6=a.i(56663);let b7=(0,c.createContext)(null);function b8(a){return Array.isArray(a)?[...a]:[a]}function b9(a,b){}function ca(a,b){let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),[...c].sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"}))}let cb="Use Rescan all in Settings → Library, or remove and add the folders again so the browser can access your music.";async function cc(a){if(0===a.size)return!1;let b={mode:"read"};for(let c of a.values())try{let a=await c.queryPermission?.(b);if("granted"!==a)return!1}catch{return!1}return!0}async function cd(a,b){let c={mode:"read"};for(let d of a.values())try{let a=await d.queryPermission?.(c);if("granted"===a||!b)continue;await d.requestPermission?.(c)}catch{}}function ce(a){let{preferences:i}=(0,b6.useYoutubePreferences)(),n=(0,c.useRef)(null),o=(0,c.useRef)(!1),p=(0,c.useRef)(new Map),q=(0,c.useRef)([]),r=(0,c.useRef)([]),s=(0,c.useRef)(null),t=(0,c.useRef)(null),u=(0,c.useRef)(!1),v=(0,c.useRef)(!1),w=(0,c.useRef)(bQ()),x=(0,c.useRef)(!1),y=(0,c.useRef)(!1),z=(0,c.useRef)(!1),A=(0,c.useRef)({activeQueueId:null,positionSec:0}),B=(0,c.useRef)(null),C=(0,c.useRef)(!1),[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)([]),[H,I]=(0,c.useState)([]),[J,K]=(0,c.useState)([]),[L,M]=(0,c.useState)([]),[N,O]=(0,c.useState)([]),[P,Q]=(0,c.useState)([]),[R,S]=(0,c.useState)({}),[T,U]=(0,c.useState)([]),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(!0),[Z,$]=(0,c.useState)(!1),[_,aa]=(0,c.useState)(bQ),[ab,ac]=(0,c.useState)(!1),[ad,ae]=(0,c.useState)(null),[af,ag]=(0,c.useState)(null),[ah,ai]=(0,c.useState)(!1),[aj,ak]=(0,c.useState)(!1),[al,am]=(0,c.useState)(!1),[an,ao]=(0,c.useState)(null),[ap,aq]=(0,c.useState)(null),[ar,as]=(0,c.useState)(!1),[at,au]=(0,c.useState)(null),[av,aw]=(0,c.useState)(null),[ax,ay]=(0,c.useState)(!1),[az,aA]=(0,c.useState)(0),aB=(0,c.useRef)(0),[aC,aD]=(0,c.useState)([]),aE=(0,c.useRef)(!1),[aF,aG]=(0,c.useState)(null),aH=(0,c.useCallback)(a=>{let b=Math.max(0,Math.floor(a));0!==b&&(aB.current+=b,aA(aB.current),ay(!0))},[]),aI=(0,c.useCallback)(a=>{let b=Math.max(0,Math.floor(a));aB.current=Math.max(0,aB.current-b),aA(aB.current),0===aB.current&&ay(!1)},[]);(0,c.useEffect)(()=>{Promise.resolve().then(()=>{as(!1)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{Q([].slice(0,24))})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{S({}),C.current=!0})},[]),(0,c.useEffect)(()=>{queueMicrotask(()=>{U([].slice(0,12)),v.current=!0})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{W(!1)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{Y(!0)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{$(!1),x.current=!1})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{let a=bQ();w.current=a,aa(a)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{y.current=!1,ac(!1)})},[]),(0,c.useEffect)(()=>{P.slice(0,24)},[P]),(0,c.useEffect)(()=>{C.current},[R]),(0,c.useEffect)(()=>{v.current&&e(T.slice(0,12))},[T]),(0,c.useEffect)(()=>{queueMicrotask(()=>{aD([]),aE.current=!0})},[]),(0,c.useEffect)(()=>{aE.current},[aC]),(0,c.useEffect)(()=>{r.current=L},[L]),(0,c.useEffect)(()=>()=>{s.current&&(clearTimeout(s.current),s.current=null),t.current&&(clearTimeout(t.current),t.current=null),B.current&&(clearTimeout(B.current),B.current=null)},[]);let aJ=(0,c.useCallback)(()=>{if(!y.current)return;if(B.current&&(clearTimeout(B.current),B.current=null),0===N.length)return void bS(bT());let a=A.current.activeQueueId,b=a?N.find(b=>b.queueId===a):N[0];bS({trackIds:N.map(a=>a.track.id),tracks:N.map(a=>a.track),activeTrackId:b?.track.id??null,positionSec:A.current.positionSec})},[N]),aK=(0,c.useCallback)(()=>{!y.current||z.current&&(B.current&&clearTimeout(B.current),B.current=setTimeout(()=>{B.current=null,aJ()},400))},[aJ]),aL=(0,c.useCallback)(a=>{z.current||(z.current=!0,y.current,ak(!0))},[]);(0,c.useEffect)(()=>{if(!z.current)return;let a=new Map(L.map(a=>[a.id,a]));O(b=>b.map(b=>{let c=a.get(b.track.id);return c?{...b,track:c}:b}))},[L]),(0,c.useEffect)(()=>{aK()},[N,aK]),(0,c.useEffect)(()=>{!ah||z.current||aL(L)},[ah,L,aL]),(0,c.useEffect)(()=>{let a=()=>{aJ()};return window.addEventListener("pagehide",a),()=>{window.removeEventListener("pagehide",a)}},[aJ]);let aM=(0,c.useCallback)(()=>{s.current&&(clearTimeout(s.current),s.current=null);let a=n.current;a&&l(a,q.current.map(a=>a.id),r.current).catch(()=>{})},[]),aN=(0,c.useCallback)(()=>{s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{s.current=null,aM()},450)},[aM]);(0,c.useEffect)(()=>{let a=()=>{aM()};return window.addEventListener("pagehide",a),()=>{window.removeEventListener("pagehide",a)}},[aM]);let aO=(0,c.useCallback)(()=>{t.current&&(clearTimeout(t.current),t.current=null)},[]),aP=(0,c.useCallback)(()=>{aO(),t.current=setTimeout(()=>{t.current=null,ao(null)},4e3)},[aO]),aQ=(0,c.useCallback)(()=>{aO(),ao(null)},[aO]),aR=(0,c.useCallback)(a=>{ao({percent:function(a){if(a.rootCount<=0)return 0;let b=100/a.rootCount,c=a.rootIndex*b;if("walk"===a.phase)c+=.12*b;else{let d=a.filesTotal??0,e=a.filesDone??0;c+=b*(.12+.88*(d>0?Math.min(1,e/d):0))}return Math.min(100,Math.round(c))}(a),label:function(a){let b=a.rootCount>1?`[${a.rootIndex+1}/${a.rootCount}] `:"";if("walk"===a.phase)return`${b}Listing files in ${a.rootName}…`;let c=a.filesTotal??0,d=a.filesDone??0,e=a.filesSkipped??0;return c>0?e>0?`${b}Reading tags (${d}/${c}, ${e} unchanged) \xb7 ${a.rootName}`:`${b}Reading tags (${d}/${c}) \xb7 ${a.rootName}`:`${b}Reading tags \xb7 ${a.rootName}`}(a),rootName:a.rootName,filesDone:a.filesDone??0,filesTotal:a.filesTotal??0})},[]),aS=(0,c.useCallback)(async a=>{if(o.current)return null;o.current=!0;let b=q.current,c=p.current;aO(),am(!0),aq(null),ao({percent:0,label:"Starting library scan…",rootName:null,filesDone:0,filesTotal:0});try{var d;b.length>0&&await cd(c,a);let e={maxScanDepth:(d=w.current).maxScanDepth,followSymlinks:d.followSymlinks,enabledExtensions:new Set(d.enabledExtensions)},f=await a6(b,c,e,r.current,x.current,aR);return ao({percent:100,label:f.tracks.length>0?`Found ${f.tracks.length} track${1===f.tracks.length?"":"s"}`:"Scan complete",rootName:null,filesDone:f.tracks.length,filesTotal:f.tracks.length}),aP(),f}catch(a){return ao(null),aq(a instanceof Error?a.message:"Scan failed"),null}finally{o.current=!1,am(!1)}},[aR,aO,aP]),aT=(0,c.useCallback)(async(a=!1)=>{let b=await aS(a);if(!b)return;let c=q.current,{tracks:d,failedRootCount:e,firstError:f}=b,g=bq(d,r.current);M(g);let h=n.current;if(h)try{await l(h,c.map(a=>a.id),g)}catch{}a&&e>0&&0===d.length&&c.length>0&&aq(f?`${f} ${cb}`:cb)},[aS]),aU=(0,c.useCallback)((a,b)=>{if(!Number.isFinite(b)||b<=0)return;let c=c=>c.id===a&&c.durationSec<=0?{...c,durationSec:b}:c;M(a=>a.map(c)),O(a=>a.map(a=>({...a,track:c(a.track)}))),aN()},[aN]),aV=(0,c.useCallback)((a,b)=>{let c=a.trim();if(!c)return;let d=a=>a.id===c?b(a):a;M(a=>a.map(d)),O(a=>a.map(a=>({...a,track:d(a.track)}))),au(a=>a?.id===c?b(a):a),aN()},[aN]),aW=(0,c.useCallback)(async(a,b)=>{let c=a.trim();if(!c)return{ok:!1,reason:"Invalid track."};let d=r.current.find(a=>a.id===c);if(!d)return{ok:!1,reason:"Track not found."};let e=be(d,b);return(aV(c,()=>e),e.library)?bo(e,{title:e.title,artist:e.artist,album:e.album},p.current,!0):{ok:!0}},[aV]),aX=(0,c.useCallback)(async a=>bp(a,p.current,!0),[]),aY=(0,c.useCallback)((a,b)=>{let c=a.trim();if(!c)return null;let d=b.artist.trim();if(!d)return null;let e=b.album.trim(),f=a=>a9(a.album,a.artist)===c,g=ba(r.current,c);if(0===g.length)return null;let h=a9(e||g[0].album,d),i=a=>f(a)?bc(a,{artist:d,album:e}):a;return M(a=>a.map(i)),O(a=>a.map(a=>({...a,track:i(a.track)}))),au(a=>a&&f(a)?i(a):a),I(a=>{if(!a.includes(c))return a;let b=a.filter(a=>a!==c);return b.includes(h)?b:[...b,h]}),aN(),h},[aN]),aZ=(0,c.useCallback)((a,b)=>{let c=a.trim(),d=b.artist.trim();if(!c||!d)return null;let e=a=>a8(a.artist)===c;if(0===bb(r.current,c).length)return null;let f=a=>e(a)?bd(a,{artist:d}):a;return M(a=>a.map(f)),O(a=>a.map(a=>({...a,track:f(a.track)}))),au(a=>a&&e(a)?f(a):a),G(a=>{if(!a.includes(c))return a;let b=a.filter(a=>a!==c);return b.includes(d)?b:[...b,d]}),I(a=>{let b=!1,e=a.map(a=>{let e=a.split("\0"),f=e[0]??"";return a8(e[1]??"")!==c?a:(b=!0,a9(f,d))});return b?[...new Set(e)]:a}),aN(),d},[aN]);(0,c.useEffect)(()=>{if(!i.prefetchQueueVideoIds||(0,bV.default)())return;let a=i.prefetchQueueMaxTracks,b=bU(N.map(a=>a.track)).slice(0,a);if(0===b.length)return;let c=new AbortController,d=b.length;return aH(d),b5(b,(a,b)=>{aV(a,a=>({...a,youtubeVideoId:b}))},{signal:c.signal}).finally(()=>{aI(d)}),()=>{c.abort()}},[N,aV,i.prefetchQueueVideoIds,i.prefetchQueueMaxTracks,aH,aI]);let a$=(0,c.useCallback)(a=>{let b=(Array.isArray(a)?a:[a]).map(a=>({queueId:crypto.randomUUID(),track:a}));O(a=>[...a,...b])},[]),a_=(0,c.useCallback)(a=>{let b=Array.isArray(a)?[...a]:[a];if(0===b.length)return;let c=b.map(a=>({queueId:crypto.randomUUID(),track:a})),d=c[0].queueId;A.current={activeQueueId:d,positionSec:0},O(c),ag({activeQueueId:d}),y.current&&(B.current&&(clearTimeout(B.current),B.current=null),bS({trackIds:b.map(a=>a.id),tracks:b,activeTrackId:b[0].id,positionSec:0}))},[]),a0=(0,c.useCallback)(()=>{ag(null)},[]),a1=(0,c.useCallback)(a=>{let b=(Array.isArray(a)?a:[a]).map(br);0!==b.length&&(M(a=>{let c=new Map(a.map(a=>[a.id,a])),d=!1;for(let a of b){let b=c.get(a.id);if(b){c.set(a.id,{...b,...a,youtubeVideoId:a.youtubeVideoId??b.youtubeVideoId}),d=!0;continue}c.set(a.id,a),d=!0}return d?[...c.values()]:a}),aN())},[aN]),a2=(0,c.useCallback)(a=>{let b=new Set((Array.isArray(a)?a:[a]).map(a=>a.id).filter(Boolean));0!==b.size&&(M(a=>a.filter(a=>!b.has(a.id))),E(a=>a.filter(a=>!b.has(a))),O(a=>a.filter(a=>!b.has(a.track.id))),aN())},[aN]),a3=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=ba(r.current,b);0!==c.length&&(I(a=>a.filter(a=>a!==b)),a2(c))},[a2]),a4=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=bb(r.current,b);0!==c.length&&(G(a=>a.filter(a=>a!==b)),a2(c))},[a2]),a5=(0,c.useCallback)(()=>{let a=r.current,b=new Set(a.filter(a7).map(a=>a.id));0!==b.size&&(M(a.filter(a=>!a7(a))),E(a=>a.filter(a=>!b.has(a))),O(a=>a.filter(a=>!b.has(a.track.id))),aN())},[aN]),bf=(0,c.useCallback)(a=>{O(b=>b.filter(b=>b.queueId!==a))},[]),bg=(0,c.useCallback)(()=>{A.current={activeQueueId:null,positionSec:0},O([]),y.current&&(B.current&&(clearTimeout(B.current),B.current=null),bS(bT()))},[]),bh=(0,c.useCallback)((a,b)=>{if(!Number.isFinite(a)||!Number.isFinite(b))return;let c=Math.trunc(a),d=Math.trunc(b);O(a=>{if(c<0||d<0||c>=a.length||d>=a.length||c===d)return a;let b=[...a],[e]=b.splice(c,1);return b.splice(d,0,e),b})},[]),bi=(0,c.useCallback)(a=>{let b=a.trim();b&&Q(a=>[b,...a.filter(a=>a!==b)].slice(0,24))},[]),bj=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=Date.now();bi(b),S(a=>{let d=a[b];return{...a,[b]:{trackId:b,playCount:(d?.playCount??0)+1,completedCount:d?.completedCount??0,skipCount:d?.skipCount??0,totalListenSec:d?.totalListenSec??0,firstPlayedAt:d?.firstPlayedAt??c,lastPlayedAt:c,lastCompletedAt:d?.lastCompletedAt,lastSkippedAt:d?.lastSkippedAt}}})},[bi]),bk=(0,c.useCallback)((a,b)=>{let c=a.trim();c&&Number.isFinite(b)&&!(b<=0)&&S(a=>{let d=a[c],e=Math.min(30,Math.max(0,b));return e<=0?a:{...a,[c]:{trackId:c,playCount:d?.playCount??0,completedCount:d?.completedCount??0,skipCount:d?.skipCount??0,totalListenSec:(d?.totalListenSec??0)+e,firstPlayedAt:d?.firstPlayedAt,lastPlayedAt:d?.lastPlayedAt,lastCompletedAt:d?.lastCompletedAt,lastSkippedAt:d?.lastSkippedAt}}})},[]),bl=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=Date.now();S(a=>{let d=a[b];return{...a,[b]:{trackId:b,playCount:d?.playCount??0,completedCount:(d?.completedCount??0)+1,skipCount:d?.skipCount??0,totalListenSec:d?.totalListenSec??0,firstPlayedAt:d?.firstPlayedAt,lastPlayedAt:d?.lastPlayedAt,lastCompletedAt:c,lastSkippedAt:d?.lastSkippedAt}}})},[]),bm=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=Date.now();S(a=>{let d=a[b];return{...a,[b]:{trackId:b,playCount:d?.playCount??0,completedCount:d?.completedCount??0,skipCount:(d?.skipCount??0)+1,totalListenSec:d?.totalListenSec??0,firstPlayedAt:d?.firstPlayedAt,lastPlayedAt:d?.lastPlayedAt,lastCompletedAt:d?.lastCompletedAt,lastSkippedAt:c}}})},[]),bn=(0,c.useCallback)(()=>{S({})},[]),bt=(0,c.useCallback)((a,b)=>{let c=b.trim();!c||"library"===a&&c.length<2||"musicbrainz"===a&&c.length<3||"youtube"===a&&c.length<2||U(b=>{let f=function(a,b){let c=b.query.trim();if(!c)return[...a];let e={source:b.source,query:c},f=d(e);return[e,...a.filter(a=>d(a)!==f)].slice(0,12)}(b,{source:a,query:c});return v.current&&e(f),f})},[]),bw=(0,c.useCallback)(()=>{U([]),e([])},[]),bx=(0,c.useCallback)((a,b)=>{let c,d=bR(a);if(!d)return null;let e=Date.now(),f=new Set,g=[];if(b)for(let a of b)!a||f.has(a)||(f.add(a),g.push(a));let h={id:(c=Math.random().toString(36).slice(2,10),`pl_${Date.now().toString(36)}_${c}`),name:d,trackIds:g,createdAt:e,updatedAt:e};return aD(a=>[h,...a].slice(0,200)),h},[]),by=(0,c.useCallback)((a,b)=>{let c=bR(b);if(!c)return!1;let d=!1;return aD(b=>b.map(b=>b.id!==a||(d=!0,b.name===c)?b:{...b,name:c,updatedAt:Date.now()})),d},[]),bz=(0,c.useCallback)(a=>{aD(b=>b.filter(b=>b.id!==a))},[]),bA=(0,c.useCallback)((a,b)=>{let c=b8(b).map(a=>a.id).filter(a=>!!a);if(0===c.length)return 0;let d=0;return aD(b=>b.map(b=>{if(b.id!==a)return b;let e=function(a,b){if(0===b.length)return a;let c=new Set(a.trackIds),d=[];for(let a of b)!a||c.has(a)||(c.add(a),d.push(a));return 0===d.length?a:{...a,trackIds:[...a.trackIds,...d],updatedAt:Date.now()}}(b,c);return d=e.trackIds.length-b.trackIds.length,e})),d},[]),bB=(0,c.useCallback)((a,b)=>{0!==b.length&&aD(c=>c.map(c=>c.id===a?function(a,b){if(0===b.length)return a;let c=new Set(b),d=a.trackIds.filter(a=>!c.has(a));return d.length===a.trackIds.length?a:{...a,trackIds:d,updatedAt:Date.now()}}(c,b):c))},[]),bC=(0,c.useCallback)((a,b,c)=>{aD(d=>d.map(d=>d.id===a?function(a,b,c){let d=a.trackIds.length;if(b<0||b>=d)return a;let e=Math.max(0,Math.min(d-1,c));if(e===b)return a;let f=[...a.trackIds],[g]=f.splice(b,1);return f.splice(e,0,g),{...a,trackIds:f,updatedAt:Date.now()}}(d,b,c):d))},[]),bD=(0,c.useCallback)((a,b)=>{let c=b8(a);0!==c.length&&aG({tracks:c,contextLabel:b})},[]),bE=(0,c.useCallback)(()=>{aG(null)},[]),bG=(0,c.useCallback)(a=>{W(a),b9("muzical.compactLists",a)},[]),bH=(0,c.useCallback)(a=>{Y(a),b9("muzical.autoRescanOnStartup",a)},[]),bI=(0,c.useCallback)(a=>{x.current=a,$(a),b9("muzical.logLibraryScanTiming",a)},[]),bJ=(0,c.useCallback)(a=>{au(a)},[]),bK=(0,c.useCallback)(()=>{au(null)},[]),bL=(0,c.useCallback)(a=>{aw(a)},[]),bM=(0,c.useCallback)(()=>{aw(null)},[]),bN=(0,c.useCallback)(a=>{w.current=a,aa(a)},[]),bP=(0,c.useCallback)(a=>{y.current=a,ac(a),b9("muzical.rememberLastQueue",a),a?aJ():bS(bT())},[aJ]),bW=(0,c.useCallback)(()=>{ae(null)},[]),bX=(0,c.useCallback)((a,b)=>{A.current={activeQueueId:a,positionSec:b},aK()},[aK]),bY=(0,c.useCallback)(a=>bs(a,p.current),[]),bZ=(0,c.useMemo)(()=>new Set(D),[D]),b$=(0,c.useMemo)(()=>new Set(F),[F]),b_=(0,c.useMemo)(()=>new Set(H),[H]),b0=(0,c.useCallback)(a=>bZ.has(a),[bZ]),b1=(0,c.useCallback)(a=>b$.has(a),[b$]),b2=(0,c.useCallback)(a=>b_.has(a),[b_]),b3=(0,c.useCallback)(a=>{E(b=>ca(b,a))},[]),b4=(0,c.useCallback)(a=>{G(b=>ca(b,a))},[]),ce=(0,c.useCallback)(a=>{I(b=>ca(b,a))},[]),cf=(0,c.useCallback)(a=>{b3(a.id)},[b3]),cg=(0,c.useCallback)(a=>{E([...a.songIds]),G([...a.artistNames]),I([...a.albumKeys])},[]);(0,c.useEffect)(()=>{if(!u.current)return;let a=n.current;a&&(function(a,b){if(!a.objectStoreNames.contains(h))return Promise.reject(Error(`Missing object store ${h}`));let c={key:k,songIds:[...b.songIds],artistNames:[...b.artistNames],albumKeys:[...b.albumKeys]};return new Promise((b,d)=>{let e=a.transaction(h,"readwrite"),f=e.objectStore(h).put(c);f.onerror=()=>{d(f.error??Error("IndexedDB favorites put failed"))},e.oncomplete=()=>{b()},e.onerror=()=>{d(e.error??Error("IndexedDB favorites transaction failed"))}})})(a,{songIds:D,artistNames:F,albumKeys:H}).catch(()=>{})},[D,F,H]);let ch=(0,c.useCallback)(async a=>{try{let b=crypto.randomUUID(),c=Date.now(),d={id:b,name:a.name,addedAt:c,handle:a},e=n.current;if(!e)return void aq("Library database is not ready yet.");await new Promise((a,b)=>{let c=e.transaction(g,"readwrite"),f=c.objectStore(g).put(d);f.onerror=()=>{b(f.error??Error("IndexedDB put failed"))},c.oncomplete=()=>{a()},c.onerror=()=>{b(c.error??Error("IndexedDB transaction failed"))}}),p.current.set(b,a);let f=[...q.current,{id:b,name:a.name,addedAt:c}];q.current=f,K(f),await aT(!0)}catch(a){aq(function(a){if(a instanceof DOMException){if("AbortError"===a.name)return"";if("SecurityError"===a.name||"NotAllowedError"===a.name||a.message.includes("not allowed by the user agent")||a.message.includes("The request is not allowed"))return"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost."}if(a instanceof Error){let b=a.message;return b.includes("not allowed by the user agent")||b.includes("The request is not allowed")?"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost.":b}return"Could not access the folder."}(a))}},[aT]),ci=(0,c.useCallback)(()=>{},[ar,ch]),cj=(0,c.useCallback)(async a=>{let b=n.current;if(b)try{await new Promise((c,d)=>{let e=b.transaction(g,"readwrite"),f=e.objectStore(g).delete(a);f.onerror=()=>{d(f.error??Error("IndexedDB delete failed"))},e.oncomplete=()=>{c()},e.onerror=()=>{d(e.error??Error("IndexedDB transaction failed"))}}),p.current.delete(a);let c=q.current.filter(b=>b.id!==a);q.current=c,K(c),await aT(!0)}catch(a){aq(a instanceof Error?a.message:"Could not remove library folder")}},[aT]),ck=(0,c.useCallback)(async()=>{await aT(!0)},[aT]);(0,c.useEffect)(()=>{let a=!1;return(async()=>{let b=[];try{var c;let d=await new Promise((a,b)=>{let c=indexedDB.open(f,3);c.onerror=()=>{b(c.error??Error("IndexedDB open failed"))},c.onsuccess=()=>{a(c.result)},c.onupgradeneeded=()=>{let a=c.result;a.objectStoreNames.contains(g)||a.createObjectStore(g,{keyPath:"id"}),a.objectStoreNames.contains(h)||a.createObjectStore(h,{keyPath:"key"})}});if(a)return void d.close();n.current=d;try{let b=await (!d.objectStoreNames.contains(h)?Promise.resolve(m()):new Promise((a,b)=>{let c=d.transaction(h,"readonly").objectStore(h).get(k);c.onerror=()=>{b(c.error??Error("IndexedDB favorites get failed"))},c.onsuccess=()=>{let b=c.result;b&&b.key===k&&Array.isArray(b.songIds)&&Array.isArray(b.artistNames)&&Array.isArray(b.albumKeys)?a({key:k,songIds:[...b.songIds],artistNames:[...b.artistNames],albumKeys:[...b.albumKeys]}):a(m())}}));a||(E(b.songIds),G(b.artistNames),I(b.albumKeys))}catch{a||(E([]),G([]),I([]))}a||(u.current=!0),navigator.storage?.persist?.();let e=await new Promise((a,b)=>{let c=d.transaction(g,"readonly").objectStore(g).getAll();c.onerror=()=>{b(c.error??Error("IndexedDB getAll failed"))},c.onsuccess=()=>{a(c.result)}});if(a)return;let i=new Map,o=[];for(let a of e)i.set(a.id,a.handle),o.push({id:a.id,name:a.name,addedAt:a.addedAt});if(a)return;p.current=i,q.current=o,K(o),b=[];let s=!1,t=[];try{let e=await (!d.objectStoreNames.contains(h)?Promise.resolve(null):new Promise((a,b)=>{let c=d.transaction(h,"readonly").objectStore(h).get(j);c.onerror=()=>{b(c.error??Error("IndexedDB catalog get failed"))},c.onsuccess=()=>{let b=c.result;b&&b.key===j&&Array.isArray(b.rootIds)&&Array.isArray(b.tracks)?a(b):a(null)}}));if(!a&&e){let a=function(a){let b=[],c=new Set;for(let d of a){let a=function(a){if(!a||"object"!=typeof a||"string"!=typeof a.id||!a.id.trim()||"string"!=typeof a.title||"string"!=typeof a.artist||"string"!=typeof a.album)return null;let b="number"==typeof a.durationSec&&Number.isFinite(a.durationSec)&&a.durationSec>=0?a.durationSec:0,c="library"===a.source||"musicbrainz"===a.source||"youtube"===a.source?a.source:void 0,d="string"==typeof a.audioUrl?a.audioUrl:null===a.audioUrl?null:void 0,e="string"==typeof a.youtubeQuery?a.youtubeQuery:void 0,f="string"==typeof a.youtubeVideoId?a.youtubeVideoId:void 0,g=function(a){if(a&&"object"==typeof a&&"string"==typeof a.rootId&&"string"==typeof a.relativePath)return{rootId:a.rootId,relativePath:a.relativePath}}(a.library);return{id:a.id.trim(),title:a.title,artist:a.artist,album:a.album,durationSec:b,audioUrl:d,youtubeQuery:e,youtubeVideoId:f,source:c,library:g}}(d);!a||c.has(a.id)||(c.add(a.id),b.push(a))}return b}(e.tracks);(t=a.filter(a7),o.length>0&&(c=e.rootIds,o.length===c.length&&[...o].map(a=>a.id).sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})).every((a,b)=>a===c[b])))?(b=a,M(b),s=!0):t.length>0&&(b=t,M(t),s=!0)}}catch{}if(a)return;let v=o.length>0&&await cc(i);if(a)return;if(v&&!a){let c=await aS(!1);if(a||!c)return;let{tracks:e,firstError:f,failedRootCount:g}=c;if(0===e.length&&o.length>0&&g>0)if(s)aq(null);else{b=bq(e,t),M(b);try{await l(d,o.map(a=>a.id),b)}catch{}aq(f?`${f} ${cb}`:cb)}else{b=bq(e,r.current),M(b);try{await l(d,o.map(a=>a.id),b)}catch{}}}}catch(b){a||aq(b instanceof Error?b.message:"Could not load library")}finally{a||(z.current||aL(b),ai(!0))}})(),()=>{a=!0}},[aS,aL]);let cl=(0,c.useMemo)(()=>({roots:J,libraryTracks:L,queue:N,recentlyPlayedTrackIds:P,listeningStats:R,recentBrowseSearches:T,compactLists:V,autoRescanOnStartup:X,logLibraryScanTiming:Z,scanPreferences:_,rememberLastQueue:ab,playbackRestore:ad,playNowRequest:af,isQueueReady:aj,isScanning:al,youtubePrefetchActive:ax,youtubePrefetchVideoCount:az,beginYoutubePrefetch:aH,endYoutubePrefetch:aI,scanError:ap,hasDirectoryPicker:ar,addLibraryFolder:ci,removeLibraryFolder:cj,rescanAll:ck,addToQueue:a$,playNow:a_,addToLibrary:a1,removeFromLibrary:a2,removeAlbumFromLibrary:a3,removeArtistFromLibrary:a4,removeAllMusicBrainzFromLibrary:a5,removeFromQueue:bf,clearQueue:bg,recordRecentlyPlayedTrack:bi,recordTrackPlaybackStarted:bj,recordTrackPlaybackProgress:bk,recordTrackPlaybackCompleted:bl,recordTrackSkipped:bm,clearListeningStats:bn,recordRecentBrowseSearch:bt,clearRecentBrowseSearches:bw,setCompactLists:bG,setAutoRescanOnStartup:bH,setLogLibraryScanTiming:bI,setScanPreferences:bN,setRememberLastQueue:bP,consumePlaybackRestore:bW,consumePlayNowRequest:a0,reportPlayback:bX,reorderQueueItems:bh,resolveFileForTrack:bY,bumpTrackDuration:aU,patchTrackById:aV,saveTrackMetadata:aW,writeLibraryTracksToFiles:aX,patchAlbumMetadataByKey:aY,patchArtistMetadataByKey:aZ,favoriteSongIds:D,favoriteArtistNames:F,favoriteAlbumKeys:H,isFavoriteSong:b0,isFavoriteArtist:b1,isFavoriteAlbum:b2,toggleFavoriteSong:b3,toggleFavoriteArtist:b4,toggleFavoriteAlbum:ce,toggleFavoriteTrack:cf,importFavorites:cg,detailsTrack:at,openTrackDetails:bJ,closeTrackDetails:bK,relatedSongsSeedTrack:av,openRelatedSongs:bL,closeRelatedSongs:bM,playlists:aC,createPlaylist:bx,renamePlaylist:by,deletePlaylist:bz,addTracksToPlaylist:bA,removeTracksFromPlaylist:bB,reorderPlaylistTracks:bC,openAddToPlaylist:bD}),[J,L,N,P,R,T,V,X,Z,_,ab,ad,af,aj,al,ax,az,aH,aI,ap,ar,ci,cj,ck,a$,a_,a1,a2,a3,a4,a5,bf,bg,bi,bj,bk,bl,bm,bn,bt,bw,bG,bH,bI,bN,bP,bW,a0,bX,bh,bY,aU,aV,aW,aX,aY,aZ,D,F,H,b0,b1,b2,b3,b4,ce,cf,cg,at,bJ,bK,av,bL,bM,aC,bx,by,bz,bA,bB,bC,bD]);return(0,b.jsxs)(b7.Provider,{value:cl,children:[a.children,(0,b.jsx)(bv,{progress:an,onDismiss:aQ}),(0,b.jsx)(bO,{track:at,onClose:bK}),(0,b.jsx)(bF,{seedTrack:av,onClose:bM}),aF?(0,b.jsx)(bu,{tracks:aF.tracks,contextLabel:aF.contextLabel,onClose:bE}):null]})}function cf(){let a=(0,c.useContext)(b7);if(!a)throw Error("useLibrary must be used within LibraryProvider");return a}}];
1
+ module.exports=[91465,(a,b,c)=>{"use strict";var d=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,e=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,f=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,g=/\\([\u000b\u0020-\u00ff])/g,h=/([\\"])/g,i=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function j(a){this.parameters=Object.create(null),this.type=a}c.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.parameters,c=a.type;if(!c||!i.test(c))throw TypeError("invalid type");var d=c;if(b&&"object"==typeof b)for(var g,j=Object.keys(b).sort(),k=0;k<j.length;k++){if(g=j[k],!f.test(g))throw TypeError("invalid parameter name");d+="; "+g+"="+function(a){var b=String(a);if(f.test(b))return b;if(b.length>0&&!e.test(b))throw TypeError("invalid parameter value");return'"'+b.replace(h,"\\$1")+'"'}(b[g])}return d},c.parse=function(a){if(!a)throw TypeError("argument string is required");var b,c,e,f="object"==typeof a?function(a){var b;if("function"==typeof a.getHeader?b=a.getHeader("content-type"):"object"==typeof a.headers&&(b=a.headers&&a.headers["content-type"]),"string"!=typeof b)throw TypeError("content-type header is missing from object");return b}(a):a;if("string"!=typeof f)throw TypeError("argument string is required to be a string");var h=f.indexOf(";"),k=-1!==h?f.slice(0,h).trim():f.trim();if(!i.test(k))throw TypeError("invalid media type");var l=new j(k.toLowerCase());if(-1!==h){for(d.lastIndex=h;c=d.exec(f);){if(c.index!==h)throw TypeError("invalid parameter format");h+=c[0].length,b=c[1].toLowerCase(),34===(e=c[2]).charCodeAt(0)&&-1!==(e=e.slice(1,-1)).indexOf("\\")&&(e=e.replace(g,"$1")),l.parameters[b]=e}if(h!==f.length)throw TypeError("invalid parameter format")}return l}},96151,(a,b,c)=>{"use strict";var d=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,e=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,f=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;function g(a,b,c){this.type=a,this.subtype=b,this.suffix=c}c.format=function(a){if(!a||"object"!=typeof a)throw TypeError("argument obj is required");var b=a.subtype,c=a.suffix,f=a.type;if(!f||!e.test(f))throw TypeError("invalid type");if(!b||!d.test(b))throw TypeError("invalid subtype");var g=f+"/"+b;if(c){if(!e.test(c))throw TypeError("invalid suffix");g+="+"+c}return g},c.parse=function(a){if(!a)throw TypeError("argument string is required");if("string"!=typeof a)throw TypeError("argument string is required to be a string");var b,c=f.exec(a.toLowerCase());if(!c)throw TypeError("invalid media type");var d=c[1],e=c[2],h=e.lastIndexOf("+");return -1!==h&&(b=e.substr(h+1),e=e.substr(0,h)),new g(d,e,b)},c.test=function(a){if(!a)throw TypeError("argument string is required");if("string"!=typeof a)throw TypeError("argument string is required to be a string");return f.test(a.toLowerCase())}},58760,14142,41994,96332,4355,27120,79340,14269,88965,18975,44803,91320,16564,73972,22451,40210,67486,80977,34991,47179,17479,24388,2196,a=>{"use strict";a.s(["LibraryProvider",()=>cj,"useLibrary",()=>ck],58760);var b=a.i(61401),c=a.i(59021);function d(a){return`${a.source}\u0000${a.query.trim().toLowerCase()}`}function e(a){}a.s(["RECENT_BROWSE_SEARCHES_LIMIT",0,12],14142);let f="muzical-library",g="libraryRoots",h="libraryCatalog",i=[".mp3",".flac",".m4a",".aac",".ogg",".opus",".wav",".webm",".aiff",".aif",".alac",".wma"];a.s(["LIBRARY_AUDIO_EXTENSIONS",0,i,"LIBRARY_CATALOG_STORE_NAME",0,h,"LIBRARY_DB_NAME",0,f,"LIBRARY_DB_VERSION",0,3,"LIBRARY_STORE_NAME",0,g],41994);let j="catalog",k="favorites";function l(a,b,c){if(!a.objectStoreNames.contains(h))return Promise.reject(Error(`Missing object store ${h}`));let d={key:j,rootIds:[...b].sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})),tracks:[...c],savedAt:Date.now()};return new Promise((b,c)=>{let e=a.transaction(h,"readwrite"),f=e.objectStore(h).put(d);f.onerror=()=>{c(f.error??Error("IndexedDB catalog put failed"))},e.oncomplete=()=>{b()},e.onerror=()=>{c(e.error??Error("IndexedDB catalog transaction failed"))}})}let m=()=>({key:k,songIds:[],artistNames:[],albumKeys:[]}),n=new Set(i);function o(a,b){let c=a.lastIndexOf(".");if(c<0)return a;let d=a.slice(c).toLowerCase();return(b??n).has(d)?a.slice(0,c):a}function p(a){let b=a.library;if(!b)return null;let{fileLastModified:c,fileSize:d}=b;return"number"==typeof c&&Number.isFinite(c)&&"number"==typeof d&&Number.isFinite(d)&&!(d<0)?{fileLastModified:c,fileSize:d}:null}a.s(["parseBlob",()=>aZ,"scanAppendingHeaders",()=>a$],96332),a.i(17588);var q=a.i(1766),r=a.i(1962),s=a.i(82663),t=a.i(35617);let u={get:a=>({signature:r.UINT32_LE.get(a,0),compressedSize:r.UINT32_LE.get(a,8),uncompressedSize:r.UINT32_LE.get(a,12)}),len:16},v={get(a){let b=r.UINT16_LE.get(a,6);return{signature:r.UINT32_LE.get(a,0),minVersion:r.UINT16_LE.get(a,4),dataDescriptor:!!(8&b),compressedMethod:r.UINT16_LE.get(a,8),compressedSize:r.UINT32_LE.get(a,18),uncompressedSize:r.UINT32_LE.get(a,22),filenameLength:r.UINT16_LE.get(a,26),extraFieldLength:r.UINT16_LE.get(a,28),filename:null}},len:30},w={get:a=>({signature:r.UINT32_LE.get(a,0),nrOfThisDisk:r.UINT16_LE.get(a,4),nrOfThisDiskWithTheStart:r.UINT16_LE.get(a,6),nrOfEntriesOnThisDisk:r.UINT16_LE.get(a,8),nrOfEntriesOfSize:r.UINT16_LE.get(a,10),sizeOfCd:r.UINT32_LE.get(a,12),offsetOfStartOfCd:r.UINT32_LE.get(a,16),zipFileCommentLength:r.UINT16_LE.get(a,20)}),len:22},x={get(a){let b=r.UINT16_LE.get(a,8);return{signature:r.UINT32_LE.get(a,0),minVersion:r.UINT16_LE.get(a,6),dataDescriptor:!!(8&b),compressedMethod:r.UINT16_LE.get(a,10),compressedSize:r.UINT32_LE.get(a,20),uncompressedSize:r.UINT32_LE.get(a,24),filenameLength:r.UINT16_LE.get(a,28),extraFieldLength:r.UINT16_LE.get(a,30),fileCommentLength:r.UINT16_LE.get(a,32),relativeOffsetOfLocalHeader:r.UINT32_LE.get(a,42),filename:null}},len:46};function y(a){let b=new Uint8Array(r.UINT32_LE.len);return r.UINT32_LE.put(b,0,a),b}let z=(0,t.default)("tokenizer:inflate"),A=y(0x8074b50),B=y(0x6054b50);class C{constructor(a){this.tokenizer=a,this.syncBuffer=new Uint8Array(262144)}async isZip(){return await this.peekSignature()===0x4034b50}peekSignature(){return this.tokenizer.peekToken(r.UINT32_LE)}async findEndOfCentralDirectoryLocator(){let a=this.tokenizer,b=Math.min(16384,a.fileInfo.size),c=this.syncBuffer.subarray(0,b);await this.tokenizer.readBuffer(c,{position:a.fileInfo.size-b});for(let d=c.length-4;d>=0;d--)if(c[d]===B[0]&&c[d+1]===B[1]&&c[d+2]===B[2]&&c[d+3]===B[3])return a.fileInfo.size-b+d;return -1}async readCentralDirectory(){if(!this.tokenizer.supportsRandomAccess())return void z("Cannot reading central-directory without random-read support");z("Reading central-directory...");let a=this.tokenizer.position,b=await this.findEndOfCentralDirectoryLocator();if(b>0){z("Central-directory 32-bit signature found");let c=await this.tokenizer.readToken(w,b),d=[];this.tokenizer.setPosition(c.offsetOfStartOfCd);for(let a=0;a<c.nrOfEntriesOfSize;++a){let b=await this.tokenizer.readToken(x);if(0x2014b50!==b.signature)throw Error("Expected Central-File-Header signature");b.filename=await this.tokenizer.readToken(new r.StringType(b.filenameLength,"utf-8")),await this.tokenizer.ignore(b.extraFieldLength),await this.tokenizer.ignore(b.fileCommentLength),d.push(b),z(`Add central-directory file-entry: n=${a+1}/${d.length}: filename=${d[a].filename}`)}return this.tokenizer.setPosition(a),d}this.tokenizer.setPosition(a)}async unzip(a){let b=await this.readCentralDirectory();if(b)return this.iterateOverCentralDirectory(b,a);let c=!1;do{let b,d=await this.readLocalFileHeader();if(!d)break;let e=a(d);if(c=!!e.stop,await this.tokenizer.ignore(d.extraFieldLength),d.dataDescriptor&&0===d.compressedSize){let a=[],b=262144;z("Compressed-file-size unknown, scanning for next data-descriptor-signature....");let c=-1;for(;c<0&&262144===b;){b=await this.tokenizer.peekBuffer(this.syncBuffer,{mayBeLess:!0});let d=(c=function(a,b){let c=a.length,d=b.length;if(d>c)return -1;for(let e=0;e<=c-d;e++){let c=!0;for(let f=0;f<d;f++)if(a[e+f]!==b[f]){c=!1;break}if(c)return e}return -1}(this.syncBuffer.subarray(0,b),A))>=0?c:b;if(e.handler){let b=new Uint8Array(d);await this.tokenizer.readBuffer(b),a.push(b)}else await this.tokenizer.ignore(d)}z(`Found data-descriptor-signature at pos=${this.tokenizer.position}`),e.handler&&await this.inflate(d,function(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}(a),e.handler)}else e.handler?(z(`Reading compressed-file-data: ${d.compressedSize} bytes`),b=new Uint8Array(d.compressedSize),await this.tokenizer.readBuffer(b),await this.inflate(d,b,e.handler)):(z(`Ignoring compressed-file-data: ${d.compressedSize} bytes`),await this.tokenizer.ignore(d.compressedSize));if(z(`Reading data-descriptor at pos=${this.tokenizer.position}`),d.dataDescriptor&&0x8074b50!==(await this.tokenizer.readToken(u)).signature)throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-u.len}`)}while(!c)}async iterateOverCentralDirectory(a,b){for(let c of a){let a=b(c);if(a.handler){this.tokenizer.setPosition(c.relativeOffsetOfLocalHeader);let b=await this.readLocalFileHeader();if(b){await this.tokenizer.ignore(b.extraFieldLength);let d=new Uint8Array(c.compressedSize);await this.tokenizer.readBuffer(d),await this.inflate(b,d,a.handler)}}if(a.stop)break}}async inflate(a,b,c){if(0===a.compressedMethod)return c(b);if(8!==a.compressedMethod)throw Error(`Unsupported ZIP compression method: ${a.compressedMethod}`);return z(`Decompress filename=${a.filename}, compressed-size=${b.length}`),c(await C.decompressDeflateRaw(b))}static async decompressDeflateRaw(a){let b=new ReadableStream({start(b){b.enqueue(a),b.close()}}),c=new DecompressionStream("deflate-raw"),d=b.pipeThrough(c);try{let a=new Response(d),b=await a.arrayBuffer();return new Uint8Array(b)}catch(a){throw TypeError(a instanceof Error?`Failed to deflate ZIP entry: ${a.message}`:"Unknown decompression error in ZIP entry")}}async readLocalFileHeader(){let a=await this.tokenizer.peekToken(r.UINT32_LE);if(0x4034b50===a){let a=await this.tokenizer.readToken(v);return a.filename=await this.tokenizer.readToken(new r.StringType(a.filenameLength,"utf-8")),a}if(0x2014b50===a)return!1;if(0xe011cfd0===a)throw Error("Encrypted ZIP");throw Error("Unexpected signature")}}class D{constructor(a){this.tokenizer=a}inflate(){let a=this.tokenizer;return new ReadableStream({async pull(b){let c=new Uint8Array(1024),d=await a.readBuffer(c,{mayBeLess:!0});0===d?b.close():b.enqueue(c.subarray(0,d))}}).pipeThrough(new DecompressionStream("gzip"))}}var E=a.i(37187);let F={get:(a,b)=>127&a[b+3]|a[b+2]<<7|a[b+1]<<14|a[b]<<21,len:4},G=0x80000000-1,H=new Set(["Unexpected signature","Encrypted ZIP","Expected Central-File-Header signature"]),I=["ZIP entry count exceeds ","Unsupported ZIP compression method:","ZIP entry compressed data exceeds ","ZIP entry decompressed data exceeds ","Expected data-descriptor-signature at position "],J=new Set(["Z_BUF_ERROR","Z_DATA_ERROR","ERR_INVALID_STATE"]);class K extends Error{}function L(a,b,c){if(!Number.isFinite(a)||a<0||a>b)throw new K(`${c} has invalid size ${a} (maximum ${b} bytes)`);return a}async function M(a,b,{maximumLength:c=0x1000000,reason:d="skip"}={}){let e=L(b,c,d);await a.ignore(e)}async function N(a,b,c,{maximumLength:d=b.length,reason:e="read"}={}){let f=L(c?.length??b.length,d,e);return a.readBuffer(b,{...c,length:f})}async function O(a,{maximumLength:b=1048576}={}){let c=new ReadableStream({start(b){b.enqueue(a),b.close()}}).pipeThrough(new DecompressionStream("deflate-raw")).getReader(),d=[],e=0;try{for(;;){let{done:a,value:f}=await c.read();if(a)break;if((e+=f.length)>b)throw await c.cancel(),Error(`ZIP entry decompressed data exceeds ${b} bytes`);d.push(f)}}finally{c.releaseLock()}let f=new Uint8Array(e),g=0;for(let a of d)f.set(a,g),g+=a.length;return f}async function P(a,{shouldBuffer:b,maximumLength:c=1048576}={}){let{syncBuffer:d}=a,{length:e}=d,f=[],g=0;for(;;){let h=await a.tokenizer.peekBuffer(d,{mayBeLess:!0}),i=function(a,b){if(a.length<16)return -1;let c=a.length-16;for(let d=0;d<=c;d++)if(0x8074b50===r.UINT32_LE.get(a,d)&&r.UINT32_LE.get(a,d+8)===b+d)return d;return -1}(d.subarray(0,h),g),j=i>=0?0:h===e?Math.min(15,h-1):0,k=i>=0?i:h-j;if(0===k)break;if((g+=k)>c)throw Error(`ZIP entry compressed data exceeds ${c} bytes`);if(b){let b=new Uint8Array(k);await a.tokenizer.readBuffer(b),f.push(b)}else await a.tokenizer.ignore(k);if(i>=0)break}if(U(a.tokenizer)||(a.knownSizeDescriptorScannedBytes+=g),b){let a=new Uint8Array(g),b=0;for(let c of f)a.set(c,b),b+=c.length;return a}}async function Q(a,b,{shouldBuffer:c,maximumDescriptorLength:d=1048576}={}){var e;let f;if(b.dataDescriptor&&0===b.compressedSize)return P(a,{shouldBuffer:c,maximumLength:d});if(!c)return void await M(a.tokenizer,b.compressedSize,{maximumLength:U(a.tokenizer)?1048576:a.tokenizer.fileInfo.size,reason:"ZIP entry compressed data"});let g=Math.min(Number.isFinite(f=(e=a.tokenizer).fileInfo.size)?Math.max(0,f-e.position):Number.MAX_SAFE_INTEGER,G);if(!Number.isFinite(b.compressedSize)||b.compressedSize<0||b.compressedSize>g)throw Error(`ZIP entry compressed data exceeds ${g} bytes`);let h=new Uint8Array(b.compressedSize);return await a.tokenizer.readBuffer(h),h}async function R(a,b){return new Y(b).fromBuffer(a)}function S(a){switch(a=a.toLowerCase()){case"application/epub+zip":return{ext:"epub",mime:a};case"application/vnd.oasis.opendocument.text":return{ext:"odt",mime:a};case"application/vnd.oasis.opendocument.text-template":return{ext:"ott",mime:a};case"application/vnd.oasis.opendocument.spreadsheet":return{ext:"ods",mime:a};case"application/vnd.oasis.opendocument.spreadsheet-template":return{ext:"ots",mime:a};case"application/vnd.oasis.opendocument.presentation":return{ext:"odp",mime:a};case"application/vnd.oasis.opendocument.presentation-template":return{ext:"otp",mime:a};case"application/vnd.oasis.opendocument.graphics":return{ext:"odg",mime:a};case"application/vnd.oasis.opendocument.graphics-template":return{ext:"otg",mime:a};case"application/vnd.openxmlformats-officedocument.presentationml.slideshow":return{ext:"ppsx",mime:a};case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":return{ext:"xlsx",mime:a};case"application/vnd.ms-excel.sheet.macroenabled":return{ext:"xlsm",mime:"application/vnd.ms-excel.sheet.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.template":return{ext:"xltx",mime:a};case"application/vnd.ms-excel.template.macroenabled":return{ext:"xltm",mime:"application/vnd.ms-excel.template.macroenabled.12"};case"application/vnd.ms-powerpoint.slideshow.macroenabled":return{ext:"ppsm",mime:"application/vnd.ms-powerpoint.slideshow.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return{ext:"docx",mime:a};case"application/vnd.ms-word.document.macroenabled":return{ext:"docm",mime:"application/vnd.ms-word.document.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.template":return{ext:"dotx",mime:a};case"application/vnd.ms-word.template.macroenabledtemplate":return{ext:"dotm",mime:"application/vnd.ms-word.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.template":return{ext:"potx",mime:a};case"application/vnd.ms-powerpoint.template.macroenabled":return{ext:"potm",mime:"application/vnd.ms-powerpoint.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.presentation":return{ext:"pptx",mime:a};case"application/vnd.ms-powerpoint.presentation.macroenabled":return{ext:"pptm",mime:"application/vnd.ms-powerpoint.presentation.macroenabled.12"};case"application/vnd.ms-visio.drawing":return{ext:"vsdx",mime:"application/vnd.visio"};case"application/vnd.ms-package.3dmanufacturing-3dmodel+xml":return{ext:"3mf",mime:"model/3mf"}}}function T(a,b,c){for(let[d,e]of(c={offset:0,...c},b.entries()))if(c.mask){if(e!==(c.mask[d]&a[d+c.offset]))return!1}else if(e!==a[d+c.offset])return!1;return!0}function U(a){let b=a.fileInfo.size;return!Number.isFinite(b)||b===Number.MAX_SAFE_INTEGER}function V(a,b,c){return U(a)&&a.position-b>c}function W(a,b=1048576){for(let c of[a.compressedSize,a.uncompressedSize])if(!Number.isFinite(c)||c<0||c>b)return!1;return!0}function X(a){if(a.hasContentTypesEntry&&!a.hasUnparseableContentTypes&&!a.isParsingContentTypes&&!a.hasParsedContentTypesEntry){if(a.hasWordDirectory)return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(a.hasPresentationDirectory)return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(a.hasSpreadsheetDirectory)return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};if(a.hasThreeDimensionalModelEntry)return{ext:"3mf",mime:"model/3mf"}}}C.prototype.inflate=async function(a,b,c){if(0===a.compressedMethod)return c(b);if(8!==a.compressedMethod)throw Error(`Unsupported ZIP compression method: ${a.compressedMethod}`);return c(await O(b,{maximumLength:1048576}))},C.prototype.unzip=async function(a){let b=!1,c=0,d=this.tokenizer.position;this.knownSizeDescriptorScannedBytes=0;do{if(V(this.tokenizer,d,0x1000000))throw new K("ZIP stream probing exceeds 16777216 bytes");let e=await this.readLocalFileHeader();if(!e)break;if(++c>1024)throw Error("ZIP entry count exceeds 1024");let f=a(e);b=!!f.stop,await this.tokenizer.ignore(e.extraFieldLength);let g=await Q(this,e,{shouldBuffer:!!f.handler,maximumDescriptorLength:Math.min(1048576,U(this.tokenizer)?Math.max(0,0x1000000-(this.tokenizer.position-d)):Math.max(0,1048576-this.knownSizeDescriptorScannedBytes))});if(f.handler&&await this.inflate(e,g,f.handler),e.dataDescriptor){let a=new Uint8Array(16);if(await this.tokenizer.readBuffer(a),0x8074b50!==r.UINT32_LE.get(a,0))throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-a.length}`)}if(V(this.tokenizer,d,0x1000000))throw new K("ZIP stream probing exceeds 16777216 bytes")}while(!b)};class Y{constructor(a){const b=function(a){return Number.isFinite(a)?Math.max(0,Math.min(4098,Math.trunc(a))):0}(a?.mpegOffsetTolerance);this.options={...a,mpegOffsetTolerance:b},this.detectors=[...this.options.customDetectors??[],{id:"core",detect:this.detectConfident},{id:"core.imprecise",detect:this.detectImprecise}],this.tokenizerOptions={abortSignal:this.options.signal},this.gzipProbeDepth=0}getTokenizerOptions(){return{...this.tokenizerOptions}}createTokenizerFromWebStream(a){return function(a){let b=a?.streamReader;if(b?.constructor?.name!=="WebStreamByobReader")return a;let{reader:c}=b,d=async()=>{await c.cancel(),c.releaseLock()};return b.close=d,b.abort=async()=>{b.interrupted=!0,await d()},a}(q.fromWebStream(a,this.getTokenizerOptions()))}async parseTokenizer(a,b=0){this.detectionReentryCount=b;let c=a.position;for(let b of this.detectors){let d;try{d=await b.detect(a)}catch(a){if(a instanceof s.EndOfStreamError||a instanceof K)return;throw a}if(d)return d;if(c!==a.position)return}}async fromTokenizer(a){try{return await this.parseTokenizer(a)}finally{await a.close()}}async fromBuffer(a){if(!(a instanceof Uint8Array||a instanceof ArrayBuffer))throw TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof a}\``);let b=a instanceof Uint8Array?a:new Uint8Array(a);if(b?.length>1)return this.fromTokenizer(q.fromBuffer(b,this.getTokenizerOptions()))}async fromBlob(a){this.options.signal?.throwIfAborted();let b=q.fromBlob(a,this.getTokenizerOptions());return this.fromTokenizer(b)}async fromStream(a){this.options.signal?.throwIfAborted();let b=this.createTokenizerFromWebStream(a);return this.fromTokenizer(b)}async toDetectionStream(a,b){var c,d,e;let f,g,h=Number.isFinite(c=b?.sampleSize??4100)?Math.max(1,Math.trunc(c)):4100,i=a.getReader({mode:"byob"});try{let{value:a,done:b}=await (d=new Uint8Array(h),e=this.options.signal,void 0===e?i.read(d):(e.throwIfAborted(),new Promise((a,b)=>{let c=()=>{e.removeEventListener("abort",f)},f=()=>{let a=e.reason;c(),(async()=>{try{await i.cancel(a)}catch{}})(),b(a)};e.addEventListener("abort",f,{once:!0}),(async()=>{try{let b=await i.read(d);c(),a(b)}catch(a){c(),b(a)}})()})));if(g=a,!b&&a)try{f=await this.fromBuffer(a.subarray(0,h))}catch(a){if(!(a instanceof s.EndOfStreamError))throw a;f=void 0}g=a}finally{i.releaseLock()}let j=new TransformStream({async start(a){a.enqueue(g)},transform(a,b){b.enqueue(a)}}),k=a.pipeThrough(j);return k.fileType=f,k}async detectGzip(a){let b,c,d,e,f,g,h,i,j;if(this.gzipProbeDepth>=1)return{ext:"gz",mime:"application/gzip"};let k=(f=new D(a).inflate().getReader(),g=0,h=!1,i=!1,j=async a=>{h||i||(i=!0,await f.cancel(a))},new ReadableStream({async pull(a){if(g>=0x1000000){a.close(),await j();return}let{done:b,value:c}=await f.read();if(b||!c){h=!0,a.close();return}let d=0x1000000-g;if(c.length>d){a.enqueue(c.subarray(0,d)),g+=d,a.close(),await j();return}a.enqueue(c),g+=c.length},async cancel(a){await j(a)}})),l=U(a);if(l){let a=new AbortController;b=setTimeout(()=>{a.abort(new DOMException("Operation timed out after 100 ms","TimeoutError"))},100),c=void 0===this.options.signal?a.signal:AbortSignal.any([this.options.signal,a.signal]),(d=new Y({...this.options,signal:c})).gzipProbeDepth=this.gzipProbeDepth+1}else this.gzipProbeDepth++;try{e=await (d??this).fromStream(k)}catch(a){if(a?.name==="AbortError"&&c?.reason?.name!=="TimeoutError")throw a}finally{clearTimeout(b),!l&&this.gzipProbeDepth--}return e?.ext==="tar"?{ext:"tar.gz",mime:"application/gzip"}:{ext:"gz",mime:"application/gzip"}}check(a,b){return T(this.buffer,a,b)}checkString(a,b){return this.check(function(a,b){if("utf-16le"===b){let b=[];for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);b.push(255&d,d>>8&255)}return b}if("utf-16be"===b){let b=[];for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);b.push(d>>8&255,255&d)}return b}return[...a].map(a=>a.charCodeAt(0))}(a,b?.encoding),b)}detectConfident=async a=>{if(this.buffer=new Uint8Array(4100),void 0===a.fileInfo.size&&(a.fileInfo.size=Number.MAX_SAFE_INTEGER),this.tokenizer=a,U(a)&&(await a.peekBuffer(this.buffer,{length:3,mayBeLess:!0}),this.check([31,139,8])))return this.detectGzip(a);if(await a.peekBuffer(this.buffer,{length:32,mayBeLess:!0}),this.check([66,77]))return{ext:"bmp",mime:"image/bmp"};if(this.check([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"};if(this.check([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(this.check([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if(this.check([37,33]))return(await a.peekBuffer(this.buffer,{length:24,mayBeLess:!0}),this.checkString("PS-Adobe-",{offset:2})&&this.checkString(" EPSF-",{offset:14}))?{ext:"eps",mime:"application/eps"}:{ext:"ps",mime:"application/postscript"};if(this.check([31,160])||this.check([31,157]))return{ext:"Z",mime:"application/x-compress"};if(this.check([199,113]))return{ext:"cpio",mime:"application/x-cpio"};if(this.check([96,234]))return{ext:"arj",mime:"application/x-arj"};if(this.check([239,187,191])){if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,await this.tokenizer.ignore(3),this.detectConfident(a)}if(this.check([71,73,70]))return{ext:"gif",mime:"image/gif"};if(this.check([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(this.check([31,139,8]))return this.detectGzip(a);if(this.check([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(this.checkString("ID3")){await M(a,6,{maximumLength:6,reason:"ID3 header prefix"});let b=await a.readToken(F),c=U(a);if(!Number.isFinite(b)||b<0||c&&(b>0x1000000||a.position+b>0x1000000))return;if(a.position+b>a.fileInfo.size){if(c)return;return{ext:"mp3",mime:"audio/mpeg"}}try{await M(a,b,{maximumLength:c?0x1000000:a.fileInfo.size,reason:"ID3 payload"})}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,this.parseTokenizer(a,this.detectionReentryCount)}if(this.checkString("MP+"))return{ext:"mpc",mime:"audio/x-musepack"};if((67===this.buffer[0]||70===this.buffer[0])&&this.check([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(this.check([255,216,255]))return this.check([247],{offset:3})?{ext:"jls",mime:"image/jls"}:{ext:"jpg",mime:"image/jpeg"};if(this.check([79,98,106,1]))return{ext:"avro",mime:"application/avro"};if(this.checkString("FLIF"))return{ext:"flif",mime:"image/flif"};if(this.checkString("8BPS"))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(this.checkString("MPCK"))return{ext:"mpc",mime:"audio/x-musepack"};if(this.checkString("FORM"))return{ext:"aif",mime:"audio/aiff"};if(this.checkString("icns",{offset:0}))return{ext:"icns",mime:"image/icns"};if(this.check([80,75,3,4])){let b,c={hasContentTypesEntry:!1,hasParsedContentTypesEntry:!1,isParsingContentTypes:!1,hasUnparseableContentTypes:!1,hasWordDirectory:!1,hasPresentationDirectory:!1,hasSpreadsheetDirectory:!1,hasThreeDimensionalModelEntry:!1};try{await new C(a).unzip(a=>{var d;(d=a.filename).startsWith("word/")&&(c.hasWordDirectory=!0),d.startsWith("ppt/")&&(c.hasPresentationDirectory=!0),d.startsWith("xl/")&&(c.hasSpreadsheetDirectory=!0),d.startsWith("3D/")&&d.endsWith(".model")&&(c.hasThreeDimensionalModelEntry=!0);let e="[Content_Types].xml"===a.filename,f=X(c);if(!e&&f)return b=f,{stop:!0};switch(a.filename){case"META-INF/mozilla.rsa":return b={ext:"xpi",mime:"application/x-xpinstall"},{stop:!0};case"META-INF/MANIFEST.MF":return b={ext:"jar",mime:"application/java-archive"},{stop:!0};case"mimetype":if(!W(a,1048576))return{};return{async handler(a){let c=new TextDecoder("utf-8").decode(a).trim();b=S(c)},stop:!0};case"[Content_Types].xml":if(c.hasContentTypesEntry=!0,!W(a,1048576))return c.hasUnparseableContentTypes=!0,{};return c.isParsingContentTypes=!0,{async handler(a){let d=new TextDecoder("utf-8").decode(a),e=function(a){let b=a.indexOf('.main+xml"');if(-1===b){let b="application/vnd.ms-package.3dmanufacturing-3dmodel+xml";return a.includes(`ContentType="${b}"`)?b:void 0}let c=a.slice(0,b),d=c.lastIndexOf('"');return c.slice(d+1)}(d);e&&(b=S(e)),c.hasParsedContentTypesEntry=!0,c.isParsingContentTypes=!1},stop:!0};default:if(/classes\d*\.dex/.test(a.filename))return b={ext:"apk",mime:"application/vnd.android.package-archive"},{stop:!0};return{}}})}catch(a){if(!function(a){if(a instanceof s.EndOfStreamError||a instanceof K)return!0;if(!(a instanceof Error))return!1;if(H.has(a.message)||J.has(a.code))return!0;for(let b of I)if(a.message.startsWith(b))return!0;return!1}(a))throw a;c.isParsingContentTypes&&(c.isParsingContentTypes=!1,c.hasUnparseableContentTypes=!0)}return b??X(c)??{ext:"zip",mime:"application/zip"}}if(this.checkString("OggS")){await a.ignore(28);let b=new Uint8Array(8);return(await a.readBuffer(b),T(b,[79,112,117,115,72,101,97,100]))?{ext:"opus",mime:"audio/ogg; codecs=opus"}:T(b,[128,116,104,101,111,114,97])?{ext:"ogv",mime:"video/ogg"}:T(b,[1,118,105,100,101,111,0])?{ext:"ogm",mime:"video/ogg"}:T(b,[127,70,76,65,67])?{ext:"oga",mime:"audio/ogg"}:T(b,[83,112,101,101,120,32,32])?{ext:"spx",mime:"audio/ogg"}:T(b,[1,118,111,114,98,105,115])?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"}}if(this.check([80,75])&&(3===this.buffer[2]||5===this.buffer[2]||7===this.buffer[2])&&(4===this.buffer[3]||6===this.buffer[3]||8===this.buffer[3]))return{ext:"zip",mime:"application/zip"};if(this.checkString("MThd"))return{ext:"mid",mime:"audio/midi"};if(this.checkString("wOFF")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff",mime:"font/woff"};if(this.checkString("wOF2")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(this.check([212,195,178,161])||this.check([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(this.checkString("DSD "))return{ext:"dsf",mime:"audio/x-dsf"};if(this.checkString("LZIP"))return{ext:"lz",mime:"application/x-lzip"};if(this.checkString("fLaC"))return{ext:"flac",mime:"audio/flac"};if(this.check([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(this.checkString("wvpk"))return{ext:"wv",mime:"audio/wavpack"};if(this.checkString("%PDF"))return{ext:"pdf",mime:"application/pdf"};if(this.check([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(this.check([73,73])){let a=await this.readTiffHeader(!1);if(a)return a}if(this.check([77,77])){let a=await this.readTiffHeader(!0);if(a)return a}if(this.checkString("MAC "))return{ext:"ape",mime:"audio/ape"};if(this.check([26,69,223,163])){async function b(){let b=await a.peekNumber(r.UINT8),c=128,d=0;for(;(b&c)==0&&0!==c;)++d,c>>=1;let e=new Uint8Array(d+1);return await N(a,e,void 0,{maximumLength:e.length,reason:"EBML field"}),e}async function c(){let a=await b(),c=await b();c[0]^=128>>c.length-1;let d=Math.min(6,c.length),e=new DataView(a.buffer),f=new DataView(c.buffer,c.length-d,d);return{id:(0,E.getUintBE)(e),len:(0,E.getUintBE)(f)}}async function d(b){let d=0;for(;b>0;){if(++d>256||V(a,f,0x1000000))return;let e=a.position,g=await c();if(17026===g.id){if(g.len>64)return;let b=L(g.len,64,"EBML DocType");return(await a.readToken(new r.StringType(b))).replaceAll(/\00.*$/g,"")}if(U(a)&&(!Number.isFinite(g.len)||g.len<0||g.len>1048576)||(await M(a,g.len,{maximumLength:U(a)?1048576:a.fileInfo.size,reason:"EBML payload"}),--b,a.position<=e))return}}let e=await c(),f=a.position;switch(await d(e.len)){case"webm":return{ext:"webm",mime:"video/webm"};case"matroska":return{ext:"mkv",mime:"video/matroska"};default:return}}if(this.checkString("SQLi"))return{ext:"sqlite",mime:"application/x-sqlite3"};if(this.check([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(this.checkString("Cr24"))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(this.checkString("MSCF")||this.checkString("ISc("))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(this.check([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(this.check([197,208,211,198]))return{ext:"eps",mime:"application/eps"};if(this.check([40,181,47,253]))return{ext:"zst",mime:"application/zstd"};if(this.check([127,69,76,70]))return{ext:"elf",mime:"application/x-elf"};if(this.check([33,66,68,78]))return{ext:"pst",mime:"application/vnd.ms-outlook"};if(this.checkString("PAR1")||this.checkString("PARE"))return{ext:"parquet",mime:"application/vnd.apache.parquet"};if(this.checkString("ttcf"))return{ext:"ttc",mime:"font/collection"};if(this.check([254,237,250,206])||this.check([254,237,250,207])||this.check([206,250,237,254])||this.check([207,250,237,254]))return{ext:"macho",mime:"application/x-mach-binary"};if(this.check([4,34,77,24]))return{ext:"lz4",mime:"application/x-lz4"};if(this.checkString("regf"))return{ext:"dat",mime:"application/x-ft-windows-registry-hive"};if(this.checkString("$FL2")||this.checkString("$FL3"))return{ext:"sav",mime:"application/x-spss-sav"};if(this.check([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(this.checkString("#!AMR"))return{ext:"amr",mime:"audio/amr"};if(this.checkString("{\\rtf"))return{ext:"rtf",mime:"application/rtf"};if(this.check([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(this.checkString("IMPM"))return{ext:"it",mime:"audio/x-it"};if(this.checkString("-lh0-",{offset:2})||this.checkString("-lh1-",{offset:2})||this.checkString("-lh2-",{offset:2})||this.checkString("-lh3-",{offset:2})||this.checkString("-lh4-",{offset:2})||this.checkString("-lh5-",{offset:2})||this.checkString("-lh6-",{offset:2})||this.checkString("-lh7-",{offset:2})||this.checkString("-lzs-",{offset:2})||this.checkString("-lz4-",{offset:2})||this.checkString("-lz5-",{offset:2})||this.checkString("-lhd-",{offset:2}))return{ext:"lzh",mime:"application/x-lzh-compressed"};if(this.check([0,0,1,186])){if(this.check([33],{offset:4,mask:[241]}))return{ext:"mpg",mime:"video/MP1S"};if(this.check([68],{offset:4,mask:[196]}))return{ext:"mpg",mime:"video/MP2P"}}if(this.checkString("ITSF"))return{ext:"chm",mime:"application/vnd.ms-htmlhelp"};if(this.check([202,254,186,190])){let a=r.UINT32_BE.get(this.buffer,4),b=r.UINT16_BE.get(this.buffer,6);if(a>0&&a<=30)return{ext:"macho",mime:"application/x-mach-binary"};if(b>30)return{ext:"class",mime:"application/java-vm"}}if(this.checkString(".RMF"))return{ext:"rm",mime:"application/vnd.rn-realmedia"};if(this.checkString("DRACO"))return{ext:"drc",mime:"application/vnd.google.draco"};if(this.check([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(this.checkString("<?xml "))return{ext:"xml",mime:"application/xml"};if(this.check([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(this.check([82,97,114,33,26,7])&&(0===this.buffer[6]||1===this.buffer[6]))return{ext:"rar",mime:"application/x-rar-compressed"};if(this.checkString("solid "))return{ext:"stl",mime:"model/stl"};if(this.checkString("AC")){let a=new r.StringType(4,"latin1").get(this.buffer,2);if(a.match("^d*")&&a>=1e3&&a<=1050)return{ext:"dwg",mime:"image/vnd.dwg"}}if(this.checkString("070707"))return{ext:"cpio",mime:"application/x-cpio"};if(this.checkString("BLENDER"))return{ext:"blend",mime:"application/x-blender"};if(this.checkString("!<arch>"))return(await a.ignore(8),"debian-binary"===await a.readToken(new r.StringType(13,"ascii")))?{ext:"deb",mime:"application/x-deb"}:{ext:"ar",mime:"application/x-unix-archive"};if(this.checkString("WEBVTT")&&["\n","\r"," "," ","\0"].some(a=>this.checkString(a,{offset:6})))return{ext:"vtt",mime:"text/vtt"};if(this.check([137,80,78,71,13,10,26,10])){let b={ext:"png",mime:"image/png"},c={ext:"apng",mime:"image/apng"};async function e(){return{length:await a.readToken(r.INT32_BE),type:await a.readToken(new r.StringType(4,"latin1"))}}await a.ignore(8);let d=U(a),f=a.position,g=0,h=!1;do{if(++g>512||V(a,f,0x1000000))break;let i=a.position,j=await e();if(j.length<0)return;if("IHDR"===j.type){if(13!==j.length)return;h=!0}switch(j.type){case"IDAT":return b;case"acTL":return c;default:if(!h&&"CgBI"!==j.type)return;if(d&&j.length>1048576)return h&&(32&j.type.codePointAt(0))!=0?b:void 0;try{await M(a,j.length+4,{maximumLength:d?1048580:a.fileInfo.size,reason:"PNG chunk payload"})}catch(a){if(!d&&(a instanceof K||a instanceof s.EndOfStreamError))return b;throw a}}if(a.position<=i)break}while(a.position+8<a.fileInfo.size)return b}if(this.check([65,82,82,79,87,49,0,0]))return{ext:"arrow",mime:"application/vnd.apache.arrow.file"};if(this.check([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};if(this.check([102,114,101,101],{offset:4})||this.check([109,100,97,116],{offset:4})||this.check([109,111,111,118],{offset:4})||this.check([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(this.check([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(this.checkString("gimp xcf "))return{ext:"xcf",mime:"image/x-xcf"};if(this.checkString("ftyp",{offset:4})&&(96&this.buffer[8])!=0){let a=new r.StringType(4,"latin1").get(this.buffer,8).replace("\0"," ").trim();switch(a){case"avif":case"avis":return{ext:"avif",mime:"image/avif"};case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt":return{ext:"mov",mime:"video/quicktime"};case"M4V":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P":return{ext:"m4p",mime:"video/mp4"};case"M4B":return{ext:"m4b",mime:"audio/mp4"};case"M4A":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V":return{ext:"f4v",mime:"video/mp4"};case"F4P":return{ext:"f4p",mime:"video/mp4"};case"F4A":return{ext:"f4a",mime:"audio/mp4"};case"F4B":return{ext:"f4b",mime:"audio/mp4"};case"crx":return{ext:"cr3",mime:"image/x-canon-cr3"};default:if(a.startsWith("3g")){if(a.startsWith("3g2"))return{ext:"3g2",mime:"video/3gpp2"};return{ext:"3gp",mime:"video/3gpp"}}return{ext:"mp4",mime:"video/mp4"}}}if(this.checkString("REGEDIT4\r\n"))return{ext:"reg",mime:"application/x-ms-regedit"};if(this.check([82,73,70,70])){if(this.checkString("WEBP",{offset:8}))return{ext:"webp",mime:"image/webp"};if(this.check([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(this.check([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/wav"};if(this.check([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(this.check([73,73,85,0,24,0,0,0,136,231,116,216]))return{ext:"rw2",mime:"image/x-panasonic-rw2"};if(this.check([48,38,178,117,142,102,207,17,166,217])){let b=!1;try{async function f(){let b=new Uint8Array(16);return await N(a,b,void 0,{maximumLength:b.length,reason:"ASF header GUID"}),{id:b,size:Number(await a.readToken(r.UINT64_LE))}}await M(a,30,{maximumLength:30,reason:"ASF header prelude"});let c=U(a),d=a.position,e=0;for(;a.position+24<a.fileInfo.size&&!(++e>512||V(a,d,0x1000000));){let d=a.position,e=await f(),g=e.size-24;if(!Number.isFinite(g)||g<0){b=!0;break}if(T(e.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){let b=new Uint8Array(16);if(g-=await N(a,b,void 0,{maximumLength:b.length,reason:"ASF stream type GUID"}),T(b,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"audio/x-ms-asf"};if(T(b,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"video/x-ms-asf"};break}if(c&&g>1048576||(await M(a,g,{maximumLength:c?1048576:a.fileInfo.size,reason:"ASF header payload"}),a.position<=d)){b=!0;break}}}catch(c){if(c instanceof s.EndOfStreamError||c instanceof K)U(a)&&(b=!0);else throw c}if(b)return;return{ext:"asf",mime:"application/vnd.ms-asf"}}if(this.check([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if((this.check([126,16,4])||this.check([126,24,4]))&&this.check([48,77,73,69],{offset:4}))return{ext:"mie",mime:"application/x-mie"};if(this.check([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:"shp",mime:"application/x-esri-shape"};if(this.check([255,79,255,81]))return{ext:"j2c",mime:"image/j2c"};if(this.check([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await a.ignore(20),await a.readToken(new r.StringType(4,"ascii"))){case"jp2 ":return{ext:"jp2",mime:"image/jp2"};case"jpx ":return{ext:"jpx",mime:"image/jpx"};case"jpm ":return{ext:"jpm",mime:"image/jpm"};case"mjp2":return{ext:"mj2",mime:"image/mj2"};default:return}if(this.check([255,10])||this.check([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:"jxl",mime:"image/jxl"};if(this.check([254,255]))return this.checkString("<?xml ",{offset:2,encoding:"utf-16be"})?{ext:"xml",mime:"application/xml"}:void 0;if(this.check([208,207,17,224,161,177,26,225]))return{ext:"cfb",mime:"application/x-cfb"};if(await a.peekBuffer(this.buffer,{length:Math.min(256,a.fileInfo.size),mayBeLess:!0}),this.check([97,99,115,112],{offset:36}))return{ext:"icc",mime:"application/vnd.iccprofile"};if(this.checkString("**ACE",{offset:7})&&this.checkString("**",{offset:12}))return{ext:"ace",mime:"application/x-ace-compressed"};if(this.checkString("BEGIN:")){if(this.checkString("VCARD",{offset:6}))return{ext:"vcf",mime:"text/vcard"};if(this.checkString("VCALENDAR",{offset:6}))return{ext:"ics",mime:"text/calendar"}}if(this.checkString("FUJIFILMCCD-RAW"))return{ext:"raf",mime:"image/x-fujifilm-raf"};if(this.checkString("Extended Module:"))return{ext:"xm",mime:"audio/x-xm"};if(this.checkString("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(this.check([4,0,0,0])&&this.buffer.length>=16){let a=new DataView(this.buffer.buffer).getUint32(12,!0);if(a>12&&this.buffer.length>=a+16)try{let b=new TextDecoder().decode(this.buffer.subarray(16,a+16));if(JSON.parse(b).files)return{ext:"asar",mime:"application/x-asar"}}catch{}}if(this.check([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(this.checkString("SCRM",{offset:44}))return{ext:"s3m",mime:"audio/x-s3m"};if(this.check([71])&&this.check([71],{offset:188})||this.check([71],{offset:4})&&this.check([71],{offset:196}))return{ext:"mts",mime:"video/mp2t"};if(this.check([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(this.check([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(this.check([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(this.check([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(this.checkString("Kaydara FBX Binary \0"))return{ext:"fbx",mime:"application/x.autodesk.fbx"};if(this.check([76,80],{offset:34})&&(this.check([0,0,1],{offset:8})||this.check([1,0,2],{offset:8})||this.check([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(this.check([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:"indd",mime:"application/x-indesign"};if(this.check([255,255,0,0,7,0,0,0,4,0,0,0,1,0,1,0])||this.check([0,0,255,255,0,0,0,7,0,0,0,4,0,1,0,1]))return{ext:"jmp",mime:"application/x-jmp-data"};if(await a.peekBuffer(this.buffer,{length:Math.min(512,a.fileInfo.size),mayBeLess:!0}),this.checkString("ustar",{offset:257})&&(this.checkString("\0",{offset:262})||this.checkString(" ",{offset:262}))||this.check([0,0,0,0,0,0],{offset:257})&&function(a,b=0){let c=Number.parseInt(new r.StringType(6).get(a,148).replace(/\0.*$/,"").trim(),8);if(Number.isNaN(c))return!1;let d=256;for(let c=b;c<b+148;c++)d+=a[c];for(let c=b+156;c<b+512;c++)d+=a[c];return c===d}(this.buffer))return{ext:"tar",mime:"application/x-tar"};if(this.check([255,254])){let a="utf-16le";return this.checkString("<?xml ",{offset:2,encoding:a})?{ext:"xml",mime:"application/xml"}:this.check([255,14],{offset:2})&&this.checkString("SketchUp Model",{offset:4,encoding:a})?{ext:"skp",mime:"application/vnd.sketchup.skp"}:this.checkString("Windows Registry Editor Version 5.00\r\n",{offset:2,encoding:a})?{ext:"reg",mime:"application/x-ms-regedit"}:void 0}if(this.checkString("-----BEGIN PGP MESSAGE-----"))return{ext:"pgp",mime:"application/pgp-encrypted"}};detectImprecise=async a=>{var b;this.buffer=new Uint8Array(4100);let c=Number.isFinite(b=a.fileInfo.size)?Math.max(0,b):Number.MAX_SAFE_INTEGER;if(await a.peekBuffer(this.buffer,{length:Math.min(8,c),mayBeLess:!0}),this.check([0,0,1,186])||this.check([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(this.check([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(this.check([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(this.check([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(await a.peekBuffer(this.buffer,{length:Math.min(2+this.options.mpegOffsetTolerance,c),mayBeLess:!0}),this.buffer.length>=2+this.options.mpegOffsetTolerance)for(let a=0;a<=this.options.mpegOffsetTolerance;++a){let b=this.scanMpeg(a);if(b)return b}};async readTiffTag(a){let b=await this.tokenizer.readToken(a?r.UINT16_BE:r.UINT16_LE);switch(await this.tokenizer.ignore(10),b){case 50341:return{ext:"arw",mime:"image/x-sony-arw"};case 50706:return{ext:"dng",mime:"image/x-adobe-dng"}}}async readTiffIFD(a){let b=await this.tokenizer.readToken(a?r.UINT16_BE:r.UINT16_LE);if(!(b>512)&&(!U(this.tokenizer)||!(2+12*b>0x1000000)))for(let c=0;c<b;++c){let b=await this.readTiffTag(a);if(b)return b}}async readTiffHeader(a){let b={ext:"tif",mime:"image/tiff"},c=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,2),d=(a?r.UINT32_BE:r.UINT32_LE).get(this.buffer,4);if(42===c){let c;if(d>=6){if(this.checkString("CR",{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(d>=8){let b=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,8),c=(a?r.UINT16_BE:r.UINT16_LE).get(this.buffer,10);if(28===b&&254===c||31===b&&11===c)return{ext:"nef",mime:"image/x-nikon-nef"}}}if(U(this.tokenizer)&&d>1048576)return b;let e=U(this.tokenizer)?0x1000000:this.tokenizer.fileInfo.size;try{await M(this.tokenizer,d,{maximumLength:e,reason:"TIFF IFD offset"})}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}try{c=await this.readTiffIFD(a)}catch(a){if(a instanceof s.EndOfStreamError)return;throw a}return c??b}if(43===c)return b}scanMpeg(a){if(this.check([255,224],{offset:a,mask:[255,224]})){if(this.check([16],{offset:a+1,mask:[22]}))return this.check([8],{offset:a+1,mask:[8]}),{ext:"aac",mime:"audio/aac"};if(this.check([2],{offset:a+1,mask:[6]}))return{ext:"mp3",mime:"audio/mpeg"};if(this.check([4],{offset:a+1,mask:[6]}))return{ext:"mp2",mime:"audio/mpeg"};if(this.check([6],{offset:a+1,mask:[6]}))return{ext:"mp1",mime:"audio/mpeg"}}}}var Z=a.i(91465),$=a.i(96151),_=a.i(44753);let aa={multiple:!1},ab={year:aa,track:aa,disk:aa,title:aa,artist:aa,artists:{multiple:!0,unique:!0},albumartist:aa,albumartists:{multiple:!0,unique:!0},album:aa,date:aa,originaldate:aa,originalyear:aa,releasedate:aa,comment:{multiple:!0,unique:!1},genre:{multiple:!0,unique:!0},picture:{multiple:!0,unique:!0},composer:{multiple:!0,unique:!0},lyrics:{multiple:!0,unique:!1},albumsort:{multiple:!1,unique:!0},titlesort:{multiple:!1,unique:!0},work:{multiple:!1,unique:!0},artistsort:{multiple:!1,unique:!0},albumartistsort:{multiple:!1,unique:!0},composersort:{multiple:!1,unique:!0},lyricist:{multiple:!0,unique:!0},writer:{multiple:!0,unique:!0},conductor:{multiple:!0,unique:!0},remixer:{multiple:!0,unique:!0},arranger:{multiple:!0,unique:!0},engineer:{multiple:!0,unique:!0},producer:{multiple:!0,unique:!0},technician:{multiple:!0,unique:!0},djmixer:{multiple:!0,unique:!0},mixer:{multiple:!0,unique:!0},label:{multiple:!0,unique:!0},grouping:aa,subtitle:{multiple:!0},discsubtitle:aa,totaltracks:aa,totaldiscs:aa,compilation:aa,rating:{multiple:!0},bpm:aa,mood:aa,media:aa,catalognumber:{multiple:!0,unique:!0},tvShow:aa,tvShowSort:aa,tvSeason:aa,tvEpisode:aa,tvEpisodeId:aa,tvNetwork:aa,podcast:aa,podcasturl:aa,releasestatus:aa,releasetype:{multiple:!0},releasecountry:aa,script:aa,language:aa,copyright:aa,license:aa,encodedby:aa,encodersettings:aa,gapless:aa,barcode:aa,isrc:{multiple:!0},asin:aa,musicbrainz_recordingid:aa,musicbrainz_trackid:aa,musicbrainz_albumid:aa,musicbrainz_artistid:{multiple:!0},musicbrainz_albumartistid:{multiple:!0},musicbrainz_releasegroupid:aa,musicbrainz_workid:aa,musicbrainz_trmid:aa,musicbrainz_discid:aa,acoustid_id:aa,acoustid_fingerprint:aa,musicip_puid:aa,musicip_fingerprint:aa,website:aa,"performer:instrument":{multiple:!0,unique:!0},averageLevel:aa,peakLevel:aa,notes:{multiple:!0,unique:!1},key:aa,originalalbum:aa,originalartist:aa,discogs_artist_id:{multiple:!0,unique:!0},discogs_release_id:aa,discogs_label_id:aa,discogs_master_release_id:aa,discogs_votes:aa,discogs_rating:aa,replaygain_track_peak:aa,replaygain_track_gain:aa,replaygain_album_peak:aa,replaygain_album_gain:aa,replaygain_track_minmax:aa,replaygain_album_minmax:aa,replaygain_undo:aa,description:{multiple:!0},longDescription:aa,category:{multiple:!0},hdVideo:aa,keywords:{multiple:!0},movement:aa,movementIndex:aa,movementTotal:aa,podcastId:aa,showMovement:aa,stik:aa,playCounter:aa};class ac{static toIntOrNull(a){let b=Number.parseInt(a,10);return Number.isNaN(b)?null:b}static normalizeTrack(a){let b=a.toString().split("/");return{no:Number.parseInt(b[0],10)||null,of:Number.parseInt(b[1],10)||null}}constructor(a,b){this.tagTypes=a,this.tagMap=b}mapGenericTag(a,b){a={id:a.id,value:a.value},this.postMap(a,b);let c=this.getCommonName(a.id);return c?{id:c,value:a.value}:null}getCommonName(a){return this.tagMap[a]}postMap(a,b){}}ac.maxRatingScore=1;let ad={title:"title",artist:"artist",album:"album",year:"year",comment:"comment",track:"track",genre:"genre"};class ae extends ac{constructor(){super(["ID3v1"],ad)}}class af extends ac{constructor(a,b){const c={};for(const a of Object.keys(b))c[a.toUpperCase()]=b[a];super(a,c)}getCommonName(a){return this.tagMap[a.toUpperCase()]}}var ag=a.i(82670);let ah={TIT2:"title",TPE1:"artist","TXXX:Artists":"artists",TPE2:"albumartist",TALB:"album",TDRV:"date",TORY:"originalyear",TPOS:"disk",TCON:"genre",APIC:"picture",TCOM:"composer",USLT:"lyrics",TSOA:"albumsort",TSOT:"titlesort",TOAL:"originalalbum",TSOP:"artistsort",TSO2:"albumartistsort",TSOC:"composersort",TEXT:"lyricist","TXXX:Writer":"writer",TPE3:"conductor",TPE4:"remixer","IPLS:arranger":"arranger","IPLS:engineer":"engineer","IPLS:producer":"producer","IPLS:DJ-mix":"djmixer","IPLS:mix":"mixer",TPUB:"label",TIT1:"grouping",TIT3:"subtitle",TRCK:"track",TCMP:"compilation",POPM:"rating",TBPM:"bpm",TMED:"media","TXXX:CATALOGNUMBER":"catalognumber","TXXX:MusicBrainz Album Status":"releasestatus","TXXX:MusicBrainz Album Type":"releasetype","TXXX:MusicBrainz Album Release Country":"releasecountry","TXXX:RELEASECOUNTRY":"releasecountry","TXXX:SCRIPT":"script",TLAN:"language",TCOP:"copyright",WCOP:"license",TENC:"encodedby",TSSE:"encodersettings","TXXX:BARCODE":"barcode","TXXX:ISRC":"isrc",TSRC:"isrc","TXXX:ASIN":"asin","TXXX:originalyear":"originalyear","UFID:http://musicbrainz.org":"musicbrainz_recordingid","TXXX:MusicBrainz Release Track Id":"musicbrainz_trackid","TXXX:MusicBrainz Album Id":"musicbrainz_albumid","TXXX:MusicBrainz Artist Id":"musicbrainz_artistid","TXXX:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","TXXX:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","TXXX:MusicBrainz Work Id":"musicbrainz_workid","TXXX:MusicBrainz TRM Id":"musicbrainz_trmid","TXXX:MusicBrainz Disc Id":"musicbrainz_discid","TXXX:ACOUSTID_ID":"acoustid_id","TXXX:Acoustid Id":"acoustid_id","TXXX:Acoustid Fingerprint":"acoustid_fingerprint","TXXX:MusicIP PUID":"musicip_puid","TXXX:MusicMagic Fingerprint":"musicip_fingerprint",WOAR:"website",TDRC:"date",TYER:"year",TDOR:"originaldate","TIPL:arranger":"arranger","TIPL:engineer":"engineer","TIPL:producer":"producer","TIPL:DJ-mix":"djmixer","TIPL:mix":"mixer",TMOO:"mood",SYLT:"lyrics",TSST:"discsubtitle",TKEY:"key",COMM:"comment",TOPE:"originalartist","PRIV:AverageLevel":"averageLevel","PRIV:PeakLevel":"peakLevel","TXXX:DISCOGS_ARTIST_ID":"discogs_artist_id","TXXX:DISCOGS_ARTISTS":"artists","TXXX:DISCOGS_ARTIST_NAME":"artists","TXXX:DISCOGS_ALBUM_ARTISTS":"albumartist","TXXX:DISCOGS_CATALOG":"catalognumber","TXXX:DISCOGS_COUNTRY":"releasecountry","TXXX:DISCOGS_DATE":"originaldate","TXXX:DISCOGS_LABEL":"label","TXXX:DISCOGS_LABEL_ID":"discogs_label_id","TXXX:DISCOGS_MASTER_RELEASE_ID":"discogs_master_release_id","TXXX:DISCOGS_RATING":"discogs_rating","TXXX:DISCOGS_RELEASED":"date","TXXX:DISCOGS_RELEASE_ID":"discogs_release_id","TXXX:DISCOGS_VOTES":"discogs_votes","TXXX:CATALOGID":"catalognumber","TXXX:STYLE":"genre","TXXX:REPLAYGAIN_TRACK_PEAK":"replaygain_track_peak","TXXX:REPLAYGAIN_TRACK_GAIN":"replaygain_track_gain","TXXX:REPLAYGAIN_ALBUM_PEAK":"replaygain_album_peak","TXXX:REPLAYGAIN_ALBUM_GAIN":"replaygain_album_gain","TXXX:MP3GAIN_MINMAX":"replaygain_track_minmax","TXXX:MP3GAIN_ALBUM_MINMAX":"replaygain_album_minmax","TXXX:MP3GAIN_UNDO":"replaygain_undo",MVNM:"movement",MVIN:"movementIndex",PCST:"podcast",TCAT:"category",TDES:"description",TDRL:"releasedate",TGID:"podcastId",TKWD:"keywords",WFED:"podcasturl",GRP1:"grouping",PCNT:"playCounter"};class ai extends af{static toRating(a){return{source:a.email,rating:a.rating>0?(a.rating-1)/254*ac.maxRatingScore:void 0}}constructor(){super(["ID3v2.3","ID3v2.4"],ah)}postMap(a,b){switch(a.id){case"UFID":{let b=a.value;"http://musicbrainz.org"===b.owner_identifier&&(a.id+=`:${b.owner_identifier}`,a.value=(0,ag.decodeString)(b.identifier,"latin1"))}break;case"PRIV":{let c=a.value;switch(c.owner_identifier){case"AverageLevel":case"PeakValue":a.id+=`:${c.owner_identifier}`,a.value=4===c.data.length?r.UINT32_LE.get(c.data,0):null,null===a.value&&b.addWarning("Failed to parse PRIV:PeakValue");break;default:b.addWarning(`Unknown PRIV owner-identifier: ${c.data}`)}}break;case"POPM":a.value=ai.toRating(a.value)}}}let aj={Title:"title",Author:"artist","WM/AlbumArtist":"albumartist","WM/AlbumTitle":"album","WM/Year":"date","WM/OriginalReleaseTime":"originaldate","WM/OriginalReleaseYear":"originalyear",Description:"comment","WM/TrackNumber":"track","WM/PartOfSet":"disk","WM/Genre":"genre","WM/Composer":"composer","WM/Lyrics":"lyrics","WM/AlbumSortOrder":"albumsort","WM/TitleSortOrder":"titlesort","WM/ArtistSortOrder":"artistsort","WM/AlbumArtistSortOrder":"albumartistsort","WM/ComposerSortOrder":"composersort","WM/Writer":"lyricist","WM/Conductor":"conductor","WM/ModifiedBy":"remixer","WM/Engineer":"engineer","WM/Producer":"producer","WM/DJMixer":"djmixer","WM/Mixer":"mixer","WM/Publisher":"label","WM/ContentGroupDescription":"grouping","WM/SubTitle":"subtitle","WM/SetSubTitle":"discsubtitle","WM/IsCompilation":"compilation","WM/SharedUserRating":"rating","WM/BeatsPerMinute":"bpm","WM/Mood":"mood","WM/Media":"media","WM/CatalogNo":"catalognumber","MusicBrainz/Album Status":"releasestatus","MusicBrainz/Album Type":"releasetype","MusicBrainz/Album Release Country":"releasecountry","WM/Script":"script","WM/Language":"language",Copyright:"copyright",LICENSE:"license","WM/EncodedBy":"encodedby","WM/EncodingSettings":"encodersettings","WM/Barcode":"barcode","WM/ISRC":"isrc","MusicBrainz/Track Id":"musicbrainz_recordingid","MusicBrainz/Release Track Id":"musicbrainz_trackid","MusicBrainz/Album Id":"musicbrainz_albumid","MusicBrainz/Artist Id":"musicbrainz_artistid","MusicBrainz/Album Artist Id":"musicbrainz_albumartistid","MusicBrainz/Release Group Id":"musicbrainz_releasegroupid","MusicBrainz/Work Id":"musicbrainz_workid","MusicBrainz/TRM Id":"musicbrainz_trmid","MusicBrainz/Disc Id":"musicbrainz_discid","Acoustid/Id":"acoustid_id","Acoustid/Fingerprint":"acoustid_fingerprint","MusicIP/PUID":"musicip_puid","WM/ARTISTS":"artists","WM/InitialKey":"key",ASIN:"asin","WM/Work":"work","WM/AuthorURL":"website","WM/Picture":"picture"};class ak extends ac{static toRating(a){return{rating:Number.parseFloat(a+1)/5}}constructor(){super(["asf"],aj)}postMap(a){if("WM/SharedUserRating"===a.id){let b=a.id.split(":");a.value=ak.toRating(a.value),a.id=b[0]}}}let al={TT2:"title",TP1:"artist",TP2:"albumartist",TAL:"album",TYE:"year",COM:"comment",TRK:"track",TPA:"disk",TCO:"genre",PIC:"picture",TCM:"composer",TOR:"originaldate",TOT:"originalalbum",TXT:"lyricist",TP3:"conductor",TPB:"label",TT1:"grouping",TT3:"subtitle",TLA:"language",TCR:"copyright",WCP:"license",TEN:"encodedby",TSS:"encodersettings",WAR:"website",PCS:"podcast",TCP:"compilation",TDR:"date",TS2:"albumartistsort",TSA:"albumsort",TSC:"composersort",TSP:"artistsort",TST:"titlesort",WFD:"podcasturl",TBP:"bpm",GP1:"grouping"};class am extends af{constructor(){super(["ID3v2.2"],al)}}let an={Title:"title",Artist:"artist",Artists:"artists","Album Artist":"albumartist",Album:"album",Year:"date",Originalyear:"originalyear",Originaldate:"originaldate",Releasedate:"releasedate",Comment:"comment",Track:"track",Disc:"disk",DISCNUMBER:"disk",Genre:"genre","Cover Art (Front)":"picture","Cover Art (Back)":"picture",Composer:"composer",Lyrics:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",Lyricist:"lyricist",Writer:"writer",Conductor:"conductor",MixArtist:"remixer",Arranger:"arranger",Engineer:"engineer",Producer:"producer",DJMixer:"djmixer",Mixer:"mixer",Label:"label",Grouping:"grouping",Subtitle:"subtitle",DiscSubtitle:"discsubtitle",Compilation:"compilation",BPM:"bpm",Mood:"mood",Media:"media",CatalogNumber:"catalognumber",MUSICBRAINZ_ALBUMSTATUS:"releasestatus",MUSICBRAINZ_ALBUMTYPE:"releasetype",RELEASECOUNTRY:"releasecountry",Script:"script",Language:"language",Copyright:"copyright",LICENSE:"license",EncodedBy:"encodedby",EncoderSettings:"encodersettings",Barcode:"barcode",ISRC:"isrc",ASIN:"asin",musicbrainz_trackid:"musicbrainz_recordingid",musicbrainz_releasetrackid:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",Acoustid_Id:"acoustid_id",ACOUSTID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",Weblink:"website",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",MP3GAIN_MINMAX:"replaygain_track_minmax",MP3GAIN_UNDO:"replaygain_undo"};class ao extends af{constructor(){super(["APEv2"],an)}}let ap={"©nam":"title","©ART":"artist",aART:"albumartist","----:com.apple.iTunes:Band":"albumartist","©alb":"album","©day":"date","©cmt":"comment","©com":"comment",trkn:"track",disk:"disk","©gen":"genre",covr:"picture","©wrt":"composer","©lyr":"lyrics",soal:"albumsort",sonm:"titlesort",soar:"artistsort",soaa:"albumartistsort",soco:"composersort","----:com.apple.iTunes:LYRICIST":"lyricist","----:com.apple.iTunes:CONDUCTOR":"conductor","----:com.apple.iTunes:REMIXER":"remixer","----:com.apple.iTunes:ENGINEER":"engineer","----:com.apple.iTunes:PRODUCER":"producer","----:com.apple.iTunes:DJMIXER":"djmixer","----:com.apple.iTunes:MIXER":"mixer","----:com.apple.iTunes:LABEL":"label","©grp":"grouping","----:com.apple.iTunes:SUBTITLE":"subtitle","----:com.apple.iTunes:DISCSUBTITLE":"discsubtitle",cpil:"compilation",tmpo:"bpm","----:com.apple.iTunes:MOOD":"mood","----:com.apple.iTunes:MEDIA":"media","----:com.apple.iTunes:CATALOGNUMBER":"catalognumber",tvsh:"tvShow",tvsn:"tvSeason",tves:"tvEpisode",sosn:"tvShowSort",tven:"tvEpisodeId",tvnn:"tvNetwork",pcst:"podcast",purl:"podcasturl","----:com.apple.iTunes:MusicBrainz Album Status":"releasestatus","----:com.apple.iTunes:MusicBrainz Album Type":"releasetype","----:com.apple.iTunes:MusicBrainz Album Release Country":"releasecountry","----:com.apple.iTunes:SCRIPT":"script","----:com.apple.iTunes:LANGUAGE":"language",cprt:"copyright","©cpy":"copyright","----:com.apple.iTunes:LICENSE":"license","©too":"encodedby",pgap:"gapless","----:com.apple.iTunes:BARCODE":"barcode","----:com.apple.iTunes:ISRC":"isrc","----:com.apple.iTunes:ASIN":"asin","----:com.apple.iTunes:NOTES":"comment","----:com.apple.iTunes:MusicBrainz Track Id":"musicbrainz_recordingid","----:com.apple.iTunes:MusicBrainz Release Track Id":"musicbrainz_trackid","----:com.apple.iTunes:MusicBrainz Album Id":"musicbrainz_albumid","----:com.apple.iTunes:MusicBrainz Artist Id":"musicbrainz_artistid","----:com.apple.iTunes:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","----:com.apple.iTunes:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","----:com.apple.iTunes:MusicBrainz Work Id":"musicbrainz_workid","----:com.apple.iTunes:MusicBrainz TRM Id":"musicbrainz_trmid","----:com.apple.iTunes:MusicBrainz Disc Id":"musicbrainz_discid","----:com.apple.iTunes:Acoustid Id":"acoustid_id","----:com.apple.iTunes:Acoustid Fingerprint":"acoustid_fingerprint","----:com.apple.iTunes:MusicIP PUID":"musicip_puid","----:com.apple.iTunes:fingerprint":"musicip_fingerprint","----:com.apple.iTunes:replaygain_track_gain":"replaygain_track_gain","----:com.apple.iTunes:replaygain_track_peak":"replaygain_track_peak","----:com.apple.iTunes:replaygain_album_gain":"replaygain_album_gain","----:com.apple.iTunes:replaygain_album_peak":"replaygain_album_peak","----:com.apple.iTunes:replaygain_track_minmax":"replaygain_track_minmax","----:com.apple.iTunes:replaygain_album_minmax":"replaygain_album_minmax","----:com.apple.iTunes:replaygain_undo":"replaygain_undo",gnre:"genre","----:com.apple.iTunes:ALBUMARTISTSORT":"albumartistsort","----:com.apple.iTunes:ARTISTS":"artists","----:com.apple.iTunes:ORIGINALDATE":"originaldate","----:com.apple.iTunes:ORIGINALYEAR":"originalyear","----:com.apple.iTunes:RELEASEDATE":"releasedate",desc:"description",ldes:"longDescription","©mvn":"movement","©mvi":"movementIndex","©mvc":"movementTotal","©wrk":"work",catg:"category",egid:"podcastId",hdvd:"hdVideo",keyw:"keywords",shwm:"showMovement",stik:"stik",rate:"rating"};class aq extends af{constructor(){super(["iTunes"],ap)}postMap(a,b){"rate"===a.id&&(a.value={source:void 0,rating:Number.parseFloat(a.value)/100})}}let ar={TITLE:"title",ARTIST:"artist",ARTISTS:"artists",ALBUMARTIST:"albumartist","ALBUM ARTIST":"albumartist",ALBUM:"album",DATE:"date",ORIGINALDATE:"originaldate",ORIGINALYEAR:"originalyear",RELEASEDATE:"releasedate",COMMENT:"comment",TRACKNUMBER:"track",DISCNUMBER:"disk",GENRE:"genre",METADATA_BLOCK_PICTURE:"picture",COMPOSER:"composer",LYRICS:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",LYRICIST:"lyricist",WRITER:"writer",CONDUCTOR:"conductor",REMIXER:"remixer",ARRANGER:"arranger",ENGINEER:"engineer",PRODUCER:"producer",DJMIXER:"djmixer",MIXER:"mixer",LABEL:"label",GROUPING:"grouping",SUBTITLE:"subtitle",DISCSUBTITLE:"discsubtitle",TRACKTOTAL:"totaltracks",DISCTOTAL:"totaldiscs",COMPILATION:"compilation",RATING:"rating",BPM:"bpm",KEY:"key",MOOD:"mood",MEDIA:"media",CATALOGNUMBER:"catalognumber",RELEASESTATUS:"releasestatus",RELEASETYPE:"releasetype",RELEASECOUNTRY:"releasecountry",SCRIPT:"script",LANGUAGE:"language",COPYRIGHT:"copyright",LICENSE:"license",ENCODEDBY:"encodedby",ENCODERSETTINGS:"encodersettings",BARCODE:"barcode",ISRC:"isrc",ASIN:"asin",MUSICBRAINZ_TRACKID:"musicbrainz_recordingid",MUSICBRAINZ_RELEASETRACKID:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",ACOUSTID_ID:"acoustid_id",ACOUSTID_ID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",WEBSITE:"website",NOTES:"notes",TOTALTRACKS:"totaltracks",TOTALDISCS:"totaldiscs",DISCOGS_ARTIST_ID:"discogs_artist_id",DISCOGS_ARTISTS:"artists",DISCOGS_ARTIST_NAME:"artists",DISCOGS_ALBUM_ARTISTS:"albumartist",DISCOGS_CATALOG:"catalognumber",DISCOGS_COUNTRY:"releasecountry",DISCOGS_DATE:"originaldate",DISCOGS_LABEL:"label",DISCOGS_LABEL_ID:"discogs_label_id",DISCOGS_MASTER_RELEASE_ID:"discogs_master_release_id",DISCOGS_RATING:"discogs_rating",DISCOGS_RELEASED:"date",DISCOGS_RELEASE_ID:"discogs_release_id",DISCOGS_VOTES:"discogs_votes",CATALOGID:"catalognumber",STYLE:"genre",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",REPLAYGAIN_ALBUM_GAIN:"replaygain_album_gain",REPLAYGAIN_ALBUM_PEAK:"replaygain_album_peak",REPLAYGAIN_MINMAX:"replaygain_track_minmax",REPLAYGAIN_ALBUM_MINMAX:"replaygain_album_minmax",REPLAYGAIN_UNDO:"replaygain_undo"};class as extends ac{static toRating(a,b,c){return{source:a?a.toLowerCase():void 0,rating:Number.parseFloat(b)/c*ac.maxRatingScore}}constructor(){super(["vorbis"],ar)}postMap(a){if("RATING"===a.id)a.value=as.toRating(void 0,a.value,100);else if(0===a.id.indexOf("RATING:")){let b=a.id.split(":");a.value=as.toRating(b[1],a.value,1),a.id=b[0]}}}let at={IART:"artist",ICRD:"date",INAM:"title",TITL:"title",IPRD:"album",ITRK:"track",IPRT:"track",COMM:"comment",ICMT:"comment",ICNT:"releasecountry",GNRE:"genre",IWRI:"writer",RATE:"rating",YEAR:"year",ISFT:"encodedby",CODE:"encodedby",TURL:"website",IGNR:"genre",IENG:"engineer",ITCH:"technician",IMED:"media",IRPD:"album"};class au extends ac{constructor(){super(["exif"],at)}}let av={"segment:title":"title","album:ARTIST":"albumartist","album:ARTISTSORT":"albumartistsort","album:TITLE":"album","album:DATE_RECORDED":"originaldate","album:DATE_RELEASED":"releasedate","album:PART_NUMBER":"disk","album:TOTAL_PARTS":"totaltracks","track:ARTIST":"artist","track:ARTISTSORT":"artistsort","track:TITLE":"title","track:PART_NUMBER":"track","track:MUSICBRAINZ_TRACKID":"musicbrainz_recordingid","track:MUSICBRAINZ_ALBUMID":"musicbrainz_albumid","track:MUSICBRAINZ_ARTISTID":"musicbrainz_artistid","track:PUBLISHER":"label","track:GENRE":"genre","track:ENCODER":"encodedby","track:ENCODER_OPTIONS":"encodersettings","edition:TOTAL_PARTS":"totaldiscs",picture:"picture"};class aw extends af{constructor(){super(["matroska"],av)}}let ax={NAME:"title",AUTH:"artist","(c) ":"copyright",ANNO:"comment"};class ay extends ac{constructor(){super(["AIFF"],ax)}}var az=a.i(74777);class aA{constructor(){this.tagMappers={},[new ae,new am,new ai,new aq,new aq,new as,new ao,new ak,new au,new aw,new ay].forEach(a=>{this.registerTagMapper(a)})}mapTag(a,b,c){if(this.tagMappers[a])return this.tagMappers[a].mapGenericTag(b,c);throw new az.InternalParserError(`No generic tag mapper defined for tag-format: ${a}`)}registerTagMapper(a){for(let b of a.tagTypes)this.tagMappers[b]=a}}var aB=a.i(68231);let aC=/\[(\d{2}):(\d{2})\.(\d{2,3})]/,aD=(0,t.default)("music-metadata:collector"),aE=["matroska","APEv2","vorbis","ID3v2.4","ID3v2.3","ID3v2.2","exif","asf","iTunes","AIFF","ID3v1"];class aF{constructor(a){this.format={tagTypes:[],trackInfo:[]},this.native={},this.common={track:{no:null,of:null},disk:{no:null,of:null},movementIndex:{no:null,of:null}},this.quality={warnings:[]},this.commonOrigin={},this.originPriority={},this.tagMapper=new aA,this.opts=a;let b=1;for(const a of aE)this.originPriority[a]=b++;this.originPriority.artificial=500,this.originPriority.id3v1=600}hasAny(){return Object.keys(this.native).length>0}addStreamInfo(a){aD(`streamInfo: type=${a.type?_.TrackTypeValueToKeyMap[a.type]:"?"}, codec=${a.codecName}`),this.format.trackInfo.push(a)}setFormat(a,b){aD(`format: ${a} = ${b}`),this.format[a]=b,this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"format",id:a,value:b}})}setAudioOnly(){this.setFormat("hasAudio",!0),this.setFormat("hasVideo",!1)}async addTag(a,b,c){aD(`tag ${a}.${b} = ${c}`),this.native[a]||(this.format.tagTypes.push(a),this.native[a]=[]),this.native[a].push({id:b,value:c}),await this.toCommon(a,b,c)}addWarning(a){this.quality.warnings.push({message:a})}async postMap(a,b){switch(b.id){case"artist":return this.handleSingularArtistTag(a,b,"artist","artists");case"albumartist":return this.handleSingularArtistTag(a,b,"albumartist","albumartists");case"artists":return this.handlePluralArtistTag(a,b,"artist","artists");case"albumartists":return this.handlePluralArtistTag(a,b,"albumartist","albumartists");case"picture":return this.postFixPicture(b.value).then(c=>{null!==c&&(b.value=c,this.setGenericTag(a,b))});case"totaltracks":this.common.track.of=ac.toIntOrNull(b.value);return;case"totaldiscs":this.common.disk.of=ac.toIntOrNull(b.value);return;case"movementTotal":this.common.movementIndex.of=ac.toIntOrNull(b.value);return;case"track":case"disk":case"movementIndex":{let a=this.common[b.id].of;this.common[b.id]=ac.normalizeTrack(b.value),this.common[b.id].of=null!=a?a:this.common[b.id].of;return}case"bpm":case"year":case"originalyear":b.value=Number.parseInt(b.value,10);break;case"date":{let a=Number.parseInt(b.value.substr(0,4),10);Number.isNaN(a)||(this.common.year=a);break}case"discogs_label_id":case"discogs_release_id":case"discogs_master_release_id":case"discogs_artist_id":case"discogs_votes":b.value="string"==typeof b.value?Number.parseInt(b.value,10):b.value;break;case"replaygain_track_gain":case"replaygain_track_peak":case"replaygain_album_gain":case"replaygain_album_peak":b.value=(0,ag.toRatio)(b.value);break;case"replaygain_track_minmax":b.value=b.value.split(",").map(a=>Number.parseInt(a,10));break;case"replaygain_undo":{let a=b.value.split(",").map(a=>Number.parseInt(a,10));b.value={leftChannel:a[0],rightChannel:a[1]};break}case"gapless":case"compilation":case"podcast":case"showMovement":b.value="1"===b.value||1===b.value;break;case"isrc":{let a=this.common[b.id];if(a&&-1!==a.indexOf(b.value))return;break}case"comment":"string"==typeof b.value&&(b.value={text:b.value}),"iTunPGAP"===b.value.descriptor&&this.setGenericTag(a,{id:"gapless",value:"1"===b.value.text});break;case"lyrics":var c,d;"string"==typeof b.value&&(c=b.value,b.value=aC.test(c)?function(a){let b=a.split("\n"),c=[];for(let a of b){let b=a.match(aC);if(b){let d=(60*Number.parseInt(b[1],10)+Number.parseInt(b[2],10))*1e3+(3===b[3].length?Number.parseInt(b[3],10):10*Number.parseInt(b[3],10)),e=a.replace(aC,"").trim();c.push({timestamp:d,text:e})}}return{contentType:aB.LyricsContentType.lyrics,timeStampFormat:aB.TimestampFormat.milliseconds,text:c.map(a=>a.text).join("\n"),syncText:c}}(c):(d=c,{contentType:aB.LyricsContentType.lyrics,timeStampFormat:aB.TimestampFormat.notSynchronized,text:d.trim(),syncText:[]}))}null!==b.value&&this.setGenericTag(a,b)}toCommonMetadata(){return{format:this.format,native:this.native,quality:this.quality,common:this.common}}handleSingularArtistTag(a,b,c,d){if(this.commonOrigin[c]===this.originPriority[a])return this.postMap("artificial",{id:d,value:b.value});this.common[d]||this.setGenericTag("artificial",{id:d,value:b.value}),this.setGenericTag(a,b)}handlePluralArtistTag(a,b,c,d){if((!this.common[c]||this.commonOrigin[c]===this.originPriority.artificial)&&(!this.common[d]||-1===this.common[d].indexOf(b.value))){var e;let a=(e=(this.common[d]||[]).concat([b.value])).length>2?`${e.slice(0,e.length-1).join(", ")} & ${e[e.length-1]}`:e.join(" & ");this.setGenericTag("artificial",{id:c,value:a})}this.setGenericTag(a,b)}async postFixPicture(a){if(a.data&&a.data.length>0){if(!a.format){let b=await R(Uint8Array.from(a.data));if(!b)return null;a.format=b.mime}return a.format=a.format.toLocaleLowerCase(),"image/jpg"===a.format&&(a.format="image/jpeg"),a}return this.addWarning("Empty picture tag found"),null}async toCommon(a,b,c){let d=this.tagMapper.mapTag(a,{id:b,value:c},this);d&&await this.postMap(a,d)}setGenericTag(a,b){var c,d;aD(`common.${b.id} = ${b.value}`);let e=this.commonOrigin[b.id]||1e3,f=this.originPriority[a];if(ab[c=b.id]&&!ab[c].multiple)if(!(f<=e))return aD(`Ignore native tag (singleton): ${a}.${b.id} = ${b.value}`);else this.common[b.id]=b.value,this.commonOrigin[b.id]=f;else if(f===e)(!ab[d=b.id].multiple||ab[d].unique)&&-1!==this.common[b.id].indexOf(b.value)?aD(`Ignore duplicate value: ${a}.${b.id} = ${b.value}`):this.common[b.id].push(b.value);else{if(!(f<e))return aD(`Ignore native tag (list): ${a}.${b.id} = ${b.value}`);this.common[b.id]=[b.value],this.commonOrigin[b.id]=f}this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"common",id:b.id,value:b.value}})}}let aG={parserType:"mpeg",extensions:[".mp2",".mp3",".m2a",".aac","aacp"],mimeTypes:["audio/mpeg","audio/mp3","audio/aacs","audio/aacp"],load:async()=>(await a.A(46769)).MpegParser},aH={parserType:"apev2",extensions:[".ape"],mimeTypes:["audio/ape","audio/monkeys-audio"],load:async()=>(await a.A(92102)).APEv2Parser},aI={parserType:"asf",extensions:[".asf",".wma",".wmv"],mimeTypes:["audio/ms-wma","video/ms-wmv","audio/ms-asf","video/ms-asf","application/vnd.ms-asf"],load:async()=>(await a.A(1995)).AsfParser},aJ={parserType:"dsdiff",extensions:[".dff"],mimeTypes:["audio/dsf","audio/dsd"],load:async()=>(await a.A(89469)).DsdiffParser},aK={parserType:"aiff",extensions:[".aif","aiff","aifc"],mimeTypes:["audio/aiff","audio/aif","audio/aifc","application/aiff"],load:async()=>(await a.A(60519)).AIFFParser},aL={parserType:"dsf",extensions:[".dsf"],mimeTypes:["audio/dsf"],load:async()=>(await a.A(48352)).DsfParser},aM={parserType:"flac",extensions:[".flac"],mimeTypes:["audio/flac"],load:async()=>(await a.A(17808)).FlacParser},aN={parserType:"matroska",extensions:[".mka",".mkv",".mk3d",".mks","webm"],mimeTypes:["audio/matroska","video/matroska","audio/webm","video/webm"],load:async()=>(await a.A(71875)).MatroskaParser},aO={parserType:"mp4",extensions:[".mp4",".m4a",".m4b",".m4pa","m4v","m4r","3gp",".mov",".movie",".qt"],mimeTypes:["audio/mp4","audio/m4a","video/m4v","video/mp4","video/quicktime"],load:async()=>(await a.A(7219)).MP4Parser},aP={parserType:"musepack",extensions:[".mpc"],mimeTypes:["audio/musepack"],load:async()=>(await a.A(75093)).MusepackParser},aQ={parserType:"ogg",extensions:[".ogg",".ogv",".oga",".ogm",".ogx",".opus",".spx"],mimeTypes:["audio/ogg","audio/opus","audio/speex","video/ogg"],load:async()=>(await a.A(99889)).OggParser},aR={parserType:"wavpack",extensions:[".wv",".wvp"],mimeTypes:["audio/wavpack"],load:async()=>(await a.A(56564)).WavPackParser},aS={parserType:"riff",extensions:[".wav","wave",".bwf"],mimeTypes:["audio/vnd.wave","audio/wav","audio/wave"],load:async()=>(await a.A(14180)).WaveParser},aT=(0,t.default)("music-metadata:parser:factory");class aU{constructor(){this.parsers=[],[aM,aG,aH,aO,aN,aS,aQ,aI,aK,aR,aP,aL,aJ].forEach(a=>{this.registerParser(a)})}registerParser(a){this.parsers.push(a)}async parse(a,b,c){if(a.supportsRandomAccess()?(aT("tokenizer supports random-access, scanning for appending headers"),await a$(a,c)):aT("tokenizer does not support random-access, cannot scan for appending headers"),!b){let c=new Uint8Array(4100);if(a.fileInfo.mimeType&&(b=this.findLoaderForContentType(a.fileInfo.mimeType)),!b&&a.fileInfo.path&&(b=this.findLoaderForExtension(a.fileInfo.path)),!b){aT("Guess parser on content..."),await a.peekBuffer(c,{mayBeLess:!0});let d=await R(c,{mpegOffsetTolerance:10});if(!d||!d.mime)throw new az.CouldNotDetermineFileTypeError("Failed to determine audio format");if(aT(`Guessed file type is mime=${d.mime}, extension=${d.ext}`),!(b=this.findLoaderForContentType(d.mime)))throw new az.UnsupportedFileTypeError(`Guessed MIME-type not supported: ${d.mime}`)}}aT(`Loading ${b.parserType} parser...`);let d=new aF(c),e=new(await b.load())(d,a,c??{});return aT(`Parser ${b.parserType} loaded`),await e.parse(),d.format.trackInfo&&(void 0===d.format.hasAudio&&d.setFormat("hasAudio",!!d.format.trackInfo.find(a=>a.type===_.TrackType.audio)),void 0===d.format.hasVideo&&d.setFormat("hasVideo",!!d.format.trackInfo.find(a=>a.type===_.TrackType.video))),d.toCommonMetadata()}findLoaderForExtension(a){var b;let c;if(!a)return;let d=(-1===(c=(b=a).lastIndexOf("."))?"":b.substring(c)).toLocaleLowerCase()||a;return this.parsers.find(a=>-1!==a.extensions.indexOf(d))}findLoaderForContentType(a){let b;if(!a)return;try{let c,d;c=Z.default.parse(a),b={type:(d=(0,$.parse)(c.type)).type,subtype:d.subtype,suffix:d.suffix,parameters:c.parameters}}catch(b){aT(`Invalid HTTP Content-Type header value: ${a}`);return}let c=0===b.subtype.indexOf("x-")?b.subtype.substring(2):b.subtype;return this.parsers.find(a=>a.mimeTypes.find(a=>-1!==a.indexOf(`${b.type}/${c}`)))}getSupportedMimeTypes(){let a=new Set;return this.parsers.forEach(b=>{b.mimeTypes.forEach(b=>{a.add(b),a.add(b.replace("/","/x-"))})}),Array.from(a)}}var aV=a.i(81318),aW=a.i(49597),aX=a.i(73635);async function aY(a){let b=a.fileInfo.size;if(b>=143){let c=new Uint8Array(15),d=a.position;await a.readBuffer(c,{position:b-143}),a.setPosition(d);let e=(0,aX.textDecode)(c,"latin1");if("LYRICS200"===e.substring(6))return Number.parseInt(e.substring(0,6),10)+15}return 0}async function aZ(a,b={}){let c=(0,q.fromBlob)(a);try{var d,e;return await (d=c,e=b,new aU().parse(d,void 0,e))}finally{await c.close()}}async function a$(a,b={}){let c=a.fileInfo.size;await (0,aW.hasID3v1Header)(a)&&(c-=128,c-=await aY(a)),b.apeHeader=await aV.APEv2Parser.findApeFooterOffset(a,c)}async function a_(a){try{let b=await aZ(a,{duration:!0}),c=b.common.title?.trim()??"",d=b.common.artist?.trim()||b.common.artists?.[0]?.trim()||b.common.albumartist?.trim()||b.common.albumartists?.[0]?.trim()||"",e=b.common.album?.trim()??"",f=b.format.duration,g="number"==typeof f&&Number.isFinite(f)?Math.round(f):0;return{title:c,artist:d,album:e,durationSec:g}}catch{return null}}async function a0(a,b,c,d,e,f,g,h){if(!(f.maxScanDepth>0)||!(e>=f.maxScanDepth))for await(let[i,j]of c.entries()){let c=d?`${d}/${i}`:i;if("directory"===j.kind){if(f.followSymlinks&&g.has(c))continue;let d=f.followSymlinks?new Set(g):g;f.followSymlinks&&d.add(c),await a0(a,b,j,c,e+1,f,d,h)}else"file"===j.kind&&function(a,b){let c=a.lastIndexOf(".");if(c<0)return!1;let d=a.slice(c).toLowerCase();return(b??n).has(d)}(i,f.enabledExtensions)&&h.push({rootId:a,rootDisplayName:b,relativePath:c,handle:j})}}function a1(a){let b=a.lastIndexOf("/");return b>=0?a.slice(b+1):a}function a2(a,b){let c=a.split("/").filter(Boolean);return c.length>1?c[c.length-2]??b:b}async function a3(a,b,c,d){let e=`lib:${a.rootId}:${a.relativePath}`,f=c.get(e),g=f?p(f):null,h=d?performance.now():0,i=(b,c)=>{var e;let f,g;return d&&(e={relativePath:a.relativePath,rootDisplayName:a.rootDisplayName,durationMs:performance.now()-h,outcome:b},f=`${e.rootDisplayName}/${e.relativePath}`,g="cached"===e.outcome?"cached":"parsed"===e.outcome?"parsed":"error",console.info(`[muzical scan] ${f} — ${e.durationMs.toFixed(1)} ms (${g})`)),c};try{let c=await a.handle.getFile();if(f&&g&&c.lastModified===g.fileLastModified&&c.size===g.fileSize)return i("cached",f);let d=a1(a.relativePath),h=o(d,b),j=a2(a.relativePath,a.rootDisplayName),k=await a_(c),l={id:e,title:k?.title?k.title:h,artist:k?.artist?k.artist:"Unknown artist",album:k?.album?k.album:j,durationSec:k?.durationSec&&k.durationSec>0?k.durationSec:0,audioUrl:null,library:{rootId:a.rootId,relativePath:a.relativePath}};return i("parsed",l.library?{...l,library:{...l.library,fileLastModified:c.lastModified,fileSize:c.size}}:l)}catch{let c,d;return i("error",(c=o(a1(a.relativePath),b),d=a2(a.relativePath,a.rootDisplayName),{id:`lib:${a.rootId}:${a.relativePath}`,title:c,artist:"Unknown artist",album:d,durationSec:0,audioUrl:null,library:{rootId:a.rootId,relativePath:a.relativePath}}))}}async function a4(a,b,c,d,e){if(0===a.length)return[];let f=Array(a.length),g=0,h=0,i=0,j=a.length,k=()=>{e?.({filesDone:h,filesTotal:j,filesSkipped:i})};k();let l=async()=>{for(;;){let e=g++;if(e>=a.length)break;let j=a[e],l=`lib:${j.rootId}:${j.relativePath}`,m=c.has(l);f[e]=await a3(j,b,c,d),m&&f[e]===c.get(l)&&(i+=1),h+=1,k()}},m=Math.min(8,a.length);return await Promise.all(Array.from({length:m},()=>l())),f}async function a5(a,b,c,d,e,f,g){g?.({phase:"walk"});let h=[];await a0(a,b,c,"",0,d,new Set,h);let i=function(a){let b=new Map;for(let c of a)c.library&&p(c)&&b.set(c.id,c);return b}(e.filter(b=>b.library?.rootId===a));return g?.({phase:"metadata",filesDone:0,filesTotal:h.length,filesSkipped:0}),f&&h.length>0&&console.info(`[muzical scan] ${b}: reading metadata for ${h.length} file${1===h.length?"":"s"}…`),a4(h,d.enabledExtensions,i,f,a=>{g?.({phase:"metadata",...a})})}async function a6(a,b,c,d,e,f){let g=[],h=0,i=null,j=a.filter(a=>b.has(a.id)),k=j.length,l=e?performance.now():0;e&&k>0&&console.info(`[muzical scan] Starting scan of ${k} root${1===k?"":"s"}…`);for(let a=0;a<j.length;a++){let l=j[a],m=b.get(l.id);if(!m)continue;let n=b=>{f?.({rootIndex:a,rootCount:k,rootName:l.name,phase:b.phase,filesDone:b.filesDone,filesTotal:b.filesTotal,filesSkipped:b.filesSkipped})};n({phase:"walk"});try{let a=await a5(l.id,l.name,m,c,d,e,a=>{"walk"===a.phase?n({phase:"walk"}):n({phase:"metadata",filesDone:a.filesDone,filesTotal:a.filesTotal,filesSkipped:a.filesSkipped})});g.push(...a)}catch(a){h+=1,i||(i=a instanceof DOMException?`${a.name}: ${a.message}`:a instanceof Error?a.message:String(a))}}if(g.sort((a,b)=>{let c=a.library?.rootId??"",d=b.library?.rootId??"",e=c.localeCompare(d,void 0,{sensitivity:"base"});if(0!==e)return e;let f=a.library?.relativePath??a.title,g=b.library?.relativePath??b.title;return f.localeCompare(g,void 0,{sensitivity:"base"})}),e){let a=performance.now()-l;console.info(`[muzical scan] Finished: ${g.length} track${1===g.length?"":"s"} in ${a.toFixed(0)} ms`)}return{tracks:g,failedRootCount:h,firstError:i}}function a7(a){return!a.library&&(!!("musicbrainz"===a.source||"youtube"===a.source||a.id.startsWith("musicbrainz:")||a.id.startsWith("youtube:"))||!!a.youtubeQuery?.trim())}function a8(a){return a?.trim()||"Unknown artist"}function a9(a,b){return`${a}\u0000${b}`}function ba(a,b){return a.filter(a=>a9(a.album,a.artist)===b)}function bb(a,b){let c=b.trim();return c?a.filter(a=>a8(a.artist)===c):[]}function bc(a,b){let c=b.artist.trim()||a.artist,d=b.album.trim()||a.album,e={...a,artist:c,album:d};return a.youtubeQuery?.trim()&&(e.youtubeQuery=`${a.title} ${c}`.trim(),e.youtubeVideoId=void 0),e}function bd(a,b){let c=b.artist.trim()||a.artist,d={...a,artist:c};return a.youtubeQuery?.trim()&&(d.youtubeQuery=`${a.title} ${c}`.trim(),d.youtubeVideoId=void 0),d}function be(a,b){let c=b.title.trim()||a.title,d=b.artist.trim()||a.artist,e=b.album.trim()||a.album,f={...a,title:c,artist:d,album:e};return a.youtubeQuery?.trim()&&(f.youtubeQuery=`${c} ${d}`.trim(),f.youtubeVideoId=void 0),f}async function bf(a,b){let c=a.trim();if(!c)return null;let d=new URL("/api/youtube/resolve",window.location.origin);d.searchParams.set("q",c);let e=await fetch(d.toString(),{signal:b});if(!e.ok)return null;let f=await e.json();return f.videoId?.trim()||null}a.s(["default",0,a7],4355),a.s(["albumCompositeKey",0,a9,"artistDisplayName",0,a8],27120),a.s(["default",0,ba],79340),a.s(["default",0,bb],14269),a.s(["default",0,bc],88965),a.s(["default",0,bd],18975);var bg=a.i(37978),bh=a.i(41090);function bi(a){let b=a.toLowerCase();return b.includes("quota")||b.includes("quotaexceeded")}function bj(){(0,bh.setYoutubeDataApiBlockedInternal)(!0)}a.s(["default",0,bi],44803),a.s(["default",0,bj],91320),a.s(["YOUTUBE_DATA_API_MIN_INTERVAL_MS",0,900,"YOUTUBE_SEARCH_CACHE_TTL_MS",0,3e5,"YOUTUBE_SEARCH_DEBOUNCE_MS",0,500,"YOUTUBE_SEARCH_PAGE_SIZE",0,20],16564);let bk=0,bl=Promise.resolve();async function bm(){bl=bl.then(async()=>{let a=Math.max(0,900-(Date.now()-bk));a>0&&await new Promise(b=>setTimeout(b,a)),bk=Date.now()}),await bl}a.s(["default",0,bm],73972);let bn=new Map;function bo(a){let b=a.trim().toLowerCase();return b?bn.get(b)??null:null}async function bp(a,b,c){let d=a.trim(),e=b.trim();if(!d||!e||(0,bh.default)())return null;let f=bo(d);if(f)return f;let g=new URL("https://www.googleapis.com/youtube/v3/search");g.searchParams.set("part","snippet"),g.searchParams.set("type","video"),g.searchParams.set("maxResults","5"),g.searchParams.set("videoEmbeddable","true"),g.searchParams.set("q",d),g.searchParams.set("key",e),await bm();let h=await fetch(g,{signal:c}),i=await h.json();if(!h.ok){let a=i.error?.message?.trim()??"";return(i.error?.errors?.some(a=>"quotaExceeded"===a.reason)||bi(a))&&bj(),null}for(let a of i.items??[]){let b=a.id?.videoId?.trim();if(b)return!function(a,b){let c=a.trim().toLowerCase(),d=b.trim();c&&d&&bn.set(c,d)}(d,b),b}return null}async function bq(a,b){let c=a.trim();if(!c)return null;let d=bo(c);if(d)return d;let e=(0,bg.default)().trim();if(e&&!(0,bh.default)()){let a=await bp(c,e,b);if(a)return a}return bf(c,b)}a.s(["default",0,bq],22451);let br=/[<>:"/\\|?*\u0000-\u001f]+/g;function bs(a,b){return(a.replace(br," ").replace(/\s+/g," ").trim().replace(/[. ]+$/g,"")||b).slice(0,160)}function bt(a){let b=bs(a.title,"Untitled"),c=bs(a.artist,"");return c?`${c} - ${b}`:b}function bu(a,b){let c=document.createElement("a");c.href=a,b&&(c.download=b),c.rel="noopener",c.style.display="none",document.body.appendChild(c),c.click(),c.remove()}async function bv(a,b){if(a.library){let d=await b(a);if(!d)throw Error("Could not read this file from the library.");var c=d.name||`${bt(a)}.mp3`;let e=URL.createObjectURL(d);try{bu(e,c)}finally{window.setTimeout(()=>URL.revokeObjectURL(e),3e4)}return}if(a.audioUrl?.trim())return void bu(a.audioUrl,bt(a));let d=a.youtubeVideoId?.trim()||(a.youtubeQuery?.trim()?await bq(a.youtubeQuery):null);if(!d)throw Error("Could not find a YouTube video for this track.");let e=new URL("/api/youtube/audio",window.location.origin);e.searchParams.set("videoId",d),e.searchParams.set("name",bt(a)),bu(e.toString(),bt(a))}async function bw(a,b){let c={mode:"readwrite"};try{let d=await a.queryPermission?.(c);if("granted"===d)return!0;if(!b)return!1;let e=await a.requestPermission?.(c);return"granted"===e}catch{return!1}}async function bx(a,b){let c=a.library;if(!c)return null;let d=b.get(c.rootId);if(!d)return null;let e=c.relativePath.split("/").filter(Boolean);if(0===e.length)return null;let f=d;for(let a=0;a<e.length-1;a++){let b=e[a];if(!b)return null;f=await f.getDirectoryHandle(b)}let g=e[e.length-1];return g?f.getFileHandle(g):null}function by(a){let b=a.name.toLowerCase();if(b.endsWith(".mp3"))return"mp3";if(b.endsWith(".flac"))return"flac";let c=a.type.toLowerCase();return"audio/mpeg"===c||"audio/mp3"===c?"mp3":"audio/flac"===c||"audio/x-flac"===c?"flac":null}function bz(a){return String(a).split("").map(a=>a.charCodeAt(0))}function bA(a){return new Uint8Array(bz(a))}function bB(a){let b=new ArrayBuffer(2*a.length),c=new Uint8Array(b);return new Uint16Array(b).set(bz(a)),c}function bC(a){return[a>>>24&255,a>>>16&255,a>>>8&255,255&a]}class bD{_setIntegerFrame(a,b){let c=parseInt(b,10);this.frames.push({name:a,value:c,size:11+c.toString().length})}_setStringFrame(a,b){let c=b.toString(),d=13+2*c.length;"TDAT"===a&&(d=11+c.length),this.frames.push({name:a,value:c,size:d})}_setPictureFrame(a,b,c,d){var e,f,g;let h=function(a){if(!a||!a.length)return null;if(255===a[0]&&216===a[1]&&255===a[2])return"image/jpeg";if(137===a[0]&&80===a[1]&&78===a[2]&&71===a[3])return"image/png";if(71===a[0]&&73===a[1]&&70===a[2])return"image/gif";if(87===a[8]&&69===a[9]&&66===a[10]&&80===a[11])return"image/webp";let b=73===a[0]&&73===a[1]&&42===a[2]&&0===a[3],c=77===a[0]&&77===a[1]&&0===a[2]&&42===a[3];return b||c?"image/tiff":66===a[0]&&77===a[1]?"image/bmp":0===a[0]&&0===a[1]&&1===a[2]&&0===a[3]?"image/x-icon":null}(new Uint8Array(b)),i=c.toString();if(!h)throw Error("Unknown picture MIME type");c||(d=!1),this.frames.push({name:"APIC",value:b,pictureType:a,mimeType:h,useUnicodeEncoding:d,description:i,size:(e=b.byteLength,f=h.length,g=i.length,11+f+1+1+(d?2+2*(g+1):g+1)+e)})}_setLyricsFrame(a,b,c){let d=a.split("").map(a=>a.charCodeAt(0)),e=b.toString(),f=c.toString();this.frames.push({name:"USLT",value:f,language:d,description:e,size:16+2*e.length+2+2+2*f.length})}_setCommentFrame(a,b,c){let d=a.split("").map(a=>a.charCodeAt(0)),e=b.toString(),f=c.toString();this.frames.push({name:"COMM",value:f,language:d,description:e,size:16+2*e.length+2+2+2*f.length})}_setPrivateFrame(a,b){let c=a.toString();this.frames.push({name:"PRIV",value:b,id:c,size:10+c.length+1+b.byteLength})}_setUserStringFrame(a,b){let c=a.toString(),d=b.toString();this.frames.push({name:"TXXX",description:c,value:d,size:13+2*c.length+2+2+2*d.length})}_setUrlLinkFrame(a,b){let c=b.toString();this.frames.push({name:a,value:c,size:10+c.length})}_setPairedTextFrame(a,b){let c;this.frames.push({name:a,value:b,size:(c=0,b.forEach(a=>{c+=2+2*a[0].length+2+2+2*a[1].length+2}),11+c)})}_setSynchronisedLyricsFrame(a,b,c,d,e){var f;let g,h=e.toString(),i=d.split("").map(a=>a.charCodeAt(0));this.frames.push({name:"SYLT",value:b,language:i,description:h,type:a,timestampFormat:c,size:(f=h.length,g=0,b.forEach(a=>{g+=2+2*a[0].length+2+4}),18+2*f+2+g)})}constructor(a){if(!a||"object"!=typeof a||!("byteLength"in a))throw Error("First argument should be an instance of ArrayBuffer or Buffer");this.arrayBuffer=a,this.padding=4096,this.frames=[],this.url=""}setFrame(a,b){switch(a){case"TPE1":case"TCOM":case"TCON":{if(!Array.isArray(b))throw Error(`${a} frame value should be an array of strings`);let c="TCON"===a?";":"/",d=b.join(c);this._setStringFrame(a,d);break}case"TLAN":case"TIT1":case"TIT2":case"TIT3":case"TALB":case"TPE2":case"TPE3":case"TPE4":case"TRCK":case"TPOS":case"TMED":case"TPUB":case"TCOP":case"TKEY":case"TEXT":case"TDAT":case"TCMP":case"TSSE":case"TSRC":this._setStringFrame(a,b);break;case"TBPM":case"TLEN":case"TYER":this._setIntegerFrame(a,b);break;case"USLT":if(b.language=b.language||"eng","object"!=typeof b||!("description"in b)||!("lyrics"in b))throw Error("USLT frame value should be an object with keys description and lyrics");if(b.language&&!b.language.match(/[a-z]{3}/i))throw Error("Language must be coded following the ISO 639-2 standards");this._setLyricsFrame(b.language,b.description,b.lyrics);break;case"APIC":if("object"!=typeof b||!("type"in b)||!("data"in b)||!("description"in b))throw Error("APIC frame value should be an object with keys type, data and description");if(b.type<0||b.type>20)throw Error("Incorrect APIC frame picture type");this._setPictureFrame(b.type,b.data,b.description,!!b.useUnicodeEncoding);break;case"TXXX":if("object"!=typeof b||!("description"in b)||!("value"in b))throw Error("TXXX frame value should be an object with keys description and value");this._setUserStringFrame(b.description,b.value);break;case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":this._setUrlLinkFrame(a,b);break;case"COMM":if(b.language=b.language||"eng","object"!=typeof b||!("description"in b)||!("text"in b))throw Error("COMM frame value should be an object with keys description and text");if(b.language&&!b.language.match(/[a-z]{3}/i))throw Error("Language must be coded following the ISO 639-2 standards");this._setCommentFrame(b.language,b.description,b.text);break;case"PRIV":if("object"!=typeof b||!("id"in b)||!("data"in b))throw Error("PRIV frame value should be an object with keys id and data");this._setPrivateFrame(b.id,b.data);break;case"IPLS":if(!Array.isArray(b)||!Array.isArray(b[0]))throw Error("IPLS frame value should be an array of pairs");this._setPairedTextFrame(a,b);break;case"SYLT":if("object"!=typeof b||!("type"in b)||!("text"in b)||!("timestampFormat"in b))throw Error("SYLT frame value should be an object with keys type, text and timestampFormat");if(!Array.isArray(b.text)||!Array.isArray(b.text[0]))throw Error("SYLT frame text value should be an array of pairs");if(b.type<0||b.type>6)throw Error("Incorrect SYLT frame content type");if(b.timestampFormat<1||b.timestampFormat>2)throw Error("Incorrect SYLT frame time stamp format");b.language=b.language||"eng",b.description=b.description||"",this._setSynchronisedLyricsFrame(b.type,b.text,b.timestampFormat,b.language,b.description);break;default:throw Error(`Unsupported frame ${a}`)}return this}removeTag(){var a;if(this.arrayBuffer.byteLength<10)return;let b=new Uint8Array(this.arrayBuffer),c=b[3],d=((a=[b[6],b[7],b[8],b[9]])[0]<<21)+(a[1]<<14)+(a[2]<<7)+a[3]+10;73!==b[0]||68!==b[1]||51!==b[2]||c<2||c>4||(this.arrayBuffer=new Uint8Array(b.subarray(d)).buffer)}addTag(){var a;this.removeTag();let b=[255,254],c=10+this.frames.reduce((a,b)=>a+b.size,0)+this.padding,d=new ArrayBuffer(this.arrayBuffer.byteLength+c),e=new Uint8Array(d),f=0,g=[];return g=[73,68,51,3],e.set(g,f),f+=g.length,f++,f++,g=[(a=c-10)>>>21&127,a>>>14&127,a>>>7&127,127&a],e.set(g,f),f+=g.length,this.frames.forEach(a=>{switch(g=bA(a.name),e.set(g,f),f+=g.length,g=bC(a.size-10),e.set(g,f),f+=g.length,f+=2,a.name){case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":g=bA(a.value),e.set(g,f),f+=g.length;break;case"TPE1":case"TCOM":case"TCON":case"TLAN":case"TIT1":case"TIT2":case"TIT3":case"TALB":case"TPE2":case"TPE3":case"TPE4":case"TRCK":case"TPOS":case"TKEY":case"TMED":case"TPUB":case"TCOP":case"TEXT":case"TSSE":case"TSRC":g=[1].concat(b),e.set(g,f),f+=g.length,g=bB(a.value),e.set(g,f),f+=g.length;break;case"TXXX":case"USLT":case"COMM":g=[1],"USLT"!==a.name&&"COMM"!==a.name||(g=g.concat(a.language)),g=g.concat(b),e.set(g,f),f+=g.length,g=bB(a.description),e.set(g,f),f+=g.length,g=[0,0].concat(b),e.set(g,f),f+=g.length,g=bB(a.value),e.set(g,f),f+=g.length;break;case"TBPM":case"TLEN":case"TDAT":case"TYER":f++,g=bA(a.value),e.set(g,f),f+=g.length;break;case"PRIV":g=bA(a.id),e.set(g,f),f+=g.length,f++,e.set(new Uint8Array(a.value),f),f+=a.value.byteLength;break;case"APIC":g=[+!!a.useUnicodeEncoding],e.set(g,f),f+=g.length,g=bA(a.mimeType),e.set(g,f),f+=g.length,g=[0,a.pictureType],e.set(g,f),f+=g.length,a.useUnicodeEncoding?(g=[].concat(b),e.set(g,f),f+=g.length,g=bB(a.description),e.set(g,f),f+=g.length,f+=2):(g=bA(a.description),e.set(g,f),f+=g.length,f++),e.set(new Uint8Array(a.value),f),f+=a.value.byteLength;break;case"IPLS":g=[1],e.set(g,f),f+=g.length,a.value.forEach(a=>{g=[].concat(b),e.set(g,f),f+=g.length,g=bB(a[0].toString()),e.set(g,f),f+=g.length,g=[0,0].concat(b),e.set(g,f),f+=g.length,g=bB(a[1].toString()),e.set(g,f),f+=g.length,g=[0,0],e.set(g,f),f+=g.length});break;case"SYLT":g=[1].concat(a.language).concat(a.timestampFormat).concat(a.type),e.set(g,f),f+=g.length,g=[].concat(b),e.set(g,f),f+=g.length,g=bB(a.description),e.set(g,f),f+=g.length,f+=2,a.value.forEach(a=>{g=[].concat(b),e.set(g,f),f+=g.length,g=bB(a[0].toString()),e.set(g,f),f+=g.length,g=[0,0],e.set(g,f),f+=g.length,g=bC(a[1]),e.set(g,f),f+=g.length})}}),f+=this.padding,e.set(new Uint8Array(this.arrayBuffer),f),this.arrayBuffer=d,d}getBlob(){return new Blob([this.arrayBuffer],{type:"audio/mpeg"})}getURL(){return this.url||(this.url=URL.createObjectURL(this.getBlob())),this.url}revokeURL(){URL.revokeObjectURL(this.url)}}async function bE(a,b){var c;let d,e;if("mp3"!==by(a))throw Error("Unsupported file format");return c=await a.arrayBuffer(),(d=new bD(c)).setFrame("TIT2",b.title.trim()),d.setFrame("TPE1",[b.artist.trim()]),(e=b.album.trim())&&d.setFrame("TALB",e),d.addTag()}async function bF(a,b,c,d){let e;if(!a.library)return{ok:!1,reason:"Only local library files can be tagged on disk."};let f=c.get(a.library.rootId);if(!f)return{ok:!1,reason:"Library folder is not available. Try rescanning."};if(!await bw(f,d))return{ok:!1,reason:"Write permission is required. Re-add the library folder or allow write access when prompted."};let g=await bx(a,c);if(!g)return{ok:!1,reason:"Could not open the audio file."};let h=await g.getFile();if(!by(h))return{ok:!1,reason:"Tag writing is supported for MP3 files only."};try{e=await bE(h,b)}catch{return{ok:!1,reason:"Failed to update embedded tags in this file."}}try{let a=await g.createWritable();await a.write(e),await a.close()}catch{return{ok:!1,reason:"Could not save tags to the file."}}return{ok:!0}}async function bG(a,b,c){let d=0,e=0,f=null;for(let g of a){if(!g.library)continue;let a=await bF(g,{title:g.title,artist:g.artist,album:g.album},b,c&&0===d&&0===e);a.ok?d+=1:(e+=1,f||(f=a.reason))}return{ok:0===e,writtenCount:d,failedCount:e,reason:f}}function bH(a,b){let c=new Map;for(let b of a)c.set(b.id,b);for(let a of b)a7(a)&&(c.has(a.id)||c.set(a.id,a));return[...c.values()]}function bI(a){return a.library?{...a,source:a.source??"library"}:"youtube"===a.source||a.id.startsWith("youtube:")?{...a,source:"youtube",library:void 0}:"musicbrainz"===a.source||a.id.startsWith("musicbrainz:")?{...a,source:"musicbrainz",library:void 0}:a.youtubeQuery?.trim()?{...a,source:a.source??"musicbrainz",library:void 0}:{...a,library:void 0}}async function bJ(a,b){let c=a.library;if(!c)return null;let d=b.get(c.rootId);if(!d)return null;let e=c.relativePath.split("/").filter(Boolean);if(0===e.length)return null;let f=d;for(let a=0;a<e.length-1;a++){let b=e[a];if(!b)return null;f=await f.getDirectoryHandle(b)}let g=e[e.length-1];return g?(await f.getFileHandle(g)).getFile():null}function bK(a){return[...a].sort((a,b)=>b.updatedAt-a.updatedAt)}function bL(a){let{tracks:d,contextLabel:e,onClose:f}=a,{playlists:g,addTracksToPlaylist:h,createPlaylist:i}=ck(),j=(0,c.useId)(),k=(0,c.useId)(),l=(0,c.useRef)(null),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(null),s=(0,c.useMemo)(()=>bK(g),[g]),t=(0,c.useCallback)(a=>{var b,c;r(null),p((b=h(a,d),c=d.length,0===b?"Already in playlist":b===c?`Added ${b} track${1===b?"":"s"}`:`Added ${b} new track${1===b?"":"s"} (${c-b} already present)`))},[h,d]),u=(0,c.useCallback)(()=>{r(null);let a=m.trim();if(!a)return void r("Enter a playlist name.");let b=i(a,d.map(a=>a.id));b?(n(""),p(`Created “${b.name}” with ${b.trackIds.length} track${1===b.trackIds.length?"":"s"}`)):r("Could not create playlist.")},[i,m,d]);return(0,c.useEffect)(()=>{let a=a=>{"Escape"===a.key&&f()};return document.addEventListener("keydown",a),l.current?.focus(),()=>document.removeEventListener("keydown",a)},[f]),(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:f,children:(0,b.jsxs)("div",{ref:l,role:"dialog","aria-modal":"true","aria-labelledby":j,tabIndex:-1,className:"flex max-h-[min(85vh,32rem)] w-full max-w-md flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"flex shrink-0 items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h2",{id:j,className:"truncate text-base font-semibold text-zinc-900 dark:text-zinc-100",children:"Add to playlist"}),(0,b.jsx)("p",{className:"truncate text-sm text-zinc-500",children:e})]}),(0,b.jsx)("button",{type:"button",onClick:f,className:"shrink-0 cursor-pointer rounded-lg px-2 py-1 text-sm font-medium text-zinc-600 transition hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-4",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)("label",{htmlFor:k,className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Create new playlist"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{id:k,type:"text",value:m,onChange:a=>n(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),u())},placeholder:"My playlist",className:"min-w-0 flex-1 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-sm text-zinc-900 outline-none transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100 dark:focus:border-accent-500/60",autoFocus:!0}),(0,b.jsx)("button",{type:"button",onClick:u,className:"shrink-0 cursor-pointer rounded-lg bg-accent-500 px-3 py-2 text-xs font-semibold text-zinc-950 transition hover:bg-accent-400",children:"Create"})]}),q?(0,b.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",children:q}):null,o?(0,b.jsx)("p",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:o}):null]}),(0,b.jsxs)("div",{className:"mt-5",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Existing playlists"}),0===s.length?(0,b.jsx)("p",{className:"px-1 text-xs text-zinc-500",children:"No playlists yet — create one above."}):(0,b.jsx)("ul",{className:"flex flex-col gap-1",children:s.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>t(a.id),className:"flex w-full cursor-pointer items-center justify-between gap-3 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-left text-sm transition hover:border-accent-400/60 hover:bg-accent-50/40 dark:border-zinc-800 dark:bg-zinc-900/40 dark:hover:bg-accent-950/30",children:[(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsx)("span",{className:"block truncate font-medium text-zinc-900 dark:text-zinc-100",children:a.name}),(0,b.jsxs)("span",{className:"block truncate text-xs text-zinc-500",children:[a.trackIds.length," track",1===a.trackIds.length?"":"s"]})]}),(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})},a.id))})]})]})]})})}function bM(a){let{progress:c,onDismiss:d}=a;return c?(0,b.jsxs)("div",{role:"status","aria-live":"polite","aria-busy":c.percent<100,className:"pointer-events-auto fixed bottom-4 right-4 z-50 w-[min(100vw-2rem,22rem)] rounded-xl border border-zinc-200/90 bg-white/95 p-4 pr-10 shadow-lg shadow-zinc-900/10 backdrop-blur-sm dark:border-zinc-700/80 dark:bg-zinc-900/95 dark:shadow-black/40",children:[(0,b.jsx)("button",{type:"button",onClick:d,className:"absolute right-2 top-2 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-100 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200","aria-label":"Dismiss notification",children:(0,b.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:(0,b.jsx)("path",{d:"M6 6l12 12M18 6L6 18",strokeLinecap:"round"})})}),(0,b.jsx)("p",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:c.percent>=100?"Library scan complete":"Scanning library"}),(0,b.jsx)("p",{className:"mt-1 truncate text-xs text-zinc-600 dark:text-zinc-400",children:c.label}),(0,b.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":c.percent,"aria-label":"Library scan progress",className:"mt-3 h-1.5 overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-accent-500 transition-[width] duration-200 ease-out dark:bg-accent-400",style:{width:`${c.percent}%`}})}),(0,b.jsxs)("p",{className:"mt-2 text-right text-[11px] tabular-nums text-zinc-500 dark:text-zinc-500",children:[c.percent,"%",c.filesTotal>0?(0,b.jsxs)("span",{className:"text-zinc-400",children:[" ","· ",c.filesDone,"/",c.filesTotal," files"]}):null]})]}):null}a.s(["default",0,bK],40210);var bN=a.i(68093);function bO(a){return(0,b.jsxs)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:a.className,children:[(0,b.jsx)("circle",{cx:"5",cy:"12",r:"1.75"}),(0,b.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,b.jsx)("circle",{cx:"19",cy:"12",r:"1.75"})]})}function bP(a){let[d,e]=(0,c.useState)(!1),f=(0,c.useRef)(null),g=(0,c.useId)(),h=a.triggerLabel??"Track actions";return(0,c.useEffect)(()=>{if(!d)return;let a=a=>{let b=a.target;b instanceof Node&&(f.current?.contains(b)||e(!1))},b=a=>{"Escape"===a.key&&e(!1)};return document.addEventListener("pointerdown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("pointerdown",a),document.removeEventListener("keydown",b)}},[d]),(0,b.jsxs)("div",{ref:f,className:"relative shrink-0",children:[(0,b.jsx)("button",{type:"button","aria-haspopup":"menu","aria-expanded":d,"aria-controls":g,"aria-label":h,onClick:()=>e(a=>!a),className:"flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-200/80 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:(0,b.jsx)(bO,{className:"h-4 w-4"})}),d?(0,b.jsx)("div",{id:g,role:"menu",className:"absolute top-full right-0 z-30 mt-1 min-w-[11rem] overflow-hidden rounded-lg border border-zinc-200 bg-white py-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900",children:a.items.map(a=>(0,b.jsx)("button",{type:"button",role:"menuitem",disabled:a.disabled,onClick:()=>{a.disabled||(a.onSelect(),e(!1))},className:"block w-full cursor-pointer px-3 py-2 text-left text-xs font-medium text-zinc-800 transition hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-40 dark:text-zinc-200 dark:hover:bg-zinc-800",children:a.label},a.id))}):null]})}function bQ(a){let b=Math.max(0,Math.floor(a)),c=Math.floor(b/60);return`${c}:${(b%60).toString().padStart(2,"0")}`}function bR(a){let b=[{id:"details",label:"View details",onSelect:()=>a.onViewDetails(a.track)}];return a.onViewRelatedSongs&&b.push({id:"related",label:"Related songs",onSelect:()=>a.onViewRelatedSongs(a.track)}),a.onAddToPlaylist&&b.push({id:"add-to-playlist",label:"Add to playlist…",onSelect:()=>a.onAddToPlaylist(a.track)}),a.onDownload&&b.push({id:"download",label:"Download",onSelect:()=>a.onDownload(a.track)}),a.onRemoveFromLibrary?b.push({id:"remove",label:"Remove from library",onSelect:a.onRemoveFromLibrary}):a.onSave&&b.push({id:"save",label:a.alreadySaved?"In library":"Add to library",disabled:a.alreadySaved,onSelect:a.onSave}),b}function bS(a){let{openTrackDetails:c,openRelatedSongs:d,downloadTrack:e,removeFromLibrary:f}=ck(),g=a.compact?"px-1.5 py-1.5":"px-2 py-2",h=a.compact?"gap-1.5":"gap-2",i=a.subtitle??`${a.track.artist} \xb7 ${a.track.album}`;return(0,b.jsxs)("div",{className:`flex items-center ${h} rounded-lg ${g} hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:a.track.title}),(0,b.jsx)("p",{className:"truncate text-xs text-zinc-500",children:i})]}),(0,b.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:a.track.durationSec>0?bQ(a.track.durationSec):"—"}),(0,b.jsx)(bP,{triggerLabel:`Actions for ${a.track.title}`,items:bR({track:a.track,onViewDetails:c,onViewRelatedSongs:d,onDownload:e,onSave:a.alreadySaved?void 0:()=>a.onSave(a.track),onRemoveFromLibrary:a.alreadySaved?()=>f(a.track):void 0})}),(0,b.jsx)("button",{type:"button",onClick:()=>a.onQueue(a.track),className:"shrink-0 cursor-pointer rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})}a.s(["default",()=>bS],47179),a.s(["default",0,bP],67486),a.s(["formatDuration",0,bQ],80977),a.s(["default",0,bR],34991);var bT=a.i(85543);async function bU(a,b){let c=a.artist.trim(),d=a.track.trim(),e=a.mbid?.trim();if(!e&&(!c||!d))return[];let f=(0,bT.default)();if(!f)throw Error("Add a Last.fm API key in Settings → Last.fm");let g=new URL("/api/lastfm/track-similar",window.location.origin);g.searchParams.set("artist",c),g.searchParams.set("track",d),e&&g.searchParams.set("mbid",e),void 0!==a.limit&&g.searchParams.set("limit",String(a.limit));let h=await fetch(g,{signal:b,headers:{"X-Muzical-Lastfm-Api-Key":f}}),i=await h.json().catch(()=>({}));if(!h.ok)throw console.error("[Last.fm] proxy request failed",{status:h.status,statusText:h.statusText,proxyUrl:g.toString(),body:i}),Error(i.error?.trim()||`Last.fm request failed (${h.status})`);if(Array.isArray(i.tracks))return i.tracks;if("number"==typeof i.error&&i.error>0)throw Error(i.message?.trim()||`Last.fm error ${i.error}`);let j=i.similartracks?.track;if(!j)return[];let k=Array.isArray(j)?j:[j],l=[];for(let a of k){let b=function(a){var b;let c=a.name?.trim(),d="string"==typeof(b=a.artist)?b.trim():b&&"object"==typeof b?(b.name?.trim()||b["#text"]?.trim())??"":"";if(!c||!d)return null;let e=a.mbid?.trim();return{name:c,artistName:d,mbid:e&&e.length>0?e:void 0,match:function(a){if(void 0===a)return;let b=Number.parseFloat(a);return Number.isFinite(b)?b:void 0}(a.match),url:a.url?.trim()||void 0,durationSec:function(a){if(void 0===a)return;let b=Number.parseInt(a,10);return Number.isFinite(b)&&b>0?b:void 0}(a.duration)}}(a);b&&l.push(b)}return l}function bV(a){let b=a.name.trim()||"Unknown title",c=a.artistName.trim()||"Unknown artist",d=a.mbid?.trim();return{id:d&&d.length>0?`musicbrainz:${d}`:`lastfm:${encodeURIComponent(c)}\u0000${encodeURIComponent(b)}`,title:b,artist:c,album:"Unknown album",durationSec:a.durationSec??0,youtubeQuery:`${b} ${c}`.trim(),source:d?"musicbrainz":void 0}}function bW(a){let{seedTrack:d,onClose:e}=a,{libraryTracks:f,addToQueue:g,addToLibrary:h,compactLists:i}=ck(),j=(0,c.useId)(),k=(0,c.useRef)(null),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)([]),r=(0,c.useMemo)(()=>new Set(f.map(a=>a.id)),[f]);(0,c.useEffect)(()=>{if(!d)return;if(!(0,bT.default)()){m(!1),o(null),q([]);return}let a=new AbortController;m(!0),o(null),q([]);let b=function(a){let b="musicbrainz:";if(!a.startsWith(b))return null;let c=a.slice(b.length).trim();return c.length>0?c:null}(d.id);return bU({artist:d.artist,track:d.title,mbid:b??void 0,limit:25},a.signal).then(a=>{q(a.map(bV))}).catch(b=>{a.signal.aborted||o(b instanceof Error?b.message:"Failed to load related songs")}).finally(()=>{a.signal.aborted||m(!1)}),()=>a.abort()},[d]),(0,c.useEffect)(()=>{if(!d)return;let a=a=>{"Escape"===a.key&&e()};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[d,e]);let s=(0,c.useCallback)(()=>{0!==p.length&&g(p)},[g,p]);if(!d)return null;let t=(0,bT.default)().length>0;return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:a=>{a.target===a.currentTarget&&e()},children:(0,b.jsxs)("div",{ref:k,role:"dialog","aria-modal":"true","aria-labelledby":j,className:"flex max-h-[min(85vh,36rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h2",{id:j,className:"text-base font-semibold text-zinc-900 dark:text-zinc-50",children:"Related songs"}),(0,b.jsxs)("p",{className:"mt-0.5 truncate text-sm text-zinc-600 dark:text-zinc-400",children:[d.title," · ",d.artist]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-zinc-500",children:"Via Last.fm listening similarity"})]}),(0,b.jsx)("button",{type:"button",onClick:e,className:"shrink-0 rounded-full px-2 py-1 text-sm font-medium text-zinc-600 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-2 py-3",children:[t?null:(0,b.jsxs)("p",{className:"px-2 py-4 text-sm text-zinc-600 dark:text-zinc-400",children:["Add a Last.fm API key in"," ",(0,b.jsx)(bN.default,{href:"/settings/lastfm",className:"font-medium text-accent-700 underline-offset-2 hover:underline dark:text-accent-400",onClick:e,children:"Settings → Last.fm"}),"."]}),l?(0,b.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Loading related songs…"}):null,n?(0,b.jsx)("p",{className:"px-2 py-4 text-sm text-red-600 dark:text-red-400",children:n}):null,l||n||!t||0!==p.length?null:(0,b.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"No similar tracks found."}),!l&&p.length>0?(0,b.jsx)("ul",{className:"space-y-0.5",children:p.map(a=>(0,b.jsx)("li",{children:(0,b.jsx)(bS,{track:a,compact:i,alreadySaved:r.has(a.id)||a7(a),onQueue:g,onSave:h})},a.id))}):null]}),p.length>0?(0,b.jsx)("div",{className:"border-t border-zinc-200 px-4 py-3 dark:border-zinc-800",children:(0,b.jsxs)("button",{type:"button",onClick:s,className:"w-full rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400",children:["Add all to queue (",p.length,")"]})}):null]})})}let bX="mt-1 block w-full rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-100";function bY(a){return{title:a.title,artist:a.artist,album:a.album}}function bZ(a){let{track:d,canWriteToFile:e,saving:f,saveError:g,onSave:h}=a,[i,j]=(0,c.useState)(()=>bY(d)),[k,l]=(0,c.useState)(()=>bY(d));(0,c.useEffect)(()=>{let a=bY(d);j(a),l(a)},[d.id,d.title,d.artist,d.album]);let m=i.title!==k.title||i.artist!==k.artist||i.album!==k.album,n=m&&""!==i.title.trim()&&""!==i.artist.trim(),o=(0,c.useCallback)(()=>{j(k)},[k]),p=(0,c.useCallback)(async a=>{if(a.preventDefault(),!n||f)return;let b=be(d,i),c={title:b.title,artist:b.artist,album:b.album};await h(c),l(c),j(c)},[n,i,h,f,d]);return(0,b.jsxs)("form",{onSubmit:p,className:"space-y-3",children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Metadata"}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Title"}),(0,b.jsx)("input",{type:"text",value:i.title,onChange:a=>j(b=>({...b,title:a.target.value})),className:bX,autoComplete:"off",required:!0})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Artist"}),(0,b.jsx)("input",{type:"text",value:i.artist,onChange:a=>j(b=>({...b,artist:a.target.value})),className:bX,autoComplete:"off",required:!0})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Album"}),(0,b.jsx)("input",{type:"text",value:i.album,onChange:a=>j(b=>({...b,album:a.target.value})),className:bX,autoComplete:"off"})]}),e?(0,b.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving also writes ID3 tags to MP3 files when the library folder allows write access."}):null,d.youtubeQuery?.trim()?(0,b.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving updates the YouTube search query and clears any resolved video id for this track."}):null,g?(0,b.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",role:"alert",children:g}):null,(0,b.jsxs)("div",{className:"flex flex-wrap gap-2 pt-1",children:[(0,b.jsx)("button",{type:"submit",disabled:!n||f,className:"rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400 disabled:cursor-not-allowed disabled:opacity-50",children:f?"Saving…":"Save"}),(0,b.jsx)("button",{type:"button",disabled:!m||f,onClick:o,className:"rounded-full border border-zinc-300 bg-white px-4 py-2 text-sm font-medium text-zinc-800 transition hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700",children:"Revert"})]})]})}function b$(a){if(!Number.isFinite(a)||a<0)return"—";if(a<1024)return`${a} B`;let b=["KB","MB","GB","TB"],c=a/1024,d=0;for(;c>=1024&&d<b.length-1;)c/=1024,d+=1;return`${c<10?c.toFixed(1):Math.round(c).toString()} ${b[d]}`}function b_(a,b,c,d=!1){if(null==c)return;let e="number"==typeof c?String(c):c.trim();e&&a.push({label:b,value:e,mono:d})}async function b0(a){let b=[];b_(b,"File name",a.name,!0),b_(b,"MIME type",a.type||"—"),b.push({label:"File size",value:b$(a.size)}),b.push({label:"Last modified",value:new Date(a.lastModified).toLocaleString()});try{let{format:c,common:d}=await aZ(a,{duration:!0});c.container&&b_(b,"Container",c.container),c.codec&&b_(b,"Codec",c.codec),"number"==typeof c.bitrate&&c.bitrate>0&&b_(b,"Bitrate",`${Math.round(c.bitrate/1e3)} kbps`),"number"==typeof c.sampleRate&&c.sampleRate>0&&b_(b,"Sample rate",`${c.sampleRate} Hz`),"number"==typeof c.numberOfChannels&&b_(b,"Channels",c.numberOfChannels),"number"==typeof c.bitsPerSample&&c.bitsPerSample>0&&b_(b,"Bits per sample",c.bitsPerSample),b_(b,"Tag title",d.title),b_(b,"Tag artist",d.artist??d.artists?.join(", ")),b_(b,"Tag album artist",d.albumartist??d.albumartists?.join(", ")),b_(b,"Tag album",d.album),"number"==typeof d.year&&b_(b,"Tag year",d.year),d.genre?.length&&b_(b,"Tag genre",d.genre.join(", ")),"number"==typeof d.track?.no&&b_(b,"Tag track #",d.track.no),"number"==typeof d.disk?.no&&b_(b,"Tag disc #",d.disk.no),b_(b,"Tag composer",Array.isArray(d.composer)?d.composer.join(", "):d.composer),b_(b,"Tag comment",d.comment?.join(" · "))}catch{b_(b,"Embedded tags","Could not read metadata from this file")}return b}function b1(a,b,c,d=!1){let e=c?.trim();e&&a.push({label:b,value:e,mono:d})}function b2(a){return 0===a.rows.length?null:(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:a.title}),(0,b.jsx)("dl",{className:"mt-2 divide-y divide-zinc-100 rounded-lg border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800",children:a.rows.map(c=>(0,b.jsxs)("div",{className:"grid gap-0.5 px-3 py-2 sm:grid-cols-[7rem_1fr] sm:gap-3",children:[(0,b.jsx)("dt",{className:"text-xs font-medium text-zinc-500",children:c.label}),(0,b.jsx)("dd",{className:["text-sm break-words text-zinc-900 dark:text-zinc-100",c.mono?"font-mono text-xs":""].join(" "),children:c.value})]},`${a.title}-${c.label}`))})]})}function b3(a){let{track:d,onClose:e}=a,{roots:f,resolveFileForTrack:g,saveTrackMetadata:h}=ck(),i=(0,c.useId)(),j=(0,c.useRef)(null),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),u=(0,c.useMemo)(()=>{var a;let b;return d?(a={omitEditableTags:!0},b=[],a?.omitEditableTags||(b1(b,"Title",d.title),b1(b,"Artist",d.artist),b1(b,"Album",d.album)),d.durationSec>0&&b.push({label:"Duration",value:bQ(d.durationSec)}),b1(b,"Source",d.library?"Local library file":"youtube"===d.source||d.id.startsWith("youtube:")?"YouTube":"musicbrainz"===d.source||d.id.startsWith("musicbrainz:")?"MusicBrainz":d.youtubeVideoId?.trim()?"YouTube":d.youtubeQuery?.trim()?"YouTube (search)":"library"===d.source?"Local library":"Unknown"),b1(b,"Track ID",d.id,!0),d.library&&(b1(b,"Library folder",f.find(a=>a.id===d.library?.rootId)?.name??d.library.rootId),b1(b,"Relative path",d.library.relativePath,!0),"number"==typeof d.library.fileSize&&Number.isFinite(d.library.fileSize)&&b.push({label:"File size (at scan)",value:b$(d.library.fileSize)}),"number"==typeof d.library.fileLastModified&&Number.isFinite(d.library.fileLastModified)&&b.push({label:"Modified (at scan)",value:new Date(d.library.fileLastModified).toLocaleString()})),b1(b,"YouTube query",d.youtubeQuery,!0),b1(b,"YouTube video ID",d.youtubeVideoId,!0),b):[]},[d,f]),v=(0,c.useCallback)(async a=>{if(!d)return;r(!0),t(null);let b=await h(d.id,a);(r(!1),b.ok)?d.library&&g(d).then(async a=>{a&&l(await b0(a))}):t(b.reason)},[g,h,d]);return((0,c.useEffect)(()=>{if(!d?.library)return;let a=!1,b=requestAnimationFrame(()=>{a||(n(!0),p(null),l([]))});return g(d).then(async b=>{if(a)return;if(!b)return void p("Could not open the file. Try rescanning the library folder.");let c=await b0(b);a||l(c)}).catch(()=>{a||p("Failed to read file metadata.")}).finally(()=>{a||n(!1)}),()=>{a=!0,cancelAnimationFrame(b)}},[d,g]),(0,c.useEffect)(()=>{if(d?.library)return;let a=requestAnimationFrame(()=>{l([]),n(!1),p(null)});return()=>cancelAnimationFrame(a)},[d?.library,d?.id]),(0,c.useEffect)(()=>{if(!d)return;let a=a=>{"Escape"===a.key&&e()};return document.addEventListener("keydown",a),j.current?.focus(),()=>document.removeEventListener("keydown",a)},[d,e]),d)?(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:e,children:(0,b.jsxs)("div",{ref:j,role:"dialog","aria-modal":"true","aria-labelledby":i,tabIndex:-1,className:"flex max-h-[min(85vh,40rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"flex shrink-0 items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h2",{id:i,className:"truncate text-base font-semibold text-zinc-900 dark:text-zinc-100",children:d.title}),(0,b.jsxs)("p",{className:"truncate text-sm text-zinc-500",children:[d.artist," · ",d.album]})]}),(0,b.jsx)("button",{type:"button",onClick:e,className:"shrink-0 cursor-pointer rounded-lg px-2 py-1 text-sm font-medium text-zinc-600 transition hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 space-y-5 overflow-y-auto overscroll-contain px-4 py-4",children:[(0,b.jsx)(bZ,{track:d,canWriteToFile:!!d.library,saving:q,saveError:s,onSave:v}),(0,b.jsx)(b2,{title:"Details",rows:u}),d.library?(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"File & embedded metadata"}),m?(0,b.jsx)("p",{className:"mt-2 text-sm text-zinc-500",children:"Reading file…"}):null,o?(0,b.jsx)("p",{className:"mt-2 text-sm text-red-600 dark:text-red-400",role:"alert",children:o}):null,m||o||!(k.length>0)?null:(0,b.jsx)("dl",{className:"mt-2 divide-y divide-zinc-100 rounded-lg border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800",children:k.map(a=>(0,b.jsxs)("div",{className:"grid gap-0.5 px-3 py-2 sm:grid-cols-[7rem_1fr] sm:gap-3",children:[(0,b.jsx)("dt",{className:"text-xs font-medium text-zinc-500",children:a.label}),(0,b.jsx)("dd",{className:["text-sm text-zinc-900 break-words dark:text-zinc-100",a.mono?"font-mono text-xs":""].join(" "),children:a.value})]},`file-${a.label}`))})]}):null]})]})}):null}function b4(){return{maxScanDepth:0,followSymlinks:!1,enabledExtensions:[...i]}}function b5(){return b4()}function b6(a){return a.trim().replace(/\s+/g," ").slice(0,80)}function b7(a){}function b8(){return{trackIds:[],tracks:[],activeTrackId:null,positionSec:0}}function b9(a){let b=new Set,c=[];for(let d of a){let a=d.youtubeQuery?.trim();!(!a||d.youtubeVideoId?.trim())&&(b.has(d.id)||(b.add(d.id),c.push({trackId:d.id,query:a})))}return c}async function ca(a,b,c={}){if(0===a.length||(0,bh.default)())return;let d="number"==typeof c.maxConcurrent&&c.maxConcurrent>0?Math.floor(c.maxConcurrent):2,e=c.signal,f=0,g=async()=>{for(;f<a.length;){if(e?.aborted)return;let c=f;f+=1;let d=a[c];if((0,bh.default)())return;let g=null;try{g=await bq(d.query,e)}catch{continue}!(e?.aborted||(0,bh.default)())&&g&&b(d.trackId,g)}},h=Array.from({length:Math.min(d,a.length)},()=>g());await Promise.all(h)}a.s(["default",0,b4],17479),a.s(["default",0,b9],24388),a.s(["default",0,ca],2196);var cb=a.i(56663);let cc=(0,c.createContext)(null);function cd(a){return Array.isArray(a)?[...a]:[a]}function ce(a,b){}function cf(a,b){let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),[...c].sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"}))}let cg="Use Rescan all in Settings → Library, or remove and add the folders again so the browser can access your music.";async function ch(a){if(0===a.size)return!1;let b={mode:"read"};for(let c of a.values())try{let a=await c.queryPermission?.(b);if("granted"!==a)return!1}catch{return!1}return!0}async function ci(a,b){let c={mode:"read"};for(let d of a.values())try{let a=await d.queryPermission?.(c);if("granted"===a||!b)continue;await d.requestPermission?.(c)}catch{}}function cj(a){let{preferences:i}=(0,cb.useYoutubePreferences)(),n=(0,c.useRef)(null),o=(0,c.useRef)(!1),p=(0,c.useRef)(new Map),q=(0,c.useRef)([]),r=(0,c.useRef)([]),s=(0,c.useRef)(null),t=(0,c.useRef)(null),u=(0,c.useRef)(!1),v=(0,c.useRef)(!1),w=(0,c.useRef)(b5()),x=(0,c.useRef)(!1),y=(0,c.useRef)(!1),z=(0,c.useRef)(!1),A=(0,c.useRef)({activeQueueId:null,positionSec:0}),B=(0,c.useRef)(null),C=(0,c.useRef)(!1),[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)([]),[H,I]=(0,c.useState)([]),[J,K]=(0,c.useState)([]),[L,M]=(0,c.useState)([]),[N,O]=(0,c.useState)([]),[P,Q]=(0,c.useState)([]),[R,S]=(0,c.useState)({}),[T,U]=(0,c.useState)([]),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(!0),[Z,$]=(0,c.useState)(!1),[_,aa]=(0,c.useState)(b5),[ab,ac]=(0,c.useState)(!1),[ad,ae]=(0,c.useState)(null),[af,ag]=(0,c.useState)(null),[ah,ai]=(0,c.useState)(!1),[aj,ak]=(0,c.useState)(!1),[al,am]=(0,c.useState)(!1),[an,ao]=(0,c.useState)(null),[ap,aq]=(0,c.useState)(null),[ar,as]=(0,c.useState)(!1),[at,au]=(0,c.useState)(null),[av,aw]=(0,c.useState)(null),[ax,ay]=(0,c.useState)(!1),[az,aA]=(0,c.useState)(0),aB=(0,c.useRef)(0),[aC,aD]=(0,c.useState)([]),aE=(0,c.useRef)(!1),[aF,aG]=(0,c.useState)(null),aH=(0,c.useCallback)(a=>{let b=Math.max(0,Math.floor(a));0!==b&&(aB.current+=b,aA(aB.current),ay(!0))},[]),aI=(0,c.useCallback)(a=>{let b=Math.max(0,Math.floor(a));aB.current=Math.max(0,aB.current-b),aA(aB.current),0===aB.current&&ay(!1)},[]);(0,c.useEffect)(()=>{Promise.resolve().then(()=>{as(!1)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{Q([].slice(0,24))})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{S({}),C.current=!0})},[]),(0,c.useEffect)(()=>{queueMicrotask(()=>{U([].slice(0,12)),v.current=!0})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{W(!1)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{Y(!0)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{$(!1),x.current=!1})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{let a=b5();w.current=a,aa(a)})},[]),(0,c.useEffect)(()=>{Promise.resolve().then(()=>{y.current=!1,ac(!1)})},[]),(0,c.useEffect)(()=>{P.slice(0,24)},[P]),(0,c.useEffect)(()=>{C.current},[R]),(0,c.useEffect)(()=>{v.current&&e(T.slice(0,12))},[T]),(0,c.useEffect)(()=>{queueMicrotask(()=>{aD([]),aE.current=!0})},[]),(0,c.useEffect)(()=>{aE.current},[aC]),(0,c.useEffect)(()=>{r.current=L},[L]),(0,c.useEffect)(()=>()=>{s.current&&(clearTimeout(s.current),s.current=null),t.current&&(clearTimeout(t.current),t.current=null),B.current&&(clearTimeout(B.current),B.current=null)},[]);let aJ=(0,c.useCallback)(()=>{if(!y.current)return;if(B.current&&(clearTimeout(B.current),B.current=null),0===N.length)return void b7(b8());let a=A.current.activeQueueId,b=a?N.find(b=>b.queueId===a):N[0];b7({trackIds:N.map(a=>a.track.id),tracks:N.map(a=>a.track),activeTrackId:b?.track.id??null,positionSec:A.current.positionSec})},[N]),aK=(0,c.useCallback)(()=>{!y.current||z.current&&(B.current&&clearTimeout(B.current),B.current=setTimeout(()=>{B.current=null,aJ()},400))},[aJ]),aL=(0,c.useCallback)(a=>{z.current||(z.current=!0,y.current,ak(!0))},[]);(0,c.useEffect)(()=>{if(!z.current)return;let a=new Map(L.map(a=>[a.id,a]));O(b=>b.map(b=>{let c=a.get(b.track.id);return c?{...b,track:c}:b}))},[L]),(0,c.useEffect)(()=>{aK()},[N,aK]),(0,c.useEffect)(()=>{!ah||z.current||aL(L)},[ah,L,aL]),(0,c.useEffect)(()=>{let a=()=>{aJ()};return window.addEventListener("pagehide",a),()=>{window.removeEventListener("pagehide",a)}},[aJ]);let aM=(0,c.useCallback)(()=>{s.current&&(clearTimeout(s.current),s.current=null);let a=n.current;a&&l(a,q.current.map(a=>a.id),r.current).catch(()=>{})},[]),aN=(0,c.useCallback)(()=>{s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{s.current=null,aM()},450)},[aM]);(0,c.useEffect)(()=>{let a=()=>{aM()};return window.addEventListener("pagehide",a),()=>{window.removeEventListener("pagehide",a)}},[aM]);let aO=(0,c.useCallback)(()=>{t.current&&(clearTimeout(t.current),t.current=null)},[]),aP=(0,c.useCallback)(()=>{aO(),t.current=setTimeout(()=>{t.current=null,ao(null)},4e3)},[aO]),aQ=(0,c.useCallback)(()=>{aO(),ao(null)},[aO]),aR=(0,c.useCallback)(a=>{ao({percent:function(a){if(a.rootCount<=0)return 0;let b=100/a.rootCount,c=a.rootIndex*b;if("walk"===a.phase)c+=.12*b;else{let d=a.filesTotal??0,e=a.filesDone??0;c+=b*(.12+.88*(d>0?Math.min(1,e/d):0))}return Math.min(100,Math.round(c))}(a),label:function(a){let b=a.rootCount>1?`[${a.rootIndex+1}/${a.rootCount}] `:"";if("walk"===a.phase)return`${b}Listing files in ${a.rootName}…`;let c=a.filesTotal??0,d=a.filesDone??0,e=a.filesSkipped??0;return c>0?e>0?`${b}Reading tags (${d}/${c}, ${e} unchanged) \xb7 ${a.rootName}`:`${b}Reading tags (${d}/${c}) \xb7 ${a.rootName}`:`${b}Reading tags \xb7 ${a.rootName}`}(a),rootName:a.rootName,filesDone:a.filesDone??0,filesTotal:a.filesTotal??0})},[]),aS=(0,c.useCallback)(async a=>{if(o.current)return null;o.current=!0;let b=q.current,c=p.current;aO(),am(!0),aq(null),ao({percent:0,label:"Starting library scan…",rootName:null,filesDone:0,filesTotal:0});try{var d;b.length>0&&await ci(c,a);let e={maxScanDepth:(d=w.current).maxScanDepth,followSymlinks:d.followSymlinks,enabledExtensions:new Set(d.enabledExtensions)},f=await a6(b,c,e,r.current,x.current,aR);return ao({percent:100,label:f.tracks.length>0?`Found ${f.tracks.length} track${1===f.tracks.length?"":"s"}`:"Scan complete",rootName:null,filesDone:f.tracks.length,filesTotal:f.tracks.length}),aP(),f}catch(a){return ao(null),aq(a instanceof Error?a.message:"Scan failed"),null}finally{o.current=!1,am(!1)}},[aR,aO,aP]),aT=(0,c.useCallback)(async(a=!1)=>{let b=await aS(a);if(!b)return;let c=q.current,{tracks:d,failedRootCount:e,firstError:f}=b,g=bH(d,r.current);M(g);let h=n.current;if(h)try{await l(h,c.map(a=>a.id),g)}catch{}a&&e>0&&0===d.length&&c.length>0&&aq(f?`${f} ${cg}`:cg)},[aS]),aU=(0,c.useCallback)((a,b)=>{if(!Number.isFinite(b)||b<=0)return;let c=c=>c.id===a&&c.durationSec<=0?{...c,durationSec:b}:c;M(a=>a.map(c)),O(a=>a.map(a=>({...a,track:c(a.track)}))),aN()},[aN]),aV=(0,c.useCallback)((a,b)=>{let c=a.trim();if(!c)return;let d=a=>a.id===c?b(a):a;M(a=>a.map(d)),O(a=>a.map(a=>({...a,track:d(a.track)}))),au(a=>a?.id===c?b(a):a),aN()},[aN]),aW=(0,c.useCallback)(async(a,b)=>{let c=a.trim();if(!c)return{ok:!1,reason:"Invalid track."};let d=r.current.find(a=>a.id===c);if(!d)return{ok:!1,reason:"Track not found."};let e=be(d,b);return(aV(c,()=>e),e.library)?bF(e,{title:e.title,artist:e.artist,album:e.album},p.current,!0):{ok:!0}},[aV]),aX=(0,c.useCallback)(async a=>bG(a,p.current,!0),[]),aY=(0,c.useCallback)((a,b)=>{let c=a.trim();if(!c)return null;let d=b.artist.trim();if(!d)return null;let e=b.album.trim(),f=a=>a9(a.album,a.artist)===c,g=ba(r.current,c);if(0===g.length)return null;let h=a9(e||g[0].album,d),i=a=>f(a)?bc(a,{artist:d,album:e}):a;return M(a=>a.map(i)),O(a=>a.map(a=>({...a,track:i(a.track)}))),au(a=>a&&f(a)?i(a):a),I(a=>{if(!a.includes(c))return a;let b=a.filter(a=>a!==c);return b.includes(h)?b:[...b,h]}),aN(),h},[aN]),aZ=(0,c.useCallback)((a,b)=>{let c=a.trim(),d=b.artist.trim();if(!c||!d)return null;let e=a=>a8(a.artist)===c;if(0===bb(r.current,c).length)return null;let f=a=>e(a)?bd(a,{artist:d}):a;return M(a=>a.map(f)),O(a=>a.map(a=>({...a,track:f(a.track)}))),au(a=>a&&e(a)?f(a):a),G(a=>{if(!a.includes(c))return a;let b=a.filter(a=>a!==c);return b.includes(d)?b:[...b,d]}),I(a=>{let b=!1,e=a.map(a=>{let e=a.split("\0"),f=e[0]??"";return a8(e[1]??"")!==c?a:(b=!0,a9(f,d))});return b?[...new Set(e)]:a}),aN(),d},[aN]);(0,c.useEffect)(()=>{if(!i.prefetchQueueVideoIds||(0,bh.default)())return;let a=i.prefetchQueueMaxTracks,b=b9(N.map(a=>a.track)).slice(0,a);if(0===b.length)return;let c=new AbortController,d=b.length;return aH(d),ca(b,(a,b)=>{aV(a,a=>({...a,youtubeVideoId:b}))},{signal:c.signal}).finally(()=>{aI(d)}),()=>{c.abort()}},[N,aV,i.prefetchQueueVideoIds,i.prefetchQueueMaxTracks,aH,aI]);let a$=(0,c.useCallback)(a=>{let b=(Array.isArray(a)?a:[a]).map(a=>({queueId:crypto.randomUUID(),track:a}));O(a=>[...a,...b])},[]),a_=(0,c.useCallback)(a=>{let b=Array.isArray(a)?[...a]:[a];if(0===b.length)return;let c=b.map(a=>({queueId:crypto.randomUUID(),track:a})),d=c[0].queueId;A.current={activeQueueId:d,positionSec:0},O(c),ag({activeQueueId:d}),y.current&&(B.current&&(clearTimeout(B.current),B.current=null),b7({trackIds:b.map(a=>a.id),tracks:b,activeTrackId:b[0].id,positionSec:0}))},[]),a0=(0,c.useCallback)(()=>{ag(null)},[]),a1=(0,c.useCallback)(a=>{let b=(Array.isArray(a)?a:[a]).map(bI);0!==b.length&&(M(a=>{let c=new Map(a.map(a=>[a.id,a])),d=!1;for(let a of b){let b=c.get(a.id);if(b){c.set(a.id,{...b,...a,youtubeVideoId:a.youtubeVideoId??b.youtubeVideoId}),d=!0;continue}c.set(a.id,a),d=!0}return d?[...c.values()]:a}),aN())},[aN]),a2=(0,c.useCallback)(a=>{let b=new Set((Array.isArray(a)?a:[a]).map(a=>a.id).filter(Boolean));0!==b.size&&(M(a=>a.filter(a=>!b.has(a.id))),E(a=>a.filter(a=>!b.has(a))),O(a=>a.filter(a=>!b.has(a.track.id))),aN())},[aN]),a3=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=ba(r.current,b);0!==c.length&&(I(a=>a.filter(a=>a!==b)),a2(c))},[a2]),a4=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=bb(r.current,b);0!==c.length&&(G(a=>a.filter(a=>a!==b)),a2(c))},[a2]),a5=(0,c.useCallback)(()=>{let a=r.current,b=new Set(a.filter(a7).map(a=>a.id));0!==b.size&&(M(a.filter(a=>!a7(a))),E(a=>a.filter(a=>!b.has(a))),O(a=>a.filter(a=>!b.has(a.track.id))),aN())},[aN]),bf=(0,c.useCallback)(a=>{O(b=>b.filter(b=>b.queueId!==a))},[]),bg=(0,c.useCallback)(()=>{A.current={activeQueueId:null,positionSec:0},O([]),y.current&&(B.current&&(clearTimeout(B.current),B.current=null),b7(b8()))},[]),bi=(0,c.useCallback)((a,b)=>{if(!Number.isFinite(a)||!Number.isFinite(b))return;let c=Math.trunc(a),d=Math.trunc(b);O(a=>{if(c<0||d<0||c>=a.length||d>=a.length||c===d)return a;let b=[...a],[e]=b.splice(c,1);return b.splice(d,0,e),b})},[]),bj=(0,c.useCallback)(a=>{let b=a.trim();b&&Q(a=>[b,...a.filter(a=>a!==b)].slice(0,24))},[]),bk=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=Date.now();bj(b),S(a=>{let d=a[b];return{...a,[b]:{trackId:b,playCount:(d?.playCount??0)+1,completedCount:d?.completedCount??0,skipCount:d?.skipCount??0,totalListenSec:d?.totalListenSec??0,firstPlayedAt:d?.firstPlayedAt??c,lastPlayedAt:c,lastCompletedAt:d?.lastCompletedAt,lastSkippedAt:d?.lastSkippedAt}}})},[bj]),bl=(0,c.useCallback)((a,b)=>{let c=a.trim();c&&Number.isFinite(b)&&!(b<=0)&&S(a=>{let d=a[c],e=Math.min(30,Math.max(0,b));return e<=0?a:{...a,[c]:{trackId:c,playCount:d?.playCount??0,completedCount:d?.completedCount??0,skipCount:d?.skipCount??0,totalListenSec:(d?.totalListenSec??0)+e,firstPlayedAt:d?.firstPlayedAt,lastPlayedAt:d?.lastPlayedAt,lastCompletedAt:d?.lastCompletedAt,lastSkippedAt:d?.lastSkippedAt}}})},[]),bm=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=Date.now();S(a=>{let d=a[b];return{...a,[b]:{trackId:b,playCount:d?.playCount??0,completedCount:(d?.completedCount??0)+1,skipCount:d?.skipCount??0,totalListenSec:d?.totalListenSec??0,firstPlayedAt:d?.firstPlayedAt,lastPlayedAt:d?.lastPlayedAt,lastCompletedAt:c,lastSkippedAt:d?.lastSkippedAt}}})},[]),bn=(0,c.useCallback)(a=>{let b=a.trim();if(!b)return;let c=Date.now();S(a=>{let d=a[b];return{...a,[b]:{trackId:b,playCount:d?.playCount??0,completedCount:d?.completedCount??0,skipCount:(d?.skipCount??0)+1,totalListenSec:d?.totalListenSec??0,firstPlayedAt:d?.firstPlayedAt,lastPlayedAt:d?.lastPlayedAt,lastCompletedAt:d?.lastCompletedAt,lastSkippedAt:c}}})},[]),bo=(0,c.useCallback)(()=>{S({})},[]),bp=(0,c.useCallback)((a,b)=>{let c=b.trim();!c||"library"===a&&c.length<2||"musicbrainz"===a&&c.length<3||"youtube"===a&&c.length<2||U(b=>{let f=function(a,b){let c=b.query.trim();if(!c)return[...a];let e={source:b.source,query:c},f=d(e);return[e,...a.filter(a=>d(a)!==f)].slice(0,12)}(b,{source:a,query:c});return v.current&&e(f),f})},[]),bq=(0,c.useCallback)(()=>{U([]),e([])},[]),br=(0,c.useCallback)((a,b)=>{let c,d=b6(a);if(!d)return null;let e=Date.now(),f=new Set,g=[];if(b)for(let a of b)!a||f.has(a)||(f.add(a),g.push(a));let h={id:(c=Math.random().toString(36).slice(2,10),`pl_${Date.now().toString(36)}_${c}`),name:d,trackIds:g,createdAt:e,updatedAt:e};return aD(a=>[h,...a].slice(0,200)),h},[]),bs=(0,c.useCallback)((a,b)=>{let c=b6(b);if(!c)return!1;let d=!1;return aD(b=>b.map(b=>b.id!==a||(d=!0,b.name===c)?b:{...b,name:c,updatedAt:Date.now()})),d},[]),bt=(0,c.useCallback)(a=>{aD(b=>b.filter(b=>b.id!==a))},[]),bu=(0,c.useCallback)((a,b)=>{let c=cd(b).map(a=>a.id).filter(a=>!!a);if(0===c.length)return 0;let d=0;return aD(b=>b.map(b=>{if(b.id!==a)return b;let e=function(a,b){if(0===b.length)return a;let c=new Set(a.trackIds),d=[];for(let a of b)!a||c.has(a)||(c.add(a),d.push(a));return 0===d.length?a:{...a,trackIds:[...a.trackIds,...d],updatedAt:Date.now()}}(b,c);return d=e.trackIds.length-b.trackIds.length,e})),d},[]),bw=(0,c.useCallback)((a,b)=>{0!==b.length&&aD(c=>c.map(c=>c.id===a?function(a,b){if(0===b.length)return a;let c=new Set(b),d=a.trackIds.filter(a=>!c.has(a));return d.length===a.trackIds.length?a:{...a,trackIds:d,updatedAt:Date.now()}}(c,b):c))},[]),bx=(0,c.useCallback)((a,b,c)=>{aD(d=>d.map(d=>d.id===a?function(a,b,c){let d=a.trackIds.length;if(b<0||b>=d)return a;let e=Math.max(0,Math.min(d-1,c));if(e===b)return a;let f=[...a.trackIds],[g]=f.splice(b,1);return f.splice(e,0,g),{...a,trackIds:f,updatedAt:Date.now()}}(d,b,c):d))},[]),by=(0,c.useCallback)((a,b)=>{let c=cd(a);0!==c.length&&aG({tracks:c,contextLabel:b})},[]),bz=(0,c.useCallback)(()=>{aG(null)},[]),bA=(0,c.useCallback)(a=>{W(a),ce("muzical.compactLists",a)},[]),bB=(0,c.useCallback)(a=>{Y(a),ce("muzical.autoRescanOnStartup",a)},[]),bC=(0,c.useCallback)(a=>{x.current=a,$(a),ce("muzical.logLibraryScanTiming",a)},[]),bD=(0,c.useCallback)(a=>{au(a)},[]),bE=(0,c.useCallback)(()=>{au(null)},[]),bK=(0,c.useCallback)(a=>{aw(a)},[]),bN=(0,c.useCallback)(()=>{aw(null)},[]),bO=(0,c.useCallback)(a=>{w.current=a,aa(a)},[]),bP=(0,c.useCallback)(a=>{y.current=a,ac(a),ce("muzical.rememberLastQueue",a),a?aJ():b7(b8())},[aJ]),bQ=(0,c.useCallback)(()=>{ae(null)},[]),bR=(0,c.useCallback)((a,b)=>{A.current={activeQueueId:a,positionSec:b},aK()},[aK]),bS=(0,c.useCallback)(a=>bJ(a,p.current),[]),bT=(0,c.useCallback)(a=>{bv(a,bS).catch(a=>{let b=a instanceof Error?a.message:"Could not download this track.";window.alert(b)})},[bS]),bU=(0,c.useMemo)(()=>new Set(D),[D]),bV=(0,c.useMemo)(()=>new Set(F),[F]),bX=(0,c.useMemo)(()=>new Set(H),[H]),bY=(0,c.useCallback)(a=>bU.has(a),[bU]),bZ=(0,c.useCallback)(a=>bV.has(a),[bV]),b$=(0,c.useCallback)(a=>bX.has(a),[bX]),b_=(0,c.useCallback)(a=>{E(b=>cf(b,a))},[]),b0=(0,c.useCallback)(a=>{G(b=>cf(b,a))},[]),b1=(0,c.useCallback)(a=>{I(b=>cf(b,a))},[]),b2=(0,c.useCallback)(a=>{b_(a.id)},[b_]),b4=(0,c.useCallback)(a=>{E([...a.songIds]),G([...a.artistNames]),I([...a.albumKeys])},[]);(0,c.useEffect)(()=>{if(!u.current)return;let a=n.current;a&&(function(a,b){if(!a.objectStoreNames.contains(h))return Promise.reject(Error(`Missing object store ${h}`));let c={key:k,songIds:[...b.songIds],artistNames:[...b.artistNames],albumKeys:[...b.albumKeys]};return new Promise((b,d)=>{let e=a.transaction(h,"readwrite"),f=e.objectStore(h).put(c);f.onerror=()=>{d(f.error??Error("IndexedDB favorites put failed"))},e.oncomplete=()=>{b()},e.onerror=()=>{d(e.error??Error("IndexedDB favorites transaction failed"))}})})(a,{songIds:D,artistNames:F,albumKeys:H}).catch(()=>{})},[D,F,H]);let cj=(0,c.useCallback)(async a=>{try{let b=crypto.randomUUID(),c=Date.now(),d={id:b,name:a.name,addedAt:c,handle:a},e=n.current;if(!e)return void aq("Library database is not ready yet.");await new Promise((a,b)=>{let c=e.transaction(g,"readwrite"),f=c.objectStore(g).put(d);f.onerror=()=>{b(f.error??Error("IndexedDB put failed"))},c.oncomplete=()=>{a()},c.onerror=()=>{b(c.error??Error("IndexedDB transaction failed"))}}),p.current.set(b,a);let f=[...q.current,{id:b,name:a.name,addedAt:c}];q.current=f,K(f),await aT(!0)}catch(a){aq(function(a){if(a instanceof DOMException){if("AbortError"===a.name)return"";if("SecurityError"===a.name||"NotAllowedError"===a.name||a.message.includes("not allowed by the user agent")||a.message.includes("The request is not allowed"))return"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost."}if(a instanceof Error){let b=a.message;return b.includes("not allowed by the user agent")||b.includes("The request is not allowed")?"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost.":b}return"Could not access the folder."}(a))}},[aT]),ck=(0,c.useCallback)(()=>{},[ar,cj]),cl=(0,c.useCallback)(async a=>{let b=n.current;if(b)try{await new Promise((c,d)=>{let e=b.transaction(g,"readwrite"),f=e.objectStore(g).delete(a);f.onerror=()=>{d(f.error??Error("IndexedDB delete failed"))},e.oncomplete=()=>{c()},e.onerror=()=>{d(e.error??Error("IndexedDB transaction failed"))}}),p.current.delete(a);let c=q.current.filter(b=>b.id!==a);q.current=c,K(c),await aT(!0)}catch(a){aq(a instanceof Error?a.message:"Could not remove library folder")}},[aT]),cm=(0,c.useCallback)(async()=>{await aT(!0)},[aT]);(0,c.useEffect)(()=>{let a=!1;return(async()=>{let b=[];try{var c;let d=await new Promise((a,b)=>{let c=indexedDB.open(f,3);c.onerror=()=>{b(c.error??Error("IndexedDB open failed"))},c.onsuccess=()=>{a(c.result)},c.onupgradeneeded=()=>{let a=c.result;a.objectStoreNames.contains(g)||a.createObjectStore(g,{keyPath:"id"}),a.objectStoreNames.contains(h)||a.createObjectStore(h,{keyPath:"key"})}});if(a)return void d.close();n.current=d;try{let b=await (!d.objectStoreNames.contains(h)?Promise.resolve(m()):new Promise((a,b)=>{let c=d.transaction(h,"readonly").objectStore(h).get(k);c.onerror=()=>{b(c.error??Error("IndexedDB favorites get failed"))},c.onsuccess=()=>{let b=c.result;b&&b.key===k&&Array.isArray(b.songIds)&&Array.isArray(b.artistNames)&&Array.isArray(b.albumKeys)?a({key:k,songIds:[...b.songIds],artistNames:[...b.artistNames],albumKeys:[...b.albumKeys]}):a(m())}}));a||(E(b.songIds),G(b.artistNames),I(b.albumKeys))}catch{a||(E([]),G([]),I([]))}a||(u.current=!0),navigator.storage?.persist?.();let e=await new Promise((a,b)=>{let c=d.transaction(g,"readonly").objectStore(g).getAll();c.onerror=()=>{b(c.error??Error("IndexedDB getAll failed"))},c.onsuccess=()=>{a(c.result)}});if(a)return;let i=new Map,o=[];for(let a of e)i.set(a.id,a.handle),o.push({id:a.id,name:a.name,addedAt:a.addedAt});if(a)return;p.current=i,q.current=o,K(o),b=[];let s=!1,t=[];try{let e=await (!d.objectStoreNames.contains(h)?Promise.resolve(null):new Promise((a,b)=>{let c=d.transaction(h,"readonly").objectStore(h).get(j);c.onerror=()=>{b(c.error??Error("IndexedDB catalog get failed"))},c.onsuccess=()=>{let b=c.result;b&&b.key===j&&Array.isArray(b.rootIds)&&Array.isArray(b.tracks)?a(b):a(null)}}));if(!a&&e){let a=function(a){let b=[],c=new Set;for(let d of a){let a=function(a){if(!a||"object"!=typeof a||"string"!=typeof a.id||!a.id.trim()||"string"!=typeof a.title||"string"!=typeof a.artist||"string"!=typeof a.album)return null;let b="number"==typeof a.durationSec&&Number.isFinite(a.durationSec)&&a.durationSec>=0?a.durationSec:0,c="library"===a.source||"musicbrainz"===a.source||"youtube"===a.source?a.source:void 0,d="string"==typeof a.audioUrl?a.audioUrl:null===a.audioUrl?null:void 0,e="string"==typeof a.youtubeQuery?a.youtubeQuery:void 0,f="string"==typeof a.youtubeVideoId?a.youtubeVideoId:void 0,g=function(a){if(a&&"object"==typeof a&&"string"==typeof a.rootId&&"string"==typeof a.relativePath)return{rootId:a.rootId,relativePath:a.relativePath}}(a.library);return{id:a.id.trim(),title:a.title,artist:a.artist,album:a.album,durationSec:b,audioUrl:d,youtubeQuery:e,youtubeVideoId:f,source:c,library:g}}(d);!a||c.has(a.id)||(c.add(a.id),b.push(a))}return b}(e.tracks);(t=a.filter(a7),o.length>0&&(c=e.rootIds,o.length===c.length&&[...o].map(a=>a.id).sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})).every((a,b)=>a===c[b])))?(b=a,M(b),s=!0):t.length>0&&(b=t,M(t),s=!0)}}catch{}if(a)return;let v=o.length>0&&await ch(i);if(a)return;if(v&&!a){let c=await aS(!1);if(a||!c)return;let{tracks:e,firstError:f,failedRootCount:g}=c;if(0===e.length&&o.length>0&&g>0)if(s)aq(null);else{b=bH(e,t),M(b);try{await l(d,o.map(a=>a.id),b)}catch{}aq(f?`${f} ${cg}`:cg)}else{b=bH(e,r.current),M(b);try{await l(d,o.map(a=>a.id),b)}catch{}}}}catch(b){a||aq(b instanceof Error?b.message:"Could not load library")}finally{a||(z.current||aL(b),ai(!0))}})(),()=>{a=!0}},[aS,aL]);let cn=(0,c.useMemo)(()=>({roots:J,libraryTracks:L,queue:N,recentlyPlayedTrackIds:P,listeningStats:R,recentBrowseSearches:T,compactLists:V,autoRescanOnStartup:X,logLibraryScanTiming:Z,scanPreferences:_,rememberLastQueue:ab,playbackRestore:ad,playNowRequest:af,isQueueReady:aj,isScanning:al,youtubePrefetchActive:ax,youtubePrefetchVideoCount:az,beginYoutubePrefetch:aH,endYoutubePrefetch:aI,scanError:ap,hasDirectoryPicker:ar,addLibraryFolder:ck,removeLibraryFolder:cl,rescanAll:cm,addToQueue:a$,playNow:a_,addToLibrary:a1,removeFromLibrary:a2,removeAlbumFromLibrary:a3,removeArtistFromLibrary:a4,removeAllMusicBrainzFromLibrary:a5,removeFromQueue:bf,clearQueue:bg,recordRecentlyPlayedTrack:bj,recordTrackPlaybackStarted:bk,recordTrackPlaybackProgress:bl,recordTrackPlaybackCompleted:bm,recordTrackSkipped:bn,clearListeningStats:bo,recordRecentBrowseSearch:bp,clearRecentBrowseSearches:bq,setCompactLists:bA,setAutoRescanOnStartup:bB,setLogLibraryScanTiming:bC,setScanPreferences:bO,setRememberLastQueue:bP,consumePlaybackRestore:bQ,consumePlayNowRequest:a0,reportPlayback:bR,reorderQueueItems:bi,resolveFileForTrack:bS,downloadTrack:bT,bumpTrackDuration:aU,patchTrackById:aV,saveTrackMetadata:aW,writeLibraryTracksToFiles:aX,patchAlbumMetadataByKey:aY,patchArtistMetadataByKey:aZ,favoriteSongIds:D,favoriteArtistNames:F,favoriteAlbumKeys:H,isFavoriteSong:bY,isFavoriteArtist:bZ,isFavoriteAlbum:b$,toggleFavoriteSong:b_,toggleFavoriteArtist:b0,toggleFavoriteAlbum:b1,toggleFavoriteTrack:b2,importFavorites:b4,detailsTrack:at,openTrackDetails:bD,closeTrackDetails:bE,relatedSongsSeedTrack:av,openRelatedSongs:bK,closeRelatedSongs:bN,playlists:aC,createPlaylist:br,renamePlaylist:bs,deletePlaylist:bt,addTracksToPlaylist:bu,removeTracksFromPlaylist:bw,reorderPlaylistTracks:bx,openAddToPlaylist:by}),[J,L,N,P,R,T,V,X,Z,_,ab,ad,af,aj,al,ax,az,aH,aI,ap,ar,ck,cl,cm,a$,a_,a1,a2,a3,a4,a5,bf,bg,bj,bk,bl,bm,bn,bo,bp,bq,bA,bB,bC,bO,bP,bQ,a0,bR,bi,bS,bT,aU,aV,aW,aX,aY,aZ,D,F,H,bY,bZ,b$,b_,b0,b1,b2,b4,at,bD,bE,av,bK,bN,aC,br,bs,bt,bu,bw,bx,by]);return(0,b.jsxs)(cc.Provider,{value:cn,children:[a.children,(0,b.jsx)(bM,{progress:an,onDismiss:aQ}),(0,b.jsx)(b3,{track:at,onClose:bE}),(0,b.jsx)(bW,{seedTrack:av,onClose:bN}),aF?(0,b.jsx)(bL,{tracks:aF.tracks,contextLabel:aF.contextLabel,onClose:bz}):null]})}function ck(){let a=(0,c.useContext)(cc);if(!a)throw Error("useLibrary must be used within LibraryProvider");return a}}];
2
2
 
3
3
  //# sourceMappingURL=_0b8qx~m._.js.map