tangled
alpha
login
or
join now
mackuba.eu
/
skythread
14
fork
atom
Thread viewer for Bluesky
14
fork
atom
overview
issues
pulls
pipelines
updated bundled builds
mackuba.eu
3 months ago
8964b826
ba1348e9
+53
-6
2 changed files
expand all
collapse all
unified
split
dist
skythread.css
skythread.js
+1
dist/skythread.css
···
1
1
+
.dialog.svelte-1fggtsn{position:fixed;display:flex;z-index:10;background-color:#f0f0f066;justify-content:center;align-items: center;padding-bottom:5%;inset:0}.dialog.svelte-1fggtsn.expanded{padding-bottom:0}.dialog.svelte-1fggtsn~main{filter:blur(8px)}.dialog.svelte-1fggtsn form{position:relative;background-color:#f5faff;border:2px solid #b3d9ff;border-radius:10px;padding:15px 25px}.dialog.svelte-1fggtsn .close{position:absolute;color:#80bfff;opacity:.6;top:5px;right:5px}.dialog.svelte-1fggtsn .close:hover{color:#4ca6ff;opacity:1}.dialog.svelte-1fggtsn p{text-align:center;line-height:125%}.dialog.svelte-1fggtsn h2{text-align:center;margin-bottom:25px;padding-right:10px;font-size:13pt;font-weight:600}.dialog.svelte-1fggtsn input[type=text]{border:1px solid #d6d6d6;border-radius:4px;width:200px;margin:0 15px;padding:5px 6px;font-size:11pt}.dialog.svelte-1fggtsn input[type=password]{border:1px solid #d6d6d6;border-radius:4px;width:200px;margin:0 15px;padding:5px 6px;font-size:11pt}.dialog.svelte-1fggtsn p.submit{margin-top:25px}.dialog.svelte-1fggtsn input[type=submit]{background-color:#d6ebff;border:1px solid #b6d9fb;border-radius:4px;width:150px;padding:5px 6px;font-size:11pt}.dialog.svelte-1fggtsn input[type=submit]:hover{background-color:#cce6ff;border:1px solid #a8d1fa}.dialog.svelte-1fggtsn input[type=submit]:active{background-color:#bddeff;border:1px solid #9eccfa}form.svelte-1b6ue70{width:400px}.dialog p.submit.svelte-1b6ue70{margin-top:40px;margin-bottom:20px}.dialog input[type=submit].svelte-1b6ue70{width:180px;margin-left:5px;margin-right:5px}p.info.svelte-1pnuyy2{font-size:9pt}p.info.svelte-1pnuyy2 a:where(.svelte-1pnuyy2){color:#666}.cloudy.svelte-1pnuyy2{color:#99bfe6;margin:14px 0}.info-box.svelte-1pnuyy2{background-color:#fffceb;border:1px solid #fc3;border-radius:6px;width:360px;font-size:11pt}.info-box.svelte-1pnuyy2 p:where(.svelte-1pnuyy2){text-align:left;margin:15px}@media (prefers-color-scheme:dark){#login{background-color:#f0f0f026}form.svelte-1pnuyy2{background-color:#384047;border-color:#52667a}.close.svelte-1pnuyy2{color:#668099;opacity:.6}.close.svelte-1pnuyy2:hover{color:#668099;opacity:1}p.info.svelte-1pnuyy2 a:where(.svelte-1pnuyy2){color:#888}input[type=text].svelte-1pnuyy2,input[type=password].svelte-1pnuyy2{border-color:#666}input[type=submit].svelte-1pnuyy2{background-color:#4f5964;border-color:#576675}input[type=submit].svelte-1pnuyy2:active{background-color:#434d56;border-color:#4c5967}.cloudy.svelte-1pnuyy2{color:#99bfe6}.info-box.svelte-1pnuyy2{background-color:#6b612e;border-color:#e6ac00}.info-box.svelte-1pnuyy2 a:where(.svelte-1pnuyy2){color:#ffbf00}}li.svelte-1obod96 .button:where(.svelte-1obod96){display:inline-block;color:#333;background-color:#000a141f;border:1px solid #bbb;border-radius:5px;margin-top:8px;padding:3px 5px;font-size:11pt}li.svelte-1obod96 .button:where(.svelte-1obod96):hover{text-decoration:none;background-color:#000a1433}@media (prefers-color-scheme:dark){li.svelte-1obod96 .button:where(.svelte-1obod96){color:#333;background-color:#000a141f;border-color:#bbb}li.svelte-1obod96 .button:where(.svelte-1obod96):hover{background-color:#000a1433}}#account.svelte-jzoz05{position:fixed;z-index:20;user-select:none;-webkit-user-select:none;line-height:24px;top:10px;left:10px}#account.svelte-jzoz05 i:where(.svelte-jzoz05){opacity:.4}#account.svelte-jzoz05 i:where(.svelte-jzoz05):hover{cursor:pointer;opacity:.6}#account.svelte-jzoz05 img.avatar{border-radius:13px;width:24px;height:24px;box-shadow:0 0 2px #000}#account_menu.svelte-jzoz05{position:fixed;visibility:hidden;z-index:15;user-select:none;-webkit-user-select:none;background:#ebf0f5;border:1px solid #ccc;border-radius:5px;padding-top:30px;top:5px;left:5px}#account_menu.svelte-jzoz05 ul:where(.svelte-jzoz05){list-style-type:none;margin:0 0 10px;padding:6px 11px}#account_menu.svelte-jzoz05 li:not(.link)+li.link{border-top:1px solid #ccc;margin-top:16px;padding-top:10px}li.link.svelte-jzoz05{margin-top:8px;margin-left:2px}li.link.svelte-jzoz05 a:where(.svelte-jzoz05){color:#333;font-size:11pt}@media (prefers-color-scheme:dark){#account.active.svelte-jzoz05{color:#333}#account_menu.svelte-jzoz05{background:#ebf0f5;border-color:#ccc}}#loader.svelte-1larzq0{position:fixed;width:36px;height:36px;margin:auto;inset:0}#loader.svelte-1larzq0 img:where(.svelte-1larzq0){animation:rotation 3s infinite linear;width:36px}@media (prefers-color-scheme:dark){#loader.svelte-1larzq0{filter:invert()}}.edge.svelte-qe4209{position:absolute;width:6px;top:30px;bottom:0;left:-2px}.line.svelte-qe4209{position:absolute;border-left:1px solid #aaa;top:0;bottom:0;left:2px}.edge.svelte-qe4209:hover .line:where(.svelte-qe4209){border-left:2px solid #888}.plus.svelte-qe4209{position:absolute;width:14px;top:8px;left:-6px}.post.collapsed .line.svelte-qe4209,.post.flat>.margin.svelte-qe4209{display:none}@media (prefers-color-scheme:dark){.line.svelte-qe4209{border-left-color:#666}.edge.svelte-qe4209:hover .line:where(.svelte-qe4209){border-left-color:#888}.plus.svelte-qe4209{filter:invert()}}.fedi-link.svelte-ul6xja{display:inline-block;margin-top:2px;margin-bottom:6px}.fedi-link.svelte-ul6xja:hover{text-decoration:none}div.svelte-ul6xja{color:#555;border:1px solid #d0d0d0;border-radius:8px;padding:5px 9px;font-size:10pt}i.svelte-ul6xja{margin-right:3px}.fedi-link.svelte-ul6xja:hover div:where(.svelte-ul6xja){background-color:#f6f7f8;border:1px solid #c8c8c8}@media (prefers-color-scheme:dark){div.svelte-ul6xja{color:#909090;border-color:#606060}.fedi-link.svelte-ul6xja:hover div:where(.svelte-ul6xja){background-color:#444;border-color:#909090}}.hidden-replies.svelte-1epmfrv{margin-top:20px;font-size:11pt}.hidden-replies.svelte-1epmfrv a:where(.svelte-1epmfrv){color:#8b4513;font-size:12pt}.bridged-body.svelte-rk6ws2 p+p{margin-top:18px}.svelte-rk6ws2::highlight(search-results){background-color:#ffff00bf}@media (prefers-color-scheme:dark){.svelte-rk6ws2::highlight(search-results){background-color:#ffff0059}}h2.svelte-b7kxl{margin-bottom:0;font-size:12pt}.avatar.svelte-b7kxl{vertical-align:middle;border-radius:16px;width:32px;height:32px;margin-bottom:3px;margin-right:4px}.no-avatar.svelte-b7kxl,.muted-avatar.svelte-b7kxl{color:#aaa;vertical-align:middle;background-color:#eee;border-radius:16px;margin-right:4px}.muted-avatar.svelte-b7kxl{color:#bbb}.handle.svelte-b7kxl{color:#888;vertical-align:text-top;font-size:11pt;font-weight:400}.mastodon.svelte-b7kxl{position:relative;width:15px;margin-left:3px;top:2px}.time.svelte-b7kxl{color:#666;vertical-align:text-top;font-size:10pt;font-weight:400}@media (prefers-color-scheme:dark){.handle.svelte-b7kxl,.separator.svelte-b7kxl{color:#888}.time.svelte-b7kxl{color:#aaa}h2.svelte-b7kxl .action{color:#888}}a.svelte-1d08m6n{color:#333;background-color:#f0f7fe;border:1px solid #b6d3fb;border-radius:6px;margin-right:5px;padding:3px 7px;font-size:10pt}a.svelte-1d08m6n:hover{text-decoration:none;background-color:#ddedfd}.stats.svelte-14wd2aa{color:#666;font-size:10pt}a.svelte-14wd2aa{color:#666;text-decoration:none}a.svelte-14wd2aa:hover{text-decoration:underline}i.svelte-14wd2aa{color:#888;font-size:9pt}i.fa-heart.svelte-14wd2aa{color:#aaa}i.fa-heart.liked.svelte-14wd2aa{color:#e03030}i.fa-heart.svelte-14wd2aa:hover{color:#888;cursor:pointer}i.fa-heart.liked.svelte-14wd2aa:hover{color:#c02020}span.svelte-14wd2aa{margin-right:7px}.blocked-info.svelte-14wd2aa{color:#a02020;margin-left:5px;font-weight:700}@media (prefers-color-scheme:dark){.stats.svelte-14wd2aa{color:#aaa}i.svelte-14wd2aa{color:#888}i.fa-heart.svelte-14wd2aa{color:#aaa}i.fa-heart.liked.svelte-14wd2aa{color:#f04040}i.fa-heart.svelte-14wd2aa:hover{color:#eee}i.fa-heart.liked.svelte-14wd2aa:hover{color:#ff7070}}.image-alt.svelte-1d4qxx0{color:#666;margin-bottom:20px;font-size:11pt}.image-alt.svelte-1d4qxx0 summary:where(.svelte-1d4qxx0){color:#666;user-select:none;-webkit-user-select:none;cursor:default;margin-bottom:5px;font-size:11pt}@media (prefers-color-scheme:dark){.image-alt.svelte-1d4qxx0{color:#999}.image-alt.svelte-1d4qxx0 summary:where(.svelte-1d4qxx0){color:#999}}.gif.svelte-1g38dct img:where(.svelte-1g38dct){user-select:none;-webkit-user-select:none}.gif.svelte-1g38dct img.static:where(.svelte-1g38dct){opacity:.75}.quote-embed.svelte-qy2yyv{background-color:#fbfcfd;border:1px solid #ddd;border-radius:8px;max-width:800px;margin-top:25px;margin-bottom:15px;margin-left:0}.quote-embed.svelte-qy2yyv .post{margin-top:16px;padding-bottom:5px;padding-left:16px;padding-right:16px}.placeholder.svelte-qy2yyv{color:#888;font-size:11pt;font-style:italic}@media (prefers-color-scheme:dark){.quote-embed.svelte-qy2yyv{background-color:#303030;border-color:#606060}}.embed.svelte-19fytgx a.link-card{display:block;position:relative;max-width:500px;margin-bottom:12px}.embed.svelte-19fytgx a.link-card:hover{text-decoration:none}.embed.svelte-19fytgx a.link-card>div{background-color:#fcfcfd;border:1px solid #d8d8d8;border-radius:8px;padding:11px 15px}.embed.svelte-19fytgx a.link-card:hover>div{background-color:#f6f7f8;border:1px solid #c8c8c8}.embed.svelte-19fytgx a.link-card>div:not(:has(p.description)){padding-bottom:14px}.embed.svelte-19fytgx a.link-card p.domain{color:#888;margin-top:1px;margin-bottom:5px;font-size:10pt}.embed.svelte-19fytgx a.link-card h2{color:#333;margin-top:8px;margin-bottom:0;font-size:12pt}.embed.svelte-19fytgx a.link-card p.description{color:#666;white-space:pre-line;margin-top:8px;margin-bottom:4px;font-size:11pt;line-height:135%}.embed.svelte-19fytgx a.link-card.record>div:has(.avatar){padding-left:65px}.embed.svelte-19fytgx a.link-card.record h2{margin-top:3px}.embed.svelte-19fytgx a.link-card.record .handle{color:#666;vertical-align:text-top;margin-left:1px;font-size:11pt;font-weight:400}.embed.svelte-19fytgx a.link-card.record .avatar{position:absolute;border:1px solid #ddd;border-radius:6px;width:36px;height:36px;top:15px;left:15px}.embed.svelte-19fytgx a.link-card.record .stats{color:#666;margin-top:9px;margin-bottom:1px;font-size:10pt}.embed.svelte-19fytgx a.link-card.record .stats i.fa-heart{color:#aaa;font-size:9pt}@media (prefers-color-scheme:dark){.embed.svelte-19fytgx a.link-card>div{background-color:#303030;border-color:#606060}.embed.svelte-19fytgx a.link-card:hover>div{background-color:#383838;border-color:#707070}.embed.svelte-19fytgx a.link-card p.domain{color:#666}.embed.svelte-19fytgx a.link-card h2{color:#ccc}.embed.svelte-19fytgx a.link-card p.description{color:#888}.embed.svelte-19fytgx a.link-card.record .handle{color:#666}.embed.svelte-19fytgx a.link-card.record .avatar{border-color:#888}}.post.blocked.svelte-qmmoky p{color:#666;font-size:11pt}.post.blocked.svelte-qmmoky a{color:#666;font-size:11pt}@media (prefers-color-scheme:dark){.post.blocked.svelte-qmmoky p{color:#aaa}.post.blocked.svelte-qmmoky a{color:#aaa}}.post p{margin-top:10px}.post .blocked-header i{margin-right:2px}.post h2 .separator,.post .blocked-header .separator,.blocked-header .separator{color:#888;vertical-align:text-top;font-size:11pt;font-weight:400}.post h2 .action,.post .blocked-header .action,.blocked-header .action{color:#888;vertical-align:text-top;font-size:10pt;font-weight:400}.post h2 .action:hover,.post .blocked-header .action:hover,.blocked-header .action:hover{color:#444}.post{position:relative;margin-top:30px;padding-left:21px}.post.collapsed.svelte-rwn0j1 .content:where(.svelte-rwn0j1){display:none}.post.flat.svelte-rwn0j1{margin-top:25px;padding-left:0}.post.muted.svelte-rwn0j1>h2{opacity:.3;font-weight:600}.post.muted.svelte-rwn0j1>.content>details>p,.post.muted.svelte-rwn0j1>.content>details summary{opacity:.3}details.svelte-rwn0j1{margin-top:12px;margin-bottom:10px}summary.svelte-rwn0j1{user-select:none;-webkit-user-select:none;cursor:default;font-size:10pt}.missing-replies-info.svelte-rwn0j1{color:#8b0000;margin-top:25px;font-size:11pt}.post.svelte-rwn0j1 img.loader{animation:rotation 3s infinite linear;width:24px;margin-top:5px}.hashtag.svelte-1l2woaq>.post{border-bottom:1px solid #ddd;padding-bottom:10px}#search.svelte-1drcssc{position:fixed;display:flex;justify-content:center;align-items: center;padding-bottom:5%;inset:0}form.svelte-1drcssc{border:2px solid #9cf;border-radius:10px;margin-left:50px;padding:15px 20px}input.svelte-1drcssc{border:0;width:600px;margin-left:8px;font-size:16pt}input.svelte-1drcssc:focus{outline:none}@media (prefers-color-scheme:dark){form.svelte-1drcssc{border-color:#7099c2}form.svelte-1drcssc input:where(.svelte-1drcssc){background-color:#0000}}.scan-result.svelte-8hgnpr{border-collapse:collapse;display:none;float:left;border:1px solid #333;margin-top:20px;margin-bottom:40px}td.svelte-8hgnpr,th.svelte-8hgnpr{border:1px solid #333;padding:5px 10px}th.svelte-8hgnpr{text-align:center;background-color:#b8dfff;padding:12px 10px}td.no.svelte-8hgnpr{text-align:right;font-weight:700}td.handle.svelte-8hgnpr{width:280px}td.count.svelte-8hgnpr{padding:5px 15px}.avatar.svelte-8hgnpr{vertical-align:middle;border-radius:14px;width:24px;height:24px;margin-right:2px;padding:2px}@media (prefers-color-scheme:dark){.scan-result.svelte-8hgnpr,td.svelte-8hgnpr,th.svelte-8hgnpr{border-color:#888}th.svelte-8hgnpr{background-color:#064579}}input[type=range].svelte-16cw7lp{vertical-align:middle;width:250px}input[type=submit].svelte-16cw7lp{margin:5px 0;padding:5px 10px;font-size:12pt}progress.svelte-16cw7lp{vertical-align:middle;display:none;width:300px;margin-left:10px}.scan-result.given-likes{margin-right:100px}.search-page.svelte-p7bb5y input[type=submit]{margin:5px 0;padding:5px 10px;font-size:12pt}.search-page.svelte-p7bb5y progress{vertical-align:middle;width:300px;margin-left:10px}.search-page.svelte-p7bb5y .search-query{border:1px solid #ccc;border-radius:6px;margin-left:8px;padding:5px 6px;font-size:12pt}.search-page.svelte-p7bb5y .results{margin-top:30px}.search-page.svelte-p7bb5y .results>.post{border-bottom:1px solid #ddd;margin-top:24px;margin-left:-15px;padding-bottom:10px;padding-left:15px}.search-page.svelte-p7bb5y .results-end{color:#333;font-size:12pt}.search-page.svelte-p7bb5y .post+.results-end{font-size:11pt}@media (prefers-color-scheme:dark){.search-page.svelte-p7bb5y .search-query{border:1px solid #666}.search-page.svelte-p7bb5y .results-end{color:#888}.search-page.svelte-p7bb5y .results>.post{border-bottom:1px solid #555}}.search-collections.svelte-1xf0p4l label:where(.svelte-1xf0p4l){vertical-align:middle;margin-right:5px}.lycan-import.svelte-1xf0p4l{border-top:1px solid #ccc;margin-top:30px;padding-top:5px}.lycan-import.svelte-1xf0p4l form:where(.svelte-1xf0p4l) p:where(.svelte-1xf0p4l){line-height:135%}.import-progress.svelte-1xf0p4l progress:where(.svelte-1xf0p4l){margin-left:0;margin-right:6px}.import-progress.svelte-1xf0p4l progress:where(.svelte-1xf0p4l)+output:where(.svelte-1xf0p4l){font-size:11pt}@media (prefers-color-scheme:dark){.lycan-import.svelte-1xf0p4l{border-top-color:#888}}.notifications.svelte-95g2ry .post{border-bottom:1px solid #ddd;margin-top:24px;padding-bottom:4px}.notifications.svelte-95g2ry .back{margin-top:15px;margin-bottom:-12px;margin-left:22px}.notifications.svelte-95g2ry .back{font-size:10pt}.notifications.svelte-95g2ry .back a{font-size:10pt}.notifications.svelte-95g2ry .back i{margin-right:2px;font-size:9pt}.user-choice.svelte-1cm32f6{position:relative}input.svelte-1cm32f6{width:260px;font-size:11pt}.autocomplete.svelte-1cm32f6{position:absolute;overflow-y:auto;z-index:10;background-color:#fff;border:1px solid #ccc;width:350px;max-height:250px;margin-top:4px;top:0;left:0}.selected-users.svelte-1cm32f6{overflow-y:auto;border:1px solid #aaa;width:275px;height:150px;margin-top:20px;padding:4px}.user-row.svelte-1cm32f6{position:relative;cursor:pointer;padding:2px 4px 2px 37px}.user-row.svelte-1cm32f6 .avatar:where(.svelte-1cm32f6){position:absolute;border-radius:12px;width:24px;top:8px;left:6px}.user-row.svelte-1cm32f6 span:where(.svelte-1cm32f6){display:block;overflow-x:hidden;text-overflow:ellipsis}.user-row.svelte-1cm32f6 .name:where(.svelte-1cm32f6){margin-top:1px;margin-bottom:1px;font-size:11pt}.user-row.svelte-1cm32f6 .handle:where(.svelte-1cm32f6){color:#666;margin-bottom:2px;font-size:10pt}.autocomplete.svelte-1cm32f6 .user-row:where(.svelte-1cm32f6){cursor:pointer}.autocomplete.svelte-1cm32f6 .user-row.highlighted:where(.svelte-1cm32f6){background-color:#b3ddff}.selected-users.svelte-1cm32f6 .user-row:where(.svelte-1cm32f6) span:where(.svelte-1cm32f6){padding-right:14px}.selected-users.svelte-1cm32f6 .user-row:where(.svelte-1cm32f6) .remove:where(.svelte-1cm32f6){position:absolute;color:#333;padding:0 4px;line-height:17px;top:11px;right:4px}.selected-users.svelte-1cm32f6 .user-row:where(.svelte-1cm32f6) .remove:where(.svelte-1cm32f6):hover{text-decoration:none;background-color:#ddd;border-radius:8px}@media (prefers-color-scheme:dark){.autocomplete.svelte-1cm32f6{background-color:#2c2e30;border-color:#4b4b4b}.selected-users.svelte-1cm32f6{border-color:#666}.user-row.svelte-1cm32f6 .handle:where(.svelte-1cm32f6){color:#888}.autocomplete.svelte-1cm32f6 .user-row.highlighted:where(.svelte-1cm32f6){background-color:#064579}.selected-users.svelte-1cm32f6 .user-row:where(.svelte-1cm32f6) .remove:where(.svelte-1cm32f6){color:#aaa}.selected-users.svelte-1cm32f6 .user-row:where(.svelte-1cm32f6) .remove:where(.svelte-1cm32f6):hover{color:#bbb;background-color:#555}}.scan-result.svelte-vhh361{border-collapse:collapse;border:1px solid #333}td.svelte-vhh361,th.svelte-vhh361{border:1px solid #333}td.svelte-vhh361{text-align:right;padding:5px 8px}th.svelte-vhh361{text-align:center;background-color:#b8dfff;padding:7px 10px}td.handle.svelte-vhh361{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:450px}tr.total.svelte-vhh361 td:where(.svelte-vhh361){background-color:#b8dfff66;font-size:11pt;font-weight:700}tr.total.svelte-vhh361 td.handle:where(.svelte-vhh361){text-align:left;padding:10px 12px}.avatar.svelte-vhh361{vertical-align:middle;border-radius:14px;width:24px;height:24px;margin-right:2px;padding:2px}td.no.svelte-vhh361{font-weight:700}td.percent.svelte-vhh361{min-width:70px}@media (prefers-color-scheme:dark){.scan-result.svelte-vhh361,td.svelte-vhh361,th.svelte-vhh361{border-color:#888}th.svelte-vhh361{background-color:#064579}tr.total.svelte-vhh361 td:where(.svelte-vhh361){background-color:#06457966}}input[type=radio].svelte-1khgu5y{position:relative;margin-left:5px;top:-1px}input[type=radio].svelte-1khgu5y+label:where(.svelte-1khgu5y){user-select:none;-webkit-user-select:none;margin-right:4px}input[type=range].svelte-1khgu5y{vertical-align:middle;width:250px}input[type=submit].svelte-1khgu5y{margin:5px 0;padding:5px 10px;font-size:12pt}select.svelte-1khgu5y{margin-left:5px;font-size:12pt}progress.svelte-1khgu5y{vertical-align:middle;width:300px;margin-left:10px}.scan-info.svelte-1khgu5y{margin:20px 0;font-weight:600;line-height:125%}.quotes.svelte-13teqqd p.back{padding-left:10px}.quotes.svelte-13teqqd .post{padding-bottom:5px}.quotes.svelte-13teqqd .post-quote .quote-embed,.quotes.svelte-13teqqd .post-quote p.stats{display:none}#tangled.svelte-18p55jz{position:fixed;z-index:10;bottom:10px;right:10px}img.svelte-18p55jz{opacity:.4;width:20px}a.svelte-18p55jz:hover img:where(.svelte-18p55jz){opacity:.6}@media (prefers-color-scheme:dark){#tangled.svelte-18p55jz{filter:invert()}}input[type=range].svelte-ba7vy9{vertical-align:middle;width:250px}
+52
-6
dist/skythread.js
···
1
1
-
(()=>{var{defineProperty:SJ,getOwnPropertyNames:Z6,getOwnPropertyDescriptor:Q6}=Object,Y6=Object.prototype.hasOwnProperty;var k1=new WeakMap,X6=(J)=>{var K=k1.get(J),Z;if(K)return K;if(K=SJ({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")Z6(J).map((Q)=>!Y6.call(K,Q)&&SJ(K,Q,{get:()=>J[Q],enumerable:!(Z=Q6(J,Q))||Z.enumerable}));return k1.set(J,K),K};var z6=(J,K)=>{for(var Z in K)SJ(J,Z,{get:K[Z],enumerable:!0,configurable:!0,set:(Q)=>K[Z]=()=>Q})};var T6={};z6(T6,{showLoader:()=>F0,showDialog:()=>H0,setPageTitle:()=>pJ,logOut:()=>mJ,hideLoader:()=>n});class y0 extends Error{constructor(J,K){super("APIError status "+J+`
1
1
+
(()=>{var m=!1;var w6=Array.isArray,r7=Array.prototype.indexOf,k5=Array.from,I9=Object.keys,q1=Object.defineProperty,D1=Object.getOwnPropertyDescriptor,Mz=Object.getOwnPropertyDescriptors,S9=Object.prototype,n7=Array.prototype,q8=Object.getPrototypeOf,D9=Object.isExtensible;function M8(z){return typeof z==="function"}var J6=()=>{};function R9(z){return typeof z?.then==="function"}function t7(z){return z()}function o8(z){for(var J=0;J<z.length;J++)z[J]()}function Cz(){var z,J,Q=new Promise((K,X)=>{z=K,J=X});return{promise:Q,resolve:z,reject:J}}var h0=2,a8=4,C8=8,r8=16777216,m1=16,k1=32,Q6=64,x8=128,b1=512,l0=1024,i0=2048,R1=4096,j1=8192,T1=16384,U6=32768,E1=65536,O8=131072,n8=262144,S6=524288,j9=1048576,K6=32768,xz=2097152,m6=4194304,Z6=8388608,Q1=Symbol("$state"),t8=Symbol("legacy props"),e7=Symbol(""),Oz=Symbol("proxy path"),D6=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"};var e8=3,A1=8;function Lz(z){if(m){let J=Error(`lifecycle_outside_component
2
2
+
\`${z}(...)\` can only be used during component initialisation
3
3
+
https://svelte.dev/e/lifecycle_outside_component`);throw J.name="Svelte error",J}else throw Error("https://svelte.dev/e/lifecycle_outside_component")}function zQ(){if(m){let z=Error(`missing_context
4
4
+
Context was not set in a parent component
5
5
+
https://svelte.dev/e/missing_context`);throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/missing_context")}function JQ(){if(m){let z=Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/async_derived_orphan")}function A9(){if(m){let z=Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/bind_invalid_checkbox_value")}function QQ(){if(m){let z=Error(`derived_references_self
6
6
+
A derived value cannot reference itself recursively
7
7
+
https://svelte.dev/e/derived_references_self`);throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/derived_references_self")}function KQ(z){if(m){let J=Error(`effect_in_teardown
8
8
+
\`${z}\` cannot be used inside an effect cleanup function
9
9
+
https://svelte.dev/e/effect_in_teardown`);throw J.name="Svelte error",J}else throw Error("https://svelte.dev/e/effect_in_teardown")}function ZQ(){if(m){let z=Error("effect_in_unowned_derived\nEffect cannot be created inside a `$derived` value that was not itself created inside an effect\nhttps://svelte.dev/e/effect_in_unowned_derived");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/effect_in_unowned_derived")}function XQ(z){if(m){let J=Error(`effect_orphan
10
10
+
\`${z}\` can only be used inside an effect (e.g. during component initialisation)
11
11
+
https://svelte.dev/e/effect_orphan`);throw J.name="Svelte error",J}else throw Error("https://svelte.dev/e/effect_orphan")}function WQ(){if(m){let z=Error(`effect_update_depth_exceeded
12
12
+
Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state
13
13
+
https://svelte.dev/e/effect_update_depth_exceeded`);throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/effect_update_depth_exceeded")}function YQ(){if(m){let z=Error(`hydration_failed
14
14
+
Failed to hydrate the application
15
15
+
https://svelte.dev/e/hydration_failed`);throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/hydration_failed")}function GQ(){if(m){let z=Error("invalid_snippet\nCould not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`\nhttps://svelte.dev/e/invalid_snippet");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/invalid_snippet")}function BQ(z){if(m){let J=Error(`props_invalid_value
16
16
+
Cannot do \`bind:${z}={undefined}\` when \`${z}\` has a fallback value
17
17
+
https://svelte.dev/e/props_invalid_value`);throw J.name="Svelte error",J}else throw Error("https://svelte.dev/e/props_invalid_value")}function HQ(z){if(m){let J=Error(`props_rest_readonly
18
18
+
Rest element properties of \`$props()\` such as \`${z}\` are readonly
19
19
+
https://svelte.dev/e/props_rest_readonly`);throw J.name="Svelte error",J}else throw Error("https://svelte.dev/e/props_rest_readonly")}function wQ(z){if(m){let J=Error(`rune_outside_svelte
20
20
+
The \`${z}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files
21
21
+
https://svelte.dev/e/rune_outside_svelte`);throw J.name="Svelte error",J}else throw Error("https://svelte.dev/e/rune_outside_svelte")}function UQ(){if(m){let z=Error("set_context_after_init\n`setContext` must be called when a component first initializes, not in a subsequent effect or after an `await` expression\nhttps://svelte.dev/e/set_context_after_init");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/set_context_after_init")}function VQ(){if(m){let z=Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/state_descriptors_fixed")}function FQ(){if(m){let z=Error("state_prototype_fixed\nCannot set prototype of `$state` object\nhttps://svelte.dev/e/state_prototype_fixed");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/state_prototype_fixed")}function qQ(){if(m){let z=Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/state_unsafe_mutation")}function MQ(){if(m){let z=Error("svelte_boundary_reset_onerror\nA `<svelte:boundary>` `reset` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror");throw z.name="Svelte error",z}else throw Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}var N9=1,k9=2,b9=4,CQ=8,xQ=16,OQ=1,LQ=2,PQ=4,IQ=8,SQ=16;var DQ=1,RQ=2;var b5="[",V6="[!",L8="]",R6={};var E0=Symbol(),$1=Symbol("filename"),jQ=Symbol("hmr"),AQ="http://www.w3.org/1999/xhtml";var T9="@attach";var $6="font-weight: bold",u6="font-weight: normal";function NQ(z,J){if(m)console.warn(`%c[svelte] await_waterfall
22
22
+
%cAn async derived, \`${z}\` (${J}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app
23
23
+
https://svelte.dev/e/await_waterfall`,$6,u6);else console.warn("https://svelte.dev/e/await_waterfall")}function kQ(z,J,Q){if(m)console.warn(`%c[svelte] hydration_attribute_changed
24
24
+
%cThe \`${z}\` attribute on \`${J}\` changed its value between server and client renders. The client value, \`${Q}\`, will be ignored in favour of the server value
25
25
+
https://svelte.dev/e/hydration_attribute_changed`,$6,u6);else console.warn("https://svelte.dev/e/hydration_attribute_changed")}function bQ(z){if(m)console.warn(`%c[svelte] hydration_html_changed
26
26
+
%c${z?`The value of an \`{@html ...}\` block ${z} changed between server and client renders. The client value will be ignored in favour of the server value`:"The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value"}
27
27
+
https://svelte.dev/e/hydration_html_changed`,$6,u6);else console.warn("https://svelte.dev/e/hydration_html_changed")}function z8(z){if(m)console.warn(`%c[svelte] hydration_mismatch
28
28
+
%c${z?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${z}`:"Hydration failed because the initial UI does not match what was rendered on the server"}
29
29
+
https://svelte.dev/e/hydration_mismatch`,$6,u6);else console.warn("https://svelte.dev/e/hydration_mismatch")}function TQ(){if(m)console.warn(`%c[svelte] lifecycle_double_unmount
30
30
+
%cTried to unmount a component that was not mounted
31
31
+
https://svelte.dev/e/lifecycle_double_unmount`,$6,u6);else console.warn("https://svelte.dev/e/lifecycle_double_unmount")}function EQ(){if(m)console.warn("%c[svelte] select_multiple_invalid_value\n%cThe `value` property of a `<select multiple>` element should be an array, but it received a non-array value. The selection will be kept as is.\nhttps://svelte.dev/e/select_multiple_invalid_value",$6,u6);else console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function Pz(z){if(m)console.warn(`%c[svelte] state_proxy_equality_mismatch
32
32
+
%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${z}\` will produce unexpected results
33
33
+
https://svelte.dev/e/state_proxy_equality_mismatch`,$6,u6);else console.warn("https://svelte.dev/e/state_proxy_equality_mismatch")}function yQ(){if(m)console.warn(`%c[svelte] state_proxy_unmount
34
34
+
%cTried to unmount a state proxy, rather than a component
35
35
+
https://svelte.dev/e/state_proxy_unmount`,$6,u6);else console.warn("https://svelte.dev/e/state_proxy_unmount")}function vQ(){if(m)console.warn("%c[svelte] svelte_boundary_reset_noop\n%cA `<svelte:boundary>` `reset` function only resets the boundary the first time it is called\nhttps://svelte.dev/e/svelte_boundary_reset_noop",$6,u6);else console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}var r=!1;function f0(z){r=z}var B0;function j0(z){if(z===null)throw z8(),R6;return B0=z}function _0(){return j0(e0(B0))}function C(z){if(!r)return;if(e0(B0)!==null)throw z8(),R6;B0=z}function c0(z=1){if(r){var J=z,Q=B0;while(J--)Q=e0(Q);B0=Q}}function F6(z=!0){var J=0,Q=B0;while(!0){if(Q.nodeType===A1){var K=Q.data;if(K===L8){if(J===0)return Q;J-=1}else if(K===b5||K===V6)J+=1}var X=e0(Q);if(z)Q.remove();Q=X}}function Iz(z){if(!z||z.nodeType!==A1)throw z8(),R6;return z.data}function Sz(z){return z===this.v}function E9(z,J){return z!=z?J==J:z!==J||z!==null&&typeof z==="object"||typeof z==="function"}function Dz(z){return!E9(z,this.v)}var N1=!1,l6=!1,q6=!1;function gQ(){l6=!0}var T5=null;function u1(z,J){return z.label=J,Rz(z.v,J),z}function Rz(z,J){return z?.[Oz]?.(J),z}function A6(z){let J=Error(),Q=jZ();if(Q.length===0)return null;return Q.unshift(`
36
36
+
`),q1(J,"stack",{value:Q.join(`
37
37
+
`)}),q1(J,"name",{value:z}),J}function jZ(){let z=Error.stackTraceLimit;Error.stackTraceLimit=1/0;let J=Error().stack;if(Error.stackTraceLimit=z,!J)return[];let Q=J.split(`
38
38
+
`),K=[];for(let X=0;X<Q.length;X++){let Z=Q[X],W=Z.replaceAll("\\","/");if(Z.trim()==="Error")continue;if(Z.includes("validate_each_keys"))return[];if(W.includes("svelte/src/internal")||W.includes("node_modules/.vite"))continue;K.push(Z)}return K}var L0=null;function p6(z){L0=z}var M6=null;function z5(z){M6=z}var c1=null;function jz(z){c1=z}function v9(){let z={};return[()=>{if(!$Q(z))zQ();return fQ(z)},(J)=>mQ(z,J)]}function fQ(z){return g9("getContext").get(z)}function mQ(z,J){let Q=g9("setContext");if(N1){var K=J0.f,X=!W0&&(K&k1)!==0&&!L0.i;if(!X)UQ()}return Q.set(z,J),J}function $Q(z){return g9("hasContext").has(z)}function i(z,J=!1,Q){if(L0={p:L0,i:!1,c:null,e:null,s:z,x:null,l:l6&&!J?{s:null,u:null,$:[]}:null},m)L0.function=Q,c1=Q}function _(z){var J=L0,Q=J.e;if(Q!==null){J.e=null;for(var K of Q)h9(K)}if(z!==void 0)J.x=z;if(J.i=!0,L0=J.p,m)c1=L0?.function??null;return z??{}}function s1(){return!l6||L0!==null&&L0.l===null}function g9(z){if(L0===null)Lz(z);return L0.c??=new Map(AZ(L0)||void 0)}function AZ(z){let J=z.p;while(J!==null){let Q=J.c;if(Q!==null)return Q;J=J.p}return null}var P8=[];function uQ(){var z=P8;P8=[],o8(z)}function p0(z){if(P8.length===0&&!J8){var J=P8;queueMicrotask(()=>{if(J===P8)uQ()})}P8.push(z)}function lQ(){while(P8.length>0)uQ()}var f9=new WeakMap;function Az(z){var J=J0;if(J===null)return W0.f|=Z6,z;if(m&&z instanceof Error&&!f9.has(z))f9.set(z,NZ(z,J));if((J.f&U6)===0){if((J.f&x8)===0){if(m&&!J.parent&&z instanceof Error)pQ(z);throw z}J.b.error(z)}else N6(z,J)}function N6(z,J){while(J!==null){if((J.f&x8)!==0)try{J.b.error(z);return}catch(Q){z=Q}J=J.parent}if(m&&z instanceof Error)pQ(z);throw z}function NZ(z,J){let Q=D1(z,"message");if(Q&&!Q.configurable)return;var K=E5?" ":"\t",X=`
39
39
+
${K}in ${J.fn?.name||"<unknown>"}`,Z=J.ctx;while(Z!==null)X+=`
40
40
+
${K}in ${Z.function?.[$1].split("/").pop()}`,Z=Z.p;return{message:z.message+`
41
41
+
${X}
42
42
+
`,stack:z.stack?.split(`
43
43
+
`).filter((W)=>!W.includes("svelte/src/internal")).join(`
44
44
+
`)}}function pQ(z){let J=f9.get(z);if(J)q1(z,"message",{value:J.message}),q1(z,"stack",{value:J.stack})}var J5=new Set,w0=null,I8=null,B1=null,X6=[],Nz=null,m9=!1,J8=!1;class o0{committed=!1;current=new Map;previous=new Map;#z=new Set;#J=new Set;#Q=0;#K=0;#G=null;#X=[];#Z=[];skipped_effects=new Set;is_fork=!1;is_deferred(){return this.is_fork||this.#K>0}process(z){X6=[],I8=null,this.apply();var J={parent:null,effect:null,effects:[],render_effects:[],block_effects:[]};for(let Q of z)this.#W(Q,J);if(!this.is_fork)this.#H();if(this.is_deferred())this.#Y(J.effects),this.#Y(J.render_effects),this.#Y(J.block_effects);else I8=this,w0=null,dQ(J.render_effects),dQ(J.effects),I8=null,this.#G?.resolve();B1=null}#W(z,J){z.f^=l0;var Q=z.first;while(Q!==null){var K=Q.f,X=(K&(k1|Q6))!==0,Z=X&&(K&l0)!==0,W=Z||(K&j1)!==0||this.skipped_effects.has(Q);if((Q.f&x8)!==0&&Q.b?.is_pending())J={parent:J,effect:Q,effects:[],render_effects:[],block_effects:[]};if(!W&&Q.fn!==null){if(X)Q.f^=l0;else if((K&a8)!==0)J.effects.push(Q);else if(N1&&(K&(C8|r8))!==0)J.render_effects.push(Q);else if(Z8(Q)){if((Q.f&m1)!==0)J.block_effects.push(Q);Q8(Q)}var G=Q.first;if(G!==null){Q=G;continue}}var w=Q.parent;Q=Q.next;while(Q===null&&w!==null){if(w===J.effect)this.#Y(J.effects),this.#Y(J.render_effects),this.#Y(J.block_effects),J=J.parent;Q=w.next,w=w.parent}}}#Y(z){for(let J of z)((J.f&i0)!==0?this.#X:this.#Z).push(J),this.#B(J.deps),s0(J,l0)}#B(z){if(z===null)return;for(let J of z){if((J.f&h0)===0||(J.f&K6)===0)continue;J.f^=K6,this.#B(J.deps)}}capture(z,J){if(!this.previous.has(z))this.previous.set(z,J);if((z.f&Z6)===0)this.current.set(z,z.v),B1?.set(z,z.v)}activate(){w0=this,this.apply()}deactivate(){if(w0!==this)return;w0=null,B1=null}flush(){if(this.activate(),X6.length>0){if($9(),w0!==null&&w0!==this)return}else if(this.#Q===0)this.process([]);this.deactivate()}discard(){for(let z of this.#J)z(this);this.#J.clear()}#H(){if(this.#K===0){for(let z of this.#z)z();this.#z.clear()}if(this.#Q===0)this.#w()}#w(){if(J5.size>1){this.previous.clear();var z=B1,J=!0,Q={parent:null,effect:null,effects:[],render_effects:[],block_effects:[]};for(let X of J5){if(X===this){J=!1;continue}let Z=[];for(let[G,w]of this.current){if(X.current.has(G))if(J&&w!==X.current.get(G))X.current.set(G,w);else continue;Z.push(G)}if(Z.length===0)continue;let W=[...X.current.keys()].filter((G)=>!this.current.has(G));if(W.length>0){var K=X6;X6=[];let G=new Set,w=new Map;for(let H of Z)iQ(H,W,G,w);if(X6.length>0){w0=X,X.apply();for(let H of X6)X.#W(H,Q);X.deactivate()}X6=K}}w0=null,B1=z}this.committed=!0,J5.delete(this)}increment(z){if(this.#Q+=1,z)this.#K+=1}decrement(z){if(this.#Q-=1,z)this.#K-=1;this.revive()}revive(){for(let z of this.#X)s0(z,i0),k6(z);for(let z of this.#Z)s0(z,R1),k6(z);this.#X=[],this.#Z=[],this.flush()}oncommit(z){this.#z.add(z)}ondiscard(z){this.#J.add(z)}settled(){return(this.#G??=Cz()).promise}static ensure(){if(w0===null){let z=w0=new o0;if(J5.add(w0),!J8)o0.enqueue(()=>{if(w0!==z)return;z.flush()})}return w0}static enqueue(z){p0(z)}apply(){if(!N1||!this.is_fork&&J5.size===1)return;B1=new Map(this.current);for(let z of J5){if(z===this)continue;for(let[J,Q]of z.previous)if(!B1.has(J))B1.set(J,Q)}}}function K8(z){var J=J8;J8=!0;try{var Q;if(z){if(w0!==null)$9();Q=z()}while(!0){if(lQ(),X6.length===0){if(w0?.flush(),X6.length===0)return Nz=null,Q}$9()}}finally{J8=J}}function $9(){var z=T6;m9=!0;var J=m?new Set:null;try{var Q=0;Q5(!0);while(X6.length>0){var K=o0.ensure();if(Q++>1000){if(m){var X=new Map;for(let W of K.current.keys())for(let[G,w]of W.updated??[]){var Z=X.get(G);if(!Z)Z={error:w.error,count:0},X.set(G,Z);Z.count+=w.count}for(let W of X.values())if(W.error)console.error(W.error)}bZ()}if(K.process(X6),b6.clear(),m)for(let W of K.current.keys())J.add(W)}}finally{if(m9=!1,Q5(z),Nz=null,m)for(let W of J)W.updated=null}}function bZ(){try{WQ()}catch(z){if(m)q1(z,"stack",{value:""});N6(z,Nz)}}var W6=null;function dQ(z){var J=z.length;if(J===0)return;var Q=0;while(Q<J){var K=z[Q++];if((K.f&(T1|j1))===0&&Z8(K)){if(W6=new Set,Q8(K),K.deps===null&&K.first===null&&K.nodes_start===null)if(K.teardown===null&&K.ac===null)u9(K);else K.fn=null;if(W6?.size>0){b6.clear();for(let X of W6){if((X.f&(T1|j1))!==0)continue;let Z=[X],W=X.parent;while(W!==null){if(W6.has(W))W6.delete(W),Z.push(W);W=W.parent}for(let G=Z.length-1;G>=0;G--){let w=Z[G];if((w.f&(T1|j1))!==0)continue;Q8(w)}}W6.clear()}}}W6=null}function iQ(z,J,Q,K){if(Q.has(z))return;if(Q.add(z),z.reactions!==null)for(let X of z.reactions){let Z=X.f;if((Z&h0)!==0)iQ(X,J,Q,K);else if((Z&(m6|m1))!==0&&(Z&i0)===0&&_Q(X,J,K))s0(X,i0),k6(X)}}function _Q(z,J,Q){let K=Q.get(z);if(K!==void 0)return K;if(z.deps!==null)for(let X of z.deps){if(J.includes(X))return!0;if((X.f&h0)!==0&&_Q(X,J,Q))return Q.set(X,!0),!0}return Q.set(z,!1),!1}function k6(z){var J=Nz=z;while(J.parent!==null){J=J.parent;var Q=J.f;if(m9&&J===J0&&(Q&m1)!==0&&(Q&n8)===0)return;if((Q&(Q6|k1))!==0){if((Q&l0)===0)return;J.f^=l0}}X6.push(J)}function sQ(z){let J=0,Q=H1(0),K;if(m)u1(Q,"createSubscriber version");return()=>{if(j6())Y(Q),w1(()=>{if(J===0)K=b0(()=>z(()=>S8(Q)));return J+=1,()=>{p0(()=>{if(J-=1,J===0)K?.(),K=void 0,S8(Q)})}})}}var EZ=E1|S6|x8;function l9(z,J,Q){new p9(z,J,Q)}class p9{parent;#z=!1;#J;#Q=r?B0:null;#K;#G;#X;#Z=null;#W=null;#Y=null;#B=null;#H=null;#w=0;#V=0;#F=!1;#U=null;#O=sQ(()=>{if(this.#U=H1(this.#w),m)u1(this.#U,"$effect.pending()");return()=>{this.#U=null}});constructor(z,J,Q){if(this.#J=z,this.#K=J,this.#G=Q,this.parent=J0.b,this.#z=!!this.#K.pending,this.#X=x1(()=>{if(J0.b=this,r){let X=this.#Q;if(_0(),X.nodeType===A1&&X.data===V6)this.#P();else this.#L()}else{var K=this.#C();try{this.#Z=z1(()=>Q(K))}catch(X){this.error(X)}if(this.#V>0)this.#M();else this.#z=!1}return()=>{this.#H?.remove()}},EZ),r)this.#J=B0}#L(){try{this.#Z=z1(()=>this.#G(this.#J))}catch(z){this.error(z)}this.#z=!1}#P(){let z=this.#K.pending;if(!z)return;this.#W=z1(()=>z(this.#J)),o0.enqueue(()=>{var J=this.#C();if(this.#Z=this.#q(()=>{return o0.ensure(),z1(()=>this.#G(J))}),this.#V>0)this.#M();else d6(this.#W,()=>{this.#W=null}),this.#z=!1})}#C(){var z=this.#J;if(this.#z)this.#H=d0(),this.#J.before(this.#H),z=this.#H;return z}is_pending(){return this.#z||!!this.parent&&this.parent.is_pending()}has_pending_snippet(){return!!this.#K.pending}#q(z){var J=J0,Q=W0,K=L0;U1(this.#X),a0(this.#X),p6(this.#X.ctx);try{return z()}catch(X){return Az(X),null}finally{U1(J),a0(Q),p6(K)}}#M(){let z=this.#K.pending;if(this.#Z!==null)this.#B=document.createDocumentFragment(),this.#B.append(this.#H),Tz(this.#Z,this.#B);if(this.#W===null)this.#W=z1(()=>z(this.#J))}#x(z){if(!this.has_pending_snippet()){if(this.parent)this.parent.#x(z);return}if(this.#V+=z,this.#V===0){if(this.#z=!1,this.#W)d6(this.#W,()=>{this.#W=null});if(this.#B)this.#J.before(this.#B),this.#B=null}}update_pending_count(z){if(this.#x(z),this.#w+=z,this.#U)l1(this.#U,this.#w)}get_effect_pending(){return this.#O(),Y(this.#U)}error(z){var J=this.#K.onerror;let Q=this.#K.failed;if(this.#F||!J&&!Q)throw z;if(this.#Z)y0(this.#Z),this.#Z=null;if(this.#W)y0(this.#W),this.#W=null;if(this.#Y)y0(this.#Y),this.#Y=null;if(r)j0(this.#Q),c0(),j0(F6());var K=!1,X=!1;let Z=()=>{if(K){vQ();return}if(K=!0,X)MQ();if(o0.ensure(),this.#w=0,this.#Y!==null)d6(this.#Y,()=>{this.#Y=null});if(this.#z=this.has_pending_snippet(),this.#Z=this.#q(()=>{return this.#F=!1,z1(()=>this.#G(this.#J))}),this.#V>0)this.#M();else this.#z=!1};var W=W0;try{a0(null),X=!0,J?.(z,Z),X=!1}catch(G){N6(G,this.#X&&this.#X.parent)}finally{a0(W)}if(Q)p0(()=>{this.#Y=this.#q(()=>{o0.ensure(),this.#F=!0;try{return z1(()=>{Q(this.#J,()=>z,()=>Z)})}catch(G){return N6(G,this.#X.parent),null}finally{this.#F=!1}})})}}var K5=null;function O1(z,J){return J}function yZ(z,J,Q){var K=[],X=J.length;for(var Z=0;Z<X;Z++)yz(J[Z].e,K,!0);i9(K,()=>{var W=K.length===0&&Q!==null;if(W){var G=Q,w=G.parentNode;v5(w),w.append(G),z.items.clear(),C6(z,J[0].prev,J[X-1].next)}for(var H=0;H<X;H++){var q=J[H];if(!W)z.items.delete(q.k),C6(z,q.prev,q.next);y0(q.e,!W)}if(z.first===J[0])z.first=J[0].prev})}function A0(z,J,Q,K,X,Z=null){var W=z,G=new Map,w=null,H=(J&b9)!==0,q=(J&N9)!==0,F=(J&k9)!==0;if(H){var B=z;W=r?j0(r0(B)):B.appendChild(d0())}if(r)_0();var U=null,M=D8(()=>{var N=Q();return w6(N)?N:N==null?[]:k5(N)}),P,O=!0;function j(){if(vZ(E,P,W,J,K),U!==null)if(P.length===0){if(U.fragment)W.before(U.fragment),U.fragment=null;else g5(U.effect);T.first=U.effect}else d6(U.effect,()=>{U=null})}var T=x1(()=>{P=Y(M);var N=P.length;let y=!1;if(r){var b=Iz(W)===V6;if(b!==(N===0))W=F6(),j0(W),f0(!1),y=!0}var A=new Set,k=w0,$=null,v=Ez();for(var l=0;l<N;l+=1){if(r&&B0.nodeType===A1&&B0.data===L8)W=B0,y=!0,f0(!1);var n=P[l],o=K(n,l),a=O?null:G.get(o);if(a){if(q)l1(a.v,n);if(F)l1(a.i,l);else a.i=l;if(v)k.skipped_effects.delete(a.e)}else{if(a=gZ(O?W:null,$,n,o,l,X,J,Q),O){if(a.o=!0,$===null)w=a;else $.next=a;$=a}G.set(o,a)}A.add(o)}if(N===0&&Z&&!U)if(O)U={fragment:null,effect:z1(()=>Z(W))};else{var X0=document.createDocumentFragment(),Q0=d0();X0.append(Q0),U={fragment:X0,effect:z1(()=>Z(Q0))}}if(r&&N>0)j0(F6());if(!O)if(v){for(let[U0,D0]of G)if(!A.has(U0))k.skipped_effects.add(D0.e);k.oncommit(j),k.ondiscard(()=>{})}else j();if(y)f0(!0);Y(M)}),E={effect:T,flags:J,items:G,first:w};if(O=!1,r)W=B0}function vZ(z,J,Q,K,X){var Z=(K&CQ)!==0,W=J.length,G=z.items,w=z.first,H,q=null,F,B=[],U=[],M,P,O,j;if(Z){for(j=0;j<W;j+=1)if(M=J[j],P=X(M,j),O=G.get(P),O.o)O.a?.measure(),(F??=new Set).add(O)}for(j=0;j<W;j+=1){if(M=J[j],P=X(M,j),O=G.get(P),z.first??=O,!O.o){O.o=!0;var T=q?q.next:w;C6(z,q,O),C6(z,O,T),d9(O,T,Q),q=O,B=[],U=[],w=q.next;continue}if((O.e.f&j1)!==0){if(g5(O.e),Z)O.a?.unfix(),(F??=new Set).delete(O)}if(O!==w){if(H!==void 0&&H.has(O)){if(B.length<U.length){var E=U[0],N;q=E.prev;var y=B[0],b=B[B.length-1];for(N=0;N<B.length;N+=1)d9(B[N],E,Q);for(N=0;N<U.length;N+=1)H.delete(U[N]);C6(z,y.prev,b.next),C6(z,q,y),C6(z,b,E),w=E,q=b,j-=1,B=[],U=[]}else H.delete(O),d9(O,w,Q),C6(z,O.prev,O.next),C6(z,O,q===null?z.first:q.next),C6(z,q,O),q=O;continue}B=[],U=[];while(w!==null&&w.k!==P){if((w.e.f&j1)===0)(H??=new Set).add(w);U.push(w),w=w.next}if(w===null)continue;O=w}B.push(O),q=O,w=O.next}let A=G.size>W;if(w!==null||H!==void 0){var k=H===void 0?[]:k5(H);while(w!==null){if((w.e.f&j1)===0)k.push(w);w=w.next}var $=k.length;if(A=G.size-$>W,$>0){var v=(K&b9)!==0&&W===0?Q:null;if(Z){for(j=0;j<$;j+=1)k[j].a?.measure();for(j=0;j<$;j+=1)k[j].a?.fix()}yZ(z,k,v)}}if(A){for(let l of G.values())if(!l.o)C6(z,q,l),q=l}if(z.effect.last=q&&q.e,Z)p0(()=>{if(F===void 0)return;for(O of F)O.a?.apply()})}function gZ(z,J,Q,K,X,Z,W,G){var w=K5,H=(W&N9)!==0,q=(W&xQ)===0,F=H?q?i6(Q,!1,!1):H1(Q):Q,B=(W&k9)===0?X:H1(X);if(m&&H)F.trace=()=>{var P=typeof B==="number"?X:B.v;G()[P]};var U={i:B,v:F,k:K,a:null,e:null,o:!1,prev:J,next:null};K5=U;try{if(z===null){var M=document.createDocumentFragment();M.append(z=d0())}if(U.e=z1(()=>Z(z,F,B,G)),J!==null)J.next=U;return U}finally{K5=w}}function d9(z,J,Q){var K=z.next?z.next.e.nodes_start:Q,X=J?J.e.nodes_start:Q,Z=z.e.nodes_start;while(Z!==null&&Z!==K){var W=e0(Z);X.before(Z),Z=W}}function C6(z,J,Q){if(J===null)z.first=Q,z.effect.first=Q&&Q.e;else{if(J.e.next)J.e.next.prev=null;J.next=Q,J.e.next=Q&&Q.e}if(Q!==null){if(Q.e.prev)Q.e.prev.next=null;Q.prev=J,Q.e.prev=J&&J.e}}function Z5(z,J,Q,K){let X=s1()?X8:D8;if(Q.length===0&&z.length===0){K(J.map(X));return}var Z=w0,W=J0,G=_9();function w(){Promise.all(Q.map((H)=>s9(H))).then((H)=>{G();try{K([...J.map(X),...H])}catch(q){if((W.f&T1)===0)N6(q,W)}Z?.deactivate(),R8()}).catch((H)=>{N6(H,W)})}if(z.length>0)Promise.all(z).then(()=>{G();try{return w()}finally{Z?.deactivate(),R8()}});else w()}function _9(){var z=J0,J=W0,Q=L0,K=w0;if(m)var X=M6;return function(W=!0){if(U1(z),a0(J),p6(Q),W)K?.activate();if(m)c9(null),z5(X)}}function R8(){if(U1(null),a0(null),p6(null),m)c9(null),z5(null)}var X5=null;function c9(z){X5=z}var h5=new Set;function X8(z){var J=h0|i0,Q=W0!==null&&(W0.f&h0)!==0?W0:null;if(J0!==null)J0.f|=S6;let K={ctx:L0,deps:null,effects:null,equals:Sz,f:J,fn:z,reactions:null,rv:0,v:E0,wv:0,parent:Q??J0,ac:null};if(m&&q6)K.created=A6("created at");return K}function s9(z,J){let Q=J0;if(Q===null)JQ();var K=Q.b,X=void 0,Z=H1(E0),W=!W0,G=new Map;if(oQ(()=>{if(m)X5=J0;var w=Cz();X=w.promise;try{Promise.resolve(z()).then(w.resolve,w.reject).then(()=>{if(H===w0&&H.committed)H.deactivate();R8()})}catch(B){w.reject(B),R8()}if(m)X5=null;var H=w0;if(W){var q=!K.is_pending();K.update_pending_count(1),H.increment(q),G.get(H)?.reject(D6),G.delete(H),G.set(H,w)}let F=(B,U=void 0)=>{if(X5=null,H.activate(),U){if(U!==D6)Z.f|=Z6,l1(Z,U)}else{if((Z.f&Z6)!==0)Z.f^=Z6;l1(Z,B);for(let[M,P]of G){if(G.delete(M),M===H)break;P.reject(D6)}if(m&&J!==void 0)h5.add(Z),setTimeout(()=>{if(h5.has(Z))NQ(Z.label,J),h5.delete(Z)})}if(W)K.update_pending_count(-1),H.decrement(q)};w.promise.then(F,(B)=>F(null,B||"unknown"))}),K1(()=>{for(let w of G.values())w.reject(D6)}),m)Z.f|=m6;return new Promise((w)=>{function H(q){function F(){if(q===X)w(Z);else H(X)}q.then(F,F)}H(X)})}function C0(z){let J=X8(z);if(!N1)hz(J);return J}function D8(z){let J=X8(z);return J.equals=Dz,J}function vz(z){var J=z.effects;if(J!==null){z.effects=null;for(var Q=0;Q<J.length;Q+=1)y0(J[Q])}}var o9=[];function $Z(z){var J=z.parent;while(J!==null){if((J.f&h0)===0)return(J.f&T1)===0?J:null;J=J.parent}return null}function f5(z){var J,Q=J0;if(U1($Z(z)),m){let K=j8;kz(new Set);try{if(o9.includes(z))QQ();o9.push(z),z.f&=~K6,vz(z),J=gz(z)}finally{U1(Q),kz(K),o9.pop()}}else try{z.f&=~K6,vz(z),J=gz(z)}finally{U1(Q)}return J}function a9(z){var J=f5(z);if(!z.equals(J)){if(!w0?.is_fork)z.v=J;z.wv=m5()}if(x6)return;if(B1!==null){if(j6()||w0?.is_fork)B1.set(z,J)}else{var Q=(z.f&b1)===0?R1:l0;s0(z,Q)}}var j8=new Set,b6=new Map;function kz(z){j8=z}var r9=!1;function aQ(){r9=!0}function H1(z,J){var Q={f:0,v:z,reactions:null,equals:Sz,rv:0,wv:0};if(m&&q6)Q.created=J??A6("created at"),Q.updated=null,Q.set_during_effect=!1,Q.trace=null;return Q}function f(z,J){let Q=H1(z,J);return hz(Q),Q}function i6(z,J=!1,Q=!0){let K=H1(z);if(!J)K.equals=Dz;if(l6&&Q&&L0!==null&&L0.l!==null)(L0.l.s??=[]).push(K);return K}function R(z,J,Q=!1){if(W0!==null&&(!a1||(W0.f&O8)!==0)&&s1()&&(W0.f&(h0|m1|m6|O8))!==0&&!E6?.includes(z))qQ();let K=Q?x0(J):J;if(m)Rz(K,z.label);return l1(z,K)}function l1(z,J){if(!z.equals(J)){var Q=z.v;if(x6)b6.set(z,J);else b6.set(z,Q);z.v=J;var K=o0.ensure();if(K.capture(z,Q),m){if(q6||J0!==null){z.updated??=new Map;let X=(z.updated.get("")?.count??0)+1;if(z.updated.set("",{error:null,count:X}),q6||X>5){let Z=A6("updated at");if(Z!==null){let W=z.updated.get(Z.stack);if(!W)W={error:Z,count:0},z.updated.set(Z.stack,W);W.count++}}}if(J0!==null)z.set_during_effect=!0}if((z.f&h0)!==0){if((z.f&i0)!==0)f5(z);s0(z,(z.f&b1)!==0?l0:R1)}if(z.wv=m5(),rQ(z,i0),s1()&&J0!==null&&(J0.f&l0)!==0&&(J0.f&(k1|Q6))===0)if(o1===null)nQ([z]);else o1.push(z);if(!K.is_fork&&j8.size>0&&!r9)bz()}return J}function bz(){r9=!1;var z=T6;Q5(!0);let J=Array.from(j8);try{for(let Q of J){if((Q.f&l0)!==0)s0(Q,R1);if(Z8(Q))Q8(Q)}}finally{Q5(z)}j8.clear()}function S8(z){R(z,z.v+1)}function rQ(z,J){var Q=z.reactions;if(Q===null)return;var K=s1(),X=Q.length;for(var Z=0;Z<X;Z++){var W=Q[Z],G=W.f;if(!K&&W===J0)continue;if(m&&(G&O8)!==0){j8.add(W);continue}var w=(G&i0)===0;if(w)s0(W,J);if((G&h0)!==0){var H=W;if(B1?.delete(H),(G&K6)===0){if(G&b1)W.f|=K6;rQ(H,R1)}}else if(w){if((G&m1)!==0&&W6!==null)W6.add(W);k6(W)}}}var uZ=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function x0(z){if(typeof z!=="object"||z===null||Q1 in z)return z;let J=q8(z);if(J!==S9&&J!==n7)return z;var Q=new Map,K=w6(z),X=f(0),Z=m&&q6?A6("created at"):null,W=W8,G=(F)=>{if(W8===W)return F();var B=W0,U=W8;a0(null),n9(W);var M=F();return a0(B),n9(U),M};if(K){if(Q.set("length",f(z.length,Z)),m)z=pZ(z)}var w="";let H=!1;function q(F){if(H)return;H=!0,w=F,u1(X,`${w} version`);for(let[B,U]of Q)u1(U,A8(w,B));H=!1}return new Proxy(z,{defineProperty(F,B,U){if(!("value"in U)||U.configurable===!1||U.enumerable===!1||U.writable===!1)VQ();var M=Q.get(B);if(M===void 0)M=G(()=>{var P=f(U.value,Z);if(Q.set(B,P),m&&typeof B==="string")u1(P,A8(w,B));return P});else R(M,U.value,!0);return!0},deleteProperty(F,B){var U=Q.get(B);if(U===void 0){if(B in F){let M=G(()=>f(E0,Z));if(Q.set(B,M),S8(X),m)u1(M,A8(w,B))}}else R(U,E0),S8(X);return!0},get(F,B,U){if(B===Q1)return z;if(m&&B===Oz)return q;var M=Q.get(B),P=B in F;if(M===void 0&&(!P||D1(F,B)?.writable))M=G(()=>{var j=x0(P?F[B]:E0),T=f(j,Z);if(m)u1(T,A8(w,B));return T}),Q.set(B,M);if(M!==void 0){var O=Y(M);return O===E0?void 0:O}return Reflect.get(F,B,U)},getOwnPropertyDescriptor(F,B){var U=Reflect.getOwnPropertyDescriptor(F,B);if(U&&"value"in U){var M=Q.get(B);if(M)U.value=Y(M)}else if(U===void 0){var P=Q.get(B),O=P?.v;if(P!==void 0&&O!==E0)return{enumerable:!0,configurable:!0,value:O,writable:!0}}return U},has(F,B){if(B===Q1)return!0;var U=Q.get(B),M=U!==void 0&&U.v!==E0||Reflect.has(F,B);if(U!==void 0||J0!==null&&(!M||D1(F,B)?.writable)){if(U===void 0)U=G(()=>{var O=M?x0(F[B]):E0,j=f(O,Z);if(m)u1(j,A8(w,B));return j}),Q.set(B,U);var P=Y(U);if(P===E0)return!1}return M},set(F,B,U,M){var P=Q.get(B),O=B in F;if(K&&B==="length")for(var j=U;j<P.v;j+=1){var T=Q.get(j+"");if(T!==void 0)R(T,E0);else if(j in F){if(T=G(()=>f(E0,Z)),Q.set(j+"",T),m)u1(T,A8(w,j))}}if(P===void 0){if(!O||D1(F,B)?.writable){if(P=G(()=>f(void 0,Z)),m)u1(P,A8(w,B));R(P,x0(U)),Q.set(B,P)}}else{O=P.v!==E0;var E=G(()=>x0(U));R(P,E)}var N=Reflect.getOwnPropertyDescriptor(F,B);if(N?.set)N.set.call(M,U);if(!O){if(K&&typeof B==="string"){var y=Q.get("length"),b=Number(B);if(Number.isInteger(b)&&b>=y.v)R(y,b+1)}S8(X)}return!0},ownKeys(F){Y(X);var B=Reflect.ownKeys(F).filter((P)=>{var O=Q.get(P);return O===void 0||O.v!==E0});for(var[U,M]of Q)if(M.v!==E0&&!(U in F))B.push(U);return B},setPrototypeOf(){FQ()}})}function A8(z,J){if(typeof J==="symbol")return`${z}[Symbol(${J.description??""})]`;if(uZ.test(J))return`${z}.${J}`;return/^\d+$/.test(J)?`${z}[${J}]`:`${z}['${J}']`}function W5(z){try{if(z!==null&&typeof z==="object"&&Q1 in z)return z[Q1]}catch{}return z}function fz(z,J){return Object.is(W5(z),W5(J))}var lZ=new Set(["copyWithin","fill","pop","push","reverse","shift","sort","splice","unshift"]);function pZ(z){return new Proxy(z,{get(J,Q,K){var X=Reflect.get(J,Q,K);if(!lZ.has(Q))return X;return function(...Z){aQ();var W=X.apply(this,Z);return bz(),W}}})}function tQ(){let{prototype:z,__svelte_cleanup:J}=Array;if(J)J();let{indexOf:Q,lastIndexOf:K,includes:X}=z;z.indexOf=function(Z,W){let G=Q.call(this,Z,W);if(G===-1){for(let w=W??0;w<this.length;w+=1)if(W5(this[w])===Z){Pz("array.indexOf(...)");break}}return G},z.lastIndexOf=function(Z,W){let G=K.call(this,Z,W??this.length-1);if(G===-1){for(let w=0;w<=(W??this.length-1);w+=1)if(W5(this[w])===Z){Pz("array.lastIndexOf(...)");break}}return G},z.includes=function(Z,W){let G=X.call(this,Z,W);if(!G){for(let w=0;w<this.length;w+=1)if(W5(this[w])===Z){Pz("array.includes(...)");break}}return G},Array.__svelte_cleanup=()=>{z.indexOf=Q,z.lastIndexOf=K,z.includes=X}}var t9,Y8,E5,eQ,zK;function mz(){if(t9!==void 0)return;t9=window,Y8=document,E5=/Firefox/.test(navigator.userAgent);var z=Element.prototype,J=Node.prototype,Q=Text.prototype;if(eQ=D1(J,"firstChild").get,zK=D1(J,"nextSibling").get,D9(z))z.__click=void 0,z.__className=void 0,z.__attributes=null,z.__style=void 0,z.__e=void 0;if(D9(Q))Q.__t=void 0;if(m)z.__svelte_meta=null,tQ()}function d0(z=""){return document.createTextNode(z)}function r0(z){return eQ.call(z)}function e0(z){return zK.call(z)}function x(z,J){if(!r)return r0(z);var Q=r0(B0);if(Q===null)Q=B0.appendChild(d0());else if(J&&Q.nodeType!==e8){var K=d0();return Q?.before(K),j0(K),K}return j0(Q),Q}function h(z,J=!1){if(!r){var Q=r0(z);if(Q instanceof Comment&&Q.data==="")return e0(Q);return Q}if(J&&B0?.nodeType!==e8){var K=d0();return B0?.before(K),j0(K),K}return B0}function S(z,J=1,Q=!1){let K=r?B0:z;var X;while(J--)X=K,K=e0(K);if(!r)return K;if(Q&&K?.nodeType!==e8){var Z=d0();if(K===null)X?.after(Z);else K.before(Z);return j0(Z),Z}return j0(K),K}function v5(z){z.textContent=""}function Ez(){if(!N1)return!1;if(W6!==null)return!1;var z=J0.f;return(z&U6)!==0}function N8(z,J){if(J){let Q=document.body;z.autofocus=!0,p0(()=>{if(document.activeElement===Q)z.focus()})}}var JK=!1;function $z(){if(!JK)JK=!0,document.addEventListener("reset",(z)=>{Promise.resolve().then(()=>{if(!z.defaultPrevented)for(let J of z.target.elements)J.__on_r?.()})},{capture:!0})}function _6(z){var J=W0,Q=J0;a0(null),U1(null);try{return z()}finally{a0(J),U1(Q)}}function $5(z,J,Q,K=Q){z.addEventListener(J,()=>_6(Q));let X=z.__on_r;if(X)z.__on_r=()=>{X(),K(!0)};else z.__on_r=()=>K(!0);$z()}function zJ(z){if(J0===null){if(W0===null)XQ(z);ZQ()}if(x6)KQ(z)}function dZ(z,J){var Q=J.last;if(Q===null)J.last=J.first=z;else Q.next=z,z.prev=Q,J.last=z}function r1(z,J,Q){var K=J0;if(m)while(K!==null&&(K.f&O8)!==0)K=K.parent;if(K!==null&&(K.f&j1)!==0)z|=j1;var X={ctx:L0,deps:null,nodes_start:null,nodes_end:null,f:z|i0|b1,first:null,fn:J,last:null,next:null,parent:K,b:K&&K.b,prev:null,teardown:null,transitions:null,wv:0,ac:null};if(m)X.component_function=c1;if(Q)try{Q8(X),X.f|=U6}catch(G){throw y0(X),G}else if(J!==null)k6(X);var Z=X;if(Q&&Z.deps===null&&Z.teardown===null&&Z.nodes_start===null&&Z.first===Z.last&&(Z.f&S6)===0){if(Z=Z.first,(z&m1)!==0&&(z&E1)!==0&&Z!==null)Z.f|=E1}if(Z!==null){if(Z.parent=K,K!==null)dZ(Z,K);if(W0!==null&&(W0.f&h0)!==0&&(z&Q6)===0){var W=W0;(W.effects??=[]).push(Z)}}return X}function j6(){return W0!==null&&!a1}function K1(z){let J=r1(C8,null,!1);return s0(J,l0),J.teardown=z,J}function Z1(z){if(zJ("$effect"),m)q1(z,"name",{value:"$effect"});var J=J0.f,Q=!W0&&(J&k1)!==0&&(J&U6)===0;if(Q){var K=L0;(K.e??=[]).push(z)}else return h9(z)}function h9(z){return r1(a8|j9,z,!1)}function u5(z){if(zJ("$effect.pre"),m)q1(z,"name",{value:"$effect.pre"});return r1(C8|j9,z,!0)}function JJ(z){o0.ensure();let J=r1(Q6|S6,z,!0);return()=>{y0(J)}}function QK(z){o0.ensure();let J=r1(Q6|S6,z,!0);return(Q={})=>{return new Promise((K)=>{if(Q.outro)d6(J,()=>{y0(J),K(void 0)});else y0(J),K(void 0)})}}function V1(z){return r1(a8,z,!1)}function oQ(z){return r1(m6|S6,z,!0)}function w1(z,J=0){return r1(C8|J,z,!0)}function g(z,J=[],Q=[],K=[]){Z5(K,J,Q,(X)=>{r1(C8,()=>z(...X.map(Y)),!0)})}function l5(z,J=[],Q=[],K=[]){var X=w0,Z=Q.length>0||K.length>0;if(Z)X.increment(!0);Z5(K,J,Q,(W)=>{if(r1(a8,()=>z(...W.map(Y)),!1),Z)X.decrement(!0)})}function x1(z,J=0){var Q=r1(m1|J,z,!0);if(m)Q.dev_stack=M6;return Q}function uz(z,J=0){var Q=r1(r8|J,z,!0);if(m)Q.dev_stack=M6;return Q}function z1(z){return r1(k1|S6,z,!0)}function QJ(z){var J=z.teardown;if(J!==null){let Q=x6,K=W0;e9(!0),a0(null);try{J.call(null)}finally{e9(Q),a0(K)}}}function KJ(z,J=!1){var Q=z.first;z.first=z.last=null;while(Q!==null){let X=Q.ac;if(X!==null)_6(()=>{X.abort(D6)});var K=Q.next;if((Q.f&Q6)!==0)Q.parent=null;else y0(Q,J);Q=K}}function KK(z){var J=z.first;while(J!==null){var Q=J.next;if((J.f&k1)===0)y0(J);J=Q}}function y0(z,J=!0){var Q=!1;if((J||(z.f&n8)!==0)&&z.nodes_start!==null&&z.nodes_end!==null)ZJ(z.nodes_start,z.nodes_end),Q=!0;KJ(z,J&&!Q),p5(z,0),s0(z,T1);var K=z.transitions;if(K!==null)for(let Z of K)Z.stop();QJ(z);var X=z.parent;if(X!==null&&X.first!==null)u9(z);if(m)z.component_function=null;z.next=z.prev=z.teardown=z.ctx=z.deps=z.fn=z.nodes_start=z.nodes_end=z.ac=null}function ZJ(z,J){while(z!==null){var Q=z===J?null:e0(z);z.remove(),z=Q}}function u9(z){var{parent:J,prev:Q,next:K}=z;if(Q!==null)Q.next=K;if(K!==null)K.prev=Q;if(J!==null){if(J.first===z)J.first=K;if(J.last===z)J.last=Q}}function d6(z,J,Q=!0){var K=[];yz(z,K,!0),i9(K,()=>{if(Q)y0(z);if(J)J()})}function i9(z,J){var Q=z.length;if(Q>0){var K=()=>--Q||J();for(var X of z)X.out(K)}else J()}function yz(z,J,Q){if((z.f&j1)!==0)return;if(z.f^=j1,z.transitions!==null){for(let W of z.transitions)if(W.is_global||Q)J.push(W)}var K=z.first;while(K!==null){var X=K.next,Z=(K.f&E1)!==0||(K.f&k1)!==0&&(z.f&m1)!==0;yz(K,J,Z?Q:!1),K=X}}function g5(z){ZK(z,!0)}function ZK(z,J){if((z.f&j1)===0)return;if(z.f^=j1,(z.f&l0)===0)s0(z,i0),k6(z);var Q=z.first;while(Q!==null){var K=Q.next,X=(Q.f&E1)!==0||(Q.f&k1)!==0;ZK(Q,X?J:!1),Q=K}if(z.transitions!==null){for(let Z of z.transitions)if(Z.is_global||J)Z.in()}}function Tz(z,J){var{nodes_start:Q,nodes_end:K}=z;while(Q!==null){var X=Q===K?null:e0(Q);J.append(Q),Q=X}}var XK=null;var T6=!1;function Q5(z){T6=z}var x6=!1;function e9(z){x6=z}var W0=null,a1=!1;function a0(z){W0=z}var J0=null;function U1(z){J0=z}var E6=null;function hz(z){if(W0!==null&&(!N1||(W0.f&h0)!==0))if(E6===null)E6=[z];else E6.push(z)}var y1=null,n1=0,o1=null;function nQ(z){o1=z}var WK=1,d5=0,W8=d5;function n9(z){W8=z}function m5(){return++WK}function Z8(z){var J=z.f;if((J&i0)!==0)return!0;if(J&h0)z.f&=~K6;if((J&R1)!==0){var Q=z.deps;if(Q!==null){var K=Q.length;for(var X=0;X<K;X++){var Z=Q[X];if(Z8(Z))a9(Z);if(Z.wv>z.wv)return!0}}if((J&b1)!==0&&B1===null)s0(z,l0)}return!1}function YK(z,J,Q=!0){var K=z.reactions;if(K===null)return;if(!N1&&E6?.includes(z))return;for(var X=0;X<K.length;X++){var Z=K[X];if((Z.f&h0)!==0)YK(Z,J,!1);else if(J===Z){if(Q)s0(Z,i0);else if((Z.f&l0)!==0)s0(Z,R1);k6(Z)}}}function gz(z){var J=y1,Q=n1,K=o1,X=W0,Z=E6,W=L0,G=a1,w=W8,H=z.f;if(y1=null,n1=0,o1=null,W0=(H&(k1|Q6))===0?z:null,E6=null,p6(z.ctx),a1=!1,W8=++d5,z.ac!==null)_6(()=>{z.ac.abort(D6)}),z.ac=null;try{z.f|=xz;var q=z.fn,F=q(),B=z.deps;if(y1!==null){var U;if(p5(z,n1),B!==null&&n1>0){B.length=n1+y1.length;for(U=0;U<y1.length;U++)B[n1+U]=y1[U]}else z.deps=B=y1;if(T6&&j6()&&(z.f&b1)!==0)for(U=n1;U<B.length;U++)(B[U].reactions??=[]).push(z)}else if(B!==null&&n1<B.length)p5(z,n1),B.length=n1;if(s1()&&o1!==null&&!a1&&B!==null&&(z.f&(h0|R1|i0))===0)for(U=0;U<o1.length;U++)YK(o1[U],z);if(X!==null&&X!==z){if(d5++,o1!==null)if(K===null)K=o1;else K.push(...o1)}if((z.f&Z6)!==0)z.f^=Z6;return F}catch(M){return Az(M)}finally{z.f^=xz,y1=J,n1=Q,o1=K,W0=X,E6=Z,p6(W),a1=G,W8=w}}function iZ(z,J){let Q=J.reactions;if(Q!==null){var K=r7.call(Q,z);if(K!==-1){var X=Q.length-1;if(X===0)Q=J.reactions=null;else Q[K]=Q[X],Q.pop()}}if(Q===null&&(J.f&h0)!==0&&(y1===null||!y1.includes(J))){if(s0(J,R1),(J.f&b1)!==0)J.f^=b1,J.f&=~K6;vz(J),p5(J,0)}}function p5(z,J){var Q=z.deps;if(Q===null)return;for(var K=J;K<Q.length;K++)iZ(z,Q[K])}function Q8(z){var J=z.f;if((J&T1)!==0)return;s0(z,l0);var Q=J0,K=T6;if(J0=z,T6=!0,m){var X=c1;jz(z.component_function);var Z=M6;z5(z.dev_stack??M6)}try{if((J&(m1|r8))!==0)KK(z);else KJ(z);QJ(z);var W=gz(z);if(z.teardown=typeof W==="function"?W:null,z.wv=WK,m&&q6&&(z.f&i0)!==0&&z.deps!==null){for(var G of z.deps)if(G.set_during_effect)G.wv=m5(),G.set_during_effect=!1}}finally{if(T6=K,J0=Q,m)jz(X),z5(Z)}}async function y5(){if(N1)return new Promise((z)=>{requestAnimationFrame(()=>z()),setTimeout(()=>z())});await Promise.resolve(),K8()}function Y(z){var J=z.f,Q=(J&h0)!==0;if(XK?.add(z),W0!==null&&!a1){var K=J0!==null&&(J0.f&T1)!==0;if(!K&&!E6?.includes(z)){var X=W0.deps;if((W0.f&xz)!==0){if(z.rv<d5){if(z.rv=d5,y1===null&&X!==null&&X[n1]===z)n1++;else if(y1===null)y1=[z];else if(!y1.includes(z))y1.push(z)}}else{(W0.deps??=[]).push(z);var Z=z.reactions;if(Z===null)z.reactions=[W0];else if(!Z.includes(W0))Z.push(W0)}}}if(m){if(h5.delete(z),q6&&!a1&&T5!==null&&W0!==null&&T5.reaction===W0)if(z.trace)z.trace();else{var W=A6("traced at");if(W){var G=T5.entries.get(z);if(G===void 0)G={traces:[]},T5.entries.set(z,G);var w=G.traces[G.traces.length-1];if(W.stack!==w?.stack)G.traces.push(W)}}}if(x6){if(b6.has(z))return b6.get(z);if(Q){var H=z,q=H.v;if((H.f&l0)===0&&H.reactions!==null||BK(H))q=f5(H);return b6.set(H,q),q}}else if(Q&&(!B1?.has(z)||w0?.is_fork&&!j6())){if(H=z,Z8(H))a9(H);if(T6&&j6()&&(H.f&b1)===0)GK(H)}if(B1?.has(z))return B1.get(z);if((z.f&Z6)!==0)throw z.v;return z.v}function GK(z){if(z.deps===null)return;z.f^=b1;for(let J of z.deps)if((J.reactions??=[]).push(z),(J.f&h0)!==0&&(J.f&b1)===0)GK(J)}function BK(z){if(z.v===E0)return!0;if(z.deps===null)return!1;for(let J of z.deps){if(b6.has(J))return!0;if((J.f&h0)!==0&&BK(J))return!0}return!1}function b0(z){var J=a1;try{return a1=!0,z()}finally{a1=J}}var _Z=~(i0|R1|l0);function s0(z,J){z.f=z.f&_Z|J}function pz(z){if(typeof z!=="object"||!z||z instanceof EventTarget)return;if(Q1 in z)lz(z);else if(!Array.isArray(z))for(let J in z){let Q=z[J];if(typeof Q==="object"&&Q&&Q1 in Q)lz(Q)}}function lz(z,J=new Set){if(typeof z==="object"&&z!==null&&!(z instanceof EventTarget)&&!J.has(z)){if(J.add(z),z instanceof Date)z.getTime();for(let K in z)try{lz(z[K],J)}catch(X){}let Q=q8(z);if(Q!==Object.prototype&&Q!==Array.prototype&&Q!==Map.prototype&&Q!==Set.prototype&&Q!==Date.prototype){let K=Mz(Q);for(let X in K){let Z=K[X].get;if(Z)try{Z.call(z)}catch(W){}}}}}var cZ=/\r/g;function HK(z){z=z.replace(cZ,"");let J=5381,Q=z.length;while(Q--)J=(J<<5)-J^z.charCodeAt(Q);return(J>>>0).toString(36)}function wK(z){return z.endsWith("capture")&&z!=="gotpointercapture"&&z!=="lostpointercapture"}var sZ=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function UK(z){return sZ.includes(z)}var oZ=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected","webkitdirectory","defer","disablepictureinpicture","disableremoteplayback"];var aZ={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function VK(z){return z=z.toLowerCase(),aZ[z]??z}var RH=[...oZ,"formNoValidate","isMap","noModule","playsInline","readOnly","value","volume","defaultValue","defaultChecked","srcObject","noValidate","allowFullscreen","disablePictureInPicture","disableRemotePlayback"];var rZ=["touchstart","touchmove"];function FK(z){return rZ.includes(z)}var nZ=["$state","$state.raw","$derived","$derived.by"],jH=[...nZ,"$state.eager","$state.snapshot","$props","$props.id","$bindable","$effect","$effect.pre","$effect.tracking","$effect.root","$effect.pending","$inspect","$inspect().with","$inspect.trace","$host"];function dz(z){return z?.replace(/\//g,"/")}var XJ=new Set,iz=new Set;function Y5(z){if(!r)return;z.removeAttribute("onload"),z.removeAttribute("onerror");let J=z.__e;if(J!==void 0)z.__e=void 0,queueMicrotask(()=>{if(z.isConnected)z.dispatchEvent(J)})}function WJ(z,J,Q,K={}){function X(Z){if(!K.capture)G5.call(J,Z);if(!Z.cancelBubble)return _6(()=>{return Q?.call(this,Z)})}if(z.startsWith("pointer")||z.startsWith("touch")||z==="wheel")p0(()=>{J.addEventListener(z,X,K)});else J.addEventListener(z,X,K);return X}function L1(z,J,Q,K,X){var Z={capture:K,passive:X},W=WJ(z,J,Q,Z);if(J===document.body||J===window||J===document||J instanceof HTMLMediaElement)K1(()=>{J.removeEventListener(z,W,Z)})}function I0(z){for(var J=0;J<z.length;J++)XJ.add(z[J]);for(var Q of iz)Q(z)}var MK=null;function G5(z){var J=this,Q=J.ownerDocument,K=z.type,X=z.composedPath?.()||[],Z=X[0]||z.target;MK=z;var W=0,G=MK===z&&z.__root;if(G){var w=X.indexOf(G);if(w!==-1&&(J===document||J===window)){z.__root=J;return}var H=X.indexOf(J);if(H===-1)return;if(w<=H)W=w}if(Z=X[W]||z.target,Z===J)return;q1(z,"currentTarget",{configurable:!0,get(){return Z||Q}});var q=W0,F=J0;a0(null),U1(null);try{var B,U=[];while(Z!==null){var M=Z.assignedSlot||Z.parentNode||Z.host||null;try{var P=Z["__"+K];if(P!=null&&(!Z.disabled||z.target===Z))P.call(Z,z)}catch(O){if(B)U.push(O);else B=O}if(z.cancelBubble||M===J||M===null)break;Z=M}if(B){for(let O of U)queueMicrotask(()=>{throw O});throw B}}finally{z.__root=J,delete z.currentTarget,a0(q),U1(F)}}function i5(z){var J=document.createElement("template");return J.innerHTML=z.replaceAll("<!>","<!---->"),J.content}function p1(z,J){var Q=J0;if(Q.nodes_start===null)Q.nodes_start=z,Q.nodes_end=J}function L(z,J){var Q=(J&DQ)!==0,K=(J&RQ)!==0,X,Z=!z.startsWith("<!>");return()=>{if(r)return p1(B0,null),B0;if(X===void 0){if(X=i5(Z?z:"<!>"+z),!Q)X=r0(X)}var W=K||E5?document.importNode(X,!0):X.cloneNode(!0);if(Q){var G=r0(W),w=W.lastChild;p1(G,w)}else p1(W,W);return W}}function d1(z=""){if(!r){var J=d0(z+"");return p1(J,J),J}var Q=B0;if(Q.nodeType!==e8)Q.before(Q=d0()),j0(Q);return p1(Q,Q),Q}function c(){if(r)return p1(B0,null),B0;var z=document.createDocumentFragment(),J=document.createComment(""),Q=d0();return z.append(J,Q),p1(J,Q),z}function V(z,J){if(r){var Q=J0;if((Q.f&U6)===0||Q.nodes_end===null)Q.nodes_end=B0;_0();return}if(z===null)return;z.before(J)}var YJ=!0;function u(z,J){var Q=J==null?"":typeof J==="object"?J+"":J;if(Q!==(z.__t??=z.nodeValue))z.__t=Q,z.nodeValue=Q+""}function H5(z,J){return xK(z,J)}function BJ(z,J){mz(),J.intro=J.intro??!1;let Q=J.target,K=r,X=B0;try{var Z=r0(Q);while(Z&&(Z.nodeType!==A1||Z.data!==b5))Z=e0(Z);if(!Z)throw R6;f0(!0),j0(Z);let W=xK(z,{...J,anchor:Z});return f0(!1),W}catch(W){if(W instanceof Error&&W.message.split(`
45
45
+
`).some((G)=>G.startsWith("https://svelte.dev/e/")))throw W;if(W!==R6)console.warn("Failed to hydrate: ",W);if(J.recover===!1)YQ();return mz(),v5(Q),f0(!1),H5(z,J)}finally{f0(K),j0(X)}}var B5=new Map;function xK(z,{target:J,anchor:Q,props:K={},events:X,context:Z,intro:W=!0}){mz();var G=new Set,w=(F)=>{for(var B=0;B<F.length;B++){var U=F[B];if(G.has(U))continue;G.add(U);var M=FK(U);J.addEventListener(U,G5,{passive:M});var P=B5.get(U);if(P===void 0)document.addEventListener(U,G5,{passive:M}),B5.set(U,1);else B5.set(U,P+1)}};w(k5(XJ)),iz.add(w);var H=void 0,q=QK(()=>{var F=Q??J.appendChild(d0());return l9(F,{pending:()=>{}},(B)=>{if(Z){i({});var U=L0;U.c=Z}if(X)K.$$events=X;if(r)p1(B,null);if(YJ=W,H=z(B,K)||{},YJ=!0,r){if(J0.nodes_end=B0,B0===null||B0.nodeType!==A1||B0.data!==L8)throw z8(),R6}if(Z)_()}),()=>{for(var B of G){J.removeEventListener(B,G5);var U=B5.get(B);if(--U===0)document.removeEventListener(B,G5),B5.delete(B);else B5.set(B,U)}if(iz.delete(w),F!==Q)F.parentNode?.removeChild(F)}});return GJ.set(H,q),H}var GJ=new WeakMap;function HJ(z,J){let Q=GJ.get(z);if(Q)return GJ.delete(z),Q(J);if(m)if(Q1 in z)yQ();else TQ();return Promise.resolve()}class O6{anchor;#z=new Map;#J=new Map;#Q=new Map;#K=new Set;#G=!0;constructor(z,J=!0){this.anchor=z,this.#G=J}#X=()=>{var z=w0;if(!this.#z.has(z))return;var J=this.#z.get(z),Q=this.#J.get(J);if(Q)g5(Q),this.#K.delete(J);else{var K=this.#Q.get(J);if(K)this.#J.set(J,K.effect),this.#Q.delete(J),K.fragment.lastChild.remove(),this.anchor.before(K.fragment),Q=K.effect}for(let[X,Z]of this.#z){if(this.#z.delete(X),X===z)break;let W=this.#Q.get(Z);if(W)y0(W.effect),this.#Q.delete(Z)}for(let[X,Z]of this.#J){if(X===J||this.#K.has(X))continue;let W=()=>{if(Array.from(this.#z.values()).includes(X)){var w=document.createDocumentFragment();Tz(Z,w),w.append(d0()),this.#Q.set(X,{effect:Z,fragment:w})}else y0(Z);this.#K.delete(X),this.#J.delete(X)};if(this.#G||!Q)this.#K.add(X),d6(Z,W,!1);else W()}};#Z=(z)=>{this.#z.delete(z);let J=Array.from(this.#z.values());for(let[Q,K]of this.#Q)if(!J.includes(Q))y0(K.effect),this.#Q.delete(Q)};ensure(z,J){var Q=w0,K=Ez();if(J&&!this.#J.has(z)&&!this.#Q.has(z))if(K){var X=document.createDocumentFragment(),Z=d0();X.append(Z),this.#Q.set(z,{effect:z1(()=>J(Z)),fragment:X})}else this.#J.set(z,z1(()=>J(this.anchor)));if(this.#z.set(Q,z),K){for(let[W,G]of this.#J)if(W===z)Q.skipped_effects.delete(G);else Q.skipped_effects.add(G);for(let[W,G]of this.#Q)if(W===z)Q.skipped_effects.delete(G.effect);else Q.skipped_effects.add(G.effect);Q.oncommit(this.#X),Q.ondiscard(this.#Z)}else{if(r)this.anchor=B0;this.#X()}}}var OK=0,wJ=1;function k8(z,J,Q,K,X){if(r)_0();var Z=s1(),W=E0,G=Z?H1(W):i6(W,!1,!1),w=Z?H1(W):i6(W,!1,!1),H=new O6(z);x1(()=>{var q=J(),F=!1;let B=r&&R9(q)===(z.data===V6);if(B)j0(F6()),f0(!1);if(R9(q)){var U=_9(),M=!1;let P=(O)=>{if(F)return;if(M=!0,U(!1),o0.ensure(),r)f0(!1);try{O()}finally{if(R8(),!J8)K8()}};if(q.then((O)=>{P(()=>{l1(G,O),H.ensure(wJ,K&&((j)=>K(j,G)))})},(O)=>{P(()=>{if(l1(w,O),H.ensure(wJ,X&&((j)=>X(j,w))),!X)throw w.v})}),r)H.ensure(OK,Q);else p0(()=>{if(!M)P(()=>{H.ensure(OK,Q)})})}else l1(G,q),H.ensure(wJ,K&&((P)=>K(P,G)));if(B)f0(!0);return()=>{F=!0}})}function D(z,J,Q=!1){if(r)_0();var K=new O6(z),X=Q?E1:0;function Z(W,G){if(r){let H=Iz(z)===V6;if(W===H){var w=F6();j0(w),K.anchor=w,f0(!1),K.ensure(W,G),f0(!0);return}}K.ensure(W,G)}x1(()=>{var W=!1;if(J((G,w=!0)=>{W=!0,Z(w,G)}),!W)Z(!1,null)},X)}function UJ(z,J,Q){if(r)_0();var K=new O6(z),X=!s1();x1(()=>{var Z=J();if(X&&Z!==null&&typeof Z==="object")Z={};K.ensure(Z,Q)})}function z4(z,J,Q){if(!J||J===HK(String(Q??"")))return;let K,X=z.__svelte_meta?.loc;if(X)K=`near ${X.file}:${X.line}:${X.column}`;else if(c1?.[$1])K=`in ${c1[$1]}`;bQ(dz(K))}function VJ(z,J,Q=!1,K=!1,X=!1){var Z=z,W="";g(()=>{var G=J0;if(W===(W=J()??"")){if(r)_0();return}if(G.nodes_start!==null)ZJ(G.nodes_start,G.nodes_end),G.nodes_start=G.nodes_end=null;if(W==="")return;if(r){var w=B0.data,H=_0(),q=H;while(H!==null&&(H.nodeType!==A1||H.data!==""))q=H,H=e0(H);if(H===null)throw z8(),R6;if(m&&!X)z4(H.parentNode,w,W);p1(B0,q),Z=j0(H);return}var F=W+"";if(Q)F=`<svg>${F}</svg>`;else if(K)F=`<math>${F}</math>`;var B=i5(F);if(Q||K)B=r0(B);if(p1(r0(B),B.lastChild),Q||K)while(r0(B))Z.before(r0(B));else Z.before(B)})}function G8(z,J,...Q){var K=new O6(z);x1(()=>{let X=J()??null;if(m&&X==null)GQ();K.ensure(X,X&&((Z)=>X(Z,...Q)))},E1)}function b8(z,J){let Q=null,K=r;var X;if(r){Q=B0;var Z=r0(document.head);while(Z!==null&&(Z.nodeType!==A1||Z.data!==z))Z=e0(Z);if(Z===null)f0(!1);else{var W=e0(Z);Z.remove(),j0(W)}}if(!r)X=document.head.appendChild(d0());try{x1(()=>J(X),n8)}finally{if(K)f0(!0),j0(Q)}}function FJ(z,J){var Q=void 0,K;uz(()=>{if(Q!==(Q=J())){if(K)y0(K),K=null;if(Q)K=z1(()=>{V1(()=>Q(z))})}})}function LK(z){var J,Q,K="";if(typeof z=="string"||typeof z=="number")K+=z;else if(typeof z=="object")if(Array.isArray(z)){var X=z.length;for(J=0;J<X;J++)z[J]&&(Q=LK(z[J]))&&(K&&(K+=" "),K+=Q)}else for(Q in z)z[Q]&&(K&&(K+=" "),K+=Q);return K}function PK(){for(var z,J,Q=0,K="",X=arguments.length;Q<X;Q++)(z=arguments[Q])&&(J=LK(z))&&(K&&(K+=" "),K+=J);return K}function T8(z){if(typeof z==="object")return PK(z);else return z??""}var IK=[...`
46
46
+
\r\f \v\uFEFF`];function DK(z,J,Q){var K=z==null?"":""+z;if(J)K=K?K+" "+J:J;if(Q){for(var X in Q)if(Q[X])K=K?K+" "+X:X;else if(K.length){var Z=X.length,W=0;while((W=K.indexOf(X,W))>=0){var G=W+Z;if((W===0||IK.includes(K[W-1]))&&(G===K.length||IK.includes(K[G])))K=(W===0?"":K.substring(0,W))+K.substring(G+1);else W=G}}}return K===""?null:K}function SK(z,J=!1){var Q=J?" !important;":";",K="";for(var X in z){var Z=z[X];if(Z!=null&&Z!=="")K+=" "+X+": "+Z+Q}return K}function qJ(z){if(z[0]!=="-"||z[1]!=="-")return z.toLowerCase();return z}function RK(z,J){if(J){var Q="",K,X;if(Array.isArray(J))K=J[0],X=J[1];else K=J;if(z){z=String(z).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var Z=!1,W=0,G=!1,w=[];if(K)w.push(...Object.keys(K).map(qJ));if(X)w.push(...Object.keys(X).map(qJ));var H=0,q=-1;let P=z.length;for(var F=0;F<P;F++){var B=z[F];if(G){if(B==="/"&&z[F-1]==="*")G=!1}else if(Z){if(Z===B)Z=!1}else if(B==="/"&&z[F+1]==="*")G=!0;else if(B==='"'||B==="'")Z=B;else if(B==="(")W++;else if(B===")")W--;if(!G&&Z===!1&&W===0){if(B===":"&&q===-1)q=F;else if(B===";"||F===P-1){if(q!==-1){var U=qJ(z.substring(H,q).trim());if(!w.includes(U)){if(B!==";")F++;var M=z.substring(H,F).trim();Q+=" "+M+";"}}H=F+1,q=-1}}}}if(K)Q+=SK(K);if(X)Q+=SK(X,!0);return Q=Q.trim(),Q===""?null:Q}return z==null?null:String(z)}function X1(z,J,Q,K,X,Z){var W=z.__className;if(r||W!==Q||W===void 0){var G=DK(Q,K,Z);if(!r||G!==z.getAttribute("class"))if(G==null)z.removeAttribute("class");else if(J)z.className=G;else z.setAttribute("class",G);z.__className=Q}else if(Z&&X!==Z)for(var w in Z){var H=!!Z[w];if(X==null||H!==!!X[w])z.classList.toggle(w,H)}return Z}function MJ(z,J={},Q,K){for(var X in Q){var Z=Q[X];if(J[X]!==Z)if(Q[X]==null)z.style.removeProperty(X);else z.style.setProperty(X,Z,K)}}function c6(z,J,Q,K){var X=z.__style;if(r||X!==J){var Z=RK(J,K);if(!r||Z!==z.getAttribute("style"))if(Z==null)z.removeAttribute("style");else z.style.cssText=Z;z.__style=J}else if(K)if(Array.isArray(K))MJ(z,Q?.[0],K[0]),MJ(z,Q?.[1],K[1],"important");else MJ(z,Q,K);return K}function w5(z,J,Q=!1){if(z.multiple){if(J==null)return;if(!w6(J))return EQ();for(var K of z.options)K.selected=J.includes(_5(K));return}for(K of z.options){var X=_5(K);if(fz(X,J)){K.selected=!0;return}}if(!Q||J!==void 0)z.selectedIndex=-1}function _z(z){var J=new MutationObserver(()=>{w5(z,z.__value)});J.observe(z,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),K1(()=>{J.disconnect()})}function CJ(z,J,Q=J){var K=new WeakSet,X=!0;$5(z,"change",(Z)=>{var W=Z?"[selected]":":checked",G;if(z.multiple)G=[].map.call(z.querySelectorAll(W),_5);else{var w=z.querySelector(W)??z.querySelector("option:not([disabled])");G=w&&_5(w)}if(Q(G),w0!==null)K.add(w0)}),V1(()=>{var Z=J();if(z===document.activeElement){var W=I8??w0;if(K.has(W))return}if(w5(z,Z,X),X&&Z===void 0){var G=z.querySelector(":checked");if(G!==null)Z=_5(G),Q(Z)}z.__value=Z,X=!1}),_z(z)}function _5(z){if("__value"in z)return z.__value;else return z.value}var U5=Symbol("class"),V5=Symbol("style"),NK=Symbol("is custom element"),kK=Symbol("is html");function $0(z){if(!r)return;var J=!1,Q=()=>{if(J)return;if(J=!0,z.hasAttribute("value")){var K=z.value;d(z,"value",null),z.value=K}if(z.hasAttribute("checked")){var X=z.checked;d(z,"checked",null),z.checked=X}};z.__on_r=Q,p0(Q),$z()}function Y6(z,J){var Q=OJ(z);if(Q.value===(Q.value=J??void 0)||z.value===J&&(J!==0||z.nodeName!=="PROGRESS"))return;z.value=J??""}function bK(z,J){if(J){if(!z.hasAttribute("selected"))z.setAttribute("selected","")}else z.removeAttribute("selected")}function d(z,J,Q,K){var X=OJ(z);if(r){if(X[J]=z.getAttribute(J),J==="src"||J==="srcset"||J==="href"&&z.nodeName==="LINK"){if(!K)Z4(z,J,Q??"");return}}if(X[J]===(X[J]=Q))return;if(J==="loading")z[e7]=Q;if(Q==null)z.removeAttribute(J);else if(typeof Q!=="string"&&TK(z).includes(J))z[J]=Q;else z.setAttribute(J,Q)}function K4(z,J,Q,K,X=!1,Z=!1){if(r&&X&&z.tagName==="INPUT"){var W=z,G=W.type==="checkbox"?"defaultChecked":"defaultValue";if(!(G in Q))$0(W)}var w=OJ(z),H=w[NK],q=!w[kK];let F=r&&H;if(F)f0(!1);var B=J||{},U=z.tagName==="OPTION";for(var M in J)if(!(M in Q))Q[M]=null;if(Q.class)Q.class=T8(Q.class);else if(K||Q[U5])Q.class=null;if(Q[V5])Q.style??=null;var P=TK(z);for(let b in Q){let A=Q[b];if(U&&b==="value"&&A==null){z.value=z.__value="",B[b]=A;continue}if(b==="class"){var O=z.namespaceURI==="http://www.w3.org/1999/xhtml";X1(z,O,A,K,J?.[U5],Q[U5]),B[b]=A,B[U5]=Q[U5];continue}if(b==="style"){c6(z,A,J?.[V5],Q[V5]),B[b]=A,B[V5]=Q[V5];continue}var j=B[b];if(A===j&&!(A===void 0&&z.hasAttribute(b)))continue;B[b]=A;var T=b[0]+b[1];if(T==="$$")continue;if(T==="on"){let k={},$="$$"+b,v=b.slice(2);var E=UK(v);if(wK(v))v=v.slice(0,-7),k.capture=!0;if(!E&&j){if(A!=null)continue;z.removeEventListener(v,B[$],k),B[$]=null}if(A!=null)if(!E){let l=function(n){B[b].call(this,n)};B[$]=WJ(v,z,l,k)}else z[`__${v}`]=A,I0([v]);else if(E)z[`__${v}`]=void 0}else if(b==="style")d(z,b,A);else if(b==="autofocus")N8(z,Boolean(A));else if(!H&&(b==="__value"||b==="value"&&A!=null))z.value=z.__value=A;else if(b==="selected"&&U)bK(z,A);else{var N=b;if(!q)N=VK(N);var y=N==="defaultValue"||N==="defaultChecked";if(A==null&&!H&&!y)if(w[b]=null,N==="value"||N==="checked"){let k=z,$=J===void 0;if(N==="value"){let v=k.defaultValue;k.removeAttribute(N),k.defaultValue=v,k.value=k.__value=$?v:null}else{let v=k.defaultChecked;k.removeAttribute(N),k.defaultChecked=v,k.checked=$?v:!1}}else z.removeAttribute(b);else if(y||P.includes(N)&&(H||typeof A!=="string")){if(z[N]=A,N in w)w[N]=E0}else if(typeof A!=="function")d(z,N,A,Z)}}if(F)f0(!0);return B}function cz(z,J,Q=[],K=[],X=[],Z,W=!1,G=!1){Z5(X,Q,K,(w)=>{var H=void 0,q={},F=z.nodeName==="SELECT",B=!1;if(uz(()=>{var M=J(...w.map(Y)),P=K4(z,H,M,Z,W,G);if(B&&F&&"value"in M)w5(z,M.value);for(let j of Object.getOwnPropertySymbols(q))if(!M[j])y0(q[j]);for(let j of Object.getOwnPropertySymbols(M)){var O=M[j];if(j.description===T9&&(!H||O!==H[j])){if(q[j])y0(q[j]);q[j]=z1(()=>FJ(z,()=>O))}P[j]=O}H=P}),F){var U=z;V1(()=>{w5(U,H.value,!0),_z(U)})}B=!0})}function OJ(z){return z.__attributes??={[NK]:z.nodeName.includes("-"),[kK]:z.namespaceURI===AQ}}var jK=new Map;function TK(z){var J=z.getAttribute("is")||z.nodeName,Q=jK.get(J);if(Q)return Q;jK.set(J,Q=[]);var K,X=z,Z=Element.prototype;while(Z!==X){K=Mz(X);for(var W in K)if(K[W].set)Q.push(W);X=q8(X)}return Q}function Z4(z,J,Q){if(!m)return;if(J==="srcset"&&X4(z,Q))return;if(xJ(z.getAttribute(J)??"",Q))return;kQ(J,z.outerHTML.replace(z.innerHTML,z.innerHTML&&"..."),String(Q))}function xJ(z,J){if(z===J)return!0;return new URL(z,document.baseURI).href===new URL(J,document.baseURI).href}function AK(z){return z.split(",").map((J)=>J.trim().split(" ").filter(Boolean))}function X4(z,J){var Q=AK(z.srcset),K=AK(J);return K.length===Q.length&&K.every(([X,Z],W)=>Z===Q[W][1]&&(xJ(Q[W][0],X)||xJ(X,Q[W][0])))}function P1(z,J,Q=J){var K=new WeakSet;if($5(z,"input",async(X)=>{if(m&&z.type==="checkbox")A9();var Z=X?z.defaultValue:z.value;if(Z=PJ(z)?IJ(Z):Z,Q(Z),w0!==null)K.add(w0);if(await y5(),Z!==(Z=J())){var{selectionStart:W,selectionEnd:G}=z,w=z.value.length;if(z.value=Z??"",G!==null){var H=z.value.length;if(W===G&&G===w&&H>w)z.selectionStart=H,z.selectionEnd=H;else z.selectionStart=W,z.selectionEnd=Math.min(G,H)}}}),r&&z.defaultValue!==z.value||b0(J)==null&&z.value){if(Q(PJ(z)?IJ(z.value):z.value),w0!==null)K.add(w0)}w1(()=>{if(m&&z.type==="checkbox")A9();var X=J();if(z===document.activeElement){var Z=I8??w0;if(K.has(Z))return}if(PJ(z)&&X===IJ(z.value))return;if(z.type==="date"&&!X&&!z.value)return;if(X!==z.value)z.value=X??""})}var LJ=new Set;function c5(z,J,Q,K,X=K){var Z=Q.getAttribute("type")==="checkbox",W=z;let G=!1;if(J!==null)for(var w of J)W=W[w]??=[];if(W.push(Q),$5(Q,"change",()=>{var H=Q.__value;if(Z)H=EK(W,H,Q.checked);X(H)},()=>X(Z?[]:null)),w1(()=>{var H=K();if(r&&Q.defaultChecked!==Q.checked){G=!0;return}if(Z)H=H||[],Q.checked=H.includes(Q.__value);else Q.checked=fz(Q.__value,H)}),K1(()=>{var H=W.indexOf(Q);if(H!==-1)W.splice(H,1)}),!LJ.has(W))LJ.add(W),p0(()=>{W.sort((H,q)=>H.compareDocumentPosition(q)===4?-1:1),LJ.delete(W)});p0(()=>{if(G){var H;if(Z)H=EK(W,H,Q.checked);else{var q=W.find((F)=>F.checked);H=q?.__value}X(H)}})}function EK(z,J,Q){var K=new Set;for(var X=0;X<z.length;X+=1)if(z[X].checked)K.add(z[X].__value);if(!Q)K.delete(J);return Array.from(K)}function PJ(z){var J=z.type;return J==="number"||J==="range"}function IJ(z){return z===""?null:+z}class SJ{#z=new WeakMap;#J;#Q;static entries=new WeakMap;constructor(z){this.#Q=z}observe(z,J){var Q=this.#z.get(z)||new Set;return Q.add(J),this.#z.set(z,Q),this.#K().observe(z,this.#Q),()=>{var K=this.#z.get(z);if(K.delete(J),K.size===0)this.#z.delete(z),this.#J.unobserve(z)}}#K(){return this.#J??(this.#J=new ResizeObserver((z)=>{for(var J of z){SJ.entries.set(J.target,J);for(var Q of this.#z.get(J.target)||[])Q(J)}}))}}var Y4=new SJ({box:"border-box"});function DJ(z,J,Q){var K=Y4.observe(z,()=>Q(z[J]));V1(()=>{return b0(()=>Q(z[J])),K})}function yK(z,J){return z===J||z?.[Q1]===J}function t1(z={},J,Q,K){return V1(()=>{var X,Z;return w1(()=>{X=Z,Z=K?.()||[],b0(()=>{if(z!==Q(...Z)){if(J(z,...Z),X&&yK(Q(...X),z))J(null,...X)}})}),()=>{p0(()=>{if(Z&&yK(Q(...Z),z))J(null,...Z)})}}),z}function RJ(z=!1){let J=L0,Q=J.l.u;if(!Q)return;let K=()=>pz(J.s);if(z){let X=0,Z={},W=X8(()=>{let G=!1,w=J.s;for(let H in w)if(w[H]!==Z[H])Z[H]=w[H],G=!0;if(G)X++;return X});K=()=>Y(W)}if(Q.b.length)u5(()=>{vK(J,K),o8(Q.b)});if(Z1(()=>{let X=b0(()=>Q.m.map(t7));return()=>{for(let Z of X)if(typeof Z==="function")Z()}}),Q.a.length)Z1(()=>{vK(J,K),o8(Q.a)})}function vK(z,J){if(z.l.s)for(let Q of z.l.s)Y(Q);J()}var oz=!1,Gq=Symbol();function jJ(z){var J=oz;try{return oz=!1,[z(),oz]}finally{oz=J}}var B4={get(z,J){if(z.exclude.includes(J))return;return z.props[J]},set(z,J){if(m)HQ(`${z.name}.${String(J)}`);return!1},getOwnPropertyDescriptor(z,J){if(z.exclude.includes(J))return;if(J in z.props)return{enumerable:!0,configurable:!0,value:z.props[J]}},has(z,J){if(z.exclude.includes(J))return!1;return J in z.props},ownKeys(z){return Reflect.ownKeys(z.props).filter((J)=>!z.exclude.includes(J))}};function s6(z,J,Q){return new Proxy(m?{props:z,exclude:J,name:Q,other:{},to_proxy:[]}:{props:z,exclude:J},B4)}var H4={get(z,J){let Q=z.props.length;while(Q--){let K=z.props[Q];if(M8(K))K=K();if(typeof K==="object"&&K!==null&&J in K)return K[J]}},set(z,J,Q){let K=z.props.length;while(K--){let X=z.props[K];if(M8(X))X=X();let Z=D1(X,J);if(Z&&Z.set)return Z.set(Q),!0}return!1},getOwnPropertyDescriptor(z,J){let Q=z.props.length;while(Q--){let K=z.props[Q];if(M8(K))K=K();if(typeof K==="object"&&K!==null&&J in K){let X=D1(K,J);if(X&&!X.configurable)X.configurable=!0;return X}}},has(z,J){if(J===Q1||J===t8)return!1;for(let Q of z.props){if(M8(Q))Q=Q();if(Q!=null&&J in Q)return!0}return!1},ownKeys(z){let J=[];for(let Q of z.props){if(M8(Q))Q=Q();if(!Q)continue;for(let K in Q)if(!J.includes(K))J.push(K);for(let K of Object.getOwnPropertySymbols(Q))if(!J.includes(K))J.push(K)}return J}};function AJ(...z){return new Proxy({props:z},H4)}function R0(z,J,Q,K){var X=!l6||(Q&LQ)!==0,Z=(Q&IQ)!==0,W=(Q&SQ)!==0,G=K,w=!0,H=()=>{if(w)w=!1,G=W?b0(K):K;return G},q;if(Z){var F=Q1 in z||t8 in z;q=D1(z,J)?.set??(F&&J in z?(E)=>z[J]=E:void 0)}var B,U=!1;if(Z)[B,U]=jJ(()=>z[J]);else B=z[J];if(B===void 0&&K!==void 0){if(B=H(),q){if(X)BQ(J);q(B)}}var M;if(X)M=()=>{var E=z[J];if(E===void 0)return H();return w=!0,E};else M=()=>{var E=z[J];if(E!==void 0)G=void 0;return E===void 0?G:E};if(X&&(Q&PQ)===0)return M;if(q){var P=z.$$legacy;return function(E,N){if(arguments.length>0){if(!X||!N||P||U)q(N?M():E);return E}return M()}}var O=!1,j=((Q&OQ)!==0?X8:D8)(()=>{return O=!1,M()});if(m)j.label=J;if(Z)Y(j);var T=J0;return function(E,N){if(arguments.length>0){let y=N?Y(j):X&&Z?x0(E):E;if(R(j,y),O=!0,G!==void 0)G=y;return E}if(x6&&O||(T.f&T1)!==0)return j.v;return Y(j)}}function gK(z){return new hK(z)}class hK{#z;#J;constructor(z){var J=new Map,Q=(X,Z)=>{var W=i6(Z,!1,!1);return J.set(X,W),W};let K=new Proxy({...z.props||{},$$events:{}},{get(X,Z){return Y(J.get(Z)??Q(Z,Reflect.get(X,Z)))},has(X,Z){if(Z===t8)return!0;return Y(J.get(Z)??Q(Z,Reflect.get(X,Z))),Reflect.has(X,Z)},set(X,Z,W){return R(J.get(Z)??Q(Z,W),W),Reflect.set(X,Z,W)}});if(this.#J=(z.hydrate?BJ:H5)(z.component,{target:z.target,anchor:z.anchor,props:K,context:z.context,intro:z.intro??!1,recover:z.recover}),!N1&&(!z?.props?.$$host||z.sync===!1))K8();this.#z=K.$$events;for(let X of Object.keys(this.#J)){if(X==="$set"||X==="$destroy"||X==="$on")continue;q1(this,X,{get(){return this.#J[X]},set(Z){this.#J[X]=Z},enumerable:!0})}this.#J.$set=(X)=>{Object.assign(K,X)},this.#J.$destroy=()=>{HJ(this.#J)}}$set(z){this.#J.$set(z)}$on(z,J){this.#z[z]=this.#z[z]||[];let Q=(...K)=>J.call(this,...K);return this.#z[z].push(Q),()=>{this.#z[z]=this.#z[z].filter((K)=>K!==Q)}}$destroy(){this.#J.$destroy()}}var x4;if(typeof HTMLElement==="function")x4=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;$$me;constructor(z,J,Q){super();if(this.$$ctor=z,this.$$s=J,Q)this.attachShadow({mode:"open"})}addEventListener(z,J,Q){if(this.$$l[z]=this.$$l[z]||[],this.$$l[z].push(J),this.$$c){let K=this.$$c.$on(z,J);this.$$l_u.set(J,K)}super.addEventListener(z,J,Q)}removeEventListener(z,J,Q){if(super.removeEventListener(z,J,Q),this.$$c){let K=this.$$l_u.get(J);if(K)K(),this.$$l_u.delete(J)}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let z=function(K){return(X)=>{let Z=document.createElement("slot");if(K!=="default")Z.name=K;V(X,Z)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let J={},Q=O4(this);for(let K of this.$$s)if(K in Q)if(K==="default"&&!this.$$d.children)this.$$d.children=z(K),J.default=!0;else J[K]=z(K);for(let K of this.attributes){let X=this.$$g_p(K.name);if(!(X in this.$$d))this.$$d[X]=NJ(X,K.value,this.$$p_d,"toProp")}for(let K in this.$$p_d)if(!(K in this.$$d)&&this[K]!==void 0)this.$$d[K]=this[K],delete this[K];this.$$c=gK({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:J,$$host:this}}),this.$$me=JJ(()=>{w1(()=>{this.$$r=!0;for(let K of I9(this.$$c)){if(!this.$$p_d[K]?.reflect)continue;this.$$d[K]=this.$$c[K];let X=NJ(K,this.$$d[K],this.$$p_d,"toAttribute");if(X==null)this.removeAttribute(this.$$p_d[K].attribute||K);else this.setAttribute(this.$$p_d[K].attribute||K,X)}this.$$r=!1})});for(let K in this.$$l)for(let X of this.$$l[K]){let Z=this.$$c.$on(K,X);this.$$l_u.set(X,Z)}this.$$l={}}}attributeChangedCallback(z,J,Q){if(this.$$r)return;z=this.$$g_p(z),this.$$d[z]=NJ(z,Q,this.$$p_d,"toProp"),this.$$c?.$set({[z]:this.$$d[z]})}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{if(!this.$$cn&&this.$$c)this.$$c.$destroy(),this.$$me(),this.$$c=void 0})}$$g_p(z){return I9(this.$$p_d).find((J)=>this.$$p_d[J].attribute===z||!this.$$p_d[J].attribute&&J.toLowerCase()===z)||z}};function NJ(z,J,Q,K){let X=Q[z]?.type;if(J=X==="Boolean"&&typeof J!=="boolean"?J!=null:J,!K||!Q[z])return J;else if(K==="toAttribute")switch(X){case"Object":case"Array":return J==null?null:JSON.stringify(J);case"Boolean":return J?"":null;case"Number":return J==null?null:J;default:return J}else switch(X){case"Object":case"Array":return J&&JSON.parse(J);case"Boolean":return J;case"Number":return J!=null?+J:J;default:return J}}function O4(z){let J={};return z.childNodes.forEach((Q)=>{J[Q.slot||"default"]=!0}),J}if(m){let z=function(J){if(!(J in globalThis)){let Q;Object.defineProperty(globalThis,J,{configurable:!0,get:()=>{if(Q!==void 0)return Q;wQ(J)},set:(K)=>{Q=K}})}};z("$state"),z("$effect"),z("$derived"),z("$inspect"),z("$props"),z("$bindable")}class kJ{cache;prepareCache(){if(!this.cache){let z=localStorage.getItem("handleCache");this.cache=z?JSON.parse(z):{}}}saveCache(){localStorage.setItem("handleCache",JSON.stringify(this.cache))}getHandleDid(z){return this.prepareCache(),this.cache[z]}setHandleDid(z,J){this.prepareCache(),this.cache[z]=J,this.saveCache()}findHandleByDid(z){this.prepareCache();let J=Object.entries(this.cache).find((Q)=>Q[1]==z);return J?J[0]:void 0}}class o6 extends Error{code;json;constructor(z,J){super("APIError status "+z+`
2
47
3
3
-
`+JSON.stringify(K));this.code=J,this.json=K}}class jJ extends Error{}class r extends Error{}class DJ extends Error{}class O0{static async pdsEndpointForDid(J){let K;if(J.startsWith("did:plc:"))K=new URL(`https://plc.directory/${J}`);else if(J.startsWith("did:web:")){let z=J.replace(/^did:web:/,"");K=new URL(`https://${z}/.well-known/did.json`)}else throw new DJ("Unknown DID type: "+J);let Z=await fetch(K),Q=await Z.text(),X=Q.trim().length>0?JSON.parse(Q):void 0;if(Z.status==200){let z=(X.service||[]).find((W)=>W.id=="#atproto_pds");if(z)return z.serviceEndpoint.replace("https://","");else throw new DJ("Missing #atproto_pds service definition")}else throw new y0(Z.status,X)}constructor(J,K,Z){if(this.host=J,this.config=K,this.user=K?.user,this.sendAuthHeaders=!!this.user,this.autoManageTokens=!!this.user,Z)Object.assign(this,Z)}get baseURL(){if(this.host)return(this.host.includes("://")?this.host:`https://${this.host}`)+"/xrpc";else throw new jJ("Hostname not set")}get isLoggedIn(){return!!(this.user&&this.user.accessToken&&this.user.refreshToken&&this.user.did&&this.user.pdsEndpoint)}async getRequest(J,K,Z){let Q=new URL(`${this.baseURL}/${J}`),X=Z&&"auth"in Z?Z.auth:this.sendAuthHeaders;if(this.autoManageTokens&&X===!0)await this.checkAccess();if(K)for(let G in K)if(K[G]instanceof Array)K[G].forEach((F)=>Q.searchParams.append(G,F));else Q.searchParams.append(G,K[G]);let z=this.authHeaders(X);if(Z&&Z.headers)Object.assign(z,Z.headers);let W=await fetch(Q,{headers:z});return await this.parseResponse(W)}async postRequest(J,K,Z){let Q=`${this.baseURL}/${J}`,X=Z&&"auth"in Z?Z.auth:this.sendAuthHeaders;if(this.autoManageTokens&&X===!0)await this.checkAccess();let z={method:"POST",headers:this.authHeaders(X)};if(K)z.body=JSON.stringify(K),z.headers["Content-Type"]="application/json";if(Z&&Z.headers)Object.assign(z.headers,Z.headers);let W=await fetch(Q,z);return await this.parseResponse(W)}async fetchAll(J,K){if(!K||!K.field)throw new jJ("'field' option is required");let Z=[],Q=K.params??{},X=this.sliceOptions(K,["auth","headers"]);for(;;){let z=await this.getRequest(J,Q,X),W=z[K.field],G=z.cursor;if(K.breakWhen){let F=K.breakWhen;if(W.some((H)=>F(H))){if(!K.keepLastPage)W=W.filter((H)=>!F(H));G=null}}if(Z=Z.concat(W),Q.cursor=G,K.onPageLoad){if(K.onPageLoad(W)?.cancel)break}if(!G)break}return Z}authHeaders(J){if(typeof J=="string")return{Authorization:`Bearer ${J}`};else if(J)if(this.user?.accessToken)return{Authorization:`Bearer ${this.user.accessToken}`};else throw new r("Can't send auth headers, access token is missing");else return{}}sliceOptions(J,K){let Z={};for(let Q of K)if(Q in J)Z[Q]=J[Q];return Z}tokenExpirationTimestamp(J){let K=J.split(".");if(K.length!=3)throw new r("Invalid access token format");let Q=JSON.parse(atob(K[1])).exp;if(!(Q&&typeof Q=="number"&&Q>0))throw new r("Invalid token expiry data");return Q*1000}isInvalidToken(J,K){return J.status==400&&!!K&&["InvalidToken","ExpiredToken"].includes(K.error)}async parseResponse(J){let K=await J.text(),Z=K.trim().length>0?JSON.parse(K):void 0;if(J.status>=200&&J.status<300)return Z;else throw new y0(J.status,Z)}async checkAccess(){if(!this.isLoggedIn)throw new r("Not logged in");if(this.tokenExpirationTimestamp(this.user.accessToken)<new Date().getTime()+60000)await this.performTokenRefresh()}async logIn(J,K){if(!this.config||!this.config.user)throw new r("Missing user configuration object");let Z={identifier:J,password:K},Q=await this.postRequest("com.atproto.server.createSession",Z,{auth:!1});return this.saveTokens(Q),Q}async performTokenRefresh(){if(!this.isLoggedIn)throw new r("Not logged in");console.log("Refreshing access token…");let J=await this.postRequest("com.atproto.server.refreshSession",null,{auth:this.user.refreshToken});return this.saveTokens(J),J}saveTokens(J){if(!this.config||!this.config.user)throw new r("Missing user configuration object");if(this.user.accessToken=J.accessJwt,this.user.refreshToken=J.refreshJwt,this.user.did=J.did,J.didDoc?.service){let K=J.didDoc.service.find((Z)=>Z.id=="#atproto_pds");this.host=K.serviceEndpoint.replace("https://","")}this.user.pdsEndpoint=this.host,this.config.save()}resetTokens(){if(!this.config||!this.config.user)throw new r("Missing user configuration object");delete this.user.accessToken,delete this.user.refreshToken,delete this.user.did,delete this.user.pdsEndpoint,this.config.save()}}class A0 extends Error{constructor(J){super(J)}}class u{constructor(J,K){this.data=J,Object.assign(this,K??{})}get uri(){return this.data.uri}get cid(){return this.data.cid}get rkey(){return D(this.uri).rkey}get type(){return this.data.$type}}class k extends u{parent;threadRoot;pageRoot;grandparentAuthor;level;absoluteLevel;reason;isEmbed;static parseThreadPost(J,K=null,Z=0,Q=0){switch(J.$type){case"app.bsky.feed.defs#threadViewPost":let X=new k(J.post,{level:Z,absoluteLevel:Q});if(X.pageRoot=K??X,J.replies){let z=J.replies.map((W)=>k.parseThreadPost(W,X.pageRoot,Z+1,Q+1));X.setReplies(z)}if(Q<=0&&J.parent)X.parent=k.parseThreadPost(J.parent,X.pageRoot,Z-1,Q-1);return X;case"app.bsky.feed.defs#notFoundPost":return new i(J);case"app.bsky.feed.defs#blockedPost":return new a(J);default:throw new A0(`Unexpected record type: ${J.$type}`)}}static parseViewRecord(J){switch(J.$type){case"app.bsky.embed.record#viewRecord":return new k(J,{isEmbed:!0});case"app.bsky.embed.record#viewNotFound":return new i(J);case"app.bsky.embed.record#viewBlocked":return new a(J);case"app.bsky.embed.record#viewDetached":return new f0(J);case"app.bsky.feed.defs#generatorView":return new r0(J);case"app.bsky.graph.defs#listView":return new a0(J);case"app.bsky.graph.defs#starterPackViewBasic":return new o0(J);default:return console.warn("Unknown record type:",J.$type),new u(J)}}static parseFeedPost(J){let K=new k(J.post);if(J.reply){if(K.parent=k.parsePostView(J.reply.parent),K.threadRoot=k.parsePostView(J.reply.root),J.reply.grandparentAuthor)K.grandparentAuthor=J.reply.grandparentAuthor}if(J.reason)K.reason=J.reason;return K}static parsePostView(J){switch(J.$type){case"app.bsky.feed.defs#postView":return new k(J);case"app.bsky.feed.defs#notFoundPost":return new i(J);case"app.bsky.feed.defs#blockedPost":return new a(J);default:throw new A0(`Unexpected record type: ${J.$type}`)}}constructor(J,K){super(J);if(Object.assign(this,K??{}),this.absoluteLevel===0)this.pageRoot=this;if(this.record=this.isPostView?J.record:J.value,this.isPostView&&J.embed)this.embed=b.parseInlineEmbed(J.embed);else if(this.isEmbed&&J.embeds&&J.embeds[0])this.embed=b.parseInlineEmbed(J.embeds[0]);else if(this.record.embed)this.embed=b.parseRawEmbed(this.record.embed);if(this.author=this.author??J.author,this.replies=[],this.viewerData=J.viewer,this.viewerLike=J.viewer?.like,this.author)api.cacheProfile(this.author)}updateDataFromPost(J){this.record=J.record,this.embed=J.embed,this.author=J.author,this.replies=J.replies,this.viewerData=J.viewerData,this.viewerLike=J.viewerLike,this.level=J.level,this.absoluteLevel=J.absoluteLevel}setReplies(J){this.replies=J,this.replies.sort(this.sortReplies.bind(this))}sortReplies(J,K){if(J instanceof k&&K instanceof k)if(J.author.did==this.author.did&&K.author.did!=this.author.did)return-1;else if(J.author.did!=this.author.did&&K.author.did==this.author.did)return 1;else if(J.text!="\uD83D\uDCCC"&&K.text=="\uD83D\uDCCC")return-1;else if(J.text=="\uD83D\uDCCC"&&K.text!="\uD83D\uDCCC")return 1;else if(J.createdAt.getTime()<K.createdAt.getTime())return-1;else if(J.createdAt.getTime()>K.createdAt.getTime())return 1;else return 0;else if(J instanceof k)return-1;else if(K instanceof k)return 1;else return 0}get isPostView(){return!this.isEmbed}get isFediPost(){return this.author?.handle.endsWith(".ap.brid.gy")}get originalFediContent(){return this.record.bridgyOriginalText}get originalFediURL(){return this.record.bridgyOriginalUrl}get isRoot(){return this.pageRoot===this}get authorFediHandle(){if(this.isFediPost)return this.author.handle.replace(/\.ap\.brid\.gy$/,"").replace(".","@");else throw"Not a Fedi post"}get text(){return this.record.text}get lowercaseText(){if(!this._lowercaseText)this._lowercaseText=this.record.text.toLowerCase();return this._lowercaseText}get facets(){return this.record.facets}get tags(){return this.record.tags}get createdAt(){return new Date(this.record.createdAt)}get likeCount(){return I0(this.data.likeCount)}get replyCount(){return I0(this.data.replyCount)}get quoteCount(){return I0(this.data.quoteCount)}get hasMoreReplies(){return this.replyCount!==void 0&&this.replyCount>this.replies.length&&this.replies.length===0&&(this.level!==void 0&&this.level>4)}get hasHiddenReplies(){return this.replyCount!==void 0&&this.replyCount>this.replies.length&&(this.replies.length>0||this.level!==void 0&&this.level<=4)}get isRestrictingReplies(){return!!(this.data.threadgate&&this.data.threadgate.record.allow)}get repostCount(){return I0(this.data.repostCount)}get liked(){return this.viewerLike!==void 0}get muted(){return this.author.viewer?.muted}get muteList(){return this.author.viewer?.mutedByList?.name}get hasViewerInfo(){return this.viewerData!==void 0}get parentReference(){return this.record.reply?.parent&&new u(this.record.reply?.parent)}get rootReference(){return this.record.reply?.root&&new u(this.record.reply?.root)}}class a extends u{constructor(J){super(J);this.author=J.author}get blocksUser(){return!!this.author.viewer?.blocking}get blockedByUser(){return this.author.viewer?.blockedBy}}class i extends u{}class f0 extends u{}class r0 extends u{constructor(J){super(J);this.author=J.creator}get title(){return this.data.displayName}get description(){return this.data.description}get likeCount(){return I0(this.data.likeCount)}get avatar(){return this.data.avatar}}class a0 extends u{constructor(J){super(J);this.author=J.creator}get title(){return this.data.name}get purpose(){return this.data.purpose}get description(){return this.data.description}get avatar(){return this.data.avatar}}class o0 extends u{constructor(J){super(J);this.author=J.creator}get title(){return this.data.record.name}get description(){return this.data.record.description}}class b{static parseInlineEmbed(J){switch(J.$type){case"app.bsky.embed.record#view":return new QJ(J);case"app.bsky.embed.recordWithMedia#view":return new YJ(J);case"app.bsky.embed.images#view":return new XJ(J);case"app.bsky.embed.external#view":return new S0(J);case"app.bsky.embed.video#view":return new zJ(J);default:if(location.protocol=="file:")throw new A0(`Unexpected embed type: ${J.$type}`);else return console.warn("Unexpected embed type:",J.$type),new b(J)}}static parseRawEmbed(J){switch(J.$type){case"app.bsky.embed.record":return new KJ(J);case"app.bsky.embed.recordWithMedia":return new ZJ(J);case"app.bsky.embed.images":return new t0(J);case"app.bsky.embed.external":return new e0(J);case"app.bsky.embed.video":return new JJ(J);default:if(location.protocol=="file:")throw new A0(`Unexpected embed type: ${J.$type}`);else return console.warn("Unexpected embed type:",J.$type),new b(J)}}constructor(J){this.json=J}get type(){return this.json.$type}}class t0 extends b{constructor(J){super(J);this.images=J.images}}class e0 extends b{constructor(J){super(J);this.url=J.external.uri,this.title=J.external.title,this.thumb=J.external.thumb}}class JJ extends b{constructor(J){super(J);this.video=J.video}}class KJ extends b{constructor(J){super(J);this.record=new u(J.record)}}class ZJ extends b{constructor(J){super(J);this.record=new u(J.record.record),this.media=b.parseRawEmbed(J.media)}}class QJ extends b{constructor(J){super(J);this.post=k.parseViewRecord(J.record)}}class YJ extends b{constructor(J){super(J);this.post=k.parseViewRecord(J.record.record),this.media=b.parseInlineEmbed(J.media)}}class S0 extends b{constructor(J){super(J);this.url=J.external.uri,this.title=J.external.title,this.description=J.external.description,this.thumb=J.external.thumb}}class XJ extends b{constructor(J){super(J);this.images=J.images}}class zJ extends b{constructor(J){super(J);this.playlistURL=J.playlist,this.alt=J.alt}}class bJ extends Error{}class B0 extends Error{constructor(J){super(J)}}class v1{prepareCache(){if(!this.cache)this.cache=JSON.parse(localStorage.getItem("handleCache")??"{}")}saveCache(){localStorage.setItem("handleCache",JSON.stringify(this.cache))}getHandleDid(J){return this.prepareCache(),this.cache[J]}setHandleDid(J,K){this.prepareCache(),this.cache[J]=K,this.saveCache()}findHandleByDid(J){this.prepareCache();let K=Object.entries(this.cache).find((Z)=>Z[1]==J);return K?K[0]:void 0}}class M1{constructor(){let J=localStorage.getItem("userData");this.user=J?JSON.parse(J):{}}save(){if(this.user)localStorage.setItem("userData",JSON.stringify(this.user));else localStorage.removeItem("userData")}}class P extends O0{constructor(J,K){super(J,K?new M1:void 0);this.handleCache=new v1,this.profiles={}}cacheProfile(J){this.profiles[J.did]=J,this.profiles[J.handle]=J,this.handleCache.setHandleDid(J.handle,J.did)}findHandleByDid(J){return this.handleCache.findHandleByDid(J)}async fetchHandleForDid(J){let K=this.handleCache.findHandleByDid(J);if(K)return K;else return(await this.loadUserProfile(J)).handle}static parsePostURL(J){let K;try{K=new URL(J)}catch(z){throw new B0(`${z}`)}if(K.protocol!="https:"&&K.protocol!="http:")throw new B0("URL must start with http(s)://");let Z=K.pathname.split("/");if(Z.length<5||Z[1]!="profile"||Z[3]!="post")throw new B0("This is not a valid thread URL");let Q=Z[2],X=Z[4];return[Q,X]}async resolveHandle(J){let K=this.handleCache.getHandleDid(J);if(K)return K;else{let Z=await this.getRequest("com.atproto.identity.resolveHandle",{handle:J},{auth:!1}),Q=Z.did;if(Q)return this.handleCache.setHandleDid(J,Q),Q;else throw new bJ("Missing DID in response: "+JSON.stringify(Z))}}async loadThreadByURL(J){let[K,Z]=P.parsePostURL(J);return await this.loadThreadById(K,Z)}async loadThreadById(J,K){let Q=`at://${J.startsWith("did:")?J:await this.resolveHandle(J)}/app.bsky.feed.post/${K}`;return await this.loadThreadByAtURI(Q)}async loadThreadByAtURI(J){return await this.getRequest("app.bsky.feed.getPostThread",{uri:J,depth:10})}async loadUserProfile(J){if(this.profiles[J])return this.profiles[J];else{let K=await this.getRequest("app.bsky.actor.getProfile",{actor:J});return this.cacheProfile(K),K}}async autocompleteUsers(J){return(await this.getRequest("app.bsky.actor.searchActorsTypeahead",{q:J})).actors}async getCurrentUserAvatar(){return(await this.getRequest("com.atproto.repo.getRecord",{repo:this.user.did,collection:"app.bsky.actor.profile",rkey:"self"})).value.avatar}async loadCurrentUserAvatar(){if(!this.config||!this.config.user)throw new r("User isn't logged in");let J=await this.getCurrentUserAvatar();if(J){let K=`https://cdn.bsky.app/img/avatar/plain/${this.user.did}/${J.ref.$link}@jpeg`;return this.config.user.avatar=K,this.config.save(),K}else return null}async getReplies(J){return(await this.getRequest("blue.feeds.post.getReplies",{uri:J})).replies}async getQuoteCount(J){return(await this.getRequest("blue.feeds.post.getQuoteCount",{uri:J})).quoteCount}async getQuotes(J,K=void 0){let Z;if(J.startsWith("at://"))Z=J;else{let[X,z]=P.parsePostURL(J);Z=`at://${X.startsWith("did:")?X:await appView.resolveHandle(X)}/app.bsky.feed.post/${z}`}let Q={uri:Z};if(K)Q.cursor=K;return await this.getRequest("blue.feeds.post.getQuotes",Q)}async getHashtagFeed(J,K=void 0){let Z={q:"#"+J,limit:50,sort:"latest"};if(K)Z.cursor=K;return await this.getRequest("app.bsky.feed.searchPosts",Z)}async loadNotifications(J){return await this.getRequest("app.bsky.notification.listNotifications",J||{})}async loadMentions(J){let K=await this.loadNotifications({cursor:J??"",limit:100,reasons:["reply","mention"]}),Z=K.notifications.map((z)=>z.uri),Q=[];for(let z=0;z<Z.length;z+=25){let W=this.loadPosts(Z.slice(z,z+25));Q.push(W)}let X=await Promise.all(Q);return{cursor:K.cursor,posts:X.flat()}}async loadHomeTimeline(J,K={}){let Q=new Date().getTime()-J*86400*1000;return await this.fetchAll("app.bsky.feed.getTimeline",{params:{limit:100},field:"feed",breakWhen:(X)=>l(X)<Q,onPageLoad:K.onPageLoad,keepLastPage:K.keepLastPage})}async loadUserTimeline(J,K,Z){let X=new Date().getTime()-K*86400*1000;return await this.fetchAll("app.bsky.feed.getAuthorFeed",{params:{actor:J,filter:Z.filter,limit:100},field:"feed",breakWhen:(z)=>l(z)<X,onPageLoad:Z.onPageLoad,keepLastPage:Z.keepLastPage})}async loadUserLists(){return(await this.fetchAll("app.bsky.graph.getLists",{params:{actor:this.user.did,limit:100},field:"lists"})).filter((K)=>K.purpose=="app.bsky.graph.defs#curatelist")}async loadListTimeline(J,K,Z={}){let X=new Date().getTime()-K*86400*1000;return await this.fetchAll("app.bsky.feed.getListFeed",{params:{list:J,limit:100},field:"feed",breakWhen:(z)=>l(z)<X,onPageLoad:Z.onPageLoad,keepLastPage:Z.keepLastPage})}async loadPost(J){let K=await this.loadPosts([J]);if(K.length==1)return K[0];else throw new bJ("Post not found")}async loadPostIfExists(J){return(await this.loadPosts([J]))[0]}async loadPosts(J){if(J.length>0)return(await this.getRequest("app.bsky.feed.getPosts",{uris:J})).posts;else return[]}async likePost(J){return await this.postRequest("com.atproto.repo.createRecord",{repo:this.user.did,collection:"app.bsky.feed.like",record:{subject:{uri:J.uri,cid:J.cid},createdAt:new Date().toISOString()}})}async removeLike(J){let{rkey:K}=D(J);await this.postRequest("com.atproto.repo.deleteRecord",{repo:this.user.did,collection:"app.bsky.feed.like",rkey:K})}resetTokens(){delete this.user.avatar,super.resetTokens()}}/*! @license DOMPurify 3.3.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.0/LICENSE */var{entries:R1,setPrototypeOf:$1,isFrozen:V6,getPrototypeOf:W6,getOwnPropertyDescriptor:B6}=Object,{freeze:T,seal:d,create:NJ}=Object,{apply:_J,construct:EJ}=typeof Reflect<"u"&&Reflect;if(!T)T=function(K){return K};if(!d)d=function(K){return K};if(!_J)_J=function(K,Z){for(var Q=arguments.length,X=Array(Q>2?Q-2:0),z=2;z<Q;z++)X[z-2]=arguments[z];return K.apply(Z,X)};if(!EJ)EJ=function(K){for(var Z=arguments.length,Q=Array(Z>1?Z-1:0),X=1;X<Z;X++)Q[X-1]=arguments[X];return new K(...Q)};var VJ=g(Array.prototype.forEach),q6=g(Array.prototype.lastIndexOf),O1=g(Array.prototype.pop),P0=g(Array.prototype.push),G6=g(Array.prototype.splice),BJ=g(String.prototype.toLowerCase),RJ=g(String.prototype.toString),LJ=g(String.prototype.match),N0=g(String.prototype.replace),H6=g(String.prototype.indexOf),F6=g(String.prototype.trim),o=g(Object.prototype.hasOwnProperty),E=g(RegExp.prototype.test),_0=U6(TypeError);function g(J){return function(K){if(K instanceof RegExp)K.lastIndex=0;for(var Z=arguments.length,Q=Array(Z>1?Z-1:0),X=1;X<Z;X++)Q[X-1]=arguments[X];return _J(J,K,Q)}}function U6(J){return function(){for(var K=arguments.length,Z=Array(K),Q=0;Q<K;Q++)Z[Q]=arguments[Q];return EJ(J,Z)}}function C(J,K){let Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:BJ;if($1)$1(J,null);let Q=K.length;while(Q--){let X=K[Q];if(typeof X==="string"){let z=Z(X);if(z!==X){if(!V6(K))K[Q]=z;X=z}}J[X]=!0}return J}function w6(J){for(let K=0;K<J.length;K++)if(!o(J,K))J[K]=null;return J}function Y0(J){let K=NJ(null);for(let[Z,Q]of R1(J))if(o(J,Z))if(Array.isArray(Q))K[Z]=w6(Q);else if(Q&&typeof Q==="object"&&Q.constructor===Object)K[Z]=Y0(Q);else K[Z]=Q;return K}function E0(J,K){while(J!==null){let Q=B6(J,K);if(Q){if(Q.get)return g(Q.get);if(typeof Q.value==="function")return g(Q.value)}J=W6(J)}function Z(){return null}return Z}var I1=T(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),hJ=T(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),yJ=T(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),x6=T(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),AJ=T(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),C6=T(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),f1=T(["#text"]),S1=T(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),PJ=T(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),j1=T(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),WJ=T(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),k6=d(/\{\{[\w\W]*|[\w\W]*\}\}/gm),v6=d(/<%[\w\W]*|[\w\W]*%>/gm),M6=d(/\$\{[\w\W]*/gm),$6=d(/^data-[\-\w.\u00B7-\uFFFF]+$/),O6=d(/^aria-[\-\w]+$/),L1=d(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),I6=d(/^(?:\w+script|data):/i),f6=d(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),h1=d(/^html$/i),S6=d(/^[a-z][.\w]*(-[.\w]+)+$/i),D1=Object.freeze({__proto__:null,ARIA_ATTR:O6,ATTR_WHITESPACE:f6,CUSTOM_ELEMENT:S6,DATA_ATTR:$6,DOCTYPE_NAME:h1,ERB_EXPR:v6,IS_ALLOWED_URI:L1,IS_SCRIPT_OR_DATA:I6,MUSTACHE_EXPR:k6,TMPLIT_EXPR:M6}),T0={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},j6=function(){return typeof window>"u"?null:window},D6=function(K,Z){if(typeof K!=="object"||typeof K.createPolicy!=="function")return null;let Q=null,X="data-tt-policy-suffix";if(Z&&Z.hasAttribute(X))Q=Z.getAttribute(X);let z="dompurify"+(Q?"#"+Q:"");try{return K.createPolicy(z,{createHTML(W){return W},createScriptURL(W){return W}})}catch(W){return console.warn("TrustedTypes policy "+z+" could not be created."),null}},b1=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function y1(){let J=arguments.length>0&&arguments[0]!==void 0?arguments[0]:j6(),K=(w)=>y1(w);if(K.version="3.3.0",K.removed=[],!J||!J.document||J.document.nodeType!==T0.document||!J.Element)return K.isSupported=!1,K;let{document:Z}=J,Q=Z,X=Q.currentScript,{DocumentFragment:z,HTMLTemplateElement:W,Node:G,Element:F,NodeFilter:H,NamedNodeMap:x=J.NamedNodeMap||J.MozNamedAttrMap,HTMLFormElement:M,DOMParser:m,trustedTypes:c}=J,t=F.prototype,$=E0(t,"cloneNode"),S=E0(t,"remove"),s=E0(t,"nextSibling"),g1=E0(t,"childNodes"),c0=E0(t,"parentNode");if(typeof W==="function"){let w=Z.createElement("template");if(w.content&&w.content.ownerDocument)Z=w.content.ownerDocument}let N,b0="",{implementation:qJ,createNodeIterator:m1,createDocumentFragment:c1,getElementsByTagName:p1}=Z,{importNode:l1}=Q,_=b1();K.isSupported=typeof R1==="function"&&typeof c0==="function"&&qJ&&qJ.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:GJ,ERB_EXPR:HJ,TMPLIT_EXPR:FJ,DATA_ATTR:u1,ARIA_ATTR:i1,IS_SCRIPT_OR_DATA:n1,ATTR_WHITESPACE:dJ,CUSTOM_ELEMENT:d1}=D1,{IS_ALLOWED_URI:sJ}=D1,R=null,rJ=C({},[...I1,...hJ,...yJ,...AJ,...f1]),h=null,aJ=C({},[...S1,...PJ,...j1,...WJ]),I=Object.seal(NJ(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),R0=null,UJ=null,U0=Object.seal(NJ(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),oJ=!0,wJ=!0,tJ=!1,eJ=!0,w0=!1,p0=!0,V0=!1,xJ=!1,CJ=!1,x0=!1,l0=!1,u0=!1,J1=!0,K1=!1,s1="user-content-",kJ=!0,L0=!1,C0={},k0=null,Z1=C({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Q1=null,Y1=C({},["audio","video","img","source","image","track"]),vJ=null,X1=C({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),i0="http://www.w3.org/1998/Math/MathML",n0="http://www.w3.org/2000/svg",K0="http://www.w3.org/1999/xhtml",v0=K0,MJ=!1,$J=null,r1=C({},[i0,n0,K0],RJ),d0=C({},["mi","mo","mn","ms","mtext"]),s0=C({},["annotation-xml"]),a1=C({},["title","style","font","a","script"]),h0=null,o1=["application/xhtml+xml","text/html"],t1="text/html",L=null,M0=null,e1=Z.createElement("form"),z1=function(Y){return Y instanceof RegExp||Y instanceof Function},OJ=function(){let Y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(M0&&M0===Y)return;if(!Y||typeof Y!=="object")Y={};if(Y=Y0(Y),h0=o1.indexOf(Y.PARSER_MEDIA_TYPE)===-1?t1:Y.PARSER_MEDIA_TYPE,L=h0==="application/xhtml+xml"?RJ:BJ,R=o(Y,"ALLOWED_TAGS")?C({},Y.ALLOWED_TAGS,L):rJ,h=o(Y,"ALLOWED_ATTR")?C({},Y.ALLOWED_ATTR,L):aJ,$J=o(Y,"ALLOWED_NAMESPACES")?C({},Y.ALLOWED_NAMESPACES,RJ):r1,vJ=o(Y,"ADD_URI_SAFE_ATTR")?C(Y0(X1),Y.ADD_URI_SAFE_ATTR,L):X1,Q1=o(Y,"ADD_DATA_URI_TAGS")?C(Y0(Y1),Y.ADD_DATA_URI_TAGS,L):Y1,k0=o(Y,"FORBID_CONTENTS")?C({},Y.FORBID_CONTENTS,L):Z1,R0=o(Y,"FORBID_TAGS")?C({},Y.FORBID_TAGS,L):Y0({}),UJ=o(Y,"FORBID_ATTR")?C({},Y.FORBID_ATTR,L):Y0({}),C0=o(Y,"USE_PROFILES")?Y.USE_PROFILES:!1,oJ=Y.ALLOW_ARIA_ATTR!==!1,wJ=Y.ALLOW_DATA_ATTR!==!1,tJ=Y.ALLOW_UNKNOWN_PROTOCOLS||!1,eJ=Y.ALLOW_SELF_CLOSE_IN_ATTR!==!1,w0=Y.SAFE_FOR_TEMPLATES||!1,p0=Y.SAFE_FOR_XML!==!1,V0=Y.WHOLE_DOCUMENT||!1,x0=Y.RETURN_DOM||!1,l0=Y.RETURN_DOM_FRAGMENT||!1,u0=Y.RETURN_TRUSTED_TYPE||!1,CJ=Y.FORCE_BODY||!1,J1=Y.SANITIZE_DOM!==!1,K1=Y.SANITIZE_NAMED_PROPS||!1,kJ=Y.KEEP_CONTENT!==!1,L0=Y.IN_PLACE||!1,sJ=Y.ALLOWED_URI_REGEXP||L1,v0=Y.NAMESPACE||K0,d0=Y.MATHML_TEXT_INTEGRATION_POINTS||d0,s0=Y.HTML_INTEGRATION_POINTS||s0,I=Y.CUSTOM_ELEMENT_HANDLING||{},Y.CUSTOM_ELEMENT_HANDLING&&z1(Y.CUSTOM_ELEMENT_HANDLING.tagNameCheck))I.tagNameCheck=Y.CUSTOM_ELEMENT_HANDLING.tagNameCheck;if(Y.CUSTOM_ELEMENT_HANDLING&&z1(Y.CUSTOM_ELEMENT_HANDLING.attributeNameCheck))I.attributeNameCheck=Y.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;if(Y.CUSTOM_ELEMENT_HANDLING&&typeof Y.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==="boolean")I.allowCustomizedBuiltInElements=Y.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;if(w0)wJ=!1;if(l0)x0=!0;if(C0){if(R=C({},f1),h=[],C0.html===!0)C(R,I1),C(h,S1);if(C0.svg===!0)C(R,hJ),C(h,PJ),C(h,WJ);if(C0.svgFilters===!0)C(R,yJ),C(h,PJ),C(h,WJ);if(C0.mathMl===!0)C(R,AJ),C(h,j1),C(h,WJ)}if(Y.ADD_TAGS)if(typeof Y.ADD_TAGS==="function")U0.tagCheck=Y.ADD_TAGS;else{if(R===rJ)R=Y0(R);C(R,Y.ADD_TAGS,L)}if(Y.ADD_ATTR)if(typeof Y.ADD_ATTR==="function")U0.attributeCheck=Y.ADD_ATTR;else{if(h===aJ)h=Y0(h);C(h,Y.ADD_ATTR,L)}if(Y.ADD_URI_SAFE_ATTR)C(vJ,Y.ADD_URI_SAFE_ATTR,L);if(Y.FORBID_CONTENTS){if(k0===Z1)k0=Y0(k0);C(k0,Y.FORBID_CONTENTS,L)}if(kJ)R["#text"]=!0;if(V0)C(R,["html","head","body"]);if(R.table)C(R,["tbody"]),delete R0.tbody;if(Y.TRUSTED_TYPES_POLICY){if(typeof Y.TRUSTED_TYPES_POLICY.createHTML!=="function")throw _0('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Y.TRUSTED_TYPES_POLICY.createScriptURL!=="function")throw _0('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');N=Y.TRUSTED_TYPES_POLICY,b0=N.createHTML("")}else{if(N===void 0)N=D6(c,X);if(N!==null&&typeof b0==="string")b0=N.createHTML("")}if(T)T(Y);M0=Y},V1=C({},[...hJ,...yJ,...x6]),W1=C({},[...AJ,...C6]),J6=function(Y){let q=c0(Y);if(!q||!q.tagName)q={namespaceURI:v0,tagName:"template"};let U=BJ(Y.tagName),O=BJ(q.tagName);if(!$J[Y.namespaceURI])return!1;if(Y.namespaceURI===n0){if(q.namespaceURI===K0)return U==="svg";if(q.namespaceURI===i0)return U==="svg"&&(O==="annotation-xml"||d0[O]);return Boolean(V1[U])}if(Y.namespaceURI===i0){if(q.namespaceURI===K0)return U==="math";if(q.namespaceURI===n0)return U==="math"&&s0[O];return Boolean(W1[U])}if(Y.namespaceURI===K0){if(q.namespaceURI===n0&&!s0[O])return!1;if(q.namespaceURI===i0&&!d0[O])return!1;return!W1[U]&&(a1[U]||!V1[U])}if(h0==="application/xhtml+xml"&&$J[Y.namespaceURI])return!0;return!1},e=function(Y){P0(K.removed,{element:Y});try{c0(Y).removeChild(Y)}catch(q){S(Y)}},W0=function(Y,q){try{P0(K.removed,{attribute:q.getAttributeNode(Y),from:q})}catch(U){P0(K.removed,{attribute:null,from:q})}if(q.removeAttribute(Y),Y==="is")if(x0||l0)try{e(q)}catch(U){}else try{q.setAttribute(Y,"")}catch(U){}},B1=function(Y){let q=null,U=null;if(CJ)Y="<remove></remove>"+Y;else{let j=LJ(Y,/^[\r\n\t ]+/);U=j&&j[0]}if(h0==="application/xhtml+xml"&&v0===K0)Y='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Y+"</body></html>";let O=N?N.createHTML(Y):Y;if(v0===K0)try{q=new m().parseFromString(O,h0)}catch(j){}if(!q||!q.documentElement){q=qJ.createDocument(v0,"template",null);try{q.documentElement.innerHTML=MJ?b0:O}catch(j){}}let A=q.body||q.documentElement;if(Y&&U)A.insertBefore(Z.createTextNode(U),A.childNodes[0]||null);if(v0===K0)return p1.call(q,V0?"html":"body")[0];return V0?q.documentElement:A},q1=function(Y){return m1.call(Y.ownerDocument||Y,Y,H.SHOW_ELEMENT|H.SHOW_COMMENT|H.SHOW_TEXT|H.SHOW_PROCESSING_INSTRUCTION|H.SHOW_CDATA_SECTION,null)},IJ=function(Y){return Y instanceof M&&(typeof Y.nodeName!=="string"||typeof Y.textContent!=="string"||typeof Y.removeChild!=="function"||!(Y.attributes instanceof x)||typeof Y.removeAttribute!=="function"||typeof Y.setAttribute!=="function"||typeof Y.namespaceURI!=="string"||typeof Y.insertBefore!=="function"||typeof Y.hasChildNodes!=="function")},G1=function(Y){return typeof G==="function"&&Y instanceof G};function Z0(w,Y,q){VJ(w,(U)=>{U.call(K,Y,q,M0)})}let H1=function(Y){let q=null;if(Z0(_.beforeSanitizeElements,Y,null),IJ(Y))return e(Y),!0;let U=L(Y.nodeName);if(Z0(_.uponSanitizeElement,Y,{tagName:U,allowedTags:R}),p0&&Y.hasChildNodes()&&!G1(Y.firstElementChild)&&E(/<[/\w!]/g,Y.innerHTML)&&E(/<[/\w!]/g,Y.textContent))return e(Y),!0;if(Y.nodeType===T0.progressingInstruction)return e(Y),!0;if(p0&&Y.nodeType===T0.comment&&E(/<[/\w]/g,Y.data))return e(Y),!0;if(!(U0.tagCheck instanceof Function&&U0.tagCheck(U))&&(!R[U]||R0[U])){if(!R0[U]&&U1(U)){if(I.tagNameCheck instanceof RegExp&&E(I.tagNameCheck,U))return!1;if(I.tagNameCheck instanceof Function&&I.tagNameCheck(U))return!1}if(kJ&&!k0[U]){let O=c0(Y)||Y.parentNode,A=g1(Y)||Y.childNodes;if(A&&O){let j=A.length;for(let p=j-1;p>=0;--p){let Q0=$(A[p],!0);Q0.__removalCount=(Y.__removalCount||0)+1,O.insertBefore(Q0,s(Y))}}}return e(Y),!0}if(Y instanceof F&&!J6(Y))return e(Y),!0;if((U==="noscript"||U==="noembed"||U==="noframes")&&E(/<\/no(script|embed|frames)/i,Y.innerHTML))return e(Y),!0;if(w0&&Y.nodeType===T0.text){if(q=Y.textContent,VJ([GJ,HJ,FJ],(O)=>{q=N0(q,O," ")}),Y.textContent!==q)P0(K.removed,{element:Y.cloneNode()}),Y.textContent=q}return Z0(_.afterSanitizeElements,Y,null),!1},F1=function(Y,q,U){if(J1&&(q==="id"||q==="name")&&((U in Z)||(U in e1)))return!1;if(wJ&&!UJ[q]&&E(u1,q));else if(oJ&&E(i1,q));else if(U0.attributeCheck instanceof Function&&U0.attributeCheck(q,Y));else if(!h[q]||UJ[q])if(U1(Y)&&(I.tagNameCheck instanceof RegExp&&E(I.tagNameCheck,Y)||I.tagNameCheck instanceof Function&&I.tagNameCheck(Y))&&(I.attributeNameCheck instanceof RegExp&&E(I.attributeNameCheck,q)||I.attributeNameCheck instanceof Function&&I.attributeNameCheck(q,Y))||q==="is"&&I.allowCustomizedBuiltInElements&&(I.tagNameCheck instanceof RegExp&&E(I.tagNameCheck,U)||I.tagNameCheck instanceof Function&&I.tagNameCheck(U)));else return!1;else if(vJ[q]);else if(E(sJ,N0(U,dJ,"")));else if((q==="src"||q==="xlink:href"||q==="href")&&Y!=="script"&&H6(U,"data:")===0&&Q1[Y]);else if(tJ&&!E(n1,N0(U,dJ,"")));else if(U)return!1;return!0},U1=function(Y){return Y!=="annotation-xml"&&LJ(Y,d1)},w1=function(Y){Z0(_.beforeSanitizeAttributes,Y,null);let{attributes:q}=Y;if(!q||IJ(Y))return;let U={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:h,forceKeepAttr:void 0},O=q.length;while(O--){let A=q[O],{name:j,namespaceURI:p,value:Q0}=A,$0=L(j),fJ=Q0,y=j==="value"?fJ:F6(fJ);if(U.attrName=$0,U.attrValue=y,U.keepAttr=!0,U.forceKeepAttr=void 0,Z0(_.uponSanitizeAttribute,Y,U),y=U.attrValue,K1&&($0==="id"||$0==="name"))W0(j,Y),y=s1+y;if(p0&&E(/((--!?|])>)|<\/(style|title|textarea)/i,y)){W0(j,Y);continue}if($0==="attributename"&&LJ(y,"href")){W0(j,Y);continue}if(U.forceKeepAttr)continue;if(!U.keepAttr){W0(j,Y);continue}if(!eJ&&E(/\/>/i,y)){W0(j,Y);continue}if(w0)VJ([GJ,HJ,FJ],(C1)=>{y=N0(y,C1," ")});let x1=L(Y.nodeName);if(!F1(x1,$0,y)){W0(j,Y);continue}if(N&&typeof c==="object"&&typeof c.getAttributeType==="function")if(p);else switch(c.getAttributeType(x1,$0)){case"TrustedHTML":{y=N.createHTML(y);break}case"TrustedScriptURL":{y=N.createScriptURL(y);break}}if(y!==fJ)try{if(p)Y.setAttributeNS(p,j,y);else Y.setAttribute(j,y);if(IJ(Y))e(Y);else O1(K.removed)}catch(C1){W0(j,Y)}}Z0(_.afterSanitizeAttributes,Y,null)},K6=function w(Y){let q=null,U=q1(Y);Z0(_.beforeSanitizeShadowDOM,Y,null);while(q=U.nextNode())if(Z0(_.uponSanitizeShadowNode,q,null),H1(q),w1(q),q.content instanceof z)w(q.content);Z0(_.afterSanitizeShadowDOM,Y,null)};return K.sanitize=function(w){let Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},q=null,U=null,O=null,A=null;if(MJ=!w,MJ)w="<!-->";if(typeof w!=="string"&&!G1(w))if(typeof w.toString==="function"){if(w=w.toString(),typeof w!=="string")throw _0("dirty is not a string, aborting")}else throw _0("toString is not a function");if(!K.isSupported)return w;if(!xJ)OJ(Y);if(K.removed=[],typeof w==="string")L0=!1;if(L0){if(w.nodeName){let Q0=L(w.nodeName);if(!R[Q0]||R0[Q0])throw _0("root node is forbidden and cannot be sanitized in-place")}}else if(w instanceof G)if(q=B1("<!---->"),U=q.ownerDocument.importNode(w,!0),U.nodeType===T0.element&&U.nodeName==="BODY")q=U;else if(U.nodeName==="HTML")q=U;else q.appendChild(U);else{if(!x0&&!w0&&!V0&&w.indexOf("<")===-1)return N&&u0?N.createHTML(w):w;if(q=B1(w),!q)return x0?null:u0?b0:""}if(q&&CJ)e(q.firstChild);let j=q1(L0?w:q);while(O=j.nextNode())if(H1(O),w1(O),O.content instanceof z)K6(O.content);if(L0)return w;if(x0){if(l0){A=c1.call(q.ownerDocument);while(q.firstChild)A.appendChild(q.firstChild)}else A=q;if(h.shadowroot||h.shadowrootmode)A=l1.call(Q,A,!0);return A}let p=V0?q.outerHTML:q.innerHTML;if(V0&&R["!doctype"]&&q.ownerDocument&&q.ownerDocument.doctype&&q.ownerDocument.doctype.name&&E(h1,q.ownerDocument.doctype.name))p="<!DOCTYPE "+q.ownerDocument.doctype.name+`>
4
4
-
`+p;if(w0)VJ([GJ,HJ,FJ],(Q0)=>{p=N0(p,Q0," ")});return N&&u0?N.createHTML(p):p},K.setConfig=function(){let w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};OJ(w),xJ=!0},K.clearConfig=function(){M0=null,xJ=!1},K.isValidAttribute=function(w,Y,q){if(!M0)OJ({});let U=L(w),O=L(Y);return F1(U,O,q)},K.addHook=function(w,Y){if(typeof Y!=="function")return;P0(_[w],Y)},K.removeHook=function(w,Y){if(Y!==void 0){let q=q6(_[w],Y);return q===-1?void 0:G6(_[w],q,1)[0]}return O1(_[w])},K.removeHooks=function(w){_[w]=[]},K.removeAllHooks=function(){_=b1()},K}var A1=y1();class P1{constructor(J){if(!J.startsWith("at://"))throw new B0(`Not an at:// URI: ${J}`);let K=J.split("/");if(K.length!=5)throw new B0(`Invalid at:// URI: ${J}`);this.repo=K[2],this.collection=K[3],this.rkey=K[4]}}var q0={loadInPages(J){if(this.scrollHandler)document.removeEventListener("scroll",this.scrollHandler);if(this.resizeObserver)this.resizeObserver.disconnect();let K=()=>{if(window.pageYOffset+window.innerHeight>document.body.offsetHeight-500)J(K)};J(K),document.addEventListener("scroll",K);let Z=new ResizeObserver(K);Z.observe(document.body),this.scrollHandler=K,this.resizeObserver=Z}};function v(J,K){return document.getElementById(J)}function B(J,K){return J}function D(J){return new P1(J)}function I0(J){if(J===void 0||J===null||typeof J=="number")return J;else return parseInt(J,10)}function N1(J){return J.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function l(J){let K=J.reason?J.reason.indexedAt:J.post.record.createdAt;return Date.parse(K)}function _1(J){return A1.sanitize(J,{ALLOWED_TAGS:["a","b","blockquote","br","code","dd","del","div","dl","dt","em","font","h1","h2","h3","h4","h5","h6","hr","i","li","ol","p","q","pre","s","span","strong","sub","sup","u","wbr","#text"],ALLOWED_ATTR:["align","alt","class","clear","color","dir","href","lang","rel","title","translate"]})}function X0(){return location.origin+location.pathname}function z0(J){console.log(J),alert(J)}function E1(J,K){return J.getDate()==K.getDate()&&J.getMonth()==K.getMonth()&&J.getFullYear()==K.getFullYear()}function G0(J){return J0(J.author.handle,J.rkey)}function J0(J,K){let Z=new URL(X0());return Z.searchParams.set("author",J),Z.searchParams.set("post",K),Z.toString()}function V(J,K,Z){let Q,X=J.split(".");if(X.length>1){let z=X[0];Q=document.createElement(z),Q.className=X.slice(1).join(" ")}else Q=document.createElement(J);if(typeof K==="string")Q.className=Q.className+" "+K;else if(K)for(let z in K)if(z=="text")Q.innerText=K[z];else if(z=="html")Q.innerHTML=K[z];else Q[z]=K[z];return Q}class j0{constructor(J,K){this.post=J,this.embed=K}buildElement(){if(this.embed instanceof KJ){let J=this.quotedPostPlaceholder();return this.loadQuotedPost(this.embed.record.uri,J),J}else if(this.embed instanceof ZJ){let J=V("div"),K=new j0(this.post,this.embed.media).buildElement(),Z=this.quotedPostPlaceholder();return this.loadQuotedPost(this.embed.record.uri,Z),J.append(K,Z),J}else if(this.embed instanceof QJ)return this.buildQuotedPostElement(this.embed);else if(this.embed instanceof YJ){let J=V("div"),K=new j0(this.post,this.embed.media).buildElement(),Z=this.buildQuotedPostElement(this.embed);return J.append(K,Z),J}else if(this.embed instanceof t0||this.embed instanceof XJ)return this.buildImagesComponent(this.embed);else if(this.embed instanceof e0||this.embed instanceof S0)return this.buildLinkComponent(this.embed);else if(this.embed instanceof JJ||this.embed instanceof zJ)return this.buildVideoComponent(this.embed);else return V("p",{text:`[${this.embed.type}]`})}quotedPostPlaceholder(){return V("div.quote-embed",{html:'<p class="post placeholder">Loading quoted post...</p>'})}buildQuotedPostElement(J){let K=V("div.quote-embed");if([k,a,i,f0].some((Z)=>J.post instanceof Z)){let Z=new f(J.post,"quote").buildElement();K.appendChild(Z)}else if(J.post instanceof r0)return this.buildFeedGeneratorView(J.post);else if(J.post instanceof a0)return this.buildUserListView(J.post);else if(J.post instanceof o0)return this.buildStarterPackView(J.post);else{let Z=V("p",{text:`[${J.post.type}]`});K.appendChild(Z)}return K}buildLinkComponent(J){let K;try{K=new URL(J.url).hostname}catch(W){console.log("Invalid URL:"+W);let G=V("a",{href:J.url,text:J.title||J.url}),F=V("p");return F.append("[Link: ",G,"]"),F}let Z=V("a.link-card",{href:J.url,target:"_blank"}),Q=V("div"),X=V("p.domain",{text:K}),z=V("h2",{text:J.title||J.url});if(Q.append(X,z),J.description){let W;if(J.description.length<=300)W=J.description;else W=J.description.slice(0,300)+"…";Q.append(V("p.description",{text:W}))}if(Z.append(Q),K=="media.tenor.com")Z.addEventListener("click",(W)=>{W.preventDefault(),this.displayGIFInline(Z,J)});return Z}displayGIFInline(J,K){let Z=V("div.gif"),Q=V("img",{src:K.url},HTMLImageElement);Q.style.opacity="0",Q.style.maxHeight="200px",Z.append(Q),J.replaceWith(Z),Q.addEventListener("load",(z)=>{if(Q.naturalWidth>Q.naturalHeight)Q.style.maxHeight="200px";else Q.style.maxWidth="200px",Q.style.maxHeight="400px";Q.style.opacity=""});let X;if(typeof K.thumb=="string")X=K.thumb;else X=`https://cdn.bsky.app/img/avatar/plain/${this.post.author.did}/${K.thumb.ref.$link}@jpeg`;Q.addEventListener("click",(z)=>{if(Q.classList.contains("static"))Q.src=K.url,Q.classList.remove("static");else Q.src=X,Q.classList.add("static")})}buildFeedGeneratorView(J){let K=this.linkToFeedGenerator(J),Z=V("a.link-card.record",{href:K,target:"_blank"}),Q=V("div");if(J.avatar){let W=V("img.avatar",HTMLImageElement);W.src=J.avatar,Q.append(W)}let X=V("h2",{text:J.title});if(X.append(V("span.handle",{text:`• Feed by @${J.author.handle}`})),Q.append(X),J.description){let W=V("p.description",{text:J.description});Q.append(W)}let z=V("p.stats");return z.append(V("i","fa-solid fa-heart")," "),z.append(V("output",{text:J.likeCount})),Q.append(z),Z.append(Q),Z}linkToFeedGenerator(J){let{repo:K,rkey:Z}=D(J.uri);return`https://bsky.app/profile/${K}/feed/${Z}`}buildUserListView(J){let K=this.linkToUserList(J),Z=V("a.link-card.record",{href:K,target:"_blank"}),Q=V("div");if(J.avatar){let W=V("img.avatar",HTMLImageElement);W.src=J.avatar,Q.append(W)}let X;switch(J.purpose){case"app.bsky.graph.defs#curatelist":X="User list";break;case"app.bsky.graph.defs#modlist":X="Mute list";break;default:X="List"}let z=V("h2",{text:J.title});if(z.append(V("span.handle",{text:`• ${X} by @${J.author.handle}`})),Q.append(z),J.description){let W=V("p.description",{text:J.description});Q.append(W)}return Z.append(Q),Z}buildStarterPackView(J){let{repo:K,rkey:Z}=D(J.uri),Q=`https://bsky.app/starter-pack/${K}/${Z}`,X=V("a.link-card.record",{href:Q,target:"_blank"}),z=V("div"),W=V("h2",{text:J.title});if(W.append(V("span.handle",{text:`• Starter pack by @${J.author.handle}`})),z.append(W),J.description){let G=V("p.description",{text:J.description});z.append(G)}return X.append(z),X}linkToUserList(J){let{repo:K,rkey:Z}=D(J.uri);return`https://bsky.app/profile/${K}/lists/${Z}`}buildImagesComponent(J){let K=V("div");for(let Z of J.images){let Q=V("p");Q.append("[");let X=V("a",{text:"Image"},HTMLLinkElement);if(Z.fullsize)X.href=Z.fullsize;else{let z=Z.image.ref.$link;X.href=`https://cdn.bsky.app/img/feed_fullsize/plain/${this.post.author.did}/${z}@jpeg`}if(Q.append(X),Q.append("] "),K.append(Q),Z.alt){let z=V("details.image-alt");z.append(V("summary",{text:"Show alt"}),Z.alt),K.appendChild(z)}}return K}buildVideoComponent(J){let K=V("div"),Z=V("a",{text:"Video"},HTMLLinkElement);if(J.playlistURL)Z.href=J.playlistURL;else{let X=J.video.ref.$link;Z.href=`https://video.bsky.app/watch/${this.post.author.did}/${X}/playlist.m3u8`}let Q=V("p");if(Q.append("[",Z,"]"),K.append(Q),J.alt){let X=V("details.image-alt");X.append(V("summary",{text:"Show alt"}),J.alt),K.appendChild(X)}return K}async loadQuotedPost(J,K){let Z=await api.loadPostIfExists(J);if(Z){let Q=new k(Z),X=new f(Q,"quote").buildElement();K.replaceChildren(X)}else{let Q=new i(this.embed.record),X=new f(Q,"quote").buildElement();K.replaceChildren(X)}}}class D0{constructor(J,K){this.text=J,this.facet=K}get link(){return this.facet?.features?.find((J)=>J.$type==="app.bsky.richtext.facet#link")}get mention(){return this.facet?.features?.find((J)=>J.$type==="app.bsky.richtext.facet#mention")}get tag(){return this.facet?.features?.find((J)=>J.$type==="app.bsky.richtext.facet#tag")}}class TJ{constructor(J){if(this.unicodeText=new g0(J.text),this.facets=J.facets,this.facets)this.facets.sort((K,Z)=>K.index.byteStart-Z.index.byteStart)}get text(){return this.unicodeText.toString()}get length(){return this.unicodeText.length}get graphemeLength(){return this.unicodeText.graphemeLength}*segments(){let J=this.facets||[];if(J.length==0){yield new D0(this.unicodeText.utf16);return}let K=0,Z=0;do{let Q=J[Z];if(K<Q.index.byteStart)yield new D0(this.unicodeText.slice(K,Q.index.byteStart));else if(K>Q.index.byteStart){Z++;continue}if(Q.index.byteStart<Q.index.byteEnd){let X=this.unicodeText.slice(Q.index.byteStart,Q.index.byteEnd);if(X.trim().length==0)yield new D0(X);else yield new D0(X,Q)}K=Q.index.byteEnd,Z++}while(Z<J.length);if(K<this.unicodeText.length)yield new D0(this.unicodeText.slice(K,this.unicodeText.length))}}class g0{static encoder=new TextEncoder;static decoder=new TextDecoder;static segmenter=window.Intl&&Intl.Segmenter&&new Intl.Segmenter;constructor(J){this.utf16=J,this.utf8=g0.encoder.encode(J)}get length(){return this.utf8.byteLength}get graphemeLength(){return Array.from(g0.segmenter.segment(this.utf16)).length}slice(J,K){return g0.decoder.decode(this.utf8.slice(J,K))}toString(){return this.utf16}}class f{_rootElement;constructor(J,K){this.post=J,this.context=K}get rootElement(){if(!this._rootElement)throw Error("rootElement not initialized");return this._rootElement}get isRoot(){return this.post.isRoot}get linkToAuthor(){if(this.post.author.handle!="handle.invalid")return"https://bsky.app/profile/"+this.post.author.handle;else return"https://bsky.app/profile/"+this.post.author.did}get linkToPost(){return this.linkToAuthor+"/post/"+this.post.rkey}get didLinkToAuthor(){let{repo:J}=D(this.post.uri);return`https://bsky.app/profile/${J}`}get didLinkToPost(){let{repo:J,rkey:K}=D(this.post.uri);return`https://bsky.app/profile/${J}/post/${K}`}get authorName(){if(this.post.author.displayName)return this.post.author.displayName;else if(this.post.author.handle.endsWith(".bsky.social"))return this.post.author.handle.replace(/\.bsky\.social$/,"");else return this.post.author.handle}get timeFormatForTimestamp(){if(this.context=="quotes"||this.context=="feed")return{weekday:"short",day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"numeric"};else if(this.isRoot||this.context!="thread")return{day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"numeric"};else if(this.post.pageRoot&&!E1(this.post.createdAt,this.post.pageRoot.createdAt))return{day:"numeric",month:"short",hour:"numeric",minute:"numeric"};else return{hour:"numeric",minute:"numeric"}}installIntoElement(J){let K=this.buildElement(),Z=B(J.querySelector(".content")),Q=B(K.querySelector(".content"));Z.replaceWith(Q),this._rootElement=J}buildElement(){if(this._rootElement)return this._rootElement;let J=V("div.post",`post-${this.context}`);if(this._rootElement=J,this.post.muted)J.classList.add("muted");if(this.post instanceof a)return this.buildBlockedPostElement(J),J;else if(this.post instanceof f0)return this.buildDetachedQuoteElement(J),J;else if(this.post instanceof i)return this.buildMissingPostElement(J),J;let K=this.buildPostHeader();J.appendChild(K);let Z=V("div.content");if(this.context=="thread"&&!this.isRoot){let z=this.buildEdgeMargin();J.appendChild(z)}let Q;if(this.post.muted){let z=V("details"),W=V("summary");W.innerText=this.post.muteList?`Muted (${this.post.muteList})`:"Muted - click to show",z.appendChild(W),Z.appendChild(z),Q=z}else Q=Z;let X=this.buildPostBody();if(Q.appendChild(X),this.post.tags){let z=this.buildTagsRow(this.post.tags);Q.appendChild(z)}if(this.post.embed){let z=new j0(this.post,this.post.embed).buildElement();if(Q.appendChild(z),this.post.originalFediURL){if(this.post.embed instanceof S0&&this.post.embed.title.startsWith("Original post on "))z.remove()}}if(this.post.originalFediURL){let z=this.buildFediSourceLink(this.post.originalFediURL);if(z)Q.appendChild(z)}if(this.post.likeCount!==void 0&&this.post.repostCount!==void 0){let z=this.buildStatsFooter();Q.appendChild(z)}if(this.post.replyCount==1&&this.post.replies[0]?.author?.did==this.post.author.did){let W=new f(this.post.replies[0],"thread").buildElement();W.classList.add("flat"),Z.appendChild(W)}else for(let z of this.post.replies){if(z instanceof i)continue;if(z instanceof a&&window.biohazardEnabled===!1)continue;let W=new f(z,"thread");Z.appendChild(W.buildElement())}if(this.context=="thread"){if(this.post.hasMoreReplies){let z=this.buildLoadMoreLink();Z.appendChild(z)}else if(this.post.hasHiddenReplies&&window.biohazardEnabled!==!1){let z=this.buildHiddenRepliesLink();Z.appendChild(z)}}return J.appendChild(Z),J}buildPostHeader(){let J=this.timeFormatForTimestamp,K=this.post.createdAt.toLocaleString(window.dateLocale,J),Z=this.post.createdAt.toISOString(),Q=V("h2");if(Q.innerHTML=`${N1(this.authorName)} `,this.post.isFediPost){let X=`@${this.post.authorFediHandle}`;Q.innerHTML+=`<a class="handle" href="${this.linkToAuthor}" target="_blank">${X}</a> <img src="icons/mastodon.svg" class="mastodon"> `}else{let X=this.post.author.handle!="handle.invalid"?`@${this.post.author.handle}`:"[invalid handle]";Q.innerHTML+=`<a class="handle" href="${this.linkToAuthor}" target="_blank">${X}</a> `}if(Q.innerHTML+=`<span class="separator">•</span> <a class="time" href="${this.linkToPost}" target="_blank" title="${Z}">${K}</a> `,this.post.replyCount>0&&!this.isRoot||["quote","quotes","feed"].includes(this.context))Q.innerHTML+=`<span class="separator">•</span> <a href="${G0(this.post)}" class="action" title="Load this subtree"><i class="fa-solid fa-arrows-split-up-and-left fa-rotate-180"></i></a> `;if(this.post.muted)Q.prepend(V("i","missing fa-regular fa-circle-user fa-2x"));else if(this.post.author.avatar)Q.prepend(this.buildUserAvatar(this.post.author.avatar));else Q.prepend(V("i","missing fa-regular fa-face-smile fa-2x"));return Q}buildEdgeMargin(){let J=V("div.margin"),K=V("div.edge"),Z=V("div.line");K.appendChild(Z),J.appendChild(K);let Q=V("img.plus",{src:"icons/subtract-square.png"});return J.appendChild(Q),[K,Q].forEach((X)=>{X.addEventListener("click",(z)=>{z.preventDefault(),this.toggleSectionFold()})}),J}buildUserAvatar(J){let K=V("img.avatar",{loading:"lazy"},HTMLImageElement);return K.src=J,window.avatarPreloader.observe(K),K}buildPostBody(){if(this.post.originalFediContent)return V("div.body",{html:_1(this.post.originalFediContent)});let J=V("p.body"),K=new TJ({text:this.post.text,facets:this.post.facets});for(let Z of K.segments())if(Z.mention)J.append(V("a",{href:`https://bsky.app/profile/${Z.mention.did}`,text:Z.text}));else if(Z.link)J.append(V("a",{href:Z.link.uri,text:Z.text}));else if(Z.tag){let Q=new URL(X0());Q.searchParams.set("hash",Z.tag.tag),J.append(V("a",{href:Q.toString(),text:Z.text}))}else if(Z.text.includes(`
5
5
-
`)){let Q=V("span",{text:Z.text});Q.innerHTML=Q.innerHTML.replaceAll(`
6
6
-
`,"<br>"),J.append(Q)}else J.append(Z.text);return J}highlightSearchResults(J){let K=new RegExp(`\\b(${J.join("|")})\\b`,"gi"),Z=this.rootElement,Q=B(Z.querySelector(":scope > .content > .body, :scope > .content > details .body")),X=document.createTreeWalker(Q,NodeFilter.SHOW_TEXT),z=[];while(X.nextNode())z.push(X.currentNode);for(let W of z){if(!W.textContent)continue;let G=document.createDocumentFragment(),F=0;for(;;){let H=K.exec(W.textContent);if(H===null)break;if(H.index>F){let M=W.textContent.slice(F,H.index);G.appendChild(document.createTextNode(M))}let x=V("span.highlight",{text:H[0]});G.appendChild(x),F=H.index+H[0].length}if(F<W.textContent.length){let H=W.textContent.slice(F);G.appendChild(document.createTextNode(H))}B(W.parentNode).replaceChild(G,W)}}buildTagsRow(J){let K=V("p.tags");for(let Z of J){let Q=new URL(X0());Q.searchParams.set("hash",Z);let X=V("a",{href:Q.toString(),text:"# "+Z});K.append(X)}return K}buildStatsFooter(){let J=V("p.stats"),K=V("span"),Z=V("i","fa-solid fa-heart "+(this.post.liked?"liked":""));if(Z.addEventListener("click",(Q)=>this.onHeartClick(Z)),K.append(Z," ",V("output",{text:this.post.likeCount})),J.append(K),this.post.repostCount>0){let Q=V("span",{html:`<i class="fa-solid fa-retweet"></i> ${this.post.repostCount}`});J.append(Q)}if(this.post.replyCount>0&&(this.context=="quotes"||this.context=="feed")){let Q=this.post.replyCount>1?`${this.post.replyCount} replies`:"1 reply",X=V("span",{html:`<i class="fa-regular fa-message"></i> <a href="${G0(this.post)}">${Q}</a>`});J.append(X)}if(!this.isRoot&&this.context!="quote"&&this.post.quoteCount){let Q=this.context=="quotes"||this.context=="feed",X=this.buildQuotesIconLink(this.post.quoteCount,Q);J.append(X)}if(this.context=="thread"&&this.post.isRestrictingReplies){let Q=V("span",{html:'<i class="fa-solid fa-ban"></i> Limited replies'});J.append(Q)}return J}buildQuotesIconLink(J,K){let Z=new URL(X0());Z.searchParams.set("quotes",this.linkToPost);let Q=Z.toString(),X='<i class="fa-regular fa-comments"></i>';if(K){let z=V("span",{html:`${X} `}),W=V("a",{text:J>1?`${J} quotes`:"1 quote",href:Q});return z.append(W),z}else return V("a",{html:`${X} ${J}`,href:Q})}appendQuotesIconLink(J,K){let Z=B(this.rootElement.querySelector(":scope > .content > p.stats")),Q=this.buildQuotesIconLink(J,K);Z.append(Q)}buildLoadMoreLink(){let J=V("p"),K=V("a",{href:G0(this.post),text:"Load more replies…"});return K.addEventListener("click",(Z)=>{Z.preventDefault(),J.innerHTML='<img class="loader" src="icons/sunny.png">',this.loadSubtree(this.post,this.rootElement)}),J.appendChild(K),J}buildHiddenRepliesLink(){let J=V("p.hidden-replies"),K=V("a",{href:G0(this.post),text:"Load hidden replies…"});return K.addEventListener("click",(Z)=>{if(Z.preventDefault(),window.biohazardEnabled===!0)this.loadHiddenReplies(J);else window.loadInfohazard=()=>this.loadHiddenReplies(J),H0(v("biohazard_dialog"))}),J.append("☣️ ",K),J}loadHiddenReplies(J){J.innerHTML='<img class="loader" src="icons/sunny.png">',this.loadHiddenSubtree(this.post,this.rootElement)}buildFediSourceLink(J){try{let K=new URL(J).hostname,Z=V("a.fedi-link",{href:J,target:"_blank"}),Q=V("div",{html:`<i class="fa-solid fa-arrow-up-right-from-square fa-sm"></i> View on ${K}`});return Z.append(Q),Z}catch(K){console.log("Invalid Fedi URL:"+K);return}}loadReferencedPostAuthor(J){let K=D(this.post.uri).repo;api.fetchHandleForDid(K).then((Z)=>{if(this.post.author)this.post.author.handle=Z;else this.post.author={did:K,handle:Z};J.href=this.linkToAuthor,J.innerText=`@${Z}`})}buildBlockedPostElement(J){let K=V("p.blocked-header");if(K.innerHTML='<i class="fa-solid fa-ban"></i> <span>Blocked post</span>',window.biohazardEnabled===!1)return J.appendChild(K),J.classList.add("blocked"),K;let Z=this.post.blockedByUser?"has blocked you":this.post.blocksUser?"you've blocked them":"";Z=Z?`, ${Z}`:"";let Q=V("a",{href:this.didLinkToAuthor,target:"_blank",text:"see author"},HTMLLinkElement);K.append(" (",Q,Z,") "),J.appendChild(K),this.loadReferencedPostAuthor(Q);let X=V("p.load-post"),z=V("a",{href:"#",text:"Load post…"});return z.addEventListener("click",(W)=>{W.preventDefault(),X.innerHTML=" ",this.loadBlockedPost(this.post.uri,J)}),X.appendChild(z),J.appendChild(X),J.classList.add("blocked"),J}buildDetachedQuoteElement(J){let K=V("p.blocked-header");if(K.innerHTML='<i class="fa-solid fa-ban"></i> <span>Hidden quote</span>',window.biohazardEnabled===!1)return J.appendChild(K),J.classList.add("blocked"),K;let Z=V("a",{href:this.didLinkToAuthor,target:"_blank",text:"see author"},HTMLLinkElement);K.append(" (",Z,") "),J.appendChild(K),this.loadReferencedPostAuthor(Z);let Q=V("p.load-post"),X=V("a",{href:"#",text:"Load post…"});return X.addEventListener("click",(z)=>{z.preventDefault(),Q.innerHTML=" ",this.loadBlockedPost(this.post.uri,J)}),Q.appendChild(X),J.appendChild(Q),J.classList.add("blocked"),J}buildMissingPostElement(J){let K=V("p.blocked-header");K.innerHTML='<i class="fa-solid fa-ban"></i> <span>Deleted post</span>';let Z=V("a",{href:this.didLinkToAuthor,target:"_blank",text:"see author"},HTMLLinkElement);return K.append(" (",Z,") "),this.loadReferencedPostAuthor(Z),J.appendChild(K),J.classList.add("blocked"),J}async loadBlockedPost(J,K){let Z=await appView.loadPostIfExists(this.post.uri);if(!Z){let W=new i({uri:this.post.uri}),G=new f(W,"quote").buildElement();K.replaceWith(G);return}this.post=new k(Z);let Q=await api.getRequest("app.bsky.actor.getProfile",{actor:this.post.author.did});if(!Q.viewer||!(Q.viewer.blockedBy||Q.viewer.blocking)){let{repo:W,rkey:G}=D(this.post.uri),F=V("a",{href:J0(W,G),className:"action",title:"Load thread",html:'<i class="fa-solid fa-arrows-split-up-and-left fa-rotate-180"></i>'}),H=B(K.querySelector("p.blocked-header")),x=V("span.separator",{html:"•"});H.append(x," ",F)}if(B(K.querySelector("p.load-post")).remove(),this.isRoot&&this.post.parentReference){let{repo:W,rkey:G}=D(this.post.parentReference.uri),F=J0(W,G),H=api.findHandleByDid(W),x=H?`See parent post (@${H})`:"See parent post",M=V("p.back",{html:`<i class="fa-solid fa-reply"></i><a href="${F}">${x}</a>`});K.appendChild(M)}let z=this.buildPostBody();if(K.appendChild(z),this.post.embed){let W=new j0(this.post,this.post.embed).buildElement();K.appendChild(W),Array.from(K.querySelectorAll("a.link-card")).forEach((G)=>G.remove())}}async loadSubtree(J,K){try{let Z=await api.loadThreadByAtURI(J.uri),Q=k.parseThreadPost(Z.thread,J.pageRoot,0,J.absoluteLevel);J.updateDataFromPost(Q),window.subtreeRoot=J,new f(J,"thread").installIntoElement(K)}catch(Z){z0(Z)}}async loadHiddenSubtree(J,K){let Z=B(K.querySelector(".content")),Q=B(Z.querySelector(":scope > .hidden-replies"));try{var X=await blueAPI.getReplies(J.uri)}catch(H){if(Q.remove(),H instanceof y0&&H.code==404){let x=V("p.missing-replies-info",{html:'<i class="fa-solid fa-ban"></i> Hidden replies not available (post too old)'});Z.append(x)}else setTimeout(()=>z0(H),1);return}let W=X.filter((H)=>!J.replies.some((x)=>x.uri===H)).map((H)=>api.loadThreadByAtURI(H));try{var G=await Promise.allSettled(W)}catch(H){Q.remove(),setTimeout(()=>z0(H),1);return}let F=G.map((H)=>H.status=="fulfilled"?H.value:void 0).filter((H)=>H).map((H)=>k.parseThreadPost(H.thread,J.pageRoot,1,J.absoluteLevel+1));J.setReplies(F),Q.remove();for(let H of J.replies){let M=new f(H,"thread").buildElement();Z.append(M)}if(F.length<G.length){let H=G.length-F.length,x=H>1?`${H} replies are`:"1 reply is",M=V("p.missing-replies-info",{html:`<i class="fa-solid fa-ban"></i> ${x} missing (likely taken down by moderation)`});Z.append(M)}}isCollapsed(){return this.rootElement.classList.contains("collapsed")}toggleSectionFold(){let J=B(this.rootElement.querySelector(":scope > .margin .plus"),HTMLImageElement);if(this.isCollapsed())this.rootElement.classList.remove("collapsed"),J.src="icons/subtract-square.png";else this.rootElement.classList.add("collapsed"),J.src="icons/add-square.png"}async onHeartClick(J){try{if(!this.post.hasViewerInfo)if(accountAPI.isLoggedIn)if(await this.loadViewerInfo()){if(this.post.liked){J.classList.add("liked");return}}else{this.showPostAsBlocked();return}else{H0(loginDialog);return}let K=B(J.nextElementSibling),Z=parseInt(K.innerText,10);if(!J.classList.contains("liked")){let Q=await accountAPI.likePost(this.post);this.post.viewerLike=Q.uri,J.classList.add("liked"),K.innerText=String(Z+1)}else await accountAPI.removeLike(this.post.viewerLike),this.post.viewerLike=void 0,J.classList.remove("liked"),K.innerText=String(Z-1)}catch(K){z0(K)}}showPostAsBlocked(){let J=B(this.rootElement.querySelector(":scope > .content > p.stats"));if(!J.querySelector(".blocked-info")){let K=V("span.blocked-info",{text:"\uD83D\uDEAB Post unavailable"});J.append(K)}}async loadViewerInfo(){let J=await accountAPI.loadPostIfExists(this.post.uri);if(J)this.post.author=J.author,this.post.viewerData=J.viewer,this.post.viewerLike=J.viewer?.like;return J}}class gJ{constructor(){this.menuElement=v("account_menu"),this.icon=v("account"),this.setupEvents()}setupEvents(){B(document.body.parentNode).addEventListener("click",(Z)=>{this.menuElement.style.visibility="hidden",this.icon.classList.remove("active")});let K=B(this.menuElement.querySelector('a[href="?"]'),HTMLLinkElement);K.href=location.origin+location.pathname,this.icon.addEventListener("click",(Z)=>{Z.stopPropagation(),this.toggleAccountMenu()}),this.menuElement.addEventListener("click",(Z)=>{Z.stopPropagation()}),B(this.menuElement.querySelector("a[data-action=biohazard]")).addEventListener("click",(Z)=>{Z.preventDefault();let Q=document.querySelectorAll("p.hidden-replies, .content > .post.blocked, .blocked > .load-post");if(window.biohazardEnabled===!1)window.biohazardEnabled=!0,localStorage.setItem("biohazard","true"),this.toggleMenuButtonCheck("biohazard",!0),Array.from(Q).forEach((X)=>{B(X).style.display="block"});else window.biohazardEnabled=!1,localStorage.setItem("biohazard","false"),this.toggleMenuButtonCheck("biohazard",!1),Array.from(Q).forEach((X)=>{B(X).style.display="none"})}),B(this.menuElement.querySelector("a[data-action=incognito]")).addEventListener("click",(Z)=>{if(Z.preventDefault(),window.isIncognito)localStorage.removeItem("incognito");else localStorage.setItem("incognito","1");location.reload()}),B(this.menuElement.querySelector("a[data-action=login]")).addEventListener("click",(Z)=>{Z.preventDefault(),H0(loginDialog),this.menuElement.style.visibility="hidden"}),B(this.menuElement.querySelector("a[data-action=logout]")).addEventListener("click",(Z)=>{Z.preventDefault(),mJ()})}toggleAccountMenu(){let J=this.menuElement.style.visibility=="visible";this.menuElement.style.visibility=J?"hidden":"visible",this.icon.classList.toggle("active",!J)}showMenuButton(J){let K=B(this.menuElement.querySelector(`a[data-action=${J}]`)),Z=B(K.parentNode);Z.style.display="list-item"}hideMenuButton(J){let K=B(this.menuElement.querySelector(`a[data-action=${J}]`)),Z=B(K.parentNode);Z.style.display="none"}toggleMenuButtonCheck(J,K){let Z=B(this.menuElement.querySelector(`a[data-action=${J}]`)),Q=B(Z.querySelector(".check"));Q.style.display=K?"inline":"none"}showLoggedInStatus(J,K){if(J===!0&&K){let Z=B(this.icon.querySelector("i")),Q=V("img.avatar",{src:K});Q.style.display="none",Q.addEventListener("load",()=>{Z.remove(),Q.style.display="inline"}),Q.addEventListener("error",()=>{this.showLoggedInStatus(!0,null)}),this.icon.append(Q)}else if(J===!1)this.icon.innerHTML='<i class="fa-regular fa-user-circle fa-xl"></i>';else if(J==="incognito")this.icon.innerHTML='<i class="fa-solid fa-user-secret fa-lg"></i>';else this.icon.innerHTML='<i class="fa-solid fa-user-circle fa-xl"></i>'}async loadCurrentUserAvatar(){try{let J=await api.loadCurrentUserAvatar();this.showLoggedInStatus(!0,J)}catch(J){console.log(J),this.showLoggedInStatus(!0,null)}}}class cJ{buildParentLink(J){let K=V("p.back");if(J instanceof a){let Z=new f(J,"parent").buildElement();Z.className="back";let Q=B(Z.querySelector("p.blocked-header span"));return Q.innerText="Parent post blocked",Z}else if(J instanceof i)K.innerHTML='<i class="fa-solid fa-ban"></i> parent post has been deleted';else{let Z=G0(J);K.innerHTML=`<i class="fa-solid fa-reply"></i><a href="${Z}">See parent post (@${J.author.handle})</a>`}return K}async loadThreadByURL(J){try{let K=J.startsWith("at://")?await api.loadThreadByAtURI(J):await api.loadThreadByURL(J);this.displayThread(K)}catch(K){n(),z0(K)}}async loadThreadById(J,K){try{let Z=await api.loadThreadById(J,K);this.displayThread(Z)}catch(Z){n(),z0(Z)}}displayThread(J){let K=k.parseThreadPost(J.thread);window.root=K,window.subtreeRoot=K;let Z;if(K instanceof k){if(pJ(K),Z=blueAPI.getQuoteCount(K.uri),K.parent){let z=this.buildParentLink(K.parent);v("thread").appendChild(z)}else if(K.parentReference){let{repo:z,rkey:W}=D(K.parentReference.uri),G=J0(z,W),F=api.findHandleByDid(z),H=F?`See parent post (@${F})`:"See parent post",x=V("p.back",{html:`<i class="fa-solid fa-reply"></i><a href="${G}">${H}</a>`});v("thread").appendChild(x)}}let Q=new f(K,"thread"),X=Q.buildElement();n(),v("thread").appendChild(X),Z?.then((z)=>{if(z>0)Q.appendQuotesIconLink(z,!0)}).catch((z)=>{console.warn("Couldn't load quote count: "+z)})}}class lJ{scanStartTime;userProgress;autocompleteTimer;autocompleteIndex=-1;autocompleteResults=[];selectedUsers={};constructor(){this.pageElement=v("posting_stats_page"),this.form=B(this.pageElement.querySelector("form"),HTMLFormElement),this.rangeInput=B(this.pageElement.querySelector('input[type="range"]'),HTMLInputElement),this.submitButton=B(this.pageElement.querySelector('input[type="submit"]'),HTMLInputElement),this.progressBar=B(this.pageElement.querySelector("input[type=submit] + progress"),HTMLProgressElement),this.table=B(this.pageElement.querySelector("table.scan-result")),this.tableHead=B(this.table.querySelector("thead")),this.tableBody=B(this.table.querySelector("tbody")),this.listSelect=B(this.pageElement.querySelector(".list-choice select"),HTMLSelectElement),this.scanInfo=B(this.pageElement.querySelector(".scan-info")),this.scanType=this.form.elements.scan_type,this.userField=B(this.pageElement.querySelector(".user-choice input"),HTMLInputElement),this.userList=B(this.pageElement.querySelector(".selected-users")),this.autocomplete=B(this.pageElement.querySelector(".autocomplete")),this.userProgress={},this.appView=new P("public.api.bsky.app",!1),this.setupEvents()}setupEvents(){B(document.body.parentNode).addEventListener("click",(K)=>{this.hideAutocomplete()}),this.form.addEventListener("submit",(K)=>{if(K.preventDefault(),!this.scanStartTime)this.scanPostingStats();else this.stopScan()}),this.rangeInput.addEventListener("input",(K)=>{let Z=parseInt(this.rangeInput.value,10),Q=B(this.pageElement.querySelector("input[type=range] + label"));Q.innerText=Z==1?"1 day":`${Z} days`}),this.scanType.forEach((K)=>{K.addEventListener("click",(Z)=>{let Q=B(K,HTMLInputElement).value;if(B(this.pageElement.querySelector(".list-choice")).style.display=Q=="list"?"block":"none",B(this.pageElement.querySelector(".user-choice")).style.display=Q=="users"?"block":"none",Q=="users")this.userField.focus();this.table.style.display="none"})}),this.userField.addEventListener("input",()=>{this.onUserInput()}),this.userField.addEventListener("keydown",(K)=>{this.onUserKeyDown(K)})}show(){this.pageElement.style.display="block",this.fetchLists()}selectedDaysRange(){return parseInt(this.rangeInput.value,10)}async fetchLists(){let J=await accountAPI.loadUserLists(),K=J.sort((Z,Q)=>{let X=Z.name.toLocaleLowerCase(),z=Q.name.toLocaleLowerCase();return X.localeCompare(z)});for(let Z of J)this.listSelect.append(V("option",{value:Z.uri,text:Z.name+" "}))}onUserInput(){if(this.autocompleteTimer)clearTimeout(this.autocompleteTimer);let J=this.userField.value.trim();if(J.length==0){this.hideAutocomplete(),this.autocompleteTimer=void 0;return}this.autocompleteTimer=setTimeout(()=>this.fetchAutocomplete(J),100)}onUserKeyDown(J){if(J.key=="Enter"){if(J.preventDefault(),this.autocompleteIndex>=0)this.selectUser(this.autocompleteIndex)}else if(J.key=="Escape")this.hideAutocomplete();else if(J.key=="ArrowDown"&&this.autocompleteResults.length>0)J.preventDefault(),this.moveAutocomplete(1);else if(J.key=="ArrowUp"&&this.autocompleteResults.length>0)J.preventDefault(),this.moveAutocomplete(-1)}async fetchAutocomplete(J){let K=await accountAPI.autocompleteUsers(J),Z=new Set(Object.keys(this.selectedUsers));K=K.filter((Q)=>!Z.has(Q.did)),this.autocompleteResults=K,this.autocompleteIndex=-1,this.showAutocomplete()}showAutocomplete(){if(this.autocomplete.innerHTML="",this.autocomplete.scrollTop=0,this.autocompleteResults.length==0){this.hideAutocomplete();return}for(let[J,K]of this.autocompleteResults.entries()){let Z=this.makeUserRow(K);Z.addEventListener("mouseenter",()=>{this.highlightAutocomplete(J)}),Z.addEventListener("mousedown",(Q)=>{Q.preventDefault(),this.selectUser(J)}),this.autocomplete.append(Z)}this.autocomplete.style.top=this.userField.offsetHeight+"px",this.autocomplete.style.display="block",this.highlightAutocomplete(0)}hideAutocomplete(){this.autocomplete.style.display="none",this.autocompleteResults=[],this.autocompleteIndex=-1}moveAutocomplete(J){if(this.autocompleteResults.length==0)return;let K=this.autocompleteIndex+J;if(K<0)K=this.autocompleteResults.length-1;else if(K>=this.autocompleteResults.length)K=0;this.highlightAutocomplete(K)}highlightAutocomplete(J){this.autocompleteIndex=J,this.autocomplete.querySelectorAll(".user-row").forEach((Z,Q)=>{Z.classList.toggle("hover",Q==J)})}selectUser(J){let K=this.autocompleteResults[J];if(!K)return;this.selectedUsers[K.did]=K;let Z=this.makeUserRow(K,!0);this.userList.append(Z),this.userField.value="",this.hideAutocomplete()}makeUserRow(J,K=!1){let Z=V("div.user-row");if(Z.dataset.did=J.did,Z.append(V("img.avatar",{src:J.avatar}),V("span.name",{text:J.displayName||"–"}),V("span.handle",{text:J.handle})),K){let Q=V("a.remove",{href:"#",text:"✕"});Q.addEventListener("click",(X)=>{X.preventDefault(),Z.remove(),delete this.selectedUsers[J.did]}),Z.append(Q)}return Z}async scanPostingStats(){let J=new Date().getTime(),K=this.selectedDaysRange(),Z=this.scanType.value,Q=(X)=>{if(this.scanStartTime!=J)return{cancel:!0};this.updateProgress(X,J)};if(Z=="home"){this.startScan(J,K);let X=await accountAPI.loadHomeTimeline(K,{onPageLoad:Q,keepLastPage:!0});this.updateResultsTable(X,J,K)}else if(Z=="list"){let X=this.listSelect.value;if(!X)return;this.startScan(J,K);let z=await accountAPI.loadListTimeline(X,K,{onPageLoad:Q,keepLastPage:!0});this.updateResultsTable(z,J,K,{showReposts:!1})}else if(Z=="users"){let X=Object.keys(this.selectedUsers);if(X.length==0)return;this.startScan(J,K),this.resetUserProgress(X);let z=X.map((F)=>this.appView.loadUserTimeline(F,K,{filter:"posts_and_author_threads",onPageLoad:(H)=>{if(this.scanStartTime!=J)return{cancel:!0};this.updateUserProgress(F,H,J,K)},keepLastPage:!0})),G=(await Promise.all(z)).flat();this.updateResultsTable(G,J,K,{showTotal:!1,showPercentages:!1,countFetchedDays:!1,users:Object.values(this.selectedUsers)})}else{this.startScan(J,K);let X=await accountAPI.loadUserTimeline(accountAPI.user.did,K,{filter:"posts_no_replies",onPageLoad:Q,keepLastPage:!0});this.updateResultsTable(X,J,K,{showTotal:!1,showPercentages:!1})}}updateProgress(J,K){let Z=J.at(-1);if(!Z)return;let Q=l(Z),X=(K-Q)/86400/1000;this.progressBar.value=X}resetUserProgress(J){this.userProgress={};for(let K of J)this.userProgress[K]={pages:0,progress:0}}updateUserProgress(J,K,Z,Q){let X=K.at(-1);if(!X)return;let z=l(X),W=(Z-z)/86400/1000;this.userProgress[J].pages+=1,this.userProgress[J].progress=Math.min(W/Q,1);let G=Object.values(this.userProgress).map((M)=>M.pages/M.progress),F=G.filter((M)=>!isNaN(M)),H=F.reduce((M,m)=>M+m)/F.length*G.length,x=Object.values(this.userProgress).map((M)=>M.pages).reduce((M,m)=>M+m);this.progressBar.value=Math.max(this.progressBar.value,x/H*Q)}sortUserRows(J,K){let Z=J.own+J.reposts,Q=K.own+K.reposts;if(Z<Q)return 1;else if(Z>Q)return-1;else return 0}async updateResultsTable(J,K,Z,Q={}){if(this.scanStartTime!=K)return;if(new Date().getTime()-K<100)await new Promise(($)=>setTimeout($,100));let z={},W=0,G=0,F=0,H=J.at(-1);if(!H){this.stopScan();return}let x;if(Q.countFetchedDays!==!1){let $=l(H),S=(K-$)/86400/1000;if(Math.ceil(S)<Z)this.scanInfo.innerText=`\uD83D\uDD53 Showing data from ${Math.round(S)} days (the timeline only goes that far):`,this.scanInfo.style.display="block";x=Math.min(Z,S)}else x=Z;let M=K-Z*86400*1000;if(J=J.filter(($)=>l($)>M),J.reverse(),Q.users)for(let $ of Q.users)z[$.handle]={handle:$.handle,own:0,reposts:0,avatar:$.avatar};let m=new Set;for(let $ of J){if($.reply){if(!m.has($.reply.parent.uri))continue}let S=$.reason?$.reason.by:$.post.author,s=S.handle;if(z[s]=z[s]??{handle:s,own:0,reposts:0,avatar:S.avatar},W+=1,$.reason)z[s].reposts+=1,G+=1;else z[s].own+=1,F+=1,m.add($.post.uri)}let c=V("tr");if(Q.showReposts!==!1)c.append(V("th",{text:"#"}),V("th",{text:"Handle"}),V("th",{text:"All posts /d"}),V("th",{text:"Own posts /d"}),V("th",{text:"Reposts /d"}));else c.append(V("th",{text:"#"}),V("th",{text:"Handle"}),V("th",{text:"Posts /d"}));if(Q.showPercentages!==!1)c.append(V("th",{text:"% of timeline"}));if(this.tableHead.append(c),Q.showTotal!==!1){let $=V("tr.total");if($.append(V("td.no",{text:""}),V("td.handle",{text:"Total:"}),Q.showReposts!==!1?V("td",{text:(W/x).toFixed(1)}):"",V("td",{text:(F/x).toFixed(1)}),Q.showReposts!==!1?V("td",{text:(G/x).toFixed(1)}):""),Q.showPercentages!==!1)$.append(V("td.percent",{text:""}));this.tableBody.append($)}let t=Object.values(z).sort(this.sortUserRows);for(let $=0;$<t.length;$++){let S=t[$],s=V("tr");if(s.append(V("td.no",{text:$+1}),V("td.handle",{html:`<img class="avatar" src="${S.avatar}"> <a href="https://bsky.app/profile/${S.handle}" target="_blank">${S.handle}</a>`}),Q.showReposts!==!1?V("td",{text:((S.own+S.reposts)/x).toFixed(1)}):"",V("td",{text:S.own>0?(S.own/x).toFixed(1):"–"}),Q.showReposts!==!1?V("td",{text:S.reposts>0?(S.reposts/x).toFixed(1):"–"}):""),Q.showPercentages!==!1)s.append(V("td.percent",{text:((S.own+S.reposts)*100/W).toFixed(1)+"%"}));this.tableBody.append(s)}this.table.style.display="table",this.stopScan()}startScan(J,K){this.submitButton.value="Cancel",this.progressBar.max=K,this.progressBar.value=0,this.progressBar.style.display="inline",this.table.style.display="none",this.tableHead.innerHTML="",this.tableBody.innerHTML="",this.scanStartTime=J,this.scanInfo.style.display="none"}stopScan(){this.submitButton.value="Start scan",this.scanStartTime=void 0,this.progressBar.style.display="none"}}class uJ{constructor(){this.pageElement=v("thread")}show(){document.title="Notifications - Skythread",F0();let J=!1,K=!1,Z=!1,Q;q0.loadInPages((X)=>{if(J||Z)return;J=!0,accountAPI.loadMentions(Q).then((z)=>{let W=z.posts.map((G)=>new k(G));if(W.length>0){if(!K){n(),K=!0;let G=V("header"),F=V("h2",{text:"Replies & Mentions:"});G.append(F),this.pageElement.appendChild(G),this.pageElement.classList.add("notifications")}for(let G of W){if(G.parentReference){let H=V("p.back");H.innerHTML='<i class="fa-solid fa-reply"></i> ';let{repo:x,rkey:M}=D(G.parentReference.uri),m=J0(x,M),c=V("a",{href:m});if(H.append(c),x==accountAPI.user.did)c.innerText="Reply to you";else c.innerText="Reply",api.fetchHandleForDid(x).then((t)=>{c.innerText=`Reply to @${t}`});this.pageElement.appendChild(H)}let F=new f(G,"feed").buildElement();this.pageElement.appendChild(F)}}if(J=!1,Q=z.cursor,!Q)Z=!0;else if(W.length==0)X()}).catch((z)=>{n(),console.log(z),J=!1})})}}class iJ{scanStartTime;constructor(){this.pageElement=v("like_stats_page"),this.rangeInput=B(this.pageElement.querySelector('input[type="range"]'),HTMLInputElement),this.submitButton=B(this.pageElement.querySelector('input[type="submit"]'),HTMLInputElement),this.progressBar=B(this.pageElement.querySelector("input[type=submit] + progress"),HTMLProgressElement),this.receivedTable=B(this.pageElement.querySelector(".received-likes"),HTMLTableElement),this.givenTable=B(this.pageElement.querySelector(".given-likes"),HTMLTableElement),this.appView=new P("public.api.bsky.app",!1),this.setupEvents(),this.progressPosts=0,this.progressLikeRecords=0,this.progressPostLikes=0}setupEvents(){B(this.pageElement.querySelector("form")).addEventListener("submit",(J)=>{if(J.preventDefault(),!this.scanStartTime)this.findLikes();else this.stopScan()}),this.rangeInput.addEventListener("input",(J)=>{let K=parseInt(this.rangeInput.value,10),Z=B(this.pageElement.querySelector("input[type=range] + label"));Z.innerText=K==1?"1 day":`${K} days`})}selectedDaysRange(){return parseInt(this.rangeInput.value,10)}show(){this.pageElement.style.display="block"}async findLikes(){this.submitButton.value="Cancel";let J=this.selectedDaysRange();this.resetProgress(),this.progressBar.style.display="inline";let K=new Date().getTime();this.scanStartTime=K,this.receivedTable.style.display="none",this.givenTable.style.display="none";let Z=this.fetchGivenLikes(J),Q=await this.fetchReceivedLikes(J),X=this.sumUpReceivedLikes(Q),z=this.getTopEntries(X);await this.renderResults(z,this.receivedTable);let W=await Z,G=this.sumUpGivenLikes(W),F=this.getTopEntries(G),H=await appView.getRequest("app.bsky.actor.getProfiles",{actors:F.map((x)=>x.did)});for(let x of H.profiles){let M=F.find((m)=>m.did==x.did);M.handle=x.handle,M.avatar=x.avatar}await this.renderResults(F,this.givenTable),this.receivedTable.style.display="table",this.givenTable.style.display="table",this.submitButton.value="Start scan",this.progressBar.style.display="none",this.scanStartTime=void 0}async fetchGivenLikes(J){let K=this.scanStartTime;return await accountAPI.fetchAll("com.atproto.repo.listRecords",{params:{repo:accountAPI.user.did,collection:"app.bsky.feed.like",limit:100},field:"records",breakWhen:(Z)=>Date.parse(Z.value.createdAt)<K-86400*J*1000,onPageLoad:(Z)=>{let Q=Z.at(-1);if(!Q)return;let X=Date.parse(Q.value.createdAt),z=(K-X)/86400/1000;this.updateProgress({likeRecords:Math.min(1,z/J)})}})}async fetchReceivedLikes(J){let K=this.scanStartTime,Q=(await this.appView.loadUserTimeline(accountAPI.user.did,J,{filter:"posts_with_replies",onPageLoad:(z)=>{let W=z.at(-1);if(!W)return;let G=l(W),F=(K-G)/86400/1000;this.updateProgress({posts:Math.min(1,F/J)})}})).filter((z)=>!z.reason&&z.post.likeCount>0),X=[];for(let z=0;z<Q.length;z+=10){let W=Q.slice(z,z+10);this.updateProgress({postLikes:z/Q.length});let G=W.map((H)=>{return this.appView.fetchAll("app.bsky.feed.getLikes",{params:{uri:H.post.uri,limit:100},field:"likes"})}),F=await Promise.all(G);X=X.concat(F)}return this.updateProgress({postLikes:1}),X.flat()}sumUpReceivedLikes(J){let K={};for(let Z of J){let Q=Z.actor.handle;if(!K[Q])K[Q]={handle:Q,count:0,avatar:Z.actor.avatar};K[Q].count+=1}return K}sumUpGivenLikes(J){let K={};for(let Z of J){let Q=D(Z.value.subject.uri).repo;if(!K[Q])K[Q]={did:Q,count:0};K[Q].count+=1}return K}getTopEntries(J){return Object.entries(J).sort(this.sortResults).map((K)=>K[1]).slice(0,25)}async renderResults(J,K){let Z=B(K.querySelector("tbody"));Z.innerHTML="";for(let[Q,X]of J.entries()){let z=V("tr");z.append(V("td.no",{text:Q+1}),V("td.handle",{html:`<img class="avatar" src="${X.avatar}"> <a href="https://bsky.app/profile/${X.handle}" target="_blank">${X.handle}</a>`}),V("td.count",{text:X.count})),Z.append(z)}}resetProgress(){this.progressBar.value=0,this.progressPosts=0,this.progressLikeRecords=0,this.progressPostLikes=0}updateProgress(J){if(J.posts)this.progressPosts=J.posts;if(J.likeRecords)this.progressLikeRecords=J.likeRecords;if(J.postLikes)this.progressPostLikes=J.postLikes;let K=0.1*this.progressPosts+0.65*this.progressLikeRecords+0.25*this.progressPostLikes;this.progressBar.value=K}sortResults(J,K){if(J[1].count<K[1].count)return 1;else if(J[1].count>K[1].count)return-1;else return 0}stopScan(){this.submitButton.value="Start scan",this.progressBar.style.display="none",this.scanStartTime=void 0}}class nJ{fetchStartTime;importTimer;lycanImportStatus;constructor(){this.pageElement=v("private_search_page"),this.header=B(this.pageElement.querySelector("h2")),this.rangeInput=B(this.pageElement.querySelector('input[type="range"]'),HTMLInputElement),this.submitButton=B(this.pageElement.querySelector('input[type="submit"]'),HTMLInputElement),this.progressBar=B(this.pageElement.querySelector('input[type="submit"] + progress'),HTMLProgressElement),this.archiveStatus=B(this.pageElement.querySelector(".archive-status")),this.searchLine=B(this.pageElement.querySelector(".search")),this.searchField=B(this.pageElement.querySelector(".search-query"),HTMLInputElement),this.searchForm=B(this.pageElement.querySelector(".search-form"),HTMLFormElement),this.results=B(this.pageElement.querySelector(".results")),this.timelineSearch=B(this.pageElement.querySelector(".timeline-search")),this.timelineSearchForm=B(this.pageElement.querySelector(".timeline-search form"),HTMLFormElement),this.searchCollections=B(this.pageElement.querySelector(".search-collections")),this.lycanImportSection=B(this.pageElement.querySelector(".lycan-import")),this.lycanImportForm=B(this.pageElement.querySelector(".lycan-import form"),HTMLFormElement),this.importProgress=B(this.pageElement.querySelector(".import-progress")),this.importProgressBar=B(this.pageElement.querySelector(".import-progress progress"),HTMLProgressElement),this.importStatusLabel=B(this.pageElement.querySelector(".import-status")),this.importStatusPosition=B(this.pageElement.querySelector(".import-progress output")),this.isCheckingStatus=!1,this.timelinePosts=[],this.setupEvents();let J=new URLSearchParams(location.search);if(this.mode=J.get("mode"),this.lycanMode=J.get("lycan"),this.lycanMode=="local")this.localLycan=new P("http://localhost:3000",!1)}setupEvents(){this.timelineSearchForm.addEventListener("submit",(J)=>{if(J.preventDefault(),!this.fetchStartTime)this.fetchTimeline();else this.stopFetch()}),this.rangeInput.addEventListener("input",(J)=>{let K=parseInt(this.rangeInput.value,10),Z=B(this.pageElement.querySelector("input[type=range] + label"));Z.innerText=K==1?"1 day":`${K} days`}),this.searchField.addEventListener("keydown",(J)=>{if(J.key=="Enter"){J.preventDefault();let K=this.searchField.value.trim().toLowerCase();if(this.mode=="likes")this.searchInLycan(K);else this.searchInTimeline(K)}}),this.lycanImportForm.addEventListener("submit",(J)=>{J.preventDefault(),this.startLycanImport()})}selectedDaysRange(){return parseInt(this.rangeInput.value,10)}show(){if(this.pageElement.style.display="block",this.mode=="likes")this.header.innerText="Archive search",this.timelineSearch.style.display="none",this.searchCollections.style.display="block",this.searchLine.style.display="block",this.lycanImportSection.style.display="none",this.checkLycanImportStatus();else this.header.innerText="Timeline search",this.timelineSearch.style.display="block",this.searchCollections.style.display="none",this.lycanImportSection.style.display="none"}async checkLycanImportStatus(){if(this.isCheckingStatus)return;this.isCheckingStatus=!0;try{let J=await this.getImportStatus();this.showImportStatus(J)}catch(J){this.showImportError(`Couldn't check import status: ${J}`)}finally{this.isCheckingStatus=!1}}async getImportStatus(){if(this.localLycan)return await this.localLycan.getRequest("blue.feeds.lycan.getImportStatus",{user:accountAPI.user.did});else return await accountAPI.getRequest("blue.feeds.lycan.getImportStatus",null,{headers:{"atproto-proxy":"did:web:lycan.feeds.blue#lycan"}})}showImportStatus(J){if(console.log(J),!J.status){this.showImportError("Error checking import status");return}if(this.lycanImportStatus=J.status,J.status=="not_started")this.lycanImportSection.style.display="block",this.lycanImportForm.style.display="block",this.importProgress.style.display="none",this.searchField.disabled=!0,this.stopImportTimer();else if(J.status=="in_progress"||J.status=="scheduled"||J.status=="requested")this.lycanImportSection.style.display="block",this.lycanImportForm.style.display="none",this.importProgress.style.display="block",this.searchField.disabled=!0,this.showImportProgress(J),this.startImportTimer();else if(J.status=="finished")this.lycanImportForm.style.display="none",this.importProgress.style.display="block",this.searchField.disabled=!1,this.showImportProgress({status:"finished",progress:1}),this.stopImportTimer();else this.showImportError("Error checking import status"),this.stopImportTimer()}showImportProgress(J){let K=Math.max(0,Math.min(J.progress||0));this.importProgressBar.value=K,this.importProgressBar.style.display="inline";let Z=Math.round(K*100);if(this.importStatusPosition.innerText=`${Z}%`,J.progress==1)this.importStatusLabel.innerText="Import complete ✓";else if(J.position){let Q=new Date(J.position).toLocaleString(window.dateLocale,{day:"numeric",month:"short",year:"numeric"});this.importStatusLabel.innerText=`Downloaded data until: ${Q}`}else if(J.status=="requested")this.importStatusLabel.innerText="Requesting import…";else this.importStatusLabel.innerText="Import started…"}showImportError(J){this.lycanImportSection.style.display="block",this.lycanImportForm.style.display="none",this.importProgress.style.display="block",this.searchField.disabled=!0,this.importStatusLabel.innerText=J,this.stopImportTimer()}startImportTimer(){if(this.importTimer)return;this.importTimer=setInterval(()=>{this.checkLycanImportStatus()},3000)}stopImportTimer(){if(this.importTimer)clearInterval(this.importTimer),this.importTimer=void 0}async startLycanImport(){this.showImportStatus({status:"requested"});try{if(this.localLycan)await this.localLycan.postRequest("blue.feeds.lycan.startImport",{user:accountAPI.user.did});else await accountAPI.postRequest("blue.feeds.lycan.startImport",null,{headers:{"atproto-proxy":"did:web:lycan.feeds.blue#lycan"}});this.startImportTimer()}catch(J){console.error("Failed to start Lycan import",J),this.showImportError(`Import failed: ${J}`)}}async fetchTimeline(){this.submitButton.value="Cancel";let J=this.selectedDaysRange();this.progressBar.max=J,this.progressBar.value=0,this.progressBar.style.display="inline";let K=new Date().getTime();this.fetchStartTime=K;let Z=await accountAPI.loadHomeTimeline(J,{onPageLoad:(z)=>{if(this.fetchStartTime!=K)return{cancel:!0};this.updateProgress(z,K)}});if(this.fetchStartTime!=K)return;let Q=Z.at(-1),X;if(Q){let z=l(Q);X=Math.round((K-z)/86400/1000)}else X=0;this.timelinePosts=Z,this.archiveStatus.innerText="Timeline archive fetched: "+(X==1?"1 day":`${X} days`),this.searchLine.style.display="block",this.submitButton.value="Fetch timeline",this.progressBar.style.display="none",this.fetchStartTime=void 0}searchInTimeline(J){if(this.results.innerHTML="",J.length==0)return;let K=this.timelinePosts.filter((Z)=>Z.post.record.text.toLowerCase().includes(J)).map((Z)=>k.parseFeedPost(Z));for(let Z of K){let Q=new f(Z,"feed").buildElement();this.results.appendChild(Q)}}searchInLycan(J){if(J.length==0||this.lycanImportStatus!="finished")return;this.results.innerHTML="",this.lycanImportSection.style.display="none";let K=this.searchForm.elements.collection.value,Z=V("p",{text:"..."});this.results.append(Z);let Q=!1,X=!1,z,W=!1;q0.loadInPages(async()=>{if(Q||W)return;Q=!0;let G;if(this.localLycan){let x={collection:K,query:J,user:accountAPI.user.did};if(z)x.cursor=z;G=await this.localLycan.getRequest("blue.feeds.lycan.searchPosts",x)}else{let x={collection:K,query:J};if(z)x.cursor=z;G=await accountAPI.getRequest("blue.feeds.lycan.searchPosts",x,{headers:{"atproto-proxy":"did:web:lycan.feeds.blue#lycan"}})}if(G.posts.length==0){let x=V("p.results-end",{text:X?"No more results.":"No results."});Z.remove(),this.results.append(x),Q=!1,W=!0;return}let H=(await accountAPI.loadPosts(G.posts)).map((x)=>new k(x));if(!X)Z.remove(),X=!0;for(let x of H){let M=new f(x,"feed"),m=M.buildElement();this.results.appendChild(m),M.highlightSearchResults(G.terms)}if(Q=!1,z=G.cursor,!z)W=!0,this.results.append("No more results.")})}updateProgress(J,K){let Z=J.at(-1);if(!Z)return;let Q=l(Z),X=(K-Q)/86400/1000;this.progressBar.value=X}stopFetch(){this.submitButton.value="Fetch timeline",this.progressBar.style.display="none",this.fetchStartTime=void 0}}function b6(){window.dateLocale=localStorage.getItem("locale")||void 0,window.isIncognito=!!localStorage.getItem("incognito"),window.biohazardEnabled=JSON.parse(localStorage.getItem("biohazard")??"null"),window.loginDialog=B(document.querySelector("#login")),window.avatarPreloader=L6(),window.accountMenu=new gJ,window.threadPage=new cJ,window.postingStatsPage=new lJ,window.likeStatsPage=new iJ,window.notificationsPage=new uJ,window.privateSearchPage=new nJ,B(document.querySelector("#search form")).addEventListener("submit",(J)=>{J.preventDefault(),N6()});for(let J of document.querySelectorAll(".dialog")){let K=B(J.querySelector(".close"));J.addEventListener("click",(Z)=>{if(Z.target===Z.currentTarget&&K&&K.offsetHeight>0)m0(J);else Z.stopPropagation()}),K?.addEventListener("click",(Z)=>{m0(J)})}if(B(document.querySelector("#login .info a")).addEventListener("click",(J)=>{J.preventDefault(),y6()}),B(document.querySelector("#login form")).addEventListener("submit",(J)=>{J.preventDefault(),A6()}),B(document.querySelector("#biohazard_show")).addEventListener("click",(J)=>{if(J.preventDefault(),window.biohazardEnabled=!0,localStorage.setItem("biohazard","true"),window.loadInfohazard)window.loadInfohazard(),window.loadInfohazard=void 0;let K=B(J.target);m0(K.closest(".dialog"))}),B(document.querySelector("#biohazard_hide")).addEventListener("click",(J)=>{J.preventDefault(),window.biohazardEnabled=!1,localStorage.setItem("biohazard","false"),accountMenu.toggleMenuButtonCheck("biohazard",!1);for(let Z of document.querySelectorAll("p.hidden-replies, .content > .post.blocked, .blocked > .load-post"))B(Z).style.display="none";let K=B(J.target);m0(K.closest(".dialog"))}),window.appView=new P("api.bsky.app",!1),window.blueAPI=new P("blue.mackuba.eu",!1),window.accountAPI=new P(void 0,!0),accountAPI.isLoggedIn)if(accountAPI.host=accountAPI.user.pdsEndpoint,accountMenu.hideMenuButton("login"),!isIncognito)window.api=accountAPI,accountMenu.showLoggedInStatus(!0,api.user.avatar);else window.api=appView,accountMenu.showLoggedInStatus("incognito"),accountMenu.toggleMenuButtonCheck("incognito",!0);else window.api=appView,accountMenu.hideMenuButton("logout"),accountMenu.hideMenuButton("incognito");accountMenu.toggleMenuButtonCheck("biohazard",window.biohazardEnabled!==!1),R6()}function R6(){let J=new URLSearchParams(location.search),{q:K,author:Z,post:Q,quotes:X,hash:z,page:W}=Object.fromEntries(J);if(X)F0(),E6(decodeURIComponent(X));else if(z)F0(),_6(decodeURIComponent(z));else if(K)F0(),threadPage.loadThreadByURL(decodeURIComponent(K));else if(Z&&Q)F0(),threadPage.loadThreadById(decodeURIComponent(Z),decodeURIComponent(Q));else if(W)T1(W);else h6()}function L6(){return new IntersectionObserver((J,K)=>{for(let Z of J)if(Z.isIntersecting){let Q=Z.target;Q.removeAttribute("lazy"),K.unobserve(Q)}},{rootMargin:"1000px 0px"})}function F0(){v("loader").style.display="block"}function n(){v("loader").style.display="none"}function h6(){let J=v("search"),K=B(J.querySelector("input[type=text]"));J.style.visibility="visible",K.focus()}function H0(J){J.style.visibility="visible",v("thread").classList.add("overlay"),J.querySelector("input[type=text]")?.focus()}function m0(J){J.style.visibility="hidden",J.classList.remove("expanded"),v("thread").classList.remove("overlay");for(let K of J.querySelectorAll("input[type=text]"))K.value=""}function y6(){v("login").classList.toggle("expanded")}function A6(){let J=v("login_handle",HTMLInputElement),K=v("login_password",HTMLInputElement),Z=v("login_submit"),Q=v("cloudy"),X=B(loginDialog.querySelector(".close"));if(Z.style.display=="none")return;J.blur(),K.blur(),Z.style.display="none",Q.style.display="inline-block";let z=J.value.trim(),W=K.value.trim();P6(z,W).then((G)=>{window.api=G,window.accountAPI=G,m0(loginDialog),Z.style.display="inline",Q.style.display="none",X.style.display="inline",accountMenu.loadCurrentUserAvatar(),accountMenu.showMenuButton("logout"),accountMenu.showMenuButton("incognito"),accountMenu.hideMenuButton("login");let H=new URLSearchParams(location.search).get("page");if(H)T1(H)}).catch((G)=>{if(Z.style.display="inline",Q.style.display="none",console.log(G),G.code==401&&G.json.error=="AuthFactorTokenRequired")alert('Please log in using an "app password" if you have 2FA enabled.');else window.setTimeout(()=>alert(G),10)})}async function P6(J,K){let Z;if(J.match(/^did:/))Z=await O0.pdsEndpointForDid(J);else if(J.match(/^[^@]+@[^@]+$/))Z="bsky.social";else if(J.match(/^@?[\w\-]+(\.[\w\-]+)+$/)){J=J.replace(/^@/,"");let X=await appView.resolveHandle(J);Z=await O0.pdsEndpointForDid(X)}else throw"Please enter your handle or DID.";let Q=new P(Z,!0);return await Q.logIn(J,K),Q}function mJ(){accountAPI.resetTokens(),localStorage.removeItem("incognito"),location.reload()}function N6(){let J=v("search"),Z=B(J.querySelector("input[name=q]"),HTMLInputElement).value.trim();if(!Z)return;if(Z.startsWith("at://")){let Q=new URL(X0());Q.searchParams.set("q",Z),location.assign(Q.toString());return}if(Z.match(/^#?((\p{Letter}|\p{Number})+)$/u)){let Q=new URL(X0());Q.searchParams.set("hash",encodeURIComponent(Z.replace(/^#/,""))),location.assign(Q.toString());return}try{let[Q,X]=P.parsePostURL(Z),z=J0(Q,X);location.assign(z)}catch(Q){console.log(Q),alert(Q.message||"This is not a valid URL or hashtag")}}function T1(J){if(!accountAPI.isLoggedIn){H0(loginDialog),B(loginDialog.querySelector(".close")).style.display="none";return}if(J=="notif")window.notificationsPage.show();else if(J=="posting_stats")window.postingStatsPage.show();else if(J=="like_stats")window.likeStatsPage.show();else if(J=="search")window.privateSearchPage.show()}function pJ(J){document.title=`${J.author.displayName}: "${J.text}" - Skythread`}function _6(J){J=J.replace(/^\#/,""),document.title=`#${J} - Skythread`;let K=!1,Z=!1,Q=!1,X;q0.loadInPages(()=>{if(K||Q)return;K=!0,api.getHashtagFeed(J,X).then((z)=>{let W=z.posts.map((G)=>new k(G));if(!Z){n();let G=V("header"),F=V("h2",{text:W.length>0?`Posts tagged: #${J}`:`No posts tagged #${J}.`});G.append(F),v("thread").appendChild(G),v("thread").classList.add("hashtag")}for(let G of W){let F=new f(G,"feed").buildElement();v("thread").appendChild(F)}if(K=!1,Z=!0,X=z.cursor,!X||W.length==0)Q=!0}).catch((z)=>{n(),console.log(z),K=!1})})}function E6(J){let K=!1,Z=!1,Q,X=!1;q0.loadInPages(()=>{if(K||X)return;K=!0,blueAPI.getQuotes(J,Q).then((z)=>{api.loadPosts(z.posts).then((W)=>{let G=W.map((F)=>new k(F));if(!Z){n();let F=V("header"),H;if(z.quoteCount>1)H=V("h2",{text:`${z.quoteCount} quotes:`});else if(z.quoteCount==1)H=V("h2",{text:"1 quote:"});else H=V("h2",{text:"No quotes found."});F.append(H),v("thread").appendChild(F),v("thread").classList.add("quotes")}for(let F of G){let H=new f(F,"quotes").buildElement();v("thread").appendChild(H)}if(K=!1,Z=!0,Q=z.cursor,!Q||G.length==0)X=!0}).catch((W)=>{n(),console.log(W),K=!1})}).catch((z)=>{n(),console.log(z),K=!1})})}window.init=b6;window.BlueskyAPI=P;})();
48
48
+
`+JSON.stringify(J));this.code=z,this.json=J}}class bJ extends Error{}class B8 extends Error{}class s5{host;config;user;sendAuthHeaders;autoManageTokens;constructor(z,J,Q){if(this.host=z,this.config=J||null,this.user=J?.user||null,this.sendAuthHeaders=!!this.user,this.autoManageTokens=!!this.user,Q)Object.assign(this,Q)}get baseURL(){if(this.host)return(this.host.includes("://")?this.host:`https://${this.host}`)+"/xrpc";else throw new bJ("Hostname not set")}get isLoggedIn(){return!!(this.user&&this.user.accessToken&&this.user.refreshToken&&this.user.did&&this.user.pdsEndpoint)}async getRequest(z,J,Q={}){let K=new URL(`${this.baseURL}/${z}`),X=Q&&"auth"in Q?Q.auth:this.sendAuthHeaders;if(this.autoManageTokens&&X===!0)await this.checkAccess();if(J)for(let G in J)if(J[G]instanceof Array)J[G].forEach((w)=>K.searchParams.append(G,w));else K.searchParams.append(G,J[G]);let Z=this.authHeaders(X);if(Q.headers)Object.assign(Z,Q.headers);let W=await fetch(K,{headers:Z,signal:Q.abortSignal??null});return await this.parseResponse(W)}async postRequest(z,J,Q={}){let K=`${this.baseURL}/${z}`,X=Q&&"auth"in Q?Q.auth:this.sendAuthHeaders;if(this.autoManageTokens&&X===!0)await this.checkAccess();let Z=this.authHeaders(X),W={method:"POST"};if(J)W.body=JSON.stringify(J),Z["Content-Type"]="application/json";if(Q.headers)Object.assign(Z,Q.headers);if(Q.abortSignal)W.signal=Q.abortSignal;W.headers=Z;let G=await fetch(K,W);return await this.parseResponse(G)}async fetchAll(z,J){if(!J||!J.field)throw new bJ("'field' option is required");let Q=[],K=J.params??{},X=this.sliceOptions(J,["auth","headers","abortSignal"]);for(;;){let Z=await this.getRequest(z,K,X),W=Z[J.field],G=Z.cursor;if(J.breakWhen){let w=J.breakWhen;if(W.some((H)=>w(H))){if(!J.keepLastPage)W=W.filter((H)=>!w(H));G=null}}if(Q=Q.concat(W),K.cursor=G,J.onPageLoad?.(W),!G)break}return Q}authHeaders(z){if(typeof z=="string")return{Authorization:`Bearer ${z}`};else if(z)if(this.user?.accessToken)return{Authorization:`Bearer ${this.user.accessToken}`};else throw new B8("Can't send auth headers, access token is missing");else return{}}sliceOptions(z,J){let Q={};for(let K of J)if(K in z)Q[K]=z[K];return Q}tokenExpirationTimestamp(z){let J=z.split(".");if(J.length!=3)throw new B8("Invalid access token format");let K=JSON.parse(atob(J[1])).exp;if(!(K&&typeof K=="number"&&K>0))throw new B8("Invalid token expiry data");return K*1000}isInvalidToken(z,J){return z.status==400&&!!J&&["InvalidToken","ExpiredToken"].includes(J.error)}async parseResponse(z){let J=await z.text(),Q=J.trim().length>0?JSON.parse(J):void 0;if(z.status>=200&&z.status<300)return Q;else throw new o6(z.status,Q)}requireUserConfig(){if(!this.config||!this.config.user)throw new B8("Missing user configuration object")}requireLoggedInUser(){if(this.requireUserConfig(),!this.isLoggedIn)throw new B8("Not logged in")}async checkAccess(){if(this.requireLoggedInUser(),this.tokenExpirationTimestamp(this.user.accessToken)<new Date().getTime()+60000)await this.performTokenRefresh()}async logIn(z,J){this.requireUserConfig();let Q={identifier:z,password:J},K=await this.postRequest("com.atproto.server.createSession",Q,{auth:!1});return this.saveTokens(K),K}async performTokenRefresh(){this.requireLoggedInUser(),console.log("Refreshing access token…");let z=await this.postRequest("com.atproto.server.refreshSession",null,{auth:this.user.refreshToken});return this.saveTokens(z),z}saveTokens(z){if(this.requireUserConfig(),this.user.accessToken=z.accessJwt,this.user.refreshToken=z.refreshJwt,this.user.did=z.did,z.didDoc?.service){let J=z.didDoc.service.find((Q)=>Q.id=="#atproto_pds");this.host=J.serviceEndpoint.replace("https://","")}this.user.pdsEndpoint=this.host,this.config.save()}resetTokens(){this.requireUserConfig(),delete this.user.accessToken,delete this.user.refreshToken,delete this.user.did,delete this.user.pdsEndpoint,this.config.save()}}class fK{repo;collection;rkey;constructor(z){if(!z.startsWith("at://"))throw new a6(`Not an at:// URI: ${z}`);let J=z.split("/");if(J.length!=5)throw new a6(`Invalid at:// URI: ${z}`);this.repo=J[2],this.collection=J[3],this.rkey=J[4]}}function m0(z){return new fK(z)}function L4(){return new IntersectionObserver((z,J)=>{for(let Q of z)if(Q.isIntersecting){let K=Q.target;K.removeAttribute("lazy"),J.unobserve(K)}},{rootMargin:"1000px 0px"})}var TJ=L4();/*! @license DOMPurify 3.3.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.0/LICENSE */var{entries:cK,setPrototypeOf:mK,isFrozen:P4,getPrototypeOf:I4,getOwnPropertyDescriptor:S4}=Object,{freeze:g1,seal:G6,create:mJ}=Object,{apply:$J,construct:uJ}=typeof Reflect<"u"&&Reflect;if(!g1)g1=function(J){return J};if(!G6)G6=function(J){return J};if(!$J)$J=function(J,Q){for(var K=arguments.length,X=Array(K>2?K-2:0),Z=2;Z<K;Z++)X[Z-2]=arguments[Z];return J.apply(Q,X)};if(!uJ)uJ=function(J){for(var Q=arguments.length,K=Array(Q>1?Q-1:0),X=1;X<Q;X++)K[X-1]=arguments[X];return new J(...K)};var az=h1(Array.prototype.forEach),D4=h1(Array.prototype.lastIndexOf),$K=h1(Array.prototype.pop),o5=h1(Array.prototype.push),R4=h1(Array.prototype.splice),nz=h1(String.prototype.toLowerCase),EJ=h1(String.prototype.toString),yJ=h1(String.prototype.match),a5=h1(String.prototype.replace),j4=h1(String.prototype.indexOf),A4=h1(String.prototype.trim),L6=h1(Object.prototype.hasOwnProperty),v1=h1(RegExp.prototype.test),r5=N4(TypeError);function h1(z){return function(J){if(J instanceof RegExp)J.lastIndex=0;for(var Q=arguments.length,K=Array(Q>1?Q-1:0),X=1;X<Q;X++)K[X-1]=arguments[X];return $J(z,J,K)}}function N4(z){return function(){for(var J=arguments.length,Q=Array(J),K=0;K<J;K++)Q[K]=arguments[K];return uJ(z,Q)}}function P0(z,J){let Q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:nz;if(mK)mK(z,null);let K=J.length;while(K--){let X=J[K];if(typeof X==="string"){let Z=Q(X);if(Z!==X){if(!P4(J))J[K]=Z;X=Z}}z[X]=!0}return z}function k4(z){for(let J=0;J<z.length;J++)if(!L6(z,J))z[J]=null;return z}function r6(z){let J=mJ(null);for(let[Q,K]of cK(z))if(L6(z,Q))if(Array.isArray(K))J[Q]=k4(K);else if(K&&typeof K==="object"&&K.constructor===Object)J[Q]=r6(K);else J[Q]=K;return J}function n5(z,J){while(z!==null){let K=S4(z,J);if(K){if(K.get)return h1(K.get);if(typeof K.value==="function")return h1(K.value)}z=I4(z)}function Q(){return null}return Q}var uK=g1(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),vJ=g1(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),gJ=g1(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),b4=g1(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),hJ=g1(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),T4=g1(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),lK=g1(["#text"]),pK=g1(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),fJ=g1(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),dK=g1(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),rz=g1(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),E4=G6(/\{\{[\w\W]*|[\w\W]*\}\}/gm),y4=G6(/<%[\w\W]*|[\w\W]*%>/gm),v4=G6(/\$\{[\w\W]*/gm),g4=G6(/^data-[\-\w.\u00B7-\uFFFF]+$/),h4=G6(/^aria-[\-\w]+$/),sK=G6(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),f4=G6(/^(?:\w+script|data):/i),m4=G6(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),oK=G6(/^html$/i),$4=G6(/^[a-z][.\w]*(-[.\w]+)+$/i),iK=Object.freeze({__proto__:null,ARIA_ATTR:h4,ATTR_WHITESPACE:m4,CUSTOM_ELEMENT:$4,DATA_ATTR:g4,DOCTYPE_NAME:oK,ERB_EXPR:y4,IS_ALLOWED_URI:sK,IS_SCRIPT_OR_DATA:f4,MUSTACHE_EXPR:E4,TMPLIT_EXPR:v4}),t5={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},u4=function(){return typeof window>"u"?null:window},l4=function(J,Q){if(typeof J!=="object"||typeof J.createPolicy!=="function")return null;let K=null,X="data-tt-policy-suffix";if(Q&&Q.hasAttribute(X))K=Q.getAttribute(X);let Z="dompurify"+(K?"#"+K:"");try{return J.createPolicy(Z,{createHTML(W){return W},createScriptURL(W){return W}})}catch(W){return console.warn("TrustedTypes policy "+Z+" could not be created."),null}},_K=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function aK(){let z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:u4(),J=(K0)=>aK(K0);if(J.version="3.3.0",J.removed=[],!z||!z.document||z.document.nodeType!==t5.document||!z.Element)return J.isSupported=!1,J;let{document:Q}=z,K=Q,X=K.currentScript,{DocumentFragment:Z,HTMLTemplateElement:W,Node:G,Element:w,NodeFilter:H,NamedNodeMap:q=z.NamedNodeMap||z.MozNamedAttrMap,HTMLFormElement:F,DOMParser:B,trustedTypes:U}=z,M=w.prototype,P=n5(M,"cloneNode"),O=n5(M,"remove"),j=n5(M,"nextSibling"),T=n5(M,"childNodes"),E=n5(M,"parentNode");if(typeof W==="function"){let K0=Q.createElement("template");if(K0.content&&K0.content.ownerDocument)Q=K0.content.ownerDocument}let N,y="",{implementation:b,createNodeIterator:A,createDocumentFragment:k,getElementsByTagName:$}=Q,{importNode:v}=K,l=_K();J.isSupported=typeof cK==="function"&&typeof E==="function"&&b&&b.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:n,ERB_EXPR:o,TMPLIT_EXPR:a,DATA_ATTR:X0,ARIA_ATTR:Q0,IS_SCRIPT_OR_DATA:U0,ATTR_WHITESPACE:D0,CUSTOM_ELEMENT:M0}=iK,{IS_ALLOWED_URI:v0}=iK,s=null,V0=P0({},[...uK,...vJ,...gJ,...hJ,...lK]),Y0=null,e=P0({},[...pK,...fJ,...dK,...rz]),t=Object.seal(mJ(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),G0=null,O0=null,H0=Object.seal(mJ(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),F0=!0,u0=!0,n0=!1,k0=!0,z6=!1,t6=!0,H6=!1,u8=!1,l8=!1,e6=!1,p8=!1,wz=!1,E7=!0,y7=!1,MZ="user-content-",q9=!0,A5=!1,d8={},i8=null,v7=P0({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),g7=null,h7=P0({},["audio","video","img","source","image","track"]),M9=null,f7=P0({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Uz="http://www.w3.org/1998/Math/MathML",Vz="http://www.w3.org/2000/svg",g6="http://www.w3.org/1999/xhtml",_8=g6,C9=!1,x9=null,CZ=P0({},[Uz,Vz,g6],EJ),Fz=P0({},["mi","mo","mn","ms","mtext"]),qz=P0({},["annotation-xml"]),xZ=P0({},["title","style","font","a","script"]),N5=null,OZ=["application/xhtml+xml","text/html"],LZ="text/html",G1=null,c8=null,PZ=Q.createElement("form"),m7=function(I){return I instanceof RegExp||I instanceof Function},O9=function(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(c8&&c8===I)return;if(!I||typeof I!=="object")I={};if(I=r6(I),N5=OZ.indexOf(I.PARSER_MEDIA_TYPE)===-1?LZ:I.PARSER_MEDIA_TYPE,G1=N5==="application/xhtml+xml"?EJ:nz,s=L6(I,"ALLOWED_TAGS")?P0({},I.ALLOWED_TAGS,G1):V0,Y0=L6(I,"ALLOWED_ATTR")?P0({},I.ALLOWED_ATTR,G1):e,x9=L6(I,"ALLOWED_NAMESPACES")?P0({},I.ALLOWED_NAMESPACES,EJ):CZ,M9=L6(I,"ADD_URI_SAFE_ATTR")?P0(r6(f7),I.ADD_URI_SAFE_ATTR,G1):f7,g7=L6(I,"ADD_DATA_URI_TAGS")?P0(r6(h7),I.ADD_DATA_URI_TAGS,G1):h7,i8=L6(I,"FORBID_CONTENTS")?P0({},I.FORBID_CONTENTS,G1):v7,G0=L6(I,"FORBID_TAGS")?P0({},I.FORBID_TAGS,G1):r6({}),O0=L6(I,"FORBID_ATTR")?P0({},I.FORBID_ATTR,G1):r6({}),d8=L6(I,"USE_PROFILES")?I.USE_PROFILES:!1,F0=I.ALLOW_ARIA_ATTR!==!1,u0=I.ALLOW_DATA_ATTR!==!1,n0=I.ALLOW_UNKNOWN_PROTOCOLS||!1,k0=I.ALLOW_SELF_CLOSE_IN_ATTR!==!1,z6=I.SAFE_FOR_TEMPLATES||!1,t6=I.SAFE_FOR_XML!==!1,H6=I.WHOLE_DOCUMENT||!1,e6=I.RETURN_DOM||!1,p8=I.RETURN_DOM_FRAGMENT||!1,wz=I.RETURN_TRUSTED_TYPE||!1,l8=I.FORCE_BODY||!1,E7=I.SANITIZE_DOM!==!1,y7=I.SANITIZE_NAMED_PROPS||!1,q9=I.KEEP_CONTENT!==!1,A5=I.IN_PLACE||!1,v0=I.ALLOWED_URI_REGEXP||sK,_8=I.NAMESPACE||g6,Fz=I.MATHML_TEXT_INTEGRATION_POINTS||Fz,qz=I.HTML_INTEGRATION_POINTS||qz,t=I.CUSTOM_ELEMENT_HANDLING||{},I.CUSTOM_ELEMENT_HANDLING&&m7(I.CUSTOM_ELEMENT_HANDLING.tagNameCheck))t.tagNameCheck=I.CUSTOM_ELEMENT_HANDLING.tagNameCheck;if(I.CUSTOM_ELEMENT_HANDLING&&m7(I.CUSTOM_ELEMENT_HANDLING.attributeNameCheck))t.attributeNameCheck=I.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;if(I.CUSTOM_ELEMENT_HANDLING&&typeof I.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==="boolean")t.allowCustomizedBuiltInElements=I.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;if(z6)u0=!1;if(p8)e6=!0;if(d8){if(s=P0({},lK),Y0=[],d8.html===!0)P0(s,uK),P0(Y0,pK);if(d8.svg===!0)P0(s,vJ),P0(Y0,fJ),P0(Y0,rz);if(d8.svgFilters===!0)P0(s,gJ),P0(Y0,fJ),P0(Y0,rz);if(d8.mathMl===!0)P0(s,hJ),P0(Y0,dK),P0(Y0,rz)}if(I.ADD_TAGS)if(typeof I.ADD_TAGS==="function")H0.tagCheck=I.ADD_TAGS;else{if(s===V0)s=r6(s);P0(s,I.ADD_TAGS,G1)}if(I.ADD_ATTR)if(typeof I.ADD_ATTR==="function")H0.attributeCheck=I.ADD_ATTR;else{if(Y0===e)Y0=r6(Y0);P0(Y0,I.ADD_ATTR,G1)}if(I.ADD_URI_SAFE_ATTR)P0(M9,I.ADD_URI_SAFE_ATTR,G1);if(I.FORBID_CONTENTS){if(i8===v7)i8=r6(i8);P0(i8,I.FORBID_CONTENTS,G1)}if(q9)s["#text"]=!0;if(H6)P0(s,["html","head","body"]);if(s.table)P0(s,["tbody"]),delete G0.tbody;if(I.TRUSTED_TYPES_POLICY){if(typeof I.TRUSTED_TYPES_POLICY.createHTML!=="function")throw r5('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof I.TRUSTED_TYPES_POLICY.createScriptURL!=="function")throw r5('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');N=I.TRUSTED_TYPES_POLICY,y=N.createHTML("")}else{if(N===void 0)N=l4(U,X);if(N!==null&&typeof y==="string")y=N.createHTML("")}if(g1)g1(I);c8=I},$7=P0({},[...vJ,...gJ,...b4]),u7=P0({},[...hJ,...T4]),IZ=function(I){let p=E(I);if(!p||!p.tagName)p={namespaceURI:_8,tagName:"template"};let z0=nz(I.tagName),g0=nz(p.tagName);if(!x9[I.namespaceURI])return!1;if(I.namespaceURI===Vz){if(p.namespaceURI===g6)return z0==="svg";if(p.namespaceURI===Uz)return z0==="svg"&&(g0==="annotation-xml"||Fz[g0]);return Boolean($7[z0])}if(I.namespaceURI===Uz){if(p.namespaceURI===g6)return z0==="math";if(p.namespaceURI===Vz)return z0==="math"&&qz[g0];return Boolean(u7[z0])}if(I.namespaceURI===g6){if(p.namespaceURI===Vz&&!qz[g0])return!1;if(p.namespaceURI===Uz&&!Fz[g0])return!1;return!u7[z0]&&(xZ[z0]||!$7[z0])}if(N5==="application/xhtml+xml"&&x9[I.namespaceURI])return!0;return!1},I6=function(I){o5(J.removed,{element:I});try{E(I).removeChild(I)}catch(p){O(I)}},F8=function(I,p){try{o5(J.removed,{attribute:p.getAttributeNode(I),from:p})}catch(z0){o5(J.removed,{attribute:null,from:p})}if(p.removeAttribute(I),I==="is")if(e6||p8)try{I6(p)}catch(z0){}else try{p.setAttribute(I,"")}catch(z0){}},l7=function(I){let p=null,z0=null;if(l8)I="<remove></remove>"+I;else{let t0=yJ(I,/^[\r\n\t ]+/);z0=t0&&t0[0]}if(N5==="application/xhtml+xml"&&_8===g6)I='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+I+"</body></html>";let g0=N?N.createHTML(I):I;if(_8===g6)try{p=new B().parseFromString(g0,N5)}catch(t0){}if(!p||!p.documentElement){p=b.createDocument(_8,"template",null);try{p.documentElement.innerHTML=C9?y:g0}catch(t0){}}let S1=p.body||p.documentElement;if(I&&z0)S1.insertBefore(Q.createTextNode(z0),S1.childNodes[0]||null);if(_8===g6)return $.call(p,H6?"html":"body")[0];return H6?p.documentElement:S1},p7=function(I){return A.call(I.ownerDocument||I,I,H.SHOW_ELEMENT|H.SHOW_COMMENT|H.SHOW_TEXT|H.SHOW_PROCESSING_INSTRUCTION|H.SHOW_CDATA_SECTION,null)},L9=function(I){return I instanceof F&&(typeof I.nodeName!=="string"||typeof I.textContent!=="string"||typeof I.removeChild!=="function"||!(I.attributes instanceof q)||typeof I.removeAttribute!=="function"||typeof I.setAttribute!=="function"||typeof I.namespaceURI!=="string"||typeof I.insertBefore!=="function"||typeof I.hasChildNodes!=="function")},d7=function(I){return typeof G==="function"&&I instanceof G};function h6(K0,I,p){az(K0,(z0)=>{z0.call(J,I,p,c8)})}let i7=function(I){let p=null;if(h6(l.beforeSanitizeElements,I,null),L9(I))return I6(I),!0;let z0=G1(I.nodeName);if(h6(l.uponSanitizeElement,I,{tagName:z0,allowedTags:s}),t6&&I.hasChildNodes()&&!d7(I.firstElementChild)&&v1(/<[/\w!]/g,I.innerHTML)&&v1(/<[/\w!]/g,I.textContent))return I6(I),!0;if(I.nodeType===t5.progressingInstruction)return I6(I),!0;if(t6&&I.nodeType===t5.comment&&v1(/<[/\w]/g,I.data))return I6(I),!0;if(!(H0.tagCheck instanceof Function&&H0.tagCheck(z0))&&(!s[z0]||G0[z0])){if(!G0[z0]&&c7(z0)){if(t.tagNameCheck instanceof RegExp&&v1(t.tagNameCheck,z0))return!1;if(t.tagNameCheck instanceof Function&&t.tagNameCheck(z0))return!1}if(q9&&!i8[z0]){let g0=E(I)||I.parentNode,S1=T(I)||I.childNodes;if(S1&&g0){let t0=S1.length;for(let f1=t0-1;f1>=0;--f1){let f6=P(S1[f1],!0);f6.__removalCount=(I.__removalCount||0)+1,g0.insertBefore(f6,j(I))}}}return I6(I),!0}if(I instanceof w&&!IZ(I))return I6(I),!0;if((z0==="noscript"||z0==="noembed"||z0==="noframes")&&v1(/<\/no(script|embed|frames)/i,I.innerHTML))return I6(I),!0;if(z6&&I.nodeType===t5.text){if(p=I.textContent,az([n,o,a],(g0)=>{p=a5(p,g0," ")}),I.textContent!==p)o5(J.removed,{element:I.cloneNode()}),I.textContent=p}return h6(l.afterSanitizeElements,I,null),!1},_7=function(I,p,z0){if(E7&&(p==="id"||p==="name")&&((z0 in Q)||(z0 in PZ)))return!1;if(u0&&!O0[p]&&v1(X0,p));else if(F0&&v1(Q0,p));else if(H0.attributeCheck instanceof Function&&H0.attributeCheck(p,I));else if(!Y0[p]||O0[p])if(c7(I)&&(t.tagNameCheck instanceof RegExp&&v1(t.tagNameCheck,I)||t.tagNameCheck instanceof Function&&t.tagNameCheck(I))&&(t.attributeNameCheck instanceof RegExp&&v1(t.attributeNameCheck,p)||t.attributeNameCheck instanceof Function&&t.attributeNameCheck(p,I))||p==="is"&&t.allowCustomizedBuiltInElements&&(t.tagNameCheck instanceof RegExp&&v1(t.tagNameCheck,z0)||t.tagNameCheck instanceof Function&&t.tagNameCheck(z0)));else return!1;else if(M9[p]);else if(v1(v0,a5(z0,D0,"")));else if((p==="src"||p==="xlink:href"||p==="href")&&I!=="script"&&j4(z0,"data:")===0&&g7[I]);else if(n0&&!v1(U0,a5(z0,D0,"")));else if(z0)return!1;return!0},c7=function(I){return I!=="annotation-xml"&&yJ(I,M0)},s7=function(I){h6(l.beforeSanitizeAttributes,I,null);let{attributes:p}=I;if(!p||L9(I))return;let z0={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Y0,forceKeepAttr:void 0},g0=p.length;while(g0--){let S1=p[g0],{name:t0,namespaceURI:f1,value:f6}=S1,s8=G1(t0),P9=f6,F1=t0==="value"?P9:A4(P9);if(z0.attrName=s8,z0.attrValue=F1,z0.keepAttr=!0,z0.forceKeepAttr=void 0,h6(l.uponSanitizeAttribute,I,z0),F1=z0.attrValue,y7&&(s8==="id"||s8==="name"))F8(t0,I),F1=MZ+F1;if(t6&&v1(/((--!?|])>)|<\/(style|title|textarea)/i,F1)){F8(t0,I);continue}if(s8==="attributename"&&yJ(F1,"href")){F8(t0,I);continue}if(z0.forceKeepAttr)continue;if(!z0.keepAttr){F8(t0,I);continue}if(!k0&&v1(/\/>/i,F1)){F8(t0,I);continue}if(z6)az([n,o,a],(a7)=>{F1=a5(F1,a7," ")});let o7=G1(I.nodeName);if(!_7(o7,s8,F1)){F8(t0,I);continue}if(N&&typeof U==="object"&&typeof U.getAttributeType==="function")if(f1);else switch(U.getAttributeType(o7,s8)){case"TrustedHTML":{F1=N.createHTML(F1);break}case"TrustedScriptURL":{F1=N.createScriptURL(F1);break}}if(F1!==P9)try{if(f1)I.setAttributeNS(f1,t0,F1);else I.setAttribute(t0,F1);if(L9(I))I6(I);else $K(J.removed)}catch(a7){F8(t0,I)}}h6(l.afterSanitizeAttributes,I,null)},SZ=function K0(I){let p=null,z0=p7(I);h6(l.beforeSanitizeShadowDOM,I,null);while(p=z0.nextNode())if(h6(l.uponSanitizeShadowNode,p,null),i7(p),s7(p),p.content instanceof Z)K0(p.content);h6(l.afterSanitizeShadowDOM,I,null)};return J.sanitize=function(K0){let I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},p=null,z0=null,g0=null,S1=null;if(C9=!K0,C9)K0="<!-->";if(typeof K0!=="string"&&!d7(K0))if(typeof K0.toString==="function"){if(K0=K0.toString(),typeof K0!=="string")throw r5("dirty is not a string, aborting")}else throw r5("toString is not a function");if(!J.isSupported)return K0;if(!u8)O9(I);if(J.removed=[],typeof K0==="string")A5=!1;if(A5){if(K0.nodeName){let f6=G1(K0.nodeName);if(!s[f6]||G0[f6])throw r5("root node is forbidden and cannot be sanitized in-place")}}else if(K0 instanceof G)if(p=l7("<!---->"),z0=p.ownerDocument.importNode(K0,!0),z0.nodeType===t5.element&&z0.nodeName==="BODY")p=z0;else if(z0.nodeName==="HTML")p=z0;else p.appendChild(z0);else{if(!e6&&!z6&&!H6&&K0.indexOf("<")===-1)return N&&wz?N.createHTML(K0):K0;if(p=l7(K0),!p)return e6?null:wz?y:""}if(p&&l8)I6(p.firstChild);let t0=p7(A5?K0:p);while(g0=t0.nextNode())if(i7(g0),s7(g0),g0.content instanceof Z)SZ(g0.content);if(A5)return K0;if(e6){if(p8){S1=k.call(p.ownerDocument);while(p.firstChild)S1.appendChild(p.firstChild)}else S1=p;if(Y0.shadowroot||Y0.shadowrootmode)S1=v.call(K,S1,!0);return S1}let f1=H6?p.outerHTML:p.innerHTML;if(H6&&s["!doctype"]&&p.ownerDocument&&p.ownerDocument.doctype&&p.ownerDocument.doctype.name&&v1(oK,p.ownerDocument.doctype.name))f1="<!DOCTYPE "+p.ownerDocument.doctype.name+`>
49
49
+
`+f1;if(z6)az([n,o,a],(f6)=>{f1=a5(f1,f6," ")});return N&&wz?N.createHTML(f1):f1},J.setConfig=function(){let K0=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};O9(K0),u8=!0},J.clearConfig=function(){c8=null,u8=!1},J.isValidAttribute=function(K0,I,p){if(!c8)O9({});let z0=G1(K0),g0=G1(I);return _7(z0,g0,p)},J.addHook=function(K0,I){if(typeof I!=="function")return;o5(l[K0],I)},J.removeHook=function(K0,I){if(I!==void 0){let p=D4(l[K0],I);return p===-1?void 0:R4(l[K0],p,1)[0]}return $K(l[K0])},J.removeHooks=function(K0){l[K0]=[]},J.removeAllHooks=function(){l=_K()},J}var rK=aK();function E8(z){return tz(z,"day")}function tz(z,J,Q){if(z==1)return`1 ${J}`;else return Q=Q??`${J}s`,`${z} ${Q}`}function nK(z){return rK.sanitize(z,{ALLOWED_TAGS:["a","b","blockquote","br","code","dd","del","div","dl","dt","em","font","h1","h2","h3","h4","h5","h6","hr","i","li","ol","p","q","pre","s","span","strong","sub","sup","u","wbr","#text"],ALLOWED_ATTR:["align","alt","class","clear","color","dir","href","lang","rel","title","translate"]})}function tK(z,J){if(z.length<=J)return z;else return z.slice(0,J-1)+"…"}function y8(z){if(z===void 0||z===null||typeof z=="number")return z;else return parseInt(z,10)}function i1(z){let J=z.reason?z.reason.indexedAt:z.post.record.createdAt;return Date.parse(J)}function ez(z){try{return new URL(z),!0}catch(J){return console.error("Invalid URL: "+J),!1}}function eK(z,J){return z.getDate()==J.getDate()&&z.getMonth()==J.getMonth()&&z.getFullYear()==J.getFullYear()}function H8(z){console.log(z),alert(z)}class _1{constructor(z,J){this.data=z,Object.assign(this,J??{})}get uri(){return this.data.uri}get cid(){return this.data.cid}get rkey(){return m0(this.uri).rkey}get type(){return this.data.$type}}class e5 extends _1{constructor(z){super(z);this.author=z.creator}get title(){return this.data.displayName}get description(){return this.data.description}get likeCount(){return y8(this.data.likeCount)}get avatar(){return this.data.avatar}}class zz extends _1{constructor(z){super(z);this.author=z.creator}get title(){return this.data.name}get purpose(){return this.data.purpose}get description(){return this.data.description}get avatar(){return this.data.avatar}}class Jz extends _1{constructor(z){super(z);this.author=z.creator}get title(){return this.data.record.name}get description(){return this.data.record.description}}class W1{json;static parseInlineEmbed(z){switch(z.$type){case"app.bsky.embed.record#view":return new q5(z);case"app.bsky.embed.recordWithMedia#view":return new M5(z);case"app.bsky.embed.images#view":return new X9(z);case"app.bsky.embed.external#view":return new C5(z);case"app.bsky.embed.video#view":return new x5(z);default:if(location.protocol=="file:")throw new F5(`Unexpected embed type: ${z.$type}`);else return console.warn("Unexpected embed type:",z.$type),new W1(z)}}static parseRawEmbed(z){switch(z.$type){case"app.bsky.embed.record":return new K9(z);case"app.bsky.embed.recordWithMedia":return new Z9(z);case"app.bsky.embed.images":return new z9(z);case"app.bsky.embed.external":return new J9(z);case"app.bsky.embed.video":return new Q9(z);default:if(location.protocol=="file:")throw new F5(`Unexpected embed type: ${z.$type}`);else return console.warn("Unexpected embed type:",z.$type),new W1(z)}}constructor(z){this.json=z}get type(){return this.json.$type}}class z9 extends W1{images;constructor(z){super(z);this.images=z.images}}class J9 extends W1{url;title;thumb;constructor(z){super(z);this.url=z.external.uri,this.title=z.external.title,this.thumb=z.external.thumb}}class Q9 extends W1{video;constructor(z){super(z);this.video=z.video}}class K9 extends W1{record;constructor(z){super(z);this.record=new _1(z.record)}}class Z9 extends W1{record;media;constructor(z){super(z);this.record=new _1(z.record.record),this.media=W1.parseRawEmbed(z.media)}}class q5 extends W1{record;constructor(z){super(z);this.record=lJ(z.record)}}class M5 extends W1{record;media;constructor(z){super(z);this.record=lJ(z.record.record),this.media=W1.parseInlineEmbed(z.media)}}class C5 extends W1{url;title;description;thumb;constructor(z){super(z);this.url=z.external.uri,this.title=z.external.title,this.description=z.external.description,this.thumb=z.external.thumb}}class X9 extends W1{images;constructor(z){super(z);this.images=z.images}}class x5 extends W1{playlistURL;alt;constructor(z){super(z);this.playlistURL=z.playlist,this.alt=z.alt}}class F5 extends Error{constructor(z){super(z)}}class v8 extends _1{get didLinkToAuthor(){let{repo:z}=m0(this.uri);return`https://bsky.app/profile/${z}`}}function w8(z,J=null,Q=0,K=0){switch(z.$type){case"app.bsky.feed.defs#threadViewPost":let X=new S0(z.post,{level:Q,absoluteLevel:K});if(X.pageRoot=J??X,z.replies){let Z=z.replies.map((W)=>w8(W,X.pageRoot,Q+1,K+1));X.setReplies(Z)}if(K<=0&&z.parent)X.parent=w8(z.parent,X.pageRoot,Q-1,K-1);return X;case"app.bsky.feed.defs#notFoundPost":return new P6(z);case"app.bsky.feed.defs#blockedPost":return new y6(z);default:throw new F5(`Unexpected record type: ${z.$type}`)}}function lJ(z){switch(z.$type){case"app.bsky.embed.record#viewRecord":return new S0(z,{isEmbed:!0});case"app.bsky.embed.record#viewNotFound":return new P6(z);case"app.bsky.embed.record#viewBlocked":return new y6(z);case"app.bsky.embed.record#viewDetached":return new O5(z);case"app.bsky.feed.defs#generatorView":return new e5(z);case"app.bsky.graph.defs#listView":return new zz(z);case"app.bsky.graph.defs#starterPackViewBasic":return new Jz(z);default:return console.warn("Unknown record type:",z.$type),new _1(z)}}function JZ(z){let J=new S0(z.post);if(z.reply){if(J.parent=zZ(z.reply.parent),J.threadRoot=zZ(z.reply.root),z.reply.grandparentAuthor)J.grandparentAuthor=z.reply.grandparentAuthor}if(z.reason)J.reason=z.reason;return J}function zZ(z){switch(z.$type){case"app.bsky.feed.defs#postView":return new S0(z);case"app.bsky.feed.defs#notFoundPost":return new P6(z);case"app.bsky.feed.defs#blockedPost":return new y6(z);default:throw new F5(`Unexpected record type: ${z.$type}`)}}class S0 extends v8{parent;threadRoot;pageRoot;replies;grandparentAuthor;level;absoluteLevel;reason;isEmbed;constructor(z,J){super(z);if(Object.assign(this,J??{}),this.absoluteLevel===0)this.pageRoot=this;if(this.record=this.isPostView?z.record:z.value,this.isPostView&&z.embed)this.embed=W1.parseInlineEmbed(z.embed);else if(this.isEmbed&&z.embeds&&z.embeds[0])this.embed=W1.parseInlineEmbed(z.embeds[0]);else if(this.record.embed)this.embed=W1.parseRawEmbed(this.record.embed);if(this.author=this.author??z.author,this.replies=[],this.viewerData=z.viewer,this.viewerLike=z.viewer?.like,this.author)N0.cacheProfile(this.author)}updateDataFromPost(z){this.record=z.record,this.embed=z.embed,this.author=z.author,this.viewerData=z.viewerData,this.viewerLike=z.viewerLike,this.level=z.level,this.absoluteLevel=z.absoluteLevel,this.setReplies(z.replies)}setReplies(z){this.replies=z,this.replies.sort(this.sortReplies.bind(this))}sortReplies(z,J){if(z instanceof S0&&J instanceof S0)if(z.author.did==this.author.did&&J.author.did!=this.author.did)return-1;else if(z.author.did!=this.author.did&&J.author.did==this.author.did)return 1;else if(z.text!="\uD83D\uDCCC"&&J.text=="\uD83D\uDCCC")return-1;else if(z.text=="\uD83D\uDCCC"&&J.text!="\uD83D\uDCCC")return 1;else if(z.createdAt.getTime()<J.createdAt.getTime())return-1;else if(z.createdAt.getTime()>J.createdAt.getTime())return 1;else return 0;else if(z instanceof S0)return-1;else if(J instanceof S0)return 1;else return 0}get isPostView(){return!this.isEmbed}get isFediPost(){return this.author?.handle.endsWith(".ap.brid.gy")}get originalFediContent(){return this.record.bridgyOriginalText}get originalFediURL(){return this.record.bridgyOriginalUrl}get isPageRoot(){return this.pageRoot===this}get authorFediHandle(){if(this.isFediPost)return this.author.handle.replace(/\.ap\.brid\.gy$/,"").replace(".","@");else throw"Not a Fedi post"}get hasValidHandle(){return this.author.handle!="handle.invalid"}get authorDisplayName(){if(this.author.displayName)return this.author.displayName.trim();else if(this.author.handle.endsWith(".bsky.social"))return this.author.handle.replace(/\.bsky\.social$/,"");else return this.author.handle}get linkToAuthor(){return"https://bsky.app/profile/"+(this.hasValidHandle?this.author.handle:this.author.did)}get linkToPost(){return this.linkToAuthor+"/post/"+this.rkey}get text(){return this.record.text}get lowercaseText(){if(!this._lowercaseText)this._lowercaseText=this.record.text.toLowerCase();return this._lowercaseText}get facets(){return this.record.facets}get tags(){return this.record.tags}get createdAt(){return new Date(this.record.createdAt)}get likeCount(){return y8(this.data.likeCount)}get replyCount(){return y8(this.data.replyCount)}get quoteCount(){return y8(this.data.quoteCount)}get hasMoreReplies(){return this.replyCount!==void 0&&this.replyCount>this.replies.length&&this.replies.length===0&&(this.level!==void 0&&this.level>4)}get hasHiddenReplies(){return this.replyCount!==void 0&&this.replyCount>this.replies.length&&(this.replies.length>0||this.level!==void 0&&this.level<=4)}get isRestrictingReplies(){return!!(this.data.threadgate&&this.data.threadgate.record.allow)}get repostCount(){return y8(this.data.repostCount)}get liked(){return this.viewerLike!==void 0}get muted(){return this.author.viewer?.muted}get muteList(){return this.author.viewer?.mutedByList?.name}get hasViewerInfo(){return this.viewerData!==void 0}get parentReference(){return this.record.reply?.parent&&new _1(this.record.reply?.parent)}get rootReference(){return this.record.reply?.root&&new _1(this.record.reply?.root)}}class y6 extends v8{constructor(z){super(z);this.author=z.author}get blocksUser(){return!!this.author.viewer?.blocking}get blockedByUser(){return this.author.viewer?.blockedBy}}class P6 extends v8{}class O5 extends v8{}class pJ extends Error{}class a6 extends Error{constructor(z){super(z)}}class Kz extends Error{originalError;constructor(z){super(z.message);this.originalError=z}}class e1 extends s5{handleCache;profiles;constructor(z,J,Q){super(z,J,Q);this.handleCache=new kJ,this.profiles={}}cacheProfile(z){this.profiles[z.did]=z,this.profiles[z.handle]=z,this.handleCache.setHandleDid(z.handle,z.did)}async fetchHandleForDid(z){let J=this.handleCache.findHandleByDid(z);if(J)return J;else return(await this.loadUserProfile(z)).handle}async resolveHandle(z){let J=this.handleCache.getHandleDid(z);if(J)return J;else{let Q=await this.getRequest("com.atproto.identity.resolveHandle",{handle:z},{auth:!1}),K=Q.did;if(K)return this.handleCache.setHandleDid(z,K),K;else throw new pJ("Missing DID in response: "+JSON.stringify(Q))}}async loadThreadByURL(z){let{user:J,post:Q}=Qz(z);return await this.loadThreadById(J,Q)}async loadThreadById(z,J){let K=`at://${z.startsWith("did:")?z:await this.resolveHandle(z)}/app.bsky.feed.post/${J}`;return await this.loadThreadByAtURI(K)}async loadThreadByAtURI(z){return await this.getRequest("app.bsky.feed.getPostThread",{uri:z,depth:10})}async loadUserProfile(z){if(this.profiles[z])return this.profiles[z];else{let J=await this.getRequest("app.bsky.actor.getProfile",{actor:z});return this.cacheProfile(J),J}}async autocompleteUsers(z){return(await this.getRequest("app.bsky.actor.searchActorsTypeahead",{q:z})).actors}async getReplies(z){return(await this.getRequest("blue.feeds.post.getReplies",{uri:z})).replies}async getQuoteCount(z){return(await this.getRequest("blue.feeds.post.getQuoteCount",{uri:z})).quoteCount}async getQuotes(z,J){let Q;if(z.startsWith("at://"))Q=z;else{let{user:X,post:Z}=Qz(z);Q=`at://${X.startsWith("did:")?X:await U8.resolveHandle(X)}/app.bsky.feed.post/${Z}`}let K={uri:Q};if(J)K.cursor=J;return await this.getRequest("blue.feeds.post.getQuotes",K)}async getHashtagFeed(z,J){let Q={q:"#"+z,limit:50,sort:"latest"};if(J)Q.cursor=J;return await this.getRequest("app.bsky.feed.searchPosts",Q)}async loadHiddenReplies(z){let J;try{J=await g8.getReplies(z.uri)}catch(Z){if(Z instanceof o6&&Z.code==404)throw new Kz(Z);else throw Z}let K=J.filter((Z)=>!z.replies.some((W)=>W.uri===Z)).map((Z)=>this.loadThreadByAtURI(Z));return(await Promise.allSettled(K)).map((Z)=>Z.status=="fulfilled"?Z.value:null)}async loadUserTimeline(z,J,Q){let X=new Date().getTime()-J*86400*1000,{filter:Z,...W}=Q;return await this.fetchAll("app.bsky.feed.getAuthorFeed",{params:{actor:z,filter:Z,limit:100},field:"feed",breakWhen:(G)=>i1(G)<X,...W})}async loadListTimeline(z,J,Q={}){let X=new Date().getTime()-J*86400*1000;return await this.fetchAll("app.bsky.feed.getListFeed",{params:{list:z,limit:100},field:"feed",breakWhen:(Z)=>i1(Z)<X,...Q})}async loadPost(z){let J=await this.loadPosts([z]);if(J.length==1)return J[0];else throw new pJ("Post not found")}async loadPostIfExists(z){return(await this.loadPosts([z]))[0]}async loadPosts(z){if(z.length>0)return(await this.getRequest("app.bsky.feed.getPosts",{uris:z})).posts;else return[]}async loadPostViewerInfo(z){let J=await this.loadPostIfExists(z.uri);if(J)z.author=J.author,z.viewerData=J.viewer,z.viewerLike=J.viewer?.like;return J}async reloadBlockedPost(z){let{repo:J}=m0(z),Q=U8.loadPostIfExists(z),K=this.getRequest("app.bsky.actor.getProfile",{actor:J}),X=await Q;if(!X)return null;let Z=await K;return new S0(X,{author:Z})}}class QZ{user;constructor(){let z=localStorage.getItem("userData");this.user=z?JSON.parse(z):{}}save(){if(this.user)localStorage.setItem("userData",JSON.stringify(this.user));else localStorage.removeItem("userData")}}class W9 extends e1{user;constructor(){let z=new QZ,J=z.user.pdsEndpoint||null;super(J,z);this.user=z.user}async getCurrentUserAvatar(){return(await this.getRequest("com.atproto.repo.getRecord",{repo:this.user.did,collection:"app.bsky.actor.profile",rkey:"self"})).value.avatar}async loadCurrentUserAvatar(){if(!this.config||!this.config.user)throw new B8("User isn't logged in");let z=await this.getCurrentUserAvatar();if(z){let J=`https://cdn.bsky.app/img/avatar/plain/${this.user.did}/${z.ref.$link}@jpeg`;return this.config.user.avatar=J,this.config.save(),J}else return null}async loadNotifications(z){return await this.getRequest("app.bsky.notification.listNotifications",z||{})}async loadMentions(z){let J=await this.loadNotifications({cursor:z??"",limit:100,reasons:["reply","mention"]}),Q=J.notifications.map((Z)=>Z.uri),K=[];for(let Z=0;Z<Q.length;Z+=25){let W=this.loadPosts(Q.slice(Z,Z+25));K.push(W)}let X=await Promise.all(K);return{cursor:J.cursor,posts:X.flat()}}async loadHomeTimeline(z,J={}){let K=new Date().getTime()-z*86400*1000;return await this.fetchAll("app.bsky.feed.getTimeline",{params:{limit:100},field:"feed",breakWhen:(X)=>i1(X)<K,...J})}async loadUserLists(){return(await this.fetchAll("app.bsky.graph.getLists",{params:{actor:this.user.did,limit:100},field:"lists"})).filter((J)=>J.purpose=="app.bsky.graph.defs#curatelist")}async likePost(z){return await this.postRequest("com.atproto.repo.createRecord",{repo:this.user.did,collection:"app.bsky.feed.like",record:{subject:{uri:z.uri,cid:z.cid},createdAt:new Date().toISOString()}})}async removeLike(z){let{rkey:J}=m0(z);await this.postRequest("com.atproto.repo.deleteRecord",{repo:this.user.did,collection:"app.bsky.feed.like",rkey:J})}resetTokens(){delete this.user.avatar,super.resetTokens()}}class KZ{#z;get data(){return Y(this.#z)}set data(z){R(this.#z,z,!0)}constructor(){let z=localStorage.getItem("settings");this.#z=f(x0(z?JSON.parse(z):{}))}save(){localStorage.setItem("settings",JSON.stringify(this.data))}logOut(){delete this.data.incognito,this.save()}get dateLocale(){return this.data.dateLocale}set dateLocale(z){this.data.dateLocale=z,this.save()}get incognitoMode(){return this.data.incognito}set incognitoMode(z){this.data.incognito=z,this.save()}get biohazardsEnabled(){return this.data.biohazard}set biohazardsEnabled(z){this.data.biohazard=z,this.save()}}var T0=new KZ;window.settings=T0;var U8=new e1("api.bsky.app"),g8=new e1("blue.mackuba.eu"),q0=new W9,N0;function dJ(){N0=q0.isLoggedIn&&!T0.incognitoMode?q0:U8,window.api=N0}dJ();window.AuthenticatedAPI=W9;window.BlueskyAPI=e1;window.Minisky=s5;window.appView=U8;window.blueAPI=g8;window.accountAPI=q0;function h8(){return location.origin+location.pathname}function L5(z){let J=new URL(h8());return J.searchParams.set("hash",z),J.toString()}function iJ(z){let J=new URL(h8());return J.searchParams.set("quotes",z),J.toString()}function v6(z){return B6(z.author.handle,z.rkey)}function B6(z,J){let Q=new URL(h8());return Q.searchParams.set("author",z),Q.searchParams.set("post",J),Q.toString()}function Qz(z){let J;try{J=new URL(z)}catch(Z){throw new a6(`${Z}`)}if(J.protocol!="https:"&&J.protocol!="http:")throw new a6("URL must start with http(s)://");let Q=J.pathname.split("/");if(Q.length<5||Q[1]!="profile"||Q[3]!="post")throw new a6("This is not a valid thread URL");let K=Q[2],X=Q[4];return{user:K,post:X}}function ZZ(z){return Object.fromEntries(new URLSearchParams(z))}var XZ="5";if(typeof window<"u")((window.__svelte??={}).v??=new Set).add(XZ);class _J extends Error{}class YZ extends Error{}async function WZ(z){let J;if(z.startsWith("did:plc:"))J=new URL(`https://plc.directory/${z}`);else if(z.startsWith("did:web:")){let Z=z.replace(/^did:web:/,"");J=new URL(`https://${Z}/.well-known/did.json`)}else throw new _J(`Unknown DID type: ${z}`);let Q=await fetch(J),K=await Q.text(),X=K.trim().length>0?JSON.parse(K):void 0;if(Q.status==200){let Z=(X.service||[]).find((W)=>W.id=="#atproto_pds");if(Z)return Z.serviceEndpoint.replace("https://","");else throw new _J("Missing #atproto_pds service definition")}else throw new o6(Q.status,X)}async function GZ(z){if(z.match(/^did:/))return await WZ(z);else if(z.match(/^[^@]+@[^@]+$/))return"bsky.social";else if(z.match(/^@?[\w\-]+(\.[\w\-]+)+$/)){z=z.replace(/^@/,"");let J=await U8.resolveHandle(z);return await WZ(J)}else throw new YZ("Please enter your handle or DID.")}class BZ{#z;#J;#Q;constructor(){this.#z=f(x0(q0.isLoggedIn)),this.#J=f(x0(q0.isLoggedIn?q0.user.avatar:void 0)),this.#Q=f(!1)}get isIncognito(){return!!T0.incognitoMode}toggleIncognitoMode(){T0.incognitoMode=!this.isIncognito,location.reload()}get loggedIn(){return Y(this.#z)}get avatarURL(){return Y(this.#J)}get avatarIsLoading(){return Y(this.#Q)}async logIn(z,J){let Q=await GZ(z);q0.host=Q,await q0.logIn(z,J),R(this.#z,!0),R(this.#Q,!0),dJ(),q0.loadCurrentUserAvatar().then((K)=>{R(this.#J,K||void 0,!0)}).catch((K)=>{console.log(K)}).finally(()=>{R(this.#Q,!1)})}logOut(){q0.resetTokens(),T0.logOut(),location.reload()}}var Y1=new BZ;var p4=L("<div><!></div>");function Zz(z,J){i(J,!0);let Q=R0(J,"onClose",3,void 0),K=R0(J,"id",3,void 0),X=s6(J,["$$slots","$$events","$$legacy","children","onClose","id"]);function Z(w){if(w.target===w.currentTarget)Q()?.()}var W=p4();W.__click=Z;var G=x(W);G8(G,()=>J.children),C(W),g(()=>{d(W,"id",K()),X1(W,1,`dialog ${J.class??""}`,"svelte-1fggtsn")}),V(z,W),_()}I0(["click"]);var d4=L(`<form method="get" class="svelte-1b6ue70"><i class="close fa-circle-xmark fa-regular"></i> <h2>☣️ Infohazard Warning</h2> <p>“<em>This thread is not a place of honor... no highly esteemed post is commemorated here... nothing valued is here.</em>”</p> <p>This feature allows access to comments in a thread which were hidden because one of the commenters has blocked another. Bluesky currently hides such comments to avoid escalating conflicts.</p> <p>Are you sure you want to enter?<br/>(You can toggle this in the menu in top-left corner.)</p> <p class="submit svelte-1b6ue70"><input type="submit" value="Show me the drama \uD83D\uDE08" class="svelte-1b6ue70"/> <input type="submit" value="Nope, I'd rather not \uD83D\uDE48" class="svelte-1b6ue70"/></p></form>`);function cJ(z,J){i(J,!0);let Q=R0(J,"onConfirm",3,void 0),K=R0(J,"onReject",3,void 0),X=R0(J,"onClose",3,void 0);function Z(G){G.preventDefault(),T0.biohazardsEnabled=!0,Q()?.(),X()?.()}function W(G){G.preventDefault(),T0.biohazardsEnabled=!1,K()?.(),X()?.()}Zz(z,{onClose:()=>X()?.(),children:(G,w)=>{var H=d4(),q=x(H);q.__click=function(...M){X()?.apply(this,M)};var F=S(q,10),B=x(F);B.__click=Z;var U=S(B,2);U.__click=W,C(F),C(H),V(G,H)},$$slots:{default:!0}}),_()}I0(["click"]);var i4=L('<i class="close fa-circle-xmark fa-regular svelte-1pnuyy2"></i>'),_4=L(`<div class="info-box svelte-1pnuyy2"><p class="svelte-1pnuyy2">Skythread doesn't support OAuth yet. For now, you need to use an "app password" here, which you can generate in the Bluesky app settings.</p> <p class="svelte-1pnuyy2">The password you enter here is only passed to the Bluesky API (PDS) and isn't saved anywhere. The returned access token is only stored in your browser's local storage. You can see the complete source code of this app <a href="http://tangled.org/@mackuba.eu/skythread" target="_blank" class="svelte-1pnuyy2">on Tangled</a>.</p></div>`),c4=L('<input type="submit" value="Log in" class="svelte-1pnuyy2"/>'),s4=L('<i class="cloudy fa-solid fa-cloud fa-beat fa-xl svelte-1pnuyy2"></i>'),o4=L('<form method="get" class="svelte-1pnuyy2"><!> <h2>\uD83C\uDF24 Skythread</h2> <p><input type="text" id="login_handle" required placeholder="name.bsky.social" class="svelte-1pnuyy2"/></p> <p><input type="password" id="login_password" required placeholder="✱✱✱✱✱✱✱✱" class="svelte-1pnuyy2"/></p> <p class="info svelte-1pnuyy2"><a href="#" class="svelte-1pnuyy2"><i class="fa-regular fa-circle-question"></i> Use an "app password" here</a></p> <!> <p class="submit"><!></p></form>');function sJ(z,J){i(J,!0);let Q=R0(J,"onClose",3,void 0),K=R0(J,"onLogin",3,void 0),X=f(""),Z=f(""),W=f(!1),G=f(!1),w,H;function q(){if(J.showClose&&Q())Q()()}function F(M){M.preventDefault(),R(W,!Y(W))}async function B(M){M.preventDefault(),R(G,!0),w.blur(),H.blur();try{await Y1.logIn(Y(X).trim(),Y(Z).trim()),K()?.(),Q()?.()}catch(P){R(G,!1),U(P)}}function U(M){if(console.log(M),M instanceof o6&&M.code==401&&M.json.error=="AuthFactorTokenRequired")alert('Please log in using an "app password" if you have 2FA enabled.');else window.setTimeout(()=>alert(M),10)}{let M=C0(()=>Y(W)?"expanded":"");Zz(z,{id:"login",get class(){return Y(M)},onClose:q,children:(P,O)=>{var j=o4(),T=x(j);{var E=(Q0)=>{var U0=i4();U0.__click=function(...D0){Q()?.apply(this,D0)},V(Q0,U0)};D(T,(Q0)=>{if(J.showClose)Q0(E)})}var N=S(T,4),y=x(N);$0(y),N8(y,!0),t1(y,(Q0)=>w=Q0,()=>w),C(N);var b=S(N,2),A=x(b);$0(A),t1(A,(Q0)=>H=Q0,()=>H),C(b);var k=S(b,2),$=x(k);$.__click=F,C(k);var v=S(k,2);{var l=(Q0)=>{var U0=_4();V(Q0,U0)};D(v,(Q0)=>{if(Y(W))Q0(l)})}var n=S(v,2),o=x(n);{var a=(Q0)=>{var U0=c4();V(Q0,U0)},X0=(Q0)=>{var U0=s4();V(Q0,U0)};D(o,(Q0)=>{if(!Y(G))Q0(a);else Q0(X0,!1)})}C(n),C(j),L1("submit",j,B),P1(y,()=>Y(X),(Q0)=>R(X,Q0)),P1(A,()=>Y(Z),(Q0)=>R(Z,Q0)),V(P,j)},$$slots:{default:!0}})}_()}I0(["click"]);var Y9=f(!1),HZ=f(!1),G9=f(!1),wZ=f(void 0);function P5(z){if(!Y(Y9))R(Y9,!0),R(HZ,z.showClose,!0)}function UZ(z){if(!Y(G9))R(G9,!0),R(wZ,z,!0)}function oJ(z){var J=c(),Q=h(J);{var K=(Z)=>{sJ(Z,{onClose:()=>R(Y9,!1),get showClose(){return Y(HZ)}})},X=(Z)=>{var W=c(),G=h(W);{var w=(H)=>{cJ(H,{onClose:()=>R(G9,!1),onConfirm:()=>Y(wZ)?.()})};D(G,(H)=>{if(Y(G9))H(w)},!0)}V(Z,W)};D(Q,(Z)=>{if(Y(Y9))Z(K);else Z(X,!1)})}V(z,J)}var a4=L('<span class="check">✓</span>'),r4=L('<li class="svelte-1obod96"><a class="button svelte-1obod96" href="#"><!> </a></li>');function I5(z,J){let Q=R0(J,"title",3,void 0),K=R0(J,"showCheckmark",3,!1);var X=r4(),Z=x(X);Z.__click=function(...H){J.onclick?.apply(this,H)};var W=x(Z);{var G=(H)=>{var q=a4();V(H,q)};D(W,(H)=>{if(K())H(G)})}var w=S(W);C(Z),C(X),g(()=>{d(Z,"title",Q()),u(w,` ${J.label??""}`)}),V(z,X)}I0(["click"]);var n4=L("<!> <img/>",1),t4=L("<img/>");function aJ(z,J){let Q=s6(J,["$$slots","$$events","$$legacy","loading","error"]),K=f(void 0);function X(){R(K,"loaded")}function Z(){R(K,"error")}var W=c(),G=h(W);{var w=(q)=>{var F=n4(),B=h(F);G8(B,()=>J.loading);var U=S(B,2);cz(U,()=>({...Q,style:"display: none",onload:X,onerror:Z})),Y5(U),V(q,F)},H=(q)=>{var F=c(),B=h(F);{var U=(P)=>{var O=t4();cz(O,()=>({...Q})),Y5(O),V(P,O)},M=(P)=>{var O=c(),j=h(O);G8(j,()=>J.error),V(P,O)};D(B,(P)=>{if(Y(K)=="loaded")P(U);else P(M,!1)},!0)}V(q,F)};D(G,(q)=>{if(!Y(K))q(w);else q(H,!1)})}V(z,W)}var e4=L('<i class="fa-solid fa-user-secret fa-lg svelte-jzoz05"></i>'),zX=L('<i class="fa-regular fa-user-circle fa-xl svelte-jzoz05"></i>'),JX=L('<i class="fa-regular fa-user-circle fa-xl svelte-jzoz05"></i>'),QX=L('<i class="fa-solid fa-user-circle fa-xl svelte-jzoz05"></i>'),KX=L('<i class="fa-solid fa-user-circle fa-xl svelte-jzoz05"></i>'),ZX=L('<div id="account"><!></div> <div id="account_menu" class="svelte-jzoz05"><ul class="svelte-jzoz05"><!> <!> <!> <li class="link svelte-jzoz05"><a class="svelte-jzoz05">Home</a></li> <li class="link svelte-jzoz05"><a href="?page=posting_stats" class="svelte-jzoz05">Posting stats</a></li> <li class="link svelte-jzoz05"><a href="?page=like_stats" class="svelte-jzoz05">Like stats</a></li> <li class="link svelte-jzoz05"><a href="?page=search" class="svelte-jzoz05">Timeline search</a></li> <li class="link svelte-jzoz05"><a href="?page=search&mode=likes" class="svelte-jzoz05">Archive search</a></li></ul></div>',1);function rJ(z,J){i(J,!0);let Q=f(!1);Z1(()=>{let k=document.body.parentNode;return k.addEventListener("click",K),()=>{k.removeEventListener("click",K)}});function K(){R(Q,!1)}function X(k){k.stopPropagation(),R(Q,!Y(Q))}function Z(k){if(k.preventDefault(),T0.biohazardsEnabled===!1)T0.biohazardsEnabled=!0;else T0.biohazardsEnabled=!1}function W(k){k.preventDefault(),Y1.toggleIncognitoMode()}function G(k){k.preventDefault(),P5({showClose:!0}),R(Q,!1)}function w(k){k.preventDefault(),Y1.logOut()}var H=ZX(),q=h(H);q.__click=X;var F=x(q);{var B=(k)=>{var $=e4();V(k,$)},U=(k)=>{var $=c(),v=h($);{var l=(o)=>{var a=zX();V(o,a)},n=(o)=>{var a=c(),X0=h(a);{var Q0=(D0)=>{aJ(D0,{class:"avatar",get src(){return Y1.avatarURL},loading:(s)=>{var V0=JX();V(s,V0)},error:(s)=>{var V0=QX();V(s,V0)},$$slots:{loading:!0,error:!0}})},U0=(D0)=>{var M0=KX();V(D0,M0)};D(X0,(D0)=>{if(Y1.loggedIn&&Y1.avatarURL)D0(Q0);else D0(U0,!1)},!0)}V(o,a)};D(v,(o)=>{if(!Y1.loggedIn||Y1.avatarIsLoading)o(l);else o(n,!1)},!0)}V(k,$)};D(F,(k)=>{if(Y1.isIncognito)k(B);else k(U,!1)})}C(q);var M=S(q,2);M.__click=(k)=>k.stopPropagation();var P=x(M),O=x(P);{var j=(k)=>{I5(k,{onclick:W,label:"Incognito mode",title:"Temporarily load threads as a logged-out user",get showCheckmark(){return Y1.isIncognito}})};D(O,(k)=>{if(Y1.loggedIn)k(j)})}var T=S(O,2);{let k=C0(()=>T0.biohazardsEnabled!==!1);I5(T,{onclick:Z,label:"Show infohazards",title:"Show links to blocked and hidden comments",get showCheckmark(){return Y(k)}})}var E=S(T,2);{var N=(k)=>{I5(k,{onclick:G,label:"Log in"})},y=(k)=>{I5(k,{onclick:w,label:"Log out"})};D(E,(k)=>{if(!Y1.loggedIn)k(N);else k(y,!1)})}var b=S(E,2),A=x(b);C(b),c0(8),C(P),C(M),g((k)=>{X1(q,1,T8({active:Y(Q)}),"svelte-jzoz05"),c6(M,`visibility: ${Y(Q)?"visible":"hidden"}`),d(A,"href",k)},[h8]),V(z,H),_()}I0(["click"]);var f8,nJ;function V8(z){if(f8)document.removeEventListener("scroll",f8);nJ?.disconnect(),f8=()=>{if(window.pageYOffset+window.innerHeight>document.body.offsetHeight-500)z(f8)},z(f8),document.addEventListener("scroll",f8),nJ=new ResizeObserver(f8),nJ.observe(document.body)}gQ();var XX=L('<div id="loader" class="svelte-1larzq0"><img src="icons/sunny.png" alt="Loading..." class="svelte-1larzq0"/></div>');function n6(z){var J=XX();V(z,J)}var WX=L('<div class="margin svelte-qe4209"><div class="edge svelte-qe4209"><div class="line svelte-qe4209"></div></div> <img class="plus svelte-qe4209"/></div>');function tJ(z,J){i(J,!0);let Q=R0(J,"collapsed",15,!1);function K(){Q(!Q())}var X=WX(),Z=x(X);Z.__click=K;var W=S(Z,2);W.__click=K,C(X),g(()=>{d(W,"alt",Q()?"+":"-"),d(W,"src",`icons/${Q()?"add-square.png":"subtract-square.png"}`)}),V(z,X),_()}I0(["click"]);var YX=L('<a class="fedi-link svelte-ul6xja" target="_blank"><div class="svelte-ul6xja"><i class="fa-solid fa-arrow-up-right-from-square fa-sm svelte-ul6xja"></i> </div></a>');function eJ(z,J){i(J,!0);let Q=C0(()=>new URL(J.url).hostname);var K=YX(),X=x(K),Z=S(x(X));C(X),C(K),g(()=>{d(K,"href",J.url),u(Z,` View on ${Y(Q)??""}`)}),V(z,K),_()}var GX=L('☣️ <a class="svelte-1epmfrv">Load hidden replies…</a>',1),BX=L('<img class="loader" src="icons/sunny.png" alt="Loading..."/>'),HX=L('<p class="hidden-replies svelte-1epmfrv"><!></p>');function z7(z,J){i(J,!0);let{post:Q}=J1(),K=f(!1);function X(q){if(q.preventDefault(),T0.biohazardsEnabled===!0)Z();else UZ(()=>{Z()})}async function Z(){R(K,!0);try{let F=(await N0.loadHiddenReplies(Q)).map((B)=>B&&w8(B.thread,Q.pageRoot,1,Q.absoluteLevel+1));R(K,!1),J.onLoad(F)}catch(q){R(K,!1),J.onError(q)}}var W=HX(),G=x(W);{var w=(q)=>{var F=GX(),B=S(h(F));B.__click=X,g((U)=>d(B,"href",U),[()=>v6(Q)]),V(q,F)},H=(q)=>{var F=BX();V(q,F)};D(G,(q)=>{if(!Y(K))q(w);else q(H,!1)})}C(W),V(z,W),_()}I0(["click"]);var wX=L("<a>Load more replies…</a>"),UX=L('<img class="loader" src="icons/sunny.png" alt="Loading..."/>'),VX=L("<p><!></p>");function J7(z,J){i(J,!0);let{post:Q}=J1(),K=f(!1);async function X(H){H.preventDefault(),R(K,!0);try{let q=await N0.loadThreadByAtURI(Q.uri),F=w8(q.thread,Q.pageRoot,0,Q.absoluteLevel);if(R(K,!1),F instanceof S0)window.subtreeRoot=F,J.onLoad(F);else J.onError(Error("Post is not available"))}catch(q){R(K,!1),J.onError(q)}}var Z=VX(),W=x(Z);{var G=(H)=>{var q=wX();q.__click=X,g((F)=>d(q,"href",F),[()=>v6(Q)]),V(H,q)},w=(H)=>{var q=UX();V(H,q)};D(W,(H)=>{if(!Y(K))H(G);else H(w,!1)})}C(Z),V(z,Z),_()}I0(["click"]);class S5{text;facet;constructor(z,J){this.text=z;this.facet=J}get link(){return this.facet?.features.find((z)=>z.$type==="app.bsky.richtext.facet#link")}isLink(){return!!this.link}get mention(){return this.facet?.features.find((z)=>z.$type==="app.bsky.richtext.facet#mention")}isMention(){return!!this.mention}get tag(){return this.facet?.features.find((z)=>z.$type==="app.bsky.richtext.facet#tag")}isTag(){return!!this.tag}}class Q7{unicodeText;facets;constructor(z){if(this.unicodeText=new VZ(z.text),this.facets=z.facets,this.facets)this.facets=this.facets.filter(qX).sort(FX)}get text(){return this.unicodeText.toString()}get length(){return this.unicodeText.length}get graphemeLength(){return this.unicodeText.graphemeLength}*segments(){let z=this.facets||[];if(!z.length){yield new S5(this.unicodeText.utf16);return}let J=0,Q=0;do{let K=z[Q];if(J<K.index.byteStart)yield new S5(this.unicodeText.slice(J,K.index.byteStart));else if(J>K.index.byteStart){Q++;continue}if(K.index.byteStart<K.index.byteEnd){let X=this.unicodeText.slice(K.index.byteStart,K.index.byteEnd);if(!X.trim())yield new S5(X);else yield new S5(X,K)}J=K.index.byteEnd,Q++}while(Q<z.length);if(J<this.unicodeText.length)yield new S5(this.unicodeText.slice(J,this.unicodeText.length))}}var FX=(z,J)=>z.index.byteStart-J.index.byteStart,qX=(z)=>z.index.byteStart<=z.index.byteEnd,MX=new TextEncoder,CX=new TextDecoder,xX=new Intl.Segmenter,OX=(z)=>{return Array.from(xX.segment(z)).length};class VZ{utf16;utf8;_graphemeLen;constructor(z){this.utf16=z,this.utf8=MX.encode(z)}get length(){return this.utf8.byteLength}get graphemeLength(){if(!this._graphemeLen)this._graphemeLen=OX(this.utf16);return this._graphemeLen}slice(z,J){return CX.decode(this.utf8.slice(z,J))}toString(){return this.utf16}}var LX=L("<a> </a>"),PX=L("<a> </a>"),IX=L("<a> </a>"),SX=L("<br/>"),DX=L("<!> ",1);function K7(z,J){i(J,!0);let Q=C0(()=>new Q7({text:J.text,facets:J.facets})),K=C0(()=>Y(Q).segments());var X=c(),Z=h(X);A0(Z,17,()=>Y(K),O1,(W,G)=>{var w=c(),H=h(w);{var q=(B)=>{var U=LX(),M=x(U,!0);C(U),g(()=>{d(U,"href",`https://bsky.app/profile/${Y(G).mention.did??""}`),u(M,Y(G).text)}),V(B,U)},F=(B)=>{var U=c(),M=h(U);{var P=(j)=>{var T=PX(),E=x(T,!0);C(T),g(()=>{d(T,"href",Y(G).link.uri),u(E,Y(G).text)}),V(j,T)},O=(j)=>{var T=c(),E=h(T);{var N=(b)=>{var A=IX(),k=x(A,!0);C(A),g(($)=>{d(A,"href",$),u(k,Y(G).text)},[()=>L5(Y(G).tag.tag)]),V(b,A)},y=(b)=>{let A=C0(()=>Y(G).text.split(`
50
50
+
`));var k=c(),$=h(k);A0($,17,()=>Y(A),O1,(v,l,n)=>{var o=DX(),a=h(o);{var X0=(U0)=>{var D0=SX();V(U0,D0)};D(a,(U0)=>{if(n>0)U0(X0)})}var Q0=S(a,1,!0);g(()=>u(Q0,Y(l))),V(v,o)}),V(b,k)};D(E,(b)=>{if(Y(G).tag)b(N);else b(y,!1)},!0)}V(j,T)};D(M,(j)=>{if(Y(G).link)j(P);else j(O,!1)},!0)}V(B,U)};D(H,(B)=>{if(Y(G).mention)B(q);else B(F,!1)})}V(W,w)}),V(z,X),_()}var RX=L('<div class="bridged-body svelte-rk6ws2"><!></div>'),jX=L('<p class="body svelte-rk6ws2"><!></p>');function Xz(z,J){i(J,!0);let Q="search-results",{post:K}=J1(),X=R0(J,"highlightedMatches",3,void 0),Z=f(void 0);function W(F){let B=new RegExp(`\\b(${F.join("|")})\\b`,"gi"),U=document.createTreeWalker(Y(Z),NodeFilter.SHOW_TEXT),M=[];while(U.nextNode()){let O=U.currentNode;if(!O.textContent)continue;B.lastIndex=0;for(;;){let j=B.exec(O.textContent);if(j===null)break;let T=new Range;T.setStart(O,j.index),T.setEnd(O,j.index+j[0].length),M.push(T)}}let P=CSS.highlights.get(Q)||new Highlight;M.forEach((O)=>P.add(O)),CSS.highlights.set(Q,P)}Z1(()=>{if(X()&&X().length>0)return W(X()),()=>{CSS.highlights.delete(Q)};else return});var G=c(),w=h(G);{var H=(F)=>{var B=RX(),U=x(B);VJ(U,()=>nK(K.originalFediContent)),C(B),t1(B,(M)=>R(Z,M),()=>Y(Z)),V(F,B)},q=(F)=>{var B=jX(),U=x(B);K7(U,{get text(){return K.text},get facets(){return K.facets}}),C(B),t1(B,(M)=>R(Z,M),()=>Y(Z)),V(F,B)};D(w,(F)=>{if(K.originalFediContent)F(H);else F(q,!1)})}V(z,G),_()}class Z7{post;placement;constructor(z,J){this.post=z,this.placement=J}get timeFormatForTimestamp(){if(this.placement=="quotes"||this.placement=="feed")return{weekday:"short",day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"numeric"};else if(this.post.isPageRoot||this.placement!="thread")return{day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"numeric"};else if(this.post.pageRoot&&!eK(this.post.createdAt,this.post.pageRoot.createdAt))return{day:"numeric",month:"short",hour:"numeric",minute:"numeric"};else return{hour:"numeric",minute:"numeric"}}get formattedTimestamp(){let z=this.timeFormatForTimestamp;return this.post.createdAt.toLocaleString(T0.dateLocale,z)}}var AX=L('<a class="action"><i class="fa-solid fa-arrows-split-up-and-left fa-rotate-180"></i></a>');function D5(z,J){i(J,!0);let Q=R0(J,"title",3,"");var K=AX();g((X)=>{d(K,"href",X),d(K,"title",Q())},[()=>v6(J.post)]),V(z,K),_()}var NX=L('<i class="muted-avatar fa-regular fa-circle-user fa-2x svelte-b7kxl"></i>'),kX=L('<img class="avatar svelte-b7kxl" alt="Avatar" loading="lazy"/>'),bX=L('<i class="no-avatar fa-regular fa-face-smile fa-2x svelte-b7kxl"></i>'),TX=L('<a class="handle svelte-b7kxl" target="_blank"> </a> <img src="icons/mastodon.svg" class="mastodon svelte-b7kxl" alt="Mastodon logo"/>',1),EX=L('<a class="handle svelte-b7kxl" target="_blank"> </a>'),yX=L('<span class="separator svelte-b7kxl">•</span> <!>',1),vX=L('<h2 class="svelte-b7kxl"><!> <!> <span class="separator svelte-b7kxl">•</span> <a class="time svelte-b7kxl" target="_blank"> </a> <!></h2>');function X7(z,J){i(J,!0);let{post:Q,placement:K}=J1(),X=new Z7(Q,K),Z=f(void 0);Z1(()=>{if(Y(Z))TJ.observe(Y(Z));return()=>{Y(Z)&&TJ.unobserve(Y(Z))}});var W=vX(),G=x(W);{var w=(T)=>{var E=NX();V(T,E)},H=(T)=>{var E=c(),N=h(E);{var y=(A)=>{var k=kX();t1(k,($)=>R(Z,$),()=>Y(Z)),g(()=>d(k,"src",Q.author.avatar)),V(A,k)},b=(A)=>{var k=bX();V(A,k)};D(N,(A)=>{if(Q.author.avatar)A(y);else A(b,!1)},!0)}V(T,E)};D(G,(T)=>{if(Q.muted)T(w);else T(H,!1)})}var q=S(G),F=S(q);{var B=(T)=>{var E=TX(),N=h(E),y=x(N);C(N),c0(2),g(()=>{d(N,"href",Q.linkToAuthor),u(y,`@${Q.authorFediHandle??""}`)}),V(T,E)},U=(T)=>{var E=EX(),N=x(E,!0);C(E),g(()=>{d(E,"href",Q.linkToAuthor),u(N,Q.hasValidHandle?`@${Q.author.handle}`:"[invalid handle]")}),V(T,E)};D(F,(T)=>{if(Q.isFediPost)T(B);else T(U,!1)})}var M=S(F,4),P=x(M,!0);C(M);var O=S(M,2);{var j=(T)=>{var E=yX(),N=S(h(E),2);{var y=(A)=>{D5(A,{get post(){return Q},title:"Load thread"})},b=(A)=>{D5(A,{get post(){return Q},title:"Load this subtree"})};D(N,(A)=>{if(["quote","quotes","feed"].includes(K))A(y);else A(b,!1)})}V(T,E)};D(O,(T)=>{if(Q.replyCount>0&&!Q.isPageRoot||["quote","quotes","feed"].includes(K))T(j)})}C(W),g((T)=>{u(q,` ${Q.authorDisplayName??""} `),d(M,"href",Q.linkToPost),d(M,"title",T),u(P,X.formattedTimestamp)},[()=>Q.createdAt.toISOString()]),V(z,W),_()}var gX=L('<a class="svelte-1d08m6n"> </a>'),hX=L('<p class="tags"></p>');function W7(z,J){i(J,!1);let{post:Q}=J1();RJ();var K=hX();A0(K,5,()=>Q.tags,O1,(X,Z)=>{var W=gX(),G=x(W);C(W),g((w)=>{d(W,"href",w),u(G,`# ${Y(Z)??""}`)},[()=>L5(Y(Z))]),V(X,W)}),C(K),V(z,K),_()}var fX=L('<span class="svelte-14wd2aa"><i class="fa-solid fa-retweet svelte-14wd2aa"></i> </span>'),mX=L('<span class="svelte-14wd2aa"><i class="fa-regular fa-message svelte-14wd2aa"></i> <a class="svelte-14wd2aa"> </a></span>'),$X=L('<span class="svelte-14wd2aa"><i class="fa-regular fa-comments svelte-14wd2aa"></i> <a class="svelte-14wd2aa"> </a></span>'),uX=L('<a class="svelte-14wd2aa"><i class="fa-regular fa-comments svelte-14wd2aa"></i> </a>'),lX=L('<span class="svelte-14wd2aa"><i class="fa-solid fa-ban svelte-14wd2aa"></i> Limited replies</span>'),pX=L('<span class="blocked-info svelte-14wd2aa">\uD83D\uDEAB Post unavailable</span>'),dX=L('<p class="stats svelte-14wd2aa"><span class="svelte-14wd2aa"><i></i> <output> </output></span> <!> <!> <!> <!> <!></p>');function Y7(z,J){i(J,!0);let{post:Q,placement:K}=J1(),X=f(x0(Q.liked)),Z=f(x0(Q.likeCount)),W=f(!1);async function G(){try{if(Q.hasViewerInfo)await H();else if(Y1.loggedIn)await w();else P5({showClose:!0})}catch($){H8($)}}async function w(){if(await q0.loadPostViewerInfo(Q))if(Q.liked)R(X,!0);else await H();else R(W,!0)}async function H(){if(!Y(X)){let $=await q0.likePost(Q);Q.viewerLike=$.uri,R(X,!0),R(Z,Y(Z)+1)}else await q0.removeLike(Q.viewerLike),Q.viewerLike=void 0,R(X,!1),R(Z,Y(Z)-1)}var q=dX(),F=x(q),B=x(F);B.__click=G;var U=S(B,2),M=x(U,!0);C(U),C(F);var P=S(F,2);{var O=($)=>{var v=fX(),l=S(x(v));C(v),g(()=>u(l,` ${Q.repostCount??""}`)),V($,v)};D(P,($)=>{if(Q.repostCount>0)$(O)})}var j=S(P,2);{var T=($)=>{var v=mX(),l=S(x(v),2),n=x(l,!0);C(l),C(v),g((o,a)=>{d(l,"href",o),u(n,a)},[()=>v6(Q),()=>tz(Q.replyCount,"reply","replies")]),V($,v)};D(j,($)=>{if(Q.replyCount>0&&(K=="quotes"||K=="feed"))$(T)})}var E=S(j,2);{var N=($)=>{var v=c(),l=h(v);{var n=(a)=>{var X0=$X(),Q0=S(x(X0),2),U0=x(Q0,!0);C(Q0),C(X0),g((D0,M0)=>{d(Q0,"href",D0),u(U0,M0)},[()=>iJ(Q.linkToPost),()=>tz(J.quoteCount,"quote")]),V(a,X0)},o=(a)=>{var X0=uX(),Q0=S(x(X0));C(X0),g((U0)=>{d(X0,"href",U0),u(Q0,` ${J.quoteCount??""}`)},[()=>iJ(Q.linkToPost)]),V(a,X0)};D(l,(a)=>{if(K=="quotes"||K=="feed"||Q.isPageRoot)a(n);else a(o,!1)})}V($,v)};D(E,($)=>{if(J.quoteCount&&K!="quote")$(N)})}var y=S(E,2);{var b=($)=>{var v=lX();V($,v)};D(y,($)=>{if(K=="thread"&&Q.isRestrictingReplies)$(b)})}var A=S(y,2);{var k=($)=>{var v=pX();V($,v)};D(A,($)=>{if(Y(W))$(k)})}C(q),g(()=>{X1(B,1,`fa-solid fa-heart ${Y(X)?"liked":""}`,"svelte-14wd2aa"),u(M,Y(Z))}),V(z,q),_()}I0(["click"]);var iX=L('<details class="image-alt svelte-1d4qxx0"><summary class="svelte-1d4qxx0">Show alt</summary> </details>'),_X=L("<p>[<a>Image</a>]</p> <!>",1),cX=L("<div></div>");function G7(z,J){i(J,!0);let{post:Q}=J1();function K(Z){if(Z.fullsize)return Z.fullsize;else{let W=Z.image.ref.$link;return`https://cdn.bsky.app/img/feed_fullsize/plain/${Q.author.did}/${W}@jpeg`}}var X=cX();A0(X,21,()=>J.embed.images,O1,(Z,W)=>{var G=_X(),w=h(G),H=S(x(w));c0(),C(w);var q=S(w,2);{var F=(B)=>{var U=iX(),M=S(x(U));C(U),g(()=>u(M,` ${Y(W).alt??""}`)),V(B,U)};D(q,(B)=>{if(Y(W).alt)B(F)})}g((B)=>d(H,"href",B),[()=>K(Y(W))]),V(Z,G)}),C(X),V(z,X),_()}var sX=L('<div class="gif svelte-1g38dct"><img/></div>');function B7(z,J){let Q=f(!1),K=f(!1),X=f(500),Z=f(200);function W(F){let B=F.target;if(B.naturalWidth<B.naturalHeight)R(X,200),R(Z,400);R(Q,!0)}function G(){R(K,!Y(K))}var w=sX(),H=x(w);H.__click=G;let q;C(w),g(()=>{d(H,"src",Y(K)?J.staticURL:J.gifURL),X1(H,1,T8(Y(K)?"static":""),"svelte-1g38dct"),d(H,"alt",J.alt?`Gif: ${J.alt}`:"Gif animation"),q=c6(H,"",q,{opacity:Y(Q)?1:0,"max-width":`${Y(X)??""}px`,"max-height":`${Y(Z)??""}px`})}),L1("load",H,W),Y5(H),V(z,w)}I0(["click"]);var oX=L('<p class="description"> </p>'),aX=L('<a class="link-card" target="_blank"><div><p class="domain"> </p> <h2> </h2> <!></div></a>'),rX=L("<p>[Link: <a> </a>]</p>");function H7(z,J){i(J,!0);let{post:Q}=J1(),K=f(!1),X=C0(()=>new URL(J.embed.url).hostname),Z=C0(()=>Y(X)=="media.tenor.com"),W=C0(()=>Y(Z)?G:void 0);function G(U){U.preventDefault(),R(K,!0)}function w(){if(typeof J.embed.thumb=="string")return J.embed.thumb;else return`https://cdn.bsky.app/img/avatar/feed_thumbnail/${Q.author.did}/${J.embed.thumb.ref.$link}@jpeg`}var H=c(),q=h(H);{var F=(U)=>{{let M=C0(w);B7(U,{get gifURL(){return J.embed.url},get staticURL(){return Y(M)},get alt(){return J.embed.title}})}},B=(U)=>{var M=c(),P=h(M);{var O=(T)=>{var E=aX();E.__click=function(...l){Y(W)?.apply(this,l)};var N=x(E),y=x(N),b=x(y,!0);C(y);var A=S(y,2),k=x(A,!0);C(A);var $=S(A,2);{var v=(l)=>{var n=oX(),o=x(n,!0);C(n),g((a)=>u(o,a),[()=>tK(J.embed.description,300)]),V(l,n)};D($,(l)=>{if(J.embed.description)l(v)})}C(N),C(E),g(()=>{d(E,"href",J.embed.url),u(b,Y(X)),u(k,J.embed.title||J.embed.url)}),V(T,E)},j=(T)=>{var E=rX(),N=S(x(E)),y=x(N,!0);C(N),c0(),C(E),g(()=>{d(N,"href",J.embed.url),u(y,J.embed.title||J.embed.url)}),V(T,E)};D(P,(T)=>{if(ez(J.embed.url))T(O);else T(j,!1)})}V(U,M)};D(q,(U)=>{if(Y(K))U(F);else U(B,!1)})}V(z,H),_()}I0(["click"]);var nX=L('<img class="avatar" alt="Avatar"/>'),tX=L('<p class="description"> </p>'),eX=L('<a class="link-card record" target="_blank"><div><!> <h2> <span class="handle"> </span></h2> <!> <p class="stats"><i class="fa-solid fa-heart"></i> <output> </output></p></div></a>');function w7(z,J){i(J,!0);function Q(O){let{repo:j,rkey:T}=m0(O.uri);return`https://bsky.app/profile/${j}/feed/${T}`}var K=eX(),X=x(K),Z=x(X);{var W=(O)=>{var j=nX();g(()=>d(j,"src",J.feed.avatar)),V(O,j)};D(Z,(O)=>{if(J.feed.avatar)O(W)})}var G=S(Z,2),w=x(G),H=S(w),q=x(H);C(H),C(G);var F=S(G,2);{var B=(O)=>{var j=tX(),T=x(j,!0);C(j),g(()=>u(T,J.feed.description)),V(O,j)};D(F,(O)=>{if(J.feed.description)O(B)})}var U=S(F,2),M=S(x(U),2),P=x(M,!0);C(M),C(U),C(X),C(K),g((O)=>{d(K,"href",O),u(w,`${J.feed.title??""} `),u(q,`• Feed by @${J.feed.author.handle??""}`),u(P,J.feed.likeCount)},[()=>Q(J.feed)]),V(z,K),_()}var zW=L('<p class="description"> </p>'),JW=L('<a class="link-card record" target="_blank"><div><h2> <span class="handle"> </span></h2> <!></div></a>');function U7(z,J){i(J,!0);function Q(F){let{repo:B,rkey:U}=m0(F.uri);return`https://bsky.app/starter-pack/${B}/${U}`}var K=JW(),X=x(K),Z=x(X),W=x(Z),G=S(W),w=x(G);C(G),C(Z);var H=S(Z,2);{var q=(F)=>{var B=zW(),U=x(B,!0);C(B),g(()=>u(U,J.starterPack.description)),V(F,B)};D(H,(F)=>{if(J.starterPack.description)F(q)})}C(X),C(K),g((F)=>{d(K,"href",F),u(W,`${J.starterPack.title??""} `),u(w,`• Starter pack by @${J.starterPack.author.handle??""}`)},[()=>Q(J.starterPack)]),V(z,K),_()}var QW=L('<img class="avatar" alt="Avatar"/>'),KW=L('<p class="description"> </p>'),ZW=L('<a class="link-card record" target="_blank"><div><!> <h2> <span class="handle"> </span></h2> <!></div></a>');function V7(z,J){i(J,!0);function Q(M){let{repo:P,rkey:O}=m0(M.uri);return`https://bsky.app/profile/${P}/lists/${O}`}function K(M){switch(M.purpose){case"app.bsky.graph.defs#curatelist":return"User list";case"app.bsky.graph.defs#modlist":return"Mute list";default:return"List"}}var X=ZW(),Z=x(X),W=x(Z);{var G=(M)=>{var P=QW();g(()=>d(P,"src",J.list.avatar)),V(M,P)};D(W,(M)=>{if(J.list.avatar)M(G)})}var w=S(W,2),H=x(w),q=S(H),F=x(q);C(q),C(w);var B=S(w,2);{var U=(M)=>{var P=KW(),O=x(P,!0);C(P),g(()=>u(O,J.list.description)),V(M,P)};D(B,(M)=>{if(J.list.description)M(U)})}C(Z),C(X),g((M,P)=>{d(X,"href",M),u(H,`${J.list.title??""} `),u(F,`• ${P??""} by @${J.list.author.handle??""}`)},[()=>Q(J.list),()=>K(J.list)]),V(z,X),_()}var FZ=(z,J=J6)=>{var Q=c(),K=h(Q);{var X=(W)=>{var G=XW(),w=x(G);m8(w,{get post(){return J()},placement:"quote"}),C(G),V(W,G)},Z=(W)=>{var G=c(),w=h(G);{var H=(F)=>{w7(F,{get feed(){return J()}})},q=(F)=>{var B=c(),U=h(B);{var M=(O)=>{U7(O,{get starterPack(){return J()}})},P=(O)=>{var j=c(),T=h(j);{var E=(y)=>{V7(y,{get list(){return J()}})},N=(y)=>{var b=WW(),A=x(b),k=x(A);C(A),C(b),g(()=>u(k,`[${J().type??""}]`)),V(y,b)};D(T,(y)=>{if(J()instanceof zz)y(E);else y(N,!1)},!0)}V(O,j)};D(U,(O)=>{if(J()instanceof Jz)O(M);else O(P,!1)},!0)}V(F,B)};D(w,(F)=>{if(J()instanceof e5)F(H);else F(q,!1)},!0)}V(W,G)};D(K,(W)=>{if(J()instanceof v8)W(X);else W(Z,!1)})}V(z,Q)},XW=L('<div class="quote-embed svelte-qy2yyv"><!></div>'),WW=L('<div class="quote-embed svelte-qy2yyv"><p> </p></div>'),YW=L('<div class="quote-embed svelte-qy2yyv"><p class="post placeholder svelte-qy2yyv">Error loading quoted post</p></div>'),GW=L('<div class="quote-embed svelte-qy2yyv"><p class="post placeholder svelte-qy2yyv">Loading quoted post...</p></div>');function H9(z,J){i(J,!0);let{post:Q}=J1();async function K(){let{collection:w}=m0(J.record.uri);if(w=="app.bsky.feed.post"){let H=await N0.loadPostIfExists(J.record.uri);if(H)return new S0(H);else return new P6(Q.data)}else{let q=(await N0.loadPostIfExists(Q.uri).then((F)=>F&&new S0(F)))?.embed;if(q instanceof q5||q instanceof M5)return q.record;else return new P6(J.record)}}var X=c(),Z=h(X);{var W=(w)=>{var H=c(),q=h(H);k8(q,K,(F)=>{var B=GW();V(F,B)},(F,B)=>{FZ(F,()=>Y(B))},(F)=>{var B=YW();V(F,B)}),V(w,H)},G=(w)=>{FZ(w,()=>J.record)};D(Z,(w)=>{if(J.record.constructor===_1&&!J.record.type)w(W);else w(G,!1)})}V(z,X),_()}var BW=L('<details class="image-alt"><summary>Show alt</summary> </details>'),HW=L("<div><p>[<a>Video</a>]</p> <!></div>");function F7(z,J){i(J,!0);let{post:Q}=J1();function K(H){if(H instanceof x5)return H.playlistURL;else{let q=H.video.ref.$link;return`https://video.bsky.app/watch/${Q.author.did}/${q}/playlist.m3u8`}}var X=HW(),Z=x(X),W=S(x(Z));c0(),C(Z);var G=S(Z,2);{var w=(H)=>{var q=BW(),F=S(x(q));C(q),g(()=>u(F,` ${J.embed.alt??""}`)),V(H,q)};D(G,(H)=>{if(J.embed.alt)H(w)})}C(X),g((H)=>d(W,"href",H),[()=>K(J.embed)]),V(z,X),_()}var wW=L("<div><!> <!></div>"),UW=L("<p> </p>"),VW=L('<div class="embed svelte-19fytgx"><!></div>');function $8(z,J){i(J,!0);var Q=VW(),K=x(Q);{var X=(W)=>{H9(W,{get record(){return J.embed.record}})},Z=(W)=>{var G=c(),w=h(G);{var H=(F)=>{var B=wW(),U=x(B);$8(U,{get embed(){return J.embed.media}});var M=S(U,2);H9(M,{get record(){return J.embed.record}}),C(B),V(F,B)},q=(F)=>{var B=c(),U=h(B);{var M=(O)=>{G7(O,{get embed(){return J.embed}})},P=(O)=>{var j=c(),T=h(j);{var E=(y)=>{H7(y,{get embed(){return J.embed}})},N=(y)=>{var b=c(),A=h(b);{var k=(v)=>{F7(v,{get embed(){return J.embed}})},$=(v)=>{var l=UW(),n=x(l);C(l),g(()=>u(n,`[${J.embed.type??""}]`)),V(v,l)};D(A,(v)=>{if(J.embed instanceof Q9||J.embed instanceof x5)v(k);else v($,!1)},!0)}V(y,b)};D(T,(y)=>{if(J.embed instanceof J9||J.embed instanceof C5)y(E);else y(N,!1)},!0)}V(O,j)};D(U,(O)=>{if(J.embed instanceof z9||J.embed instanceof X9)O(M);else O(P,!1)},!0)}V(F,B)};D(w,(F)=>{if(J.embed instanceof Z9||J.embed instanceof M5)F(H);else F(q,!1)},!0)}V(W,G)};D(K,(W)=>{if(J.embed instanceof K9||J.embed instanceof q5)W(X);else W(Z,!1)})}C(Q),V(z,Q),_()}var FW=L("<a> </a>"),qW=L("<a>See parent post</a>"),MW=L("<a>See parent post</a>"),CW=L('<p class="back"><i class="fa-solid fa-reply"></i> <!></p>');function Wz(z,J){i(J,!0);let Q=C0(()=>m0(J.uri)),K=C0(()=>Y(Q).repo),X=C0(()=>Y(Q).rkey);var Z=CW(),W=S(x(Z),2);k8(W,()=>N0.fetchHandleForDid(Y(K)),(G)=>{var w=MW();g((H)=>d(w,"href",H),[()=>B6(Y(K),Y(X))]),V(G,w)},(G,w)=>{var H=FW(),q=x(H);C(H),g((F)=>{d(H,"href",F),u(q,`See parent post (@${Y(w)??""})`)},[()=>B6(Y(w),Y(X))]),V(G,H)},(G)=>{var w=qW();g((H)=>d(w,"href",H),[()=>B6(Y(K),Y(X))]),V(G,w)}),C(Z),V(z,Z),_()}var xW=L("<!> <!> <!>",1);function q7(z,J){i(J,!0),M7({post:J.post,placement:J.placement});var Q=xW(),K=h(Q);{var X=(w)=>{Wz(w,{get uri(){return J.post.parentReference.uri}})};D(K,(w)=>{if(J.post.isPageRoot&&J.post.parentReference)w(X)})}var Z=S(K,2);Xz(Z,{});var W=S(Z,2);{var G=(w)=>{$8(w,{get embed(){return J.post.embed}})};D(W,(w)=>{if(J.post.embed)w(G)})}V(z,Q),_()}var OW=L('(<a target="_blank"> </a> ',1),LW=L('(<a target="_blank"> </a>)',1);function R5(z,J){i(J,!0);let Q=R0(J,"status",3,void 0),K=f(void 0),X=C0(()=>Y(K)?`@${Y(K)}`:"see author");Z1(()=>{let H=m0(J.post.uri).repo;N0.fetchHandleForDid(H).then((q)=>{R(K,q,!0)})});var Z=c(),W=h(Z);{var G=(H)=>{var q=OW(),F=S(h(q)),B=x(F,!0);C(F);var U=S(F);g(()=>{d(F,"href",J.post.didLinkToAuthor),u(B,Y(X)),u(U,`, ${Q()??""})`)}),V(H,q)},w=(H)=>{var q=LW(),F=S(h(q)),B=x(F,!0);C(F),c0(),g(()=>{d(F,"href",J.post.didLinkToAuthor),u(B,Y(X))}),V(H,q)};D(W,(H)=>{if(Q())H(G);else H(w,!1)})}V(z,Z),_()}var PW=L('<p class="blocked-header"><i class="fa-solid fa-ban"></i> <span>Deleted post</span> <!></p>');function Yz(z,J){var Q=PW(),K=S(x(Q),4);R5(K,{get post(){return J.post}}),C(Q),V(z,Q)}var IW=L('<a href="#">Load post…</a>'),SW=L('<p class="load-post"><!></p>'),DW=L('<p class="blocked-header"><i class="fa-solid fa-ban"></i> <span> </span> <!></p> <!>',1),RW=L('<span class="separator">•</span> <!>',1),jW=L('<p class="blocked-header"><i class="fa-solid fa-ban"></i> <span> </span> <!> <!></p> <!>',1);function j5(z,J){i(J,!0);let Q=C0(()=>T0.biohazardsEnabled!==!1),K=f(!1),X=f(!1),Z=f(void 0);async function W(U){U.preventDefault(),R(K,!0);let M=await N0.reloadBlockedPost(J.post.uri);if(M)R(Z,M,!0);else R(X,!0)}function G(U){let M=U.author.viewer;if(M)return!(M.blockedBy||M.blocking);else return!0}function w(){if(J.post instanceof O5)return;else if(J.post.blockedByUser)return"has blocked you";else if(J.post.blocksUser)return"you've blocked them";else return}var H=c(),q=h(H);{var F=(U)=>{var M=DW(),P=h(M),O=S(x(P),2),j=x(O,!0);C(O);var T=S(O,2);{var E=(b)=>{{let A=C0(w);R5(b,{get post(){return J.post},get status(){return Y(A)}})}};D(T,(b)=>{if(Y(Q))b(E)})}C(P);var N=S(P,2);{var y=(b)=>{var A=SW(),k=x(A);{var $=(l)=>{var n=IW();n.__click=W,V(l,n)},v=(l)=>{var n=d1(" ");V(l,n)};D(k,(l)=>{if(!Y(K))l($);else l(v,!1)})}C(A),V(b,A)};D(N,(b)=>{if(Y(Q))b(y)})}g(()=>u(j,J.reason)),V(U,M)},B=(U)=>{var M=c(),P=h(M);{var O=(T)=>{var E=jW(),N=h(E),y=S(x(N),2),b=x(y,!0);C(y);var A=S(y,2);{let l=C0(w);R5(A,{get post(){return J.post},get status(){return Y(l)}})}var k=S(A,2);{var $=(l)=>{var n=RW(),o=S(h(n),2);D5(o,{get post(){return Y(Z)},title:"Load thread"}),V(l,n)};D(k,(l)=>{if(G(Y(Z)))l($)})}C(N);var v=S(N,2);q7(v,{get post(){return Y(Z)},get placement(){return J.placement}}),g(()=>u(b,J.reason)),V(T,E)},j=(T)=>{{let E=C0(()=>new P6(J.post.data));Yz(T,{get post(){return Y(E)}})}};D(P,(T)=>{if(Y(Z))T(O);else T(j,!1)},!0)}V(U,M)};D(q,(U)=>{if(!Y(X)&&!Y(Z))U(F);else U(B,!1)})}V(z,H),_()}I0(["click"]);var AW=L("<div><!></div>");function m8(z,J){var Q=c(),K=h(Q);{var X=(W)=>{I1(W,{get post(){return J.post},get placement(){return J.placement}})},Z=(W)=>{var G=AW(),w=x(G);{var H=(F)=>{j5(F,{get post(){return J.post},get placement(){return J.placement},reason:"Blocked post"})},q=(F)=>{var B=c(),U=h(B);{var M=(O)=>{j5(O,{get post(){return J.post},get placement(){return J.placement},reason:"Hidden quote"})},P=(O)=>{Yz(O,{get post(){return J.post}})};D(U,(O)=>{if(J.post instanceof O5)O(M);else O(P,!1)},!0)}V(F,B)};D(w,(F)=>{if(J.post instanceof y6)F(H);else F(q,!1)})}C(G),g(()=>X1(G,1,`post post-${J.placement??""} blocked`,"svelte-qmmoky")),V(W,G)};D(K,(W)=>{if(J.post instanceof S0)W(X);else W(Z,!1)})}V(z,Q)}var[J1,M7]=v9(),NW=L("<!> <!> <!> <!> <!>",1),kW=L('<details class="svelte-rwn0j1"><summary class="svelte-rwn0j1"> </summary> <!></details>'),bW=L('<p class="missing-replies-info svelte-rwn0j1"><i class="fa-solid fa-ban"></i> <!> (likely taken down by moderation)</p>'),TW=L('<p class="missing-replies-info svelte-rwn0j1"><i class="fa-solid fa-ban"></i> Hidden replies not available (post too old)</p>'),EW=L('<div><!> <!> <div class="content svelte-rwn0j1"><!> <!> <!> <!> <!></div></div>');function I1(z,J){i(J,!0);let Q=(s)=>{var V0=NW(),Y0=h(V0);Xz(Y0,{get highlightedMatches(){return X()}});var e=S(Y0,2);{var t=(k0)=>{W7(k0,{})};D(e,(k0)=>{if(K().tags)k0(t)})}var G0=S(e,2);{var O0=(k0)=>{$8(k0,{get embed(){return K().embed}})};D(G0,(k0)=>{if(K().embed&&M(K().embed))k0(O0)})}var H0=S(G0,2);{var F0=(k0)=>{eJ(k0,{get url(){return K().originalFediURL}})};D(H0,(k0)=>{if(K().originalFediURL&&ez(K().originalFediURL))k0(F0)})}var u0=S(H0,2);{var n0=(k0)=>{Y7(k0,{get quoteCount(){return Y(F)}})};D(u0,(k0)=>{if(K().likeCount!==void 0||K().repostCount!==void 0)k0(n0)})}V(s,V0)},K=R0(J,"post",7),X=R0(J,"highlightedMatches",3,void 0),Z=s6(J,["$$slots","$$events","$$legacy","post","placement","highlightedMatches"]),W=f(!1),G=f(x0(K().replies)),w=f(!1),H=f(void 0),q=f(void 0);M7({post:K(),placement:J.placement});let F=f(x0(K().quoteCount));function B(s){R(F,s,!0)}function U(s){if(s instanceof S0)return!0;else if(s instanceof y6)return T0.biohazardsEnabled!==!1;else return!1}function M(s){if(K().originalFediURL){if(s instanceof C5&&s.title?.startsWith("Original post on "))return!1}return!0}function P(s){K().updateDataFromPost(s),R(G,K().replies,!0)}function O(s){let V0=s.filter((Y0)=>Y0!==null);if(Y(G).push(...V0),K().replies=Y(G),V0.length===s.length&&V0.length>0)R(H,void 0);else R(H,s.length-V0.length);R(w,!0)}function j(s){if(R(w,!0),s instanceof Kz)R(q,s,!0);else setTimeout(()=>H8(s),1)}var T={setQuoteCount:B},E=EW();let N;var y=x(E);X7(y,{});var b=S(y,2);{var A=(s)=>{tJ(s,{get collapsed(){return Y(W)},set collapsed(V0){R(W,V0,!0)}})};D(b,(s)=>{if(J.placement=="thread"&&!K().isPageRoot)s(A)})}var k=S(b,2),$=x(k);{var v=(s)=>{var V0=kW(),Y0=x(V0),e=x(Y0,!0);C(Y0);var t=S(Y0,2);Q(t),C(V0),g(()=>u(e,K().muteList?`Muted (${K().muteList})`:"Muted - click to show")),V(s,V0)},l=(s)=>{Q(s)};D($,(s)=>{if(K().muted)s(v);else s(l,!1)})}var n=S($,2);{var o=(s)=>{I1(s,{get post(){return Y(G)[0]},placement:"thread",class:"flat"})},a=(s)=>{var V0=c(),Y0=h(V0);A0(Y0,17,()=>Y(G),(e)=>e.uri,(e,t)=>{var G0=c(),O0=h(G0);{var H0=(F0)=>{m8(F0,{get post(){return Y(t)},placement:"thread"})};D(O0,(F0)=>{if(U(Y(t)))F0(H0)})}V(e,G0)}),V(s,V0)};D(n,(s)=>{if(K().replyCount==1&&Y(G)[0]instanceof S0&&Y(G)[0].author.did==K().author.did)s(o);else s(a,!1)})}var X0=S(n,2);{var Q0=(s)=>{var V0=c(),Y0=h(V0);UJ(Y0,()=>Y(G),(e)=>{var t=c(),G0=h(t);{var O0=(F0)=>{J7(F0,{onLoad:P,onError:j})},H0=(F0)=>{var u0=c(),n0=h(u0);{var k0=(z6)=>{z7(z6,{onLoad:O,onError:j})};D(n0,(z6)=>{if(K().hasHiddenReplies&&T0.biohazardsEnabled!==!1)z6(k0)},!0)}V(F0,u0)};D(G0,(F0)=>{if(K().hasMoreReplies)F0(O0);else F0(H0,!1)})}V(e,t)}),V(s,V0)};D(X0,(s)=>{if(J.placement=="thread"&&!Y(w))s(Q0)})}var U0=S(X0,2);{var D0=(s)=>{var V0=bW(),Y0=S(x(V0),2);{var e=(G0)=>{var O0=d1();g(()=>u(O0,`${Y(H)??""} replies are missing`)),V(G0,O0)},t=(G0)=>{var O0=c(),H0=h(O0);{var F0=(n0)=>{var k0=d1("1 reply is missing");V(n0,k0)},u0=(n0)=>{var k0=d1("Some replies are missing");V(n0,k0)};D(H0,(n0)=>{if(Y(H)==1)n0(F0);else n0(u0,!1)},!0)}V(G0,O0)};D(Y0,(G0)=>{if(Y(H)>1)G0(e);else G0(t,!1)})}c0(),C(V0),V(s,V0)};D(U0,(s)=>{if(Y(H)!==void 0)s(D0)})}var M0=S(U0,2);{var v0=(s)=>{var V0=TW();V(s,V0)};D(M0,(s)=>{if(Y(q))s(v0)})}return C(k),C(E),g(()=>N=X1(E,1,`post post-${J.placement??""} ${(J.class||"")??""}`,"svelte-rwn0j1",N,{muted:K().muted,collapsed:Y(W)})),V(z,E),_(T)}var yW=L('<main class="hashtag svelte-1l2woaq"><header><h2><!></h2></header> <!></main>');function C7(z,J){i(J,!0);let Q=R0(J,"hashtag",7);Q(Q().replace(/^\#/,""));let K=x0([]),X=f(!1),Z=f(!1),W=!1,G=!1,w;V8(async()=>{if(W||G)return;W=!0;try{let U=await N0.getHashtagFeed(Q(),w),M=U.posts.map((P)=>new S0(P));if(R(X,!0),K.push(...M),W=!1,w=U.cursor,!w||K.length==0)G=!0}catch(U){console.log(U),W=!1,R(Z,!0)}});var H=c();b8("xlrj1v",(U)=>{l5(()=>{Y8.title=`#${Q()??""} - Skythread`})});var q=h(H);{var F=(U)=>{var M=yW(),P=x(M),O=x(P),j=x(O);{var T=(y)=>{var b=d1();g(()=>u(b,`Posts tagged: #${Q()??""}`)),V(y,b)},E=(y)=>{var b=d1();g(()=>u(b,`No posts tagged #${Q()??""}.`)),V(y,b)};D(j,(y)=>{if(K.length>0)y(T);else y(E,!1)})}C(O),C(P);var N=S(P,2);A0(N,17,()=>K,(y)=>y.uri,(y,b)=>{I1(y,{get post(){return Y(b)},placement:"feed"})}),C(M),V(U,M)},B=(U)=>{var M=c(),P=h(M);{var O=(j)=>{n6(j,{})};D(P,(j)=>{if(!Y(Z))j(O)},!0)}V(U,M)};D(q,(U)=>{if(Y(X))U(F);else U(B,!1)})}V(z,H),_()}var vW=L('<div id="search" class="svelte-1drcssc"><form method="get" class="svelte-1drcssc">\uD83C\uDF24 <input type="text" placeholder="Paste a thread link or type a #hashtag" class="svelte-1drcssc"/></form></div>');function w9(z,J){i(J,!0);let Q=f(""),K;Z1(()=>{K.focus()});function X(w){w.preventDefault();let H=Y(Q).trim();if(!H)return;if(H.startsWith("at://")){let q=new URL(h8());q.searchParams.set("q",H),location.assign(q.toString())}else if(H.match(/^#?((\p{Letter}|\p{Number})+)$/u)){let q=H.replace(/^#/,"");location.assign(L5(q))}else try{let{user:q,post:F}=Qz(H);location.assign(B6(q,F))}catch(q){console.log(q),alert(q.message||"This is not a valid URL or hashtag")}}var Z=vW(),W=x(Z),G=S(x(W));$0(G),t1(G,(w)=>K=w,()=>K),C(W),C(Z),L1("submit",W,X),P1(G,()=>Y(Q),(w)=>R(Q,w)),V(z,Z),_()}var gW=L('<tr><td class="no svelte-8hgnpr"></td><td class="handle svelte-8hgnpr"><img class="avatar svelte-8hgnpr" alt="Avatar"/> <a target="_blank"> </a></td><td class="count svelte-8hgnpr"> </td></tr>'),hW=L('<table style="display: table;"><thead><tr><th colspan="3" class="svelte-8hgnpr"> </th></tr></thead><tbody></tbody></table>');function U9(z,J){var Q=hW(),K=x(Q),X=x(K),Z=x(X),W=x(Z,!0);C(Z),C(X),C(K);var G=S(K);A0(G,21,()=>J.users,O1,(w,H,q)=>{var F=gW(),B=x(F);B.textContent=q+1;var U=S(B),M=x(U),P=S(M,2),O=x(P,!0);C(P),C(U);var j=S(U),T=x(j,!0);C(j),C(F),g(()=>{d(M,"src",Y(H).avatar),d(P,"href",`https://bsky.app/profile/${Y(H).handle??""}`),u(O,Y(H).handle),u(T,Y(H).count)}),V(w,F)}),C(G),C(Q),g(()=>{X1(Q,1,`scan-result ${J.cssClass??""}`,"svelte-8hgnpr"),u(W,J.header)}),V(z,Q)}class x7{scanStartTime;appView;progressPosts;progressLikeRecords;progressPostLikes;onProgress;abortController;constructor(){this.appView=new e1("public.api.bsky.app"),this.progressPosts=0,this.progressLikeRecords=0,this.progressPostLikes=0}async findLikes(z,J){this.onProgress=J,this.resetProgress(),this.scanStartTime=new Date().getTime(),this.abortController=new AbortController;let Q=this.fetchGivenLikes(z),K=await this.fetchReceivedLikes(z),X=this.sumUpReceivedLikes(K),Z=this.getTopEntries(X),W=await Q,G=this.sumUpGivenLikes(W),w=this.getTopEntries(G),H=await this.appView.getRequest("app.bsky.actor.getProfiles",{actors:w.map((q)=>q.did)},{abortSignal:this.abortController.signal});for(let q of H.profiles){let F=w.find((B)=>B.did==q.did);F.handle=q.handle,F.avatar=q.avatar}return this.scanStartTime=void 0,{givenLikes:w,receivedLikes:Z}}async fetchGivenLikes(z){let J=this.scanStartTime;return await q0.fetchAll("com.atproto.repo.listRecords",{params:{repo:q0.user.did,collection:"app.bsky.feed.like",limit:100},field:"records",breakWhen:(Q)=>Date.parse(Q.value.createdAt)<J-86400*z*1000,onPageLoad:(Q)=>{let K=Q.at(-1);if(!K)return;let X=Date.parse(K.value.createdAt),Z=(J-X)/86400/1000;this.updateProgress({likeRecords:Math.min(1,Z/z)})},abortSignal:this.abortController.signal})}async fetchReceivedLikes(z){let J=this.scanStartTime,K=(await this.appView.loadUserTimeline(q0.user.did,z,{filter:"posts_with_replies",onPageLoad:(Z)=>{let W=Z.at(-1);if(!W)return;let G=i1(W),w=(J-G)/86400/1000;this.updateProgress({posts:Math.min(1,w/z)})},abortSignal:this.abortController.signal})).filter((Z)=>!Z.reason&&Z.post.likeCount>0),X=[];for(let Z=0;Z<K.length;Z+=10){let W=K.slice(Z,Z+10);this.updateProgress({postLikes:Z/K.length});let G=W.map((H)=>{return this.appView.fetchAll("app.bsky.feed.getLikes",{params:{uri:H.post.uri,limit:100},field:"likes",abortSignal:this.abortController.signal})}),w=await Promise.all(G);X=X.concat(w)}return this.updateProgress({postLikes:1}),X.flat()}sumUpReceivedLikes(z){let J={};for(let Q of z){let K=Q.actor.handle;if(!J[K])J[K]={handle:K,count:0,avatar:Q.actor.avatar};J[K].count+=1}return J}sumUpGivenLikes(z){let J={};for(let Q of z){let K=m0(Q.value.subject.uri).repo;if(!J[K])J[K]={did:K,count:0};J[K].count+=1}return J}getTopEntries(z){return Object.entries(z).sort(this.sortResults).map((J)=>J[1]).slice(0,25)}resetProgress(){this.progressPosts=0,this.progressLikeRecords=0,this.progressPostLikes=0,this.onProgress?.(0)}updateProgress(z){if(z.posts)this.progressPosts=z.posts;if(z.likeRecords)this.progressLikeRecords=z.likeRecords;if(z.postLikes)this.progressPostLikes=z.postLikes;let J=0.1*this.progressPosts+0.65*this.progressLikeRecords+0.25*this.progressPostLikes;this.onProgress?.(J)}sortResults(z,J){if(z[1].count<J[1].count)return 1;else if(z[1].count>J[1].count)return-1;else return 0}abortScan(){this.scanStartTime=void 0,this.onProgress=void 0,this.abortController?.abort(),delete this.abortController}}var fW=L('<progress style="display: inline;" class="svelte-16cw7lp"></progress>'),mW=L("<!> <!>",1),$W=L('<main><h2>Like statistics</h2> <form><p>Time range: <input id="like_stats_range" type="range" min="1" max="60" class="svelte-16cw7lp"/> <label for="like_stats_range"> </label></p> <p><input type="submit" class="svelte-16cw7lp"/> <!></p></form> <!></main>');function O7(z,J){i(J,!0);let Q=f(7),K=f(void 0),X=C0(()=>Y(K)!==void 0),Z=f(void 0),W=f(void 0),G=new x7;async function w(y){y.preventDefault();try{if(!Y(X)){R(Z,void 0),R(W,void 0);let b=await G.findLikes(Y(Q),(A)=>{R(K,A,!0)});R(Z,b.givenLikes,!0),R(W,b.receivedLikes,!0),R(K,void 0)}else G.abortScan(),R(K,void 0)}catch(b){if(b.name!=="AbortError")throw b}}var H=$W(),q=S(x(H),2),F=x(q),B=S(x(F));$0(B);var U=S(B,2),M=x(U,!0);C(U),C(F);var P=S(F,2),O=x(P);$0(O);var j=S(O,2);{var T=(y)=>{var b=fW();g(()=>Y6(b,Y(K))),V(y,b)};D(j,(y)=>{if(Y(X))y(T)})}C(P),C(q);var E=S(q,2);{var N=(y)=>{var b=mW(),A=h(b);U9(A,{cssClass:"given-likes",header:"❤️ Likes from you:",get users(){return Y(Z)}});var k=S(A,2);U9(k,{cssClass:"received-likes",header:"\uD83D\uDC9B Likes on your posts:",get users(){return Y(W)}}),V(y,b)};D(E,(y)=>{if(Y(Z)&&Y(W))y(N)})}C(H),g((y)=>{u(M,y),Y6(O,Y(X)?"Cancel":"Start scan")},[()=>E8(Y(Q))]),L1("submit",q,w),P1(B,()=>Y(Q),(y)=>R(Q,y)),V(z,H),_()}var uW="did:web:lycan.feeds.blue#lycan";class Gz{lycanAddress;constructor(z){this.lycanAddress=z??uW}get proxyHeaders(){return{"atproto-proxy":this.lycanAddress}}async getImportStatus(){return await q0.getRequest("blue.feeds.lycan.getImportStatus",null,{headers:this.proxyHeaders})}async startImport(){await q0.postRequest("blue.feeds.lycan.startImport",null,{headers:this.proxyHeaders})}async makeQuery(z,J,Q){let K={collection:z,query:J};if(Q)K.cursor=Q;return await q0.getRequest("blue.feeds.lycan.searchPosts",K,{headers:this.proxyHeaders})}searchPosts(z,J,Q){let K=!1,X=!1,Z;V8(async()=>{if(K||X)return;K=!0;let W=await this.makeQuery(z,J,Z),w=(await q0.loadPosts(W.posts)).map((H)=>new S0(H));if(K=!1,Q.onPostsLoaded({posts:w,terms:W.terms}),Z=W.cursor,!Z)X=!0,Q.onFinish?.()})}}class V9 extends Gz{localLycan;constructor(z){super();this.localLycan=new e1(z)}async getImportStatus(){return await this.localLycan.getRequest("blue.feeds.lycan.getImportStatus",{user:q0.user.did})}async startImport(){await this.localLycan.postRequest("blue.feeds.lycan.startImport",{user:q0.user.did})}async makeQuery(z,J,Q){let K={collection:z,query:J,user:q0.user.did};if(Q)K.cursor=Q;return await this.localLycan.getRequest("blue.feeds.lycan.searchPosts",K)}}var lW=L('<main class="search-page svelte-p7bb5y"><!></main>');function Bz(z,J){var Q=lW(),K=x(Q);G8(K,()=>J.children),C(Q),V(z,Q)}var pW=L('<input type="radio" name="collection"/> <label class="svelte-1xf0p4l"> </label>',1),dW=L(`<form class="svelte-1xf0p4l"><h4>Data not imported yet</h4> <p class="svelte-1xf0p4l">In order to search within your likes and bookmarks, the posts you've liked or saved need to be imported into a database.
51
51
+
This is a one-time process, but it can take several minutes or more, depending on the age of your account.</p> <p class="svelte-1xf0p4l">To start the import, press the button below. You can then wait until it finishes, or close this tab and come back a bit later.
52
52
+
After the import is complete, the database will be kept up to date automatically going forward.</p> <p class="svelte-1xf0p4l"><input type="submit" value="Start import"/></p></form>`),iW=L('<p><progress class="svelte-1xf0p4l"></progress> <output class="svelte-1xf0p4l"> </output></p>'),_W=L('<div class="import-progress svelte-1xf0p4l"><h4>Import in progress</h4> <p class="import-status"> </p> <!></div>'),cW=L('<div class="lycan-import svelte-1xf0p4l"><!></div>'),sW=L("<p>...</p>"),oW=L('<p class="results-end"> </p>'),aW=L("<!> <!>",1),rW=L('<h2>Archive search</h2> <form class="search-form"><p class="search">Search: <input type="text" class="search-query" autocomplete="off"/></p> <div class="search-collections svelte-1xf0p4l"></div></form> <!> <div class="results"><!></div>',1);function L7(z,J){i(J,!0);let Q=[],K=[{id:"likes",title:"Likes"},{id:"reposts",title:"Reposts"},{id:"quotes",title:"Quotes"},{id:"pins",title:"Pins"}],X=C0(()=>j(J.lycan)),Z=f(!1),W=f(void 0),G=f(void 0),w=f(0),H=f(!1),q,F=f(x0(K[0].id)),B=f(""),U=f(!1),M=f(!1),P=f(x0([])),O=f(x0([]));N();function j(v){if(!v)return new Gz;else if(v=="local"||v=="localhost")return new V9("http://localhost:3000");else if(v.startsWith("local:")||v.startsWith("localhost:")){let l=v.split(":")[1];return new V9(`http://localhost:${l}`)}else return new Gz(`did:web:${J.lycan}#lycan`)}function T(v){v.preventDefault(),y({status:"requested"}),R(H,!0),Y(X).startImport().catch((l)=>{console.error("Failed to start Lycan import",l),A(`Import failed: ${l}`)})}function E(v){if(v.key=="Enter"){v.preventDefault();let l=Y(B).trim().toLowerCase();if(l.length==0||Y(W)!="finished")return;R(P,[],!0),R(H,!1),R(U,!0),R(M,!1),Y(X).searchPosts(Y(F),l,{onPostsLoaded:({posts:n,terms:o})=>{R(U,!1),Y(P).push(...n),R(O,o,!0)},onFinish:()=>{R(M,!0)}})}}async function N(){if(Y(Z))return;R(Z,!0);try{let v=await Y(X).getImportStatus();y(v)}catch(v){A(`Couldn't check import status: ${v}`)}finally{R(Z,!1)}}function y(v){if(console.log(v),!v.status){A("Error checking import status");return}R(W,v.status,!0);let l=["in_progress","scheduled","requested"].includes(v.status);if(R(H,Y(H)||l,!0),v.status=="not_started");else if(l)b(v);else if(v.status=="finished")b({status:"finished",progress:1});else A("Error checking import status");l?k():$()}function b(v){if(R(w,Math.max(0,Math.min(v.progress||0,1)),!0),v.progress==1)R(G,"Import complete ✓");else if(v.position){let l=new Date(v.position).toLocaleString(T0.dateLocale,{day:"numeric",month:"short",year:"numeric"});R(G,`Downloaded data until: ${l}`)}else if(v.status=="requested")R(G,"Requesting import…");else R(G,"Import started…")}function A(v){R(W,"error"),R(H,!0),R(G,v,!0),$()}function k(){if(!q)q=setInterval(N,3000)}function $(){if(q)clearInterval(q),q=void 0}Bz(z,{children:(v,l)=>{var n=rW(),o=S(h(n),2),a=x(o),X0=S(x(a));$0(X0),X0.__keydown=E,C(a);var Q0=S(a,2);A0(Q0,21,()=>K,O1,(Y0,e)=>{var t=pW(),G0=h(t);$0(G0);var O0,H0=S(G0,2),F0=x(H0,!0);C(H0),g(()=>{if(d(G0,"id",`collection-${Y(e).id??""}`),O0!==(O0=Y(e).id))G0.value=(G0.__value=Y(e).id)??"";d(H0,"for",`collection-${Y(e).id??""}`),u(F0,Y(e).title)}),c5(Q,[],G0,()=>{return Y(e).id,Y(F)},(u0)=>R(F,u0)),V(Y0,t)}),C(Q0),C(o);var U0=S(o,2);{var D0=(Y0)=>{var e=cW(),t=x(e);{var G0=(H0)=>{var F0=dW();L1("submit",F0,T),V(H0,F0)},O0=(H0)=>{var F0=_W(),u0=S(x(F0),2),n0=x(u0,!0);C(u0);var k0=S(u0,2);{var z6=(t6)=>{var H6=iW(),u8=x(H6),l8=S(u8,2),e6=x(l8);C(l8),C(H6),g((p8)=>{Y6(u8,Y(w)),u(e6,`${p8??""}%`)},[()=>Math.round(Y(w)*100)]),V(t6,H6)};D(k0,(t6)=>{if(Y(W)!="error")t6(z6)})}C(F0),g(()=>u(n0,Y(G))),V(H0,F0)};D(t,(H0)=>{if(Y(W)=="not_started")H0(G0);else H0(O0,!1)})}C(e),V(Y0,e)};D(U0,(Y0)=>{if(Y(H)||Y(W)=="not_started")Y0(D0)})}var M0=S(U0,2),v0=x(M0);{var s=(Y0)=>{var e=sW();V(Y0,e)},V0=(Y0)=>{var e=aW(),t=h(e);A0(t,17,()=>Y(P),(H0)=>H0.uri,(H0,F0)=>{I1(H0,{get post(){return Y(F0)},placement:"feed",get highlightedMatches(){return Y(O)}})});var G0=S(t,2);{var O0=(H0)=>{var F0=oW(),u0=x(F0,!0);C(F0),g(()=>u(u0,Y(P).length>0?"No more results.":"No results.")),V(H0,F0)};D(G0,(H0)=>{if(Y(M))H0(O0)})}V(Y0,e)};D(v0,(Y0)=>{if(Y(U))Y0(s);else Y0(V0,!1)})}C(M0),g(()=>X0.disabled=Y(W)!="finished"),P1(X0,()=>Y(B),(Y0)=>R(B,Y0)),V(v,n)},$$slots:{default:!0}}),_()}I0(["keydown"]);var nW=L("<a>Reply to you</a>"),tW=L("<a> </a>"),eW=L("<a> </a>"),zY=L("<a>Reply</a>"),JY=L('<p class="back"><i class="fa-solid fa-reply"></i> <!></p>');function Hz(z,J){i(J,!0);let Q=C0(()=>m0(J.uri)),K=C0(()=>Y(Q).repo),X=C0(()=>Y(Q).rkey);var Z=JY(),W=S(x(Z),2);{var G=(H)=>{var q=nW();g((F)=>d(q,"href",F),[()=>B6(Y(K),Y(X))]),V(H,q)},w=(H)=>{var q=c(),F=h(q);k8(F,()=>N0.fetchHandleForDid(Y(K)),(B)=>{var U=zY();g((M)=>d(U,"href",M),[()=>B6(Y(K),Y(X))]),V(B,U)},(B,U)=>{var M=tW(),P=x(M);C(M),g((O)=>{d(M,"href",O),u(P,`Reply to @${Y(U)??""}`)},[()=>B6(Y(U),Y(X))]),V(B,M)},(B)=>{var U=eW(),M=x(U);C(U),g((P)=>{d(U,"href",P),u(M,`Reply to ${Y(K)??""}`)},[()=>B6(Y(K),Y(X))]),V(B,U)}),V(H,q)};D(W,(H)=>{if(q0&&Y(K)==q0.user.did)H(G);else H(w,!1)})}C(Z),V(z,Z),_()}var QY=L("<!> <!>",1),KY=L('<main class="notifications svelte-95g2ry"><header><h2>Replies & Mentions:</h2></header> <!></main>');function P7(z,J){i(J,!0);let Q=x0([]),K=f(!1),X=f(!1),Z=!1,W=!1,G;V8(async(B)=>{if(Z||W)return;Z=!0;try{let U=await q0.loadMentions(G),M=U.posts.map((P)=>new S0(P));if(!Y(K)&&M.length>0)R(K,!0);if(Q.push(...M),Z=!1,G=U.cursor,!G)W=!0;else if(M.length==0)B()}catch(U){console.log(U),Z=!1,R(X,!0)}});var w=c();b8("387i67",(B)=>{V1(()=>{Y8.title="Notifications - Skythread"})});var H=h(w);{var q=(B)=>{var U=KY(),M=S(x(U),2);A0(M,17,()=>Q,(P)=>P.uri,(P,O)=>{var j=QY(),T=h(j);{var E=(y)=>{Hz(y,{get uri(){return Y(O).parentReference.uri}})};D(T,(y)=>{if(Y(O).parentReference)y(E)})}var N=S(T,2);I1(N,{get post(){return Y(O)},placement:"feed"}),V(P,j)}),C(U),V(B,U)},F=(B)=>{var U=c(),M=h(U);{var P=(O)=>{n6(O,{})};D(M,(O)=>{if(!Y(X))O(P)},!0)}V(B,U)};D(H,(B)=>{if(Y(K))B(q);else B(F,!1)})}V(z,w),_()}var qZ=(z,J=J6)=>{var Q=ZY(),K=h(Q),X=S(K,2),Z=x(X,!0);C(X);var W=S(X,2),G=x(W,!0);C(W),g(()=>{d(K,"src",J().avatar),u(Z,J().displayName||"–"),u(G,J().handle)}),V(z,Q)},ZY=L('<img class="avatar svelte-1cm32f6" alt="Avatar"/> <span class="name svelte-1cm32f6"> </span> <span class="handle svelte-1cm32f6"> </span>',1),XY=L("<div><!></div>"),WY=L('<div class="autocomplete svelte-1cm32f6"></div>'),YY=L('<div class="user-row svelte-1cm32f6"><!> <a class="remove svelte-1cm32f6" href="#">✕</a></div>'),GY=L('<div class="user-choice svelte-1cm32f6"><input type="text" placeholder="Add user" autocomplete="off" class="svelte-1cm32f6"/> <!> <div class="selected-users svelte-1cm32f6"></div></div>');function I7(z,J){i(J,!0);let Q=R0(J,"selectedUsers",27,()=>x0([])),K=f(""),X=f(x0([])),Z=f(-1),W=C0(()=>Q().map((A)=>A.did)),G=C0(()=>Y(X).length>0),w=f(0),H;Z1(()=>{let A=document.body.parentNode;return A.addEventListener("click",U),()=>{A.removeEventListener("click",U)}});function q(){if(H)clearTimeout(H);let A=Y(K).trim();if(A.length>0)H=setTimeout(()=>B(A),100);else U(),H=void 0}function F(A){if(A.key=="Enter"){if(A.preventDefault(),Y(Z)>=0)O(Y(Z))}else if(A.key=="Escape")U();else if(A.key=="ArrowDown"&&Y(X).length>0)A.preventDefault(),M(1);else if(A.key=="ArrowUp"&&Y(X).length>0)A.preventDefault(),M(-1)}async function B(A){let k=await N0.autocompleteUsers(A),$=new Set(Y(W));if(k=k.filter((v)=>!$.has(v.did)),k.length>0)R(X,k,!0),R(Z,0);else U()}function U(){R(X,[],!0),R(Z,-1)}function M(A){if(Y(X).length==0)return;let k=Y(Z)+A;if(k<0)k=Y(X).length-1;else if(k>=Y(X).length)k=0;R(Z,k,!0)}function P(A,k){A.preventDefault(),O(k)}function O(A){let k=Y(X)[A];if(!k)return;Q().push(k),R(K,""),U()}function j(A,k){A.preventDefault(),Q().splice(k,1)}var T=GY(),E=x(T);$0(E),N8(E,!0),E.__input=q,E.__keydown=F;var N=S(E,2);{var y=(A)=>{var k=WY();let $;A0(k,23,()=>Y(X),(v)=>v.did,(v,l,n)=>{var o=XY();let a;o.__mousedown=(Q0)=>{P(Q0,Y(n))};var X0=x(o);qZ(X0,()=>Y(l)),C(o),g(()=>a=X1(o,1,"user-row svelte-1cm32f6",null,a,{highlighted:Y(Z)==Y(n)})),L1("mouseenter",o,()=>{R(Z,Y(n),!0)}),V(v,o)}),C(k),g(()=>$=c6(k,"",$,{display:Y(G)?"block":"none",top:`${Y(w)??""}px`})),V(A,k)};D(N,(A)=>{if(Y(G))A(y)})}var b=S(N,2);A0(b,23,Q,(A)=>A.did,(A,k,$)=>{var v=YY(),l=x(v);qZ(l,()=>Y(k));var n=S(l,2);n.__click=(o)=>{j(o,Y($))},C(v),V(A,v)}),C(b),C(T),P1(E,()=>Y(K),(A)=>R(K,A)),DJ(E,"offsetHeight",(A)=>R(w,A)),V(z,T),_()}I0(["input","keydown","mousedown","click"]);var BY=L('<th class="svelte-vhh361">All posts /d</th> <th class="svelte-vhh361">Own posts /d</th> <th class="svelte-vhh361">Reposts /d</th>',1),HY=L('<th class="svelte-vhh361">Posts /d</th>'),wY=L('<th class="svelte-vhh361">% of timeline</th>'),UY=L('<td class="svelte-vhh361"> </td>'),VY=L('<td class="svelte-vhh361"> </td>'),FY=L('<td class="percent svelte-vhh361"></td>'),qY=L('<tr class="total svelte-vhh361"><td class="no svelte-vhh361"></td><td class="handle svelte-vhh361">Total:</td><!><td class="svelte-vhh361"> </td><!><!></tr>'),MY=L('<td class="svelte-vhh361"> </td>'),CY=L('<td class="svelte-vhh361"> </td>'),xY=L('<td class="percent svelte-vhh361"> </td>'),OY=L('<tr><td class="no svelte-vhh361"></td><td class="handle svelte-vhh361"><img class="avatar svelte-vhh361" alt="Avatar"/> <a target="_blank"> </a></td><!><td class="svelte-vhh361"> </td><!><!></tr>'),LY=L('<table class="scan-result svelte-vhh361"><thead><tr><th class="svelte-vhh361">#</th><th class="svelte-vhh361">Handle</th><!><!></tr></thead><tbody><!><!></tbody></table>');function S7(z,J){i(J,!0);let Q=R0(J,"showReposts",3,!0),K=R0(J,"showPercentages",3,!0),X=R0(J,"showTotal",3,!0);function Z(T){return T>0?T.toFixed(1):"–"}var W=LY(),G=x(W),w=x(G),H=S(x(w),2);{var q=(T)=>{var E=BY();c0(4),V(T,E)},F=(T)=>{var E=HY();V(T,E)};D(H,(T)=>{if(Q())T(q);else T(F,!1)})}var B=S(H);{var U=(T)=>{var E=wY();V(T,E)};D(B,(T)=>{if(K())T(U)})}C(w),C(G);var M=S(G),P=x(M);{var O=(T)=>{var E=qY(),N=S(x(E),2);{var y=(n)=>{var o=UY(),a=x(o,!0);C(o),g((X0)=>u(a,X0),[()=>Z(J.sums.all/J.daysBack)]),V(n,o)};D(N,(n)=>{if(Q())n(y)})}var b=S(N),A=x(b,!0);C(b);var k=S(b);{var $=(n)=>{var o=VY(),a=x(o,!0);C(o),g((X0)=>u(a,X0),[()=>Z(J.sums.reposts/J.daysBack)]),V(n,o)};D(k,(n)=>{if(Q())n($)})}var v=S(k);{var l=(n)=>{var o=FY();V(n,o)};D(v,(n)=>{if(K())n(l)})}C(E),g((n)=>u(A,n),[()=>Z(J.sums.own/J.daysBack)]),V(T,E)};D(P,(T)=>{if(X())T(O)})}var j=S(P);A0(j,17,()=>J.users,O1,(T,E,N)=>{var y=OY(),b=x(y);b.textContent=N+1;var A=S(b),k=x(A),$=S(k,2),v=x($,!0);C($),C(A);var l=S(A);{var n=(M0)=>{var v0=MY(),s=x(v0,!0);C(v0),g((V0)=>u(s,V0),[()=>Z(Y(E).all/J.daysBack)]),V(M0,v0)};D(l,(M0)=>{if(Q())M0(n)})}var o=S(l),a=x(o,!0);C(o);var X0=S(o);{var Q0=(M0)=>{var v0=CY(),s=x(v0,!0);C(v0),g((V0)=>u(s,V0),[()=>Z(Y(E).reposts/J.daysBack)]),V(M0,v0)};D(X0,(M0)=>{if(Q())M0(Q0)})}var U0=S(X0);{var D0=(M0)=>{var v0=xY(),s=x(v0);C(v0),g((V0)=>u(s,`${V0??""}%`),[()=>Z(Y(E).all*100/J.sums.all)]),V(M0,v0)};D(U0,(M0)=>{if(K())M0(D0)})}C(y),g((M0)=>{d(k,"src",Y(E).avatar),d($,"href",`https://bsky.app/profile/${Y(E).handle??""}`),u(v,Y(E).handle),u(a,M0)},[()=>Z(Y(E).own/J.daysBack)]),V(T,y)}),C(M),C(W),V(z,W),_()}class D7{appView;userProgress;onProgress;abortController;constructor(z){this.onProgress=z,this.appView=new e1("public.api.bsky.app"),this.userProgress={}}async scanHomeTimeline(z){let J=new Date().getTime();this.abortController=new AbortController;let Q=await q0.loadHomeTimeline(z,{onPageLoad:(K)=>this.updateProgress(K,J),abortSignal:this.abortController.signal,keepLastPage:!0});return this.generateResults(Q,z,J)}async scanListTimeline(z,J){let Q=new Date().getTime();this.abortController=new AbortController;let K=await q0.loadListTimeline(z,J,{onPageLoad:(X)=>this.updateProgress(X,Q),abortSignal:this.abortController.signal,keepLastPage:!0});return this.generateResults(K,J,Q)}async scanUserTimelines(z,J){let Q=new Date().getTime(),K=z.map((w)=>w.did);this.resetUserProgress(K),this.abortController=new AbortController;let X=this.abortController.signal,Z=K.map((w)=>this.appView.loadUserTimeline(w,J,{filter:"posts_and_author_threads",onPageLoad:(H)=>this.updateUserProgress(w,H,Q,J),abortSignal:X,keepLastPage:!0})),G=(await Promise.all(Z)).flat();return this.generateResults(G,J,Q,{countFetchedDays:!1,users:z})}async scanYourTimeline(z){let J=new Date().getTime();this.abortController=new AbortController;let Q=await q0.loadUserTimeline(q0.user.did,z,{filter:"posts_no_replies",onPageLoad:(K)=>this.updateProgress(K,J),abortSignal:this.abortController.signal,keepLastPage:!0});return this.generateResults(Q,z,J)}generateResults(z,J,Q,K={}){let X=z.at(-1);if(!X)return null;let Z={},W=i1(X),G=(Q-W)/86400/1000,w;if(K.countFetchedDays!==!1)w=Math.min(J,G);else w=J;let H=Q-J*86400*1000;if(z=z.filter((U)=>i1(U)>H),z.reverse(),K.users)for(let U of K.users)Z[U.handle]={handle:U.handle,own:0,reposts:0,avatar:U.avatar};let q=new Set,F={own:0,reposts:0,all:0};for(let U of z){if(U.reply){if(!q.has(U.reply.parent.uri))continue}let M=U.reason?U.reason.by:U.post.author,P=M.handle;if(Z[P]=Z[P]??{handle:P,own:0,reposts:0,avatar:M.avatar},U.reason)Z[P].reposts+=1,F.reposts+=1;else Z[P].own+=1,F.own+=1,q.add(U.post.uri)}let B=Object.values(Z);return B.forEach((U)=>{U.all=U.own+U.reposts}),B.sort((U,M)=>M.all-U.all),F.all=F.own+F.reposts,{users:B,sums:F,fetchedDays:G,daysBack:w}}updateProgress(z,J){let Q=z.at(-1);if(!Q)return;let K=i1(Q),X=(J-K)/86400/1000;this.onProgress?.(X)}resetUserProgress(z){this.userProgress={};for(let J of z)this.userProgress[J]={pages:0,progress:0}}updateUserProgress(z,J,Q,K){let X=J.at(-1);if(!X)return;let Z=i1(X),W=(Q-Z)/86400/1000;this.userProgress[z].pages+=1,this.userProgress[z].progress=Math.min(W/K,1);let G=Object.values(this.userProgress).map((B)=>B.pages/B.progress),w=G.filter((B)=>!isNaN(B)),H=w.reduce((B,U)=>B+U)/w.length*G.length,F=Object.values(this.userProgress).map((B)=>B.pages).reduce((B,U)=>B+U)/H*K;this.onProgress?.(F)}abortScan(){this.abortController?.abort(),delete this.abortController}}var PY=L('<input type="radio" name="scan_type" class="svelte-1khgu5y"/> <label class="svelte-1khgu5y"> </label>',1),IY=L("<option> </option>"),SY=L('<p class="list-choice"><label for="posting_stats_list">Select list:</label> <select id="posting_stats_list" name="scan_list" class="svelte-1khgu5y"></select></p>'),DY=L('<progress class="svelte-1khgu5y"></progress>'),RY=L('<p class="scan-info svelte-1khgu5y"> </p>'),jY=L('<main><h2>Bluesky posting statistics</h2> <form><p>Scan posts from: <!></p> <p>Time range: <input id="posting_stats_range" type="range" min="1" max="60" class="svelte-1khgu5y"/> <label for="posting_stats_range"> </label></p> <!> <!> <p><input type="submit" class="svelte-1khgu5y"/> <!></p></form> <!> <!></main>');function R7(z,J){i(J,!0);let Q=[],K=[{id:"home",title:"Home timeline"},{id:"list",title:"List feed"},{id:"users",title:"Selected users"},{id:"you",title:"Your profile"}],X=f(x0([])),Z=f(7),W=f(x0(K[0].id)),G=f(x0([])),w=f(void 0),H=f(!1),q=f(void 0),F=f(void 0),B=f(void 0),U=f(x0({})),M=f(null),P=new D7((e)=>{R(F,Math.max(Y(F)||0,e),!0)});Z1(()=>{j()});function O(){R(M,null)}async function j(){let e=await q0.loadUserLists();R(X,e.sort((t,G0)=>{let O0=t.name.toLocaleLowerCase(),H0=G0.name.toLocaleLowerCase();return O0.localeCompare(H0)}),!0),R(w,Y(X)[0]?.uri,!0)}async function T(e){e.preventDefault();try{if(!Y(H))await E();else R(H,!1),P.abortScan()}catch(t){if(t.name!=="AbortError")throw t}}async function E(){if(Y(W)=="list"&&!Y(w)||Y(W)=="users"&&Y(G).length==0)return;R(B,void 0),R(M,null),R(q,Y(Z),!0),R(F,0),R(H,!0);let e=new Date().getTime(),t,G0;if(Y(W)=="home")G0={},t=await P.scanHomeTimeline(Y(q));else if(Y(W)=="list")G0={showReposts:!1},t=await P.scanListTimeline(Y(w),Y(q));else if(Y(W)=="users")G0={showTotal:!1,showPercentages:!1},t=await P.scanUserTimelines(Y(G),Y(q));else G0={showTotal:!1,showPercentages:!1},t=await P.scanYourTimeline(Y(q));if(new Date().getTime()-e<150)await new Promise((H0)=>setTimeout(H0,150));R(U,G0,!0),R(M,t,!0),R(H,!1)}var N=jY(),y=S(x(N),2),b=x(y),A=S(x(b));A0(A,17,()=>K,O1,(e,t)=>{var G0=PY(),O0=h(G0);$0(O0),O0.__click=O;var H0,F0=S(O0,2),u0=x(F0,!0);C(F0),g(()=>{if(d(O0,"id",`scan_type_${Y(t).id??""}`),H0!==(H0=Y(t).id))O0.value=(O0.__value=Y(t).id)??"";d(F0,"for",`scan_type_${Y(t).id??""}`),u(u0,Y(t).title)}),c5(Q,[],O0,()=>{return Y(t).id,Y(W)},(n0)=>R(W,n0)),V(e,G0)}),C(b);var k=S(b,2),$=S(x(k));$0($);var v=S($,2),l=x(v,!0);C(v),C(k);var n=S(k,2);{var o=(e)=>{var t=SY(),G0=S(x(t),2);A0(G0,21,()=>Y(X),O1,(O0,H0)=>{var F0=IY(),u0=x(F0);C(F0);var n0={};g(()=>{if(u(u0,`${Y(H0).name??""} `),n0!==(n0=Y(H0).uri))F0.value=(F0.__value=Y(H0).uri)??""}),V(O0,F0)}),C(G0),C(t),CJ(G0,()=>Y(w),(O0)=>R(w,O0)),V(e,t)};D(n,(e)=>{if(Y(W)=="list")e(o)})}var a=S(n,2);{var X0=(e)=>{I7(e,{get selectedUsers(){return Y(G)},set selectedUsers(t){R(G,t,!0)}})};D(a,(e)=>{if(Y(W)=="users")e(X0)})}var Q0=S(a,2),U0=x(Q0);$0(U0);var D0=S(U0,2);{var M0=(e)=>{var t=DY();g(()=>{d(t,"max",Y(q)),Y6(t,Y(F))}),V(e,t)};D(D0,(e)=>{if(Y(H))e(M0)})}C(Q0),C(y);var v0=S(y,2);{var s=(e)=>{var t=RY(),G0=x(t,!0);C(t),g(()=>u(G0,Y(B))),V(e,t)};D(v0,(e)=>{if(Y(B))e(s)})}var V0=S(v0,2);{var Y0=(e)=>{S7(e,AJ(()=>Y(U),()=>Y(M)))};D(V0,(e)=>{if(Y(M))e(Y0)})}C(N),g((e)=>{u(l,e),Y6(U0,!Y(H)?"Start scan":"Cancel")},[()=>E8(Y(Z))]),L1("submit",y,T),P1($,()=>Y(Z),(e)=>R(Z,e)),V(z,N),_()}I0(["click"]);var AY=L("<!> <!>",1),NY=L('<main class="quotes svelte-13teqqd"><header><h2><!></h2></header> <!></main>');function j7(z,J){i(J,!0);let Q=!1,K,X=!1,Z=x0([]),W=f(void 0),G=f(!1);V8(async()=>{if(Q||X)return;Q=!0;try{let B=await g8.getQuotes(J.postURL,K),M=(await N0.loadPosts(B.posts)).map((P)=>new S0(P));if(Y(W)===void 0)R(W,B.quoteCount,!0);if(Z.push(...M),Q=!1,K=B.cursor,!K||Z.length==0)X=!0}catch(B){console.log(B),Q=!1,R(G,!0),H8(B)}});var w=c(),H=h(w);{var q=(B)=>{var U=NY(),M=x(U),P=x(M),O=x(P);{var j=(N)=>{var y=d1();g(()=>u(y,`${Y(W)??""} quotes:`)),V(N,y)},T=(N)=>{var y=c(),b=h(y);{var A=($)=>{var v=d1("1 quote:");V($,v)},k=($)=>{var v=d1("No quotes found.");V($,v)};D(b,($)=>{if(Y(W)==1)$(A);else $(k,!1)},!0)}V(N,y)};D(O,(N)=>{if(Y(W)>1)N(j);else N(T,!1)})}C(P),C(M);var E=S(M,2);A0(E,17,()=>Z,(N)=>N.uri,(N,y)=>{var b=AY(),A=h(b);{var k=(v)=>{Hz(v,{get uri(){return Y(y).parentReference.uri}})};D(A,(v)=>{if(Y(y).parentReference)v(k)})}var $=S(A,2);I1($,{get post(){return Y(y)},placement:"quotes"}),V(N,b)}),C(U),V(B,U)},F=(B)=>{var U=c(),M=h(U);{var P=(O)=>{n6(O,{})};D(M,(O)=>{if(!Y(G))O(P)},!0)}V(B,U)};D(H,(B)=>{if(Y(W)!==void 0)B(q);else B(F,!1)})}V(z,w),_()}var kY=L('<div id="tangled" class="svelte-18p55jz"><a href="https://tangled.org/mackuba.eu/skythread" target="_blank" class="svelte-18p55jz"><img src="icons/tangled_dolly.svg" alt="Tangled" class="svelte-18p55jz"/></a></div>');function A7(z){var J=kY();V(z,J)}var bY=L('<p class="back"><i class="fa-solid fa-reply"></i> <a> </a></p>'),TY=L('<div class="back"><!></div>'),EY=L('<p class="back"><i class="fa-solid fa-ban"></i> parent post has been deleted</p>'),yY=L(`<p class="back"><i class="fa-solid fa-ban"></i> something went wrong, this shouldn't happen</p>`);function N7(z,J){i(J,!0);var Q=c(),K=h(Q);{var X=(W)=>{var G=bY(),w=S(x(G),2),H=x(w);C(w),C(G),g((q)=>{d(w,"href",q),u(H,`See parent post (@${J.post.author.handle??""})`)},[()=>v6(J.post)]),V(W,G)},Z=(W)=>{var G=c(),w=h(G);{var H=(F)=>{var B=TY(),U=x(B);j5(U,{get post(){return J.post},placement:"parent",reason:"Parent post blocked"}),C(B),V(F,B)},q=(F)=>{var B=c(),U=h(B);{var M=(O)=>{var j=EY();V(O,j)},P=(O)=>{var j=yY();V(O,j)};D(U,(O)=>{if(J.post instanceof P6)O(M);else O(P,!1)},!0)}V(F,B)};D(w,(F)=>{if(J.post instanceof y6)F(H);else F(q,!1)},!0)}V(W,G)};D(K,(W)=>{if(J.post instanceof S0)W(X);else W(Z,!1)})}V(z,Q),_()}var vY=L("<!> <!>",1),gY=L("<main><!></main>");function F9(z,J){i(J,!0);let Q=s6(J,["$$slots","$$events","$$legacy"]),K=f(void 0),X=f(!1),Z=f(void 0),W;if("url"in Q){let{url:F}=Q;if(F.startsWith("at://"))W=N0.loadThreadByAtURI(F);else W=N0.loadThreadByURL(F)}else{let{author:F,rkey:B}=Q;W=N0.loadThreadById(F,B)}W.then((F)=>{let B=w8(F.thread);if(window.root=B,window.subtreeRoot=B,R(K,B,!0),B instanceof S0)B.data.quoteCount=void 0,g8.getQuoteCount(B.uri).then((U)=>{Y(Z)?.setQuoteCount(U)}).catch((U)=>{console.warn("Couldn't load quote count: "+U)})}).catch((F)=>{H8(F),R(X,!0)});var G=c();b8("64euhl",(F)=>{var B=c(),U=h(B);{var M=(P)=>{l5(()=>{Y8.title=`${Y(K).author.displayName??""}: "${Y(K).text??""}" - Skythread`})};D(U,(P)=>{if(Y(K)instanceof S0)P(M)})}V(F,B)});var w=h(G);{var H=(F)=>{var B=gY(),U=x(B);{var M=(O)=>{var j=vY(),T=h(j);{var E=(b)=>{N7(b,{get post(){return Y(K).parent}})},N=(b)=>{var A=c(),k=h(A);{var $=(v)=>{Wz(v,{get uri(){return Y(K).parentReference.uri}})};D(k,(v)=>{if(Y(K).parentReference)v($)},!0)}V(b,A)};D(T,(b)=>{if(Y(K).parent)b(E);else b(N,!1)})}var y=S(T,2);t1(I1(y,{get post(){return Y(K)},placement:"thread"}),(b)=>R(Z,b,!0),()=>Y(Z)),V(O,j)},P=(O)=>{m8(O,{get post(){return Y(K)},placement:"thread"})};D(U,(O)=>{if(Y(K)instanceof S0)O(M);else O(P,!1)})}C(B),V(F,B)},q=(F)=>{var B=c(),U=h(B);{var M=(P)=>{n6(P,{})};D(U,(P)=>{if(!Y(X))P(M)},!0)}V(F,B)};D(w,(F)=>{if(Y(K))F(H);else F(q,!1)})}V(z,G),_()}class k7{timelinePosts;abortController;constructor(){this.timelinePosts=[]}async fetchTimeline(z,J){let Q=new Date().getTime();this.abortController=new AbortController;let K=await q0.loadHomeTimeline(z,{abortSignal:this.abortController.signal,onPageLoad:(X)=>{let Z=this.calculateProgress(X,Q);if(Z)J(Z)}});this.timelinePosts=K}calculateProgress(z,J){let Q=z.at(-1);if(!Q)return null;let K=i1(Q);return(J-K)/86400/1000}searchPosts(z){if(z.length==0)return[];return this.timelinePosts.filter((Q)=>Q.post.record.text.toLowerCase().includes(z)).map((Q)=>JZ(Q))}abortFetch(){this.abortController?.abort(),delete this.abortController}}var hY=L("<progress></progress>"),fY=L('<p class="archive-status"> </p>'),mY=L('<form class="search-form"><p class="search">Search: <input type="text" class="search-query" autocomplete="off"/></p></form> <div class="results"></div>',1),$Y=L('<h2>Timeline search</h2> <div class="timeline-search"><form><p>Fetch timeline posts: <input id="timeline_search_range" type="range" min="1" max="60" class="svelte-ba7vy9"/> <label for="timeline_search_range"> </label></p> <p><input type="submit"/> <!></p></form> <!> <hr/></div> <!>',1);function b7(z,J){i(J,!0);let Q=f(7),K=f(void 0),X=f(void 0),Z=C0(()=>Y(X)!==void 0),W=f(void 0),G=f(""),w=f(x0([])),H=new k7;async function q(B){B.preventDefault();try{if(!Y(Z))R(K,Y(Q),!0),R(X,0),await H.fetchTimeline(Y(Q),(U)=>{R(X,U,!0)}),R(W,Y(X),!0),R(X,void 0);else R(X,void 0),H.abortFetch()}catch(U){if(U.name!=="AbortError")throw U}}function F(B){if(B.key=="Enter"){B.preventDefault();let U=Y(G).trim().toLowerCase();R(w,H.searchPosts(U),!0)}}Bz(z,{children:(B,U)=>{var M=$Y(),P=S(h(M),2),O=x(P),j=x(O),T=S(x(j));$0(T);var E=S(T,2),N=x(E,!0);C(E),C(j);var y=S(j,2),b=x(y);$0(b);var A=S(b,2);{var k=(o)=>{var a=hY();g(()=>{d(a,"max",Y(K)),Y6(a,Y(X))}),V(o,a)};D(A,(o)=>{if(Y(Z))o(k)})}C(y),C(O);var $=S(O,2);{var v=(o)=>{var a=fY(),X0=x(a);C(a),g((Q0)=>u(X0,`Timeline archive fetched: ${Q0??""}`),[()=>E8(Math.round(Y(W)))]),V(o,a)};D($,(o)=>{if(Y(W))o(v)})}c0(2),C(P);var l=S(P,2);{var n=(o)=>{var a=mY(),X0=h(a),Q0=x(X0),U0=S(x(Q0));$0(U0),U0.__keydown=F,C(Q0),C(X0);var D0=S(X0,2);A0(D0,21,()=>Y(w),(M0)=>M0.uri,(M0,v0)=>{I1(M0,{get post(){return Y(v0)},placement:"feed"})}),C(D0),P1(U0,()=>Y(G),(M0)=>R(G,M0)),V(o,a)};D(l,(o)=>{if(Y(W))o(n)})}g((o)=>{u(N,o),Y6(b,Y(Z)?"Cancel":"Fetch timeline")},[()=>E8(Y(Q))]),L1("submit",O,q),P1(T,()=>Y(Q),(o)=>R(Q,o)),V(B,M)},$$slots:{default:!0}}),_()}I0(["keydown"]);var uY=L("<!> <!> <!> <!>",1);function T7(z,J){i(J,!0);let Q=(q)=>{var F=c(),B=h(F);{var U=(P)=>{P7(P,{})},M=(P)=>{var O=c(),j=h(O);{var T=(N)=>{R7(N,{})},E=(N)=>{var y=c(),b=h(y);{var A=($)=>{O7($,{})},k=($)=>{var v=c(),l=h(v);{var n=(a)=>{var X0=c(),Q0=h(X0);{var U0=(M0)=>{L7(M0,{get lycan(){return J.params.lycan}})},D0=(M0)=>{b7(M0,{})};D(Q0,(M0)=>{if(J.params.mode=="likes")M0(U0);else M0(D0,!1)})}V(a,X0)},o=(a)=>{w9(a,{})};D(l,(a)=>{if(J.params.page=="search")a(n);else a(o,!1)},!0)}V($,v)};D(b,($)=>{if(J.params.page=="like_stats")$(A);else $(k,!1)},!0)}V(N,y)};D(j,(N)=>{if(J.params.page=="posting_stats")N(T);else N(E,!1)},!0)}V(P,O)};D(B,(P)=>{if(J.params.page=="notif")P(U);else P(M,!1)})}V(q,F)};if(J.params.page&&!Y1.loggedIn)P5({showClose:!1});var K=uY(),X=h(K);rJ(X,{});var Z=S(X,2);oJ(Z,{});var W=S(Z,2);A7(W,{});var G=S(W,2);{var w=(q)=>{F9(q,{get url(){return J.params.q}})},H=(q)=>{var F=c(),B=h(F);{var U=(P)=>{F9(P,{get author(){return J.params.author},get rkey(){return J.params.post}})},M=(P)=>{var O=c(),j=h(O);{var T=(N)=>{j7(N,{get postURL(){return J.params.quotes}})},E=(N)=>{var y=c(),b=h(y);{var A=($)=>{C7($,{get hashtag(){return J.params.hash}})},k=($)=>{var v=c(),l=h(v);{var n=(a)=>{var X0=c(),Q0=h(X0);{var U0=(D0)=>{Q(D0)};D(Q0,(D0)=>{if(Y1.loggedIn)D0(U0)})}V(a,X0)},o=(a)=>{w9(a,{})};D(l,(a)=>{if(J.params.page)a(n);else a(o,!1)},!0)}V($,v)};D(b,($)=>{if(J.params.hash)$(A);else $(k,!1)},!0)}V(N,y)};D(j,(N)=>{if(J.params.quotes)N(T);else N(E,!1)},!0)}V(P,O)};D(B,(P)=>{if(J.params.author&&J.params.post)P(U);else P(M,!1)},!0)}V(q,F)};D(G,(q)=>{if(J.params.q)q(w);else q(H,!1)})}V(z,K),_()}function lY(){let z=ZZ(location.search);H5(T7,{target:document.body,props:{params:z}})}document.addEventListener("DOMContentLoaded",lY);})();
7
53
8
8
-
//# debugId=174742016E02A49D64756E2164756E21
54
54
+
//# debugId=5F5EE1B7C176518A64756E2164756E21
9
55
//# sourceMappingURL=skythread.js.map