nostr-comments 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var n=document.createElement("style");n.id="nostr-comments-styles",n.appendChild(document.createTextNode(':where(.nostr-comments){--nc-bg: #ffffff;--nc-text: #1f2937;--nc-primary: #319cfc;--nc-error: #dc2626;--nc-success: #16a34a;--nc-bg-secondary: color-mix(in srgb, var(--nc-text) 4%, var(--nc-bg));--nc-bg-hover: color-mix(in srgb, var(--nc-text) 6%, var(--nc-bg));--nc-border: color-mix(in srgb, var(--nc-text) 18%, var(--nc-bg));--nc-text-secondary: color-mix(in srgb, var(--nc-text) 60%, var(--nc-bg));--nc-text-muted: color-mix(in srgb, var(--nc-text) 40%, var(--nc-bg));--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, black);--nc-primary-light: color-mix(in srgb, var(--nc-primary) 8%, var(--nc-bg));--nc-error-light: color-mix(in srgb, var(--nc-error) 6%, var(--nc-bg));--nc-success-light: color-mix(in srgb, var(--nc-success) 12%, var(--nc-bg));--nc-space-xs: 3px;--nc-space-sm: 6px;--nc-space-md: 10px;--nc-space-lg: 14px;--nc-space-xl: 20px;--nc-radius-sm: 6px;--nc-radius-md: 8px;--nc-radius-lg: 10px;--nc-radius-xl: 16px;--nc-radius-full: 9999px;--nc-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;--nc-font-size-xs: 11px;--nc-font-size-sm: 12px;--nc-font-size-md: 13px;--nc-font-size-lg: 15px;--nc-avatar-radius: 50%;--nc-shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--nc-shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--nc-shadow-lg: 0 12px 32px rgba(0, 0, 0, .12);--nc-transition: .2s ease-out}:where(.nostr-comments[data-theme=dark]){--nc-bg: #0d1117;--nc-text: #e6edf3;--nc-primary: #58a6ff;--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, white);--nc-error: #f85149;--nc-success: #3fb950;--nc-border: #30363d;--nc-bg-secondary: #161b22;--nc-bg-hover: #21262d;--nc-primary-light: rgba(88, 166, 255, .15);--nc-error-light: rgba(248, 81, 73, .15);--nc-success-light: rgba(63, 185, 80, .15)}@media(prefers-color-scheme:dark){:where(.nostr-comments[data-theme=auto]){--nc-bg: #0d1117;--nc-text: #e6edf3;--nc-primary: #58a6ff;--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, white);--nc-error: #f85149;--nc-success: #3fb950;--nc-border: #30363d;--nc-bg-secondary: #161b22;--nc-bg-hover: #21262d;--nc-primary-light: rgba(88, 166, 255, .15);--nc-error-light: rgba(248, 81, 73, .15);--nc-success-light: rgba(63, 185, 80, .15)}}.nostr-comments:not([data-headless=true]){font-family:var(--nc-font-family);font-size:var(--nc-font-size-md);color:var(--nc-text);line-height:1.5}.nostr-comments:not([data-headless=true]) *{box-sizing:border-box}.nostr-comments:not([data-headless=true]) .nc-header{margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-title{font-size:var(--nc-font-size-lg);font-weight:600;margin:0;display:flex;align-items:center;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-count{font-weight:400;color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-editor{margin-bottom:var(--nc-space-xl)}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to{display:flex;align-items:center;gap:var(--nc-space-sm);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary-light);border-radius:var(--nc-radius-md);margin-bottom:var(--nc-space-md);font-size:var(--nc-font-size-sm);color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-label{font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-author{color:var(--nc-primary);font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-author:after{content:":"}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-content{color:var(--nc-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nostr-comments:not([data-headless=true]) .nc-editor__cancel-reply{margin-left:auto;background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs) var(--nc-space-sm);border-radius:var(--nc-radius-sm);transition:background var(--nc-transition);flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__cancel-reply:hover{color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-editor__main{display:flex;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-editor__input-wrapper{flex:1}.nostr-comments:not([data-headless=true]) .nc-editor__textarea{width:100%;padding:var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);background:color-mix(in srgb,var(--nc-bg) 60%,transparent);color:var(--nc-text);font-family:inherit;font-size:var(--nc-font-size-md);resize:vertical;min-height:96px;transition:border-color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-editor__textarea:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-editor__textarea::placeholder{color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-editor__actions{display:flex;justify-content:flex-end;margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-editor__submit{padding:var(--nc-space-sm) var(--nc-space-xl);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);font-weight:500;cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-editor__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-editor__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-list{display:flex;flex-direction:column}.nostr-comments:not([data-headless=true]) .nc-loading,.nostr-comments:not([data-headless=true]) .nc-empty,.nostr-comments:not([data-headless=true]) .nc-error{text-align:center;padding:var(--nc-space-xl);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-loading{display:flex;align-items:center;justify-content:center;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-loading__spinner{width:16px;height:16px;border:1.5px solid var(--nc-border);border-top-color:var(--nc-primary);border-radius:50%;animation:nc-spin .8s linear infinite}@keyframes nc-spin{to{transform:rotate(360deg)}}.nostr-comments:not([data-headless=true]) .nc-error__retry{margin-top:var(--nc-space-md);padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);cursor:pointer;color:var(--nc-text);transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-error__retry:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-comment{padding-top:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-comment:first-child{padding-top:0}.nostr-comments:not([data-headless=true]) .nc-comment__main{display:flex;align-items:flex-start;gap:var(--nc-space-md);position:relative}.nostr-comments:not([data-headless=true]) .nc-comment__vline{position:absolute;left:20px;top:48px;bottom:0;border-left:1.5px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-comment__content{flex:1;min-width:0;padding-top:2px}.nostr-comments:not([data-headless=true]) .nc-comment__header{margin-bottom:var(--nc-space-xs);display:flex}.nostr-comments:not([data-headless=true]) .nc-comment__author{font-weight:500;color:var(--nc-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nostr-comments:not([data-headless=true]) .nc-comment__text{margin:0;color:var(--nc-text);white-space:pre-wrap;word-wrap:break-word}.nostr-comments:not([data-headless=true]) .nc-comment__actions{display:flex;align-items:center;gap:var(--nc-space-md);margin-top:var(--nc-space-xs);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-comment__time{color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-btn{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:0;font-size:var(--nc-font-size-sm);transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-btn:hover{color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-comment__child-wrapper{position:relative;padding-left:50px}.nostr-comments:not([data-headless=true]) .nc-comment__connector{position:absolute;left:20px;top:0;width:26px;height:32px;border-left:1.5px solid var(--nc-border);border-bottom:1.5px solid var(--nc-border);border-bottom-left-radius:var(--nc-radius-xl)}.nostr-comments:not([data-headless=true]) .nc-comment__connector-line{position:absolute;left:20px;top:0;bottom:0;border-left:1.5px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview{display:flex;align-items:center;gap:var(--nc-space-xs);padding:var(--nc-space-xs) var(--nc-space-sm);margin-bottom:var(--nc-space-xs);background:var(--nc-bg-secondary);border-radius:var(--nc-radius-sm);border-left:2px solid var(--nc-primary);font-size:var(--nc-font-size-sm);color:var(--nc-text-muted);overflow:hidden;width:fit-content;max-width:100%}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-author{color:var(--nc-primary);font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-author:after{content:":"}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-load-more{display:block;width:100%;padding:var(--nc-space-md);margin-top:var(--nc-space-lg);background:transparent;border:none;color:var(--nc-text-muted);font-size:var(--nc-font-size-sm);cursor:pointer;transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-load-more:hover:not(:disabled){color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-load-more:disabled{cursor:wait}.nostr-comments:not([data-headless=true]) .nc-avatar-link{flex-shrink:0;text-decoration:none;margin-top:4px}.nostr-comments:not([data-headless=true]) .nc-avatar-link:hover{opacity:.8}.nostr-comments:not([data-headless=true]) .nc-avatar{flex-shrink:0;border-radius:var(--nc-avatar-radius, 50%);object-fit:cover;aspect-ratio:1 / 1}.nostr-comments:not([data-headless=true]) .nc-username{color:inherit;text-decoration:none}.nostr-comments:not([data-headless=true]) .nc-username:hover{text-decoration:underline}.nostr-comments:not([data-headless=true]) .nc-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-modal{background:var(--nc-bg);border-radius:var(--nc-radius-xl);width:100%;max-width:400px;max-height:90vh;overflow-y:auto;box-shadow:var(--nc-shadow-lg)}.nostr-comments:not([data-headless=true]) .nc-modal__header{display:flex;align-items:center;padding:var(--nc-space-lg);border-bottom:1px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-modal__header h3{margin:0;font-size:var(--nc-font-size-lg);font-weight:600;flex:1}.nostr-comments:not([data-headless=true]) .nc-modal__back{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs);border-radius:50%;display:flex;transition:background var(--nc-transition);margin-right:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-modal__back:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-modal__close{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs);border-radius:50%;display:flex;margin-left:auto;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-modal__close:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-modal__body{padding:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-modal__description{margin:0 0 var(--nc-space-lg);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-login-options{display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-login-option{display:flex;gap:var(--nc-space-md);padding:var(--nc-space-lg);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);text-align:left;cursor:pointer;transition:border-color var(--nc-transition),background var(--nc-transition);width:100%}.nostr-comments:not([data-headless=true]) .nc-login-option:hover:not(:disabled):not(.nc-login-option--disabled){border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-login-option--disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-login-option--bunker{cursor:default;flex-direction:column}.nostr-comments:not([data-headless=true]) .nc-login-option--bunker .nc-login-option__icon{display:none}.nostr-comments:not([data-headless=true]) .nc-login-option__icon{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--nc-primary-light);color:var(--nc-primary);border-radius:50%}.nostr-comments:not([data-headless=true]) .nc-login-option__icon--success{background:var(--nc-success-light);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-login-option__content h4{margin:0 0 var(--nc-space-xs);font-size:var(--nc-font-size-md);font-weight:500;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-login-option__content p{margin:0;font-size:var(--nc-font-size-sm);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-login-option__hint{margin-top:var(--nc-space-sm)!important;color:var(--nc-text-muted)!important;font-style:italic}.nostr-comments:not([data-headless=true]) .nc-login-option__error{margin-top:var(--nc-space-sm)!important;color:var(--nc-error)!important}.nostr-comments:not([data-headless=true]) .nc-login-option__warning{margin-top:var(--nc-space-sm)!important;padding:var(--nc-space-sm);background:var(--nc-error-light);border-radius:var(--nc-radius-sm);color:var(--nc-error)!important;font-size:var(--nc-font-size-sm)!important}.nostr-comments:not([data-headless=true]) .nc-bunker-form{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__input{flex:1;padding:var(--nc-space-sm) var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);background:var(--nc-bg);color:var(--nc-text);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit{padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);cursor:pointer;white-space:nowrap;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-temp-nsec{margin-top:var(--nc-space-md);padding:var(--nc-space-md);background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);overflow:hidden}.nostr-comments:not([data-headless=true]) .nc-temp-nsec__code{display:block;font-family:monospace;font-size:var(--nc-font-size-xs);color:var(--nc-text);word-break:break-all;-webkit-user-select:all;user-select:all}.nostr-comments:not([data-headless=true]) .nc-login-option__compatibility{margin-top:var(--nc-space-sm)!important;padding:var(--nc-space-sm);background:var(--nc-primary-light);border-radius:var(--nc-radius-sm);color:var(--nc-primary)!important;font-size:var(--nc-font-size-sm)!important}.nostr-comments:not([data-headless=true]) .nc-temp-actions{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--nc-space-xs);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);color:var(--nc-text);cursor:pointer;font-size:var(--nc-font-size-sm);transition:background var(--nc-transition),border-color var(--nc-transition),color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn--success{background:var(--nc-success-light);border-color:var(--nc-success);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn--success:hover{background:var(--nc-success-light)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue{width:100%;margin-top:var(--nc-space-md);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary);border:none;border-radius:var(--nc-radius-md);color:#fff;cursor:pointer;font-weight:500;transition:background var(--nc-transition),opacity var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue:hover{background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue--muted{opacity:.6}.nostr-comments:not([data-headless=true]) .nc-import-form{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-import-form__input{flex:1;padding:var(--nc-space-sm) var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);background:var(--nc-bg);color:var(--nc-text);font-family:monospace;font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-import-form__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit{padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-sm);cursor:pointer;white-space:nowrap;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-import-form__back{margin-top:var(--nc-space-md);padding:var(--nc-space-sm);background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;font-size:var(--nc-font-size-sm);transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-import-form__back:hover{color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-temp-view{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--nc-space-xl) 0}.nostr-comments:not([data-headless=true]) .nc-temp-view__icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--nc-primary-light);color:var(--nc-primary);border-radius:50%;margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__icon--success{width:36px;height:36px;background:var(--nc-success-light);color:var(--nc-success);margin-bottom:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__title{margin:0 0 var(--nc-space-sm);font-size:var(--nc-font-size-lg);font-weight:600;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-temp-view__desc{margin:0 0 var(--nc-space-xl);color:var(--nc-text-secondary);max-width:320px}.nostr-comments:not([data-headless=true]) .nc-temp-view--created{padding:var(--nc-space-lg) 0}.nostr-comments:not([data-headless=true]) .nc-temp-view__header{display:flex;align-items:center;gap:var(--nc-space-md);margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__header .nc-temp-view__title{margin:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-section{width:100%;margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-box{display:flex;align-items:center;gap:var(--nc-space-sm);padding:var(--nc-space-md);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-code{flex:1;font-family:monospace;font-size:var(--nc-font-size-xs);color:var(--nc-text);word-break:break-all;text-align:left;-webkit-user-select:all;user-select:all}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-actions{display:flex;gap:var(--nc-space-xs);flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:50%;color:var(--nc-text-secondary);cursor:pointer;transition:all var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn:hover{border-color:var(--nc-primary);color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn--success{background:var(--nc-success-light);border-color:var(--nc-success);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-hint{margin:var(--nc-space-sm) 0 0;font-size:var(--nc-font-size-sm);color:var(--nc-text-muted);text-align:left}.nostr-comments:not([data-headless=true]) .nc-temp-view__form{width:100%;max-width:320px;display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-temp-view__input{width:100%;padding:var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);background:var(--nc-bg);color:var(--nc-text);font-family:monospace;font-size:var(--nc-font-size-sm);text-align:center}.nostr-comments:not([data-headless=true]) .nc-temp-view__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-temp-view__input::placeholder{font-family:var(--nc-font-family)}.nostr-comments:not([data-headless=true]) .nc-temp-view__error{margin:0;color:var(--nc-error);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit{width:100%;padding:var(--nc-space-md);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);font-weight:500;font-size:var(--nc-font-size-md);cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-logged-in{display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-logged-in__user{display:flex;align-items:center;gap:var(--nc-space-md);padding:var(--nc-space-md);background:var(--nc-bg-secondary);border-radius:var(--nc-radius-md)}.nostr-comments:not([data-headless=true]) .nc-logged-in__info{display:flex;flex-direction:column;gap:var(--nc-space-xs)}.nostr-comments:not([data-headless=true]) .nc-logged-in__name{font-weight:500;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-logged-in__type{font-size:var(--nc-font-size-sm);color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-logged-in__temp-backup{display:flex;flex-direction:column;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-logged-in__logout{margin-top:var(--nc-space-sm);padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-error-light);border:1px solid var(--nc-error);border-radius:var(--nc-radius-md);color:var(--nc-error);cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-logged-in__logout:hover{background:var(--nc-error);color:#fff}')),document.head.appendChild(n)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
- "use strict";var Mc=Object.defineProperty;var Dc=(t,e,n)=>e in t?Mc(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var g=(t,e,n)=>Dc(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react/jsx-runtime"),j=require("react");class en{constructor(){g(this,"cachedPubKey")}static isAvailable(){return typeof window<"u"&&!!window.nostr}async getPublicKey(){if(!window.nostr)throw new Error("NIP-07 extension not available");return this.cachedPubKey||(this.cachedPubKey=await window.nostr.getPublicKey()),this.cachedPubKey}async signEvent(e){if(!window.nostr)throw new Error("NIP-07 extension not available");return window.nostr.signEvent(e)}}function Ho(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function Js(t,...e){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(t.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function Kc(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Ho(t.outputLen),Ho(t.blockLen)}function cn(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function jc(t,e){Js(t);const n=e.outputLen;if(t.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}const Kn=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Gs=t=>t instanceof Uint8Array,jn=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),ve=(t,e)=>t<<32-e|t>>>e,Hc=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Hc)throw new Error("Non little-endian hardware is not supported");function zc(t){if(typeof t!="string")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function Kr(t){if(typeof t=="string"&&(t=zc(t)),!Gs(t))throw new Error(`expected Uint8Array, got ${typeof t}`);return t}function qc(...t){const e=new Uint8Array(t.reduce((r,o)=>r+o.length,0));let n=0;return t.forEach(r=>{if(!Gs(r))throw new Error("Uint8Array expected");e.set(r,n),n+=r.length}),e}let Ys=class{clone(){return this._cloneInto()}};function Vc(t){const e=r=>t().update(Kr(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Xs(t=32){if(Kn&&typeof Kn.getRandomValues=="function")return Kn.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}function Fc(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,i,r),t.setUint32(e+l,a,r)}let Wc=class extends Ys{constructor(e,n,r,o){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=jn(this.buffer)}update(e){cn(this);const{view:n,buffer:r,blockLen:o}=this;e=Kr(e);const s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=jn(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){cn(this),jc(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;Fc(r,o-8,BigInt(this.length*8),s),this.process(r,0);const a=jn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%n&&e.buffer.set(r),e}};const Zc=(t,e,n)=>t&e^~t&n,Jc=(t,e,n)=>t&e^t&n^e&n,Gc=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ke=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),je=new Uint32Array(64);let Yc=class extends Wc{constructor(){super(64,32,8,!1),this.A=Ke[0]|0,this.B=Ke[1]|0,this.C=Ke[2]|0,this.D=Ke[3]|0,this.E=Ke[4]|0,this.F=Ke[5]|0,this.G=Ke[6]|0,this.H=Ke[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)je[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const m=je[u-15],f=je[u-2],p=ve(m,7)^ve(m,18)^m>>>3,h=ve(f,17)^ve(f,19)^f>>>10;je[u]=h+je[u-7]+p+je[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const m=ve(a,6)^ve(a,11)^ve(a,25),f=d+m+Zc(a,c,l)+Gc[u]+je[u]|0,h=(ve(r,2)^ve(r,13)^ve(r,22))+Jc(r,o,s)|0;d=l,l=c,c=a,a=i+f|0,i=s,s=o,o=r,r=f+h|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){je.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};const mr=Vc(()=>new Yc);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */BigInt(0);const Xc=BigInt(1),Qc=BigInt(2),En=t=>t instanceof Uint8Array,el=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Et(t){if(!En(t))throw new Error("Uint8Array expected");let e="";for(let n=0;n<t.length;n++)e+=el[t[n]];return e}function jr(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return BigInt(t===""?"0":`0x${t}`)}function Ot(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(e/2);for(let r=0;r<n.length;r++){const o=r*2,s=t.slice(o,o+2),i=Number.parseInt(s,16);if(Number.isNaN(i)||i<0)throw new Error("Invalid byte sequence");n[r]=i}return n}function ce(t){return jr(Et(t))}function Hr(t){if(!En(t))throw new Error("Uint8Array expected");return jr(Et(Uint8Array.from(t).reverse()))}function Ge(t,e){return Ot(t.toString(16).padStart(e*2,"0"))}function zr(t,e){return Ge(t,e).reverse()}function ee(t,e,n){let r;if(typeof e=="string")try{r=Ot(e)}catch(s){throw new Error(`${t} must be valid hex string, got "${e}". Cause: ${s}`)}else if(En(e))r=Uint8Array.from(e);else throw new Error(`${t} must be hex string or Uint8Array`);const o=r.length;if(typeof n=="number"&&o!==n)throw new Error(`${t} expected ${n} bytes, got ${o}`);return r}function ct(...t){const e=new Uint8Array(t.reduce((r,o)=>r+o.length,0));let n=0;return t.forEach(r=>{if(!En(r))throw new Error("Uint8Array expected");e.set(r,n),n+=r.length}),e}const qr=t=>(Qc<<BigInt(t-1))-Xc,Hn=t=>new Uint8Array(t),zo=t=>Uint8Array.from(t);function Qs(t,e,n){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof n!="function")throw new Error("hmacFn must be a function");let r=Hn(t),o=Hn(t),s=0;const i=()=>{r.fill(1),o.fill(0),s=0},a=(...u)=>n(o,r,...u),c=(u=Hn())=>{o=a(zo([0]),u),r=a(),u.length!==0&&(o=a(zo([1]),u),r=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0;const m=[];for(;u<e;){r=a();const f=r.slice();m.push(f),u+=r.length}return ct(...m)};return(u,m)=>{i(),c(u);let f;for(;!(f=m(l()));)c();return i(),f}}const tl={bigint:t=>typeof t=="bigint",function:t=>typeof t=="function",boolean:t=>typeof t=="boolean",string:t=>typeof t=="string",stringOrUint8Array:t=>typeof t=="string"||t instanceof Uint8Array,isSafeInteger:t=>Number.isSafeInteger(t),array:t=>Array.isArray(t),field:(t,e)=>e.Fp.isValid(t),hash:t=>typeof t=="function"&&Number.isSafeInteger(t.outputLen)};function Ht(t,e,n={}){const r=(o,s,i)=>{const a=tl[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);const c=t[o];if(!(i&&c===void 0)&&!a(c,t))throw new Error(`Invalid param ${String(o)}=${c} (${typeof c}), expected ${s}`)};for(const[o,s]of Object.entries(e))r(o,s,!1);for(const[o,s]of Object.entries(n))r(o,s,!0);return t}const nl=Object.freeze(Object.defineProperty({__proto__:null,bitMask:qr,bytesToHex:Et,bytesToNumberBE:ce,bytesToNumberLE:Hr,concatBytes:ct,createHmacDrbg:Qs,ensureBytes:ee,hexToBytes:Ot,hexToNumber:jr,numberToBytesBE:Ge,numberToBytesLE:zr,validateObject:Ht},Symbol.toStringTag,{value:"Module"}));/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const X=BigInt(0),J=BigInt(1),rt=BigInt(2),rl=BigInt(3),pr=BigInt(4),qo=BigInt(5),Vo=BigInt(8);BigInt(9);BigInt(16);function Q(t,e){const n=t%e;return n>=X?n:e+n}function ol(t,e,n){if(n<=X||e<X)throw new Error("Expected power/modulo > 0");if(n===J)return X;let r=J;for(;e>X;)e&J&&(r=r*t%n),t=t*t%n,e>>=J;return r}function de(t,e,n){let r=t;for(;e-- >X;)r*=r,r%=n;return r}function gr(t,e){if(t===X||e<=X)throw new Error(`invert: expected positive integers, got n=${t} mod=${e}`);let n=Q(t,e),r=e,o=X,s=J;for(;n!==X;){const a=r/n,c=r%n,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==J)throw new Error("invert: does not exist");return Q(o,e)}function sl(t){const e=(t-J)/rt;let n,r,o;for(n=t-J,r=0;n%rt===X;n/=rt,r++);for(o=rt;o<t&&ol(o,e,t)!==t-J;o++);if(r===1){const i=(t+J)/pr;return function(c,l){const d=c.pow(l,i);if(!c.eql(c.sqr(d),l))throw new Error("Cannot find square root");return d}}const s=(n+J)/rt;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=r,d=a.pow(a.mul(a.ONE,o),n),u=a.pow(c,s),m=a.pow(c,n);for(;!a.eql(m,a.ONE);){if(a.eql(m,a.ZERO))return a.ZERO;let f=1;for(let h=a.sqr(m);f<l&&!a.eql(h,a.ONE);f++)h=a.sqr(h);const p=a.pow(d,J<<BigInt(l-f-1));d=a.sqr(p),u=a.mul(u,p),m=a.mul(m,d),l=f}return u}}function il(t){if(t%pr===rl){const e=(t+J)/pr;return function(r,o){const s=r.pow(o,e);if(!r.eql(r.sqr(s),o))throw new Error("Cannot find square root");return s}}if(t%Vo===qo){const e=(t-qo)/Vo;return function(r,o){const s=r.mul(o,rt),i=r.pow(s,e),a=r.mul(o,i),c=r.mul(r.mul(a,rt),i),l=r.mul(a,r.sub(c,r.ONE));if(!r.eql(r.sqr(l),o))throw new Error("Cannot find square root");return l}}return sl(t)}const al=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function cl(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},n=al.reduce((r,o)=>(r[o]="function",r),e);return Ht(t,n)}function ll(t,e,n){if(n<X)throw new Error("Expected power > 0");if(n===X)return t.ONE;if(n===J)return e;let r=t.ONE,o=e;for(;n>X;)n&J&&(r=t.mul(r,o)),o=t.sqr(o),n>>=J;return r}function ul(t,e){const n=new Array(e.length),r=e.reduce((s,i,a)=>t.is0(i)?s:(n[a]=s,t.mul(s,i)),t.ONE),o=t.inv(r);return e.reduceRight((s,i,a)=>t.is0(i)?s:(n[a]=t.mul(s,n[a]),t.mul(s,i)),o),n}function ei(t,e){const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function dl(t,e,n=!1,r={}){if(t<=X)throw new Error(`Expected Field ORDER > 0, got ${t}`);const{nBitLength:o,nByteLength:s}=ei(t,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");const i=il(t),a=Object.freeze({ORDER:t,BITS:o,BYTES:s,MASK:qr(o),ZERO:X,ONE:J,create:c=>Q(c,t),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return X<=c&&c<t},is0:c=>c===X,isOdd:c=>(c&J)===J,neg:c=>Q(-c,t),eql:(c,l)=>c===l,sqr:c=>Q(c*c,t),add:(c,l)=>Q(c+l,t),sub:(c,l)=>Q(c-l,t),mul:(c,l)=>Q(c*l,t),pow:(c,l)=>ll(a,c,l),div:(c,l)=>Q(c*gr(l,t),t),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>gr(c,t),sqrt:r.sqrt||(c=>i(a,c)),invertBatch:c=>ul(a,c),cmov:(c,l,d)=>d?l:c,toBytes:c=>n?zr(c,s):Ge(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return n?Hr(c):ce(c)}});return Object.freeze(a)}function ti(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function ni(t){const e=ti(t);return e+Math.ceil(e/2)}function hl(t,e,n=!1){const r=t.length,o=ti(e),s=ni(e);if(r<16||r<s||r>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${r}`);const i=n?ce(t):Hr(t),a=Q(i,e-J)+J;return n?zr(a,o):Ge(a,o)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const fl=BigInt(0),zn=BigInt(1);function ml(t,e){const n=(o,s)=>{const i=s.negate();return o?i:s},r=o=>{const s=Math.ceil(e/o)+1,i=2**(o-1);return{windows:s,windowSize:i}};return{constTimeNegate:n,unsafeLadder(o,s){let i=t.ZERO,a=o;for(;s>fl;)s&zn&&(i=i.add(a)),a=a.double(),s>>=zn;return i},precomputeWindow(o,s){const{windows:i,windowSize:a}=r(s),c=[];let l=o,d=l;for(let u=0;u<i;u++){d=l,c.push(d);for(let m=1;m<a;m++)d=d.add(l),c.push(d);l=d.double()}return c},wNAF(o,s,i){const{windows:a,windowSize:c}=r(o);let l=t.ZERO,d=t.BASE;const u=BigInt(2**o-1),m=2**o,f=BigInt(o);for(let p=0;p<a;p++){const h=p*c;let y=Number(i&u);i>>=f,y>c&&(y-=m,i+=zn);const v=h,E=h+Math.abs(y)-1,S=p%2!==0,M=y<0;y===0?d=d.add(n(S,s[v])):l=l.add(n(M,s[E]))}return{p:l,f:d}},wNAFCached(o,s,i,a){const c=o._WINDOW_SIZE||1;let l=s.get(o);return l||(l=this.precomputeWindow(o,c),c!==1&&s.set(o,a(l))),this.wNAF(c,l,i)}}}function ri(t){return cl(t.Fp),Ht(t,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...ei(t.n,t.nBitLength),...t,p:t.Fp.ORDER})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function pl(t){const e=ri(t);Ht(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:n,Fp:r,a:o}=e;if(n){if(!r.eql(o,r.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof n!="object"||typeof n.beta!="bigint"||typeof n.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}const{bytesToNumberBE:gl,hexToBytes:yl}=nl,ot={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(t){const{Err:e}=ot;if(t.length<2||t[0]!==2)throw new e("Invalid signature integer tag");const n=t[1],r=t.subarray(2,n+2);if(!n||r.length!==n)throw new e("Invalid signature integer: wrong length");if(r[0]&128)throw new e("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:gl(r),l:t.subarray(n+2)}},toSig(t){const{Err:e}=ot,n=typeof t=="string"?yl(t):t;if(!(n instanceof Uint8Array))throw new Error("ui8a expected");let r=n.length;if(r<2||n[0]!=48)throw new e("Invalid signature tag");if(n[1]!==r-2)throw new e("Invalid signature: incorrect length");const{d:o,l:s}=ot._parseInt(n.subarray(2)),{d:i,l:a}=ot._parseInt(s);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(t){const e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,n=l=>{const d=l.toString(16);return d.length&1?`0${d}`:d},r=e(n(t.s)),o=e(n(t.r)),s=r.length/2,i=o.length/2,a=n(s),c=n(i);return`30${n(i+s+4)}02${c}${o}02${a}${r}`}},Ie=BigInt(0),fe=BigInt(1);BigInt(2);const Fo=BigInt(3);BigInt(4);function bl(t){const e=pl(t),{Fp:n}=e,r=e.toBytes||((p,h,y)=>{const v=h.toAffine();return ct(Uint8Array.from([4]),n.toBytes(v.x),n.toBytes(v.y))}),o=e.fromBytes||(p=>{const h=p.subarray(1),y=n.fromBytes(h.subarray(0,n.BYTES)),v=n.fromBytes(h.subarray(n.BYTES,2*n.BYTES));return{x:y,y:v}});function s(p){const{a:h,b:y}=e,v=n.sqr(p),E=n.mul(v,p);return n.add(n.add(E,n.mul(p,h)),y)}if(!n.eql(n.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(p){return typeof p=="bigint"&&Ie<p&&p<e.n}function a(p){if(!i(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){const{allowedPrivateKeyLengths:h,nByteLength:y,wrapPrivateKey:v,n:E}=e;if(h&&typeof p!="bigint"){if(p instanceof Uint8Array&&(p=Et(p)),typeof p!="string"||!h.includes(p.length))throw new Error("Invalid key");p=p.padStart(y*2,"0")}let S;try{S=typeof p=="bigint"?p:ce(ee("private key",p,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof p}`)}return v&&(S=Q(S,E)),a(S),S}const l=new Map;function d(p){if(!(p instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(h,y,v){if(this.px=h,this.py=y,this.pz=v,h==null||!n.isValid(h))throw new Error("x required");if(y==null||!n.isValid(y))throw new Error("y required");if(v==null||!n.isValid(v))throw new Error("z required")}static fromAffine(h){const{x:y,y:v}=h||{};if(!h||!n.isValid(y)||!n.isValid(v))throw new Error("invalid affine point");if(h instanceof u)throw new Error("projective point not allowed");const E=S=>n.eql(S,n.ZERO);return E(y)&&E(v)?u.ZERO:new u(y,v,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(h){const y=n.invertBatch(h.map(v=>v.pz));return h.map((v,E)=>v.toAffine(y[E])).map(u.fromAffine)}static fromHex(h){const y=u.fromAffine(o(ee("pointHex",h)));return y.assertValidity(),y}static fromPrivateKey(h){return u.BASE.multiply(c(h))}_setWindowSize(h){this._WINDOW_SIZE=h,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!n.is0(this.py))return;throw new Error("bad point: ZERO")}const{x:h,y}=this.toAffine();if(!n.isValid(h)||!n.isValid(y))throw new Error("bad point: x or y not FE");const v=n.sqr(y),E=s(h);if(!n.eql(v,E))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){const{y:h}=this.toAffine();if(n.isOdd)return!n.isOdd(h);throw new Error("Field doesn't support isOdd")}equals(h){d(h);const{px:y,py:v,pz:E}=this,{px:S,py:M,pz:O}=h,_=n.eql(n.mul(y,O),n.mul(S,E)),N=n.eql(n.mul(v,O),n.mul(M,E));return _&&N}negate(){return new u(this.px,n.neg(this.py),this.pz)}double(){const{a:h,b:y}=e,v=n.mul(y,Fo),{px:E,py:S,pz:M}=this;let O=n.ZERO,_=n.ZERO,N=n.ZERO,L=n.mul(E,E),K=n.mul(S,S),P=n.mul(M,M),$=n.mul(E,S);return $=n.add($,$),N=n.mul(E,M),N=n.add(N,N),O=n.mul(h,N),_=n.mul(v,P),_=n.add(O,_),O=n.sub(K,_),_=n.add(K,_),_=n.mul(O,_),O=n.mul($,O),N=n.mul(v,N),P=n.mul(h,P),$=n.sub(L,P),$=n.mul(h,$),$=n.add($,N),N=n.add(L,L),L=n.add(N,L),L=n.add(L,P),L=n.mul(L,$),_=n.add(_,L),P=n.mul(S,M),P=n.add(P,P),L=n.mul(P,$),O=n.sub(O,L),N=n.mul(P,K),N=n.add(N,N),N=n.add(N,N),new u(O,_,N)}add(h){d(h);const{px:y,py:v,pz:E}=this,{px:S,py:M,pz:O}=h;let _=n.ZERO,N=n.ZERO,L=n.ZERO;const K=e.a,P=n.mul(e.b,Fo);let $=n.mul(y,S),U=n.mul(v,M),D=n.mul(E,O),k=n.add(y,v),w=n.add(S,M);k=n.mul(k,w),w=n.add($,U),k=n.sub(k,w),w=n.add(y,E);let x=n.add(S,O);return w=n.mul(w,x),x=n.add($,D),w=n.sub(w,x),x=n.add(v,E),_=n.add(M,O),x=n.mul(x,_),_=n.add(U,D),x=n.sub(x,_),L=n.mul(K,w),_=n.mul(P,D),L=n.add(_,L),_=n.sub(U,L),L=n.add(U,L),N=n.mul(_,L),U=n.add($,$),U=n.add(U,$),D=n.mul(K,D),w=n.mul(P,w),U=n.add(U,D),D=n.sub($,D),D=n.mul(K,D),w=n.add(w,D),$=n.mul(U,w),N=n.add(N,$),$=n.mul(x,w),_=n.mul(k,_),_=n.sub(_,$),$=n.mul(k,U),L=n.mul(x,L),L=n.add(L,$),new u(_,N,L)}subtract(h){return this.add(h.negate())}is0(){return this.equals(u.ZERO)}wNAF(h){return f.wNAFCached(this,l,h,y=>{const v=n.invertBatch(y.map(E=>E.pz));return y.map((E,S)=>E.toAffine(v[S])).map(u.fromAffine)})}multiplyUnsafe(h){const y=u.ZERO;if(h===Ie)return y;if(a(h),h===fe)return this;const{endo:v}=e;if(!v)return f.unsafeLadder(this,h);let{k1neg:E,k1:S,k2neg:M,k2:O}=v.splitScalar(h),_=y,N=y,L=this;for(;S>Ie||O>Ie;)S&fe&&(_=_.add(L)),O&fe&&(N=N.add(L)),L=L.double(),S>>=fe,O>>=fe;return E&&(_=_.negate()),M&&(N=N.negate()),N=new u(n.mul(N.px,v.beta),N.py,N.pz),_.add(N)}multiply(h){a(h);let y=h,v,E;const{endo:S}=e;if(S){const{k1neg:M,k1:O,k2neg:_,k2:N}=S.splitScalar(y);let{p:L,f:K}=this.wNAF(O),{p:P,f:$}=this.wNAF(N);L=f.constTimeNegate(M,L),P=f.constTimeNegate(_,P),P=new u(n.mul(P.px,S.beta),P.py,P.pz),v=L.add(P),E=K.add($)}else{const{p:M,f:O}=this.wNAF(y);v=M,E=O}return u.normalizeZ([v,E])[0]}multiplyAndAddUnsafe(h,y,v){const E=u.BASE,S=(O,_)=>_===Ie||_===fe||!O.equals(E)?O.multiplyUnsafe(_):O.multiply(_),M=S(this,y).add(S(h,v));return M.is0()?void 0:M}toAffine(h){const{px:y,py:v,pz:E}=this,S=this.is0();h==null&&(h=S?n.ONE:n.inv(E));const M=n.mul(y,h),O=n.mul(v,h),_=n.mul(E,h);if(S)return{x:n.ZERO,y:n.ZERO};if(!n.eql(_,n.ONE))throw new Error("invZ was invalid");return{x:M,y:O}}isTorsionFree(){const{h,isTorsionFree:y}=e;if(h===fe)return!0;if(y)return y(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h,clearCofactor:y}=e;return h===fe?this:y?y(u,this):this.multiplyUnsafe(e.h)}toRawBytes(h=!0){return this.assertValidity(),r(u,this,h)}toHex(h=!0){return Et(this.toRawBytes(h))}}u.BASE=new u(e.Gx,e.Gy,n.ONE),u.ZERO=new u(n.ZERO,n.ONE,n.ZERO);const m=e.nBitLength,f=ml(u,e.endo?Math.ceil(m/2):m);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function wl(t){const e=ri(t);return Ht(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function vl(t){const e=wl(t),{Fp:n,n:r}=e,o=n.BYTES+1,s=2*n.BYTES+1;function i(w){return Ie<w&&w<n.ORDER}function a(w){return Q(w,r)}function c(w){return gr(w,r)}const{ProjectivePoint:l,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:m}=bl({...e,toBytes(w,x,A){const I=x.toAffine(),C=n.toBytes(I.x),R=ct;return A?R(Uint8Array.from([x.hasEvenY()?2:3]),C):R(Uint8Array.from([4]),C,n.toBytes(I.y))},fromBytes(w){const x=w.length,A=w[0],I=w.subarray(1);if(x===o&&(A===2||A===3)){const C=ce(I);if(!i(C))throw new Error("Point is not on curve");const R=u(C);let B=n.sqrt(R);const T=(B&fe)===fe;return(A&1)===1!==T&&(B=n.neg(B)),{x:C,y:B}}else if(x===s&&A===4){const C=n.fromBytes(I.subarray(0,n.BYTES)),R=n.fromBytes(I.subarray(n.BYTES,2*n.BYTES));return{x:C,y:R}}else throw new Error(`Point of length ${x} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),f=w=>Et(Ge(w,e.nByteLength));function p(w){const x=r>>fe;return w>x}function h(w){return p(w)?a(-w):w}const y=(w,x,A)=>ce(w.slice(x,A));class v{constructor(x,A,I){this.r=x,this.s=A,this.recovery=I,this.assertValidity()}static fromCompact(x){const A=e.nByteLength;return x=ee("compactSignature",x,A*2),new v(y(x,0,A),y(x,A,2*A))}static fromDER(x){const{r:A,s:I}=ot.toSig(ee("DER",x));return new v(A,I)}assertValidity(){if(!m(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!m(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(x){return new v(this.r,this.s,x)}recoverPublicKey(x){const{r:A,s:I,recovery:C}=this,R=N(ee("msgHash",x));if(C==null||![0,1,2,3].includes(C))throw new Error("recovery id invalid");const B=C===2||C===3?A+e.n:A;if(B>=n.ORDER)throw new Error("recovery id 2 or 3 invalid");const T=(C&1)===0?"02":"03",H=l.fromHex(T+f(B)),z=c(B),F=a(-R*z),q=a(I*z),G=l.BASE.multiplyAndAddUnsafe(H,F,q);if(!G)throw new Error("point at infinify");return G.assertValidity(),G}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new v(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return Ot(this.toDERHex())}toDERHex(){return ot.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Ot(this.toCompactHex())}toCompactHex(){return f(this.r)+f(this.s)}}const E={isValidPrivateKey(w){try{return d(w),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{const w=ni(e.n);return hl(e.randomBytes(w),e.n)},precompute(w=8,x=l.BASE){return x._setWindowSize(w),x.multiply(BigInt(3)),x}};function S(w,x=!0){return l.fromPrivateKey(w).toRawBytes(x)}function M(w){const x=w instanceof Uint8Array,A=typeof w=="string",I=(x||A)&&w.length;return x?I===o||I===s:A?I===2*o||I===2*s:w instanceof l}function O(w,x,A=!0){if(M(w))throw new Error("first arg must be private key");if(!M(x))throw new Error("second arg must be public key");return l.fromHex(x).multiply(d(w)).toRawBytes(A)}const _=e.bits2int||function(w){const x=ce(w),A=w.length*8-e.nBitLength;return A>0?x>>BigInt(A):x},N=e.bits2int_modN||function(w){return a(_(w))},L=qr(e.nBitLength);function K(w){if(typeof w!="bigint")throw new Error("bigint expected");if(!(Ie<=w&&w<L))throw new Error(`bigint expected < 2^${e.nBitLength}`);return Ge(w,e.nByteLength)}function P(w,x,A=$){if(["recovered","canonical"].some(se=>se in A))throw new Error("sign() legacy options not supported");const{hash:I,randomBytes:C}=e;let{lowS:R,prehash:B,extraEntropy:T}=A;R==null&&(R=!0),w=ee("msgHash",w),B&&(w=ee("prehashed msgHash",I(w)));const H=N(w),z=d(x),F=[K(z),K(H)];if(T!=null){const se=T===!0?C(n.BYTES):T;F.push(ee("extraEntropy",se))}const q=ct(...F),G=H;function ne(se){const Z=_(se);if(!m(Z))return;const ue=c(Z),ht=l.BASE.multiply(Z).toAffine(),me=a(ht.x);if(me===Ie)return;const ft=a(ue*a(G+me*z));if(ft===Ie)return;let Ko=(ht.x===me?0:2)|Number(ht.y&fe),jo=ft;return R&&p(ft)&&(jo=h(ft),Ko^=1),new v(me,jo,Ko)}return{seed:q,k2sig:ne}}const $={lowS:e.lowS,prehash:!1},U={lowS:e.lowS,prehash:!1};function D(w,x,A=$){const{seed:I,k2sig:C}=P(w,x,A),R=e;return Qs(R.hash.outputLen,R.nByteLength,R.hmac)(I,C)}l.BASE._setWindowSize(8);function k(w,x,A,I=U){var ht;const C=w;if(x=ee("msgHash",x),A=ee("publicKey",A),"strict"in I)throw new Error("options.strict was renamed to lowS");const{lowS:R,prehash:B}=I;let T,H;try{if(typeof C=="string"||C instanceof Uint8Array)try{T=v.fromDER(C)}catch(me){if(!(me instanceof ot.Err))throw me;T=v.fromCompact(C)}else if(typeof C=="object"&&typeof C.r=="bigint"&&typeof C.s=="bigint"){const{r:me,s:ft}=C;T=new v(me,ft)}else throw new Error("PARSE");H=l.fromHex(A)}catch(me){if(me.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(R&&T.hasHighS())return!1;B&&(x=e.hash(x));const{r:z,s:F}=T,q=N(x),G=c(F),ne=a(q*G),se=a(z*G),Z=(ht=l.BASE.multiplyAndAddUnsafe(H,ne,se))==null?void 0:ht.toAffine();return Z?a(Z.x)===z:!1}return{CURVE:e,getPublicKey:S,getSharedSecret:O,sign:D,verify:k,ProjectivePoint:l,Signature:v,utils:E}}let oi=class extends Ys{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,Kc(e);const r=Kr(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(e){return cn(this),this.iHash.update(e),this}digestInto(e){cn(this),Js(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}};const si=(t,e,n)=>new oi(t,e).update(n).digest();si.create=(t,e)=>new oi(t,e);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function xl(t){return{hash:t,hmac:(e,...n)=>si(t,e,qc(...n)),randomBytes:Xs}}function El(t,e){const n=r=>vl({...t,...xl(r)});return Object.freeze({...n(e),create:n})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const kn=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),ln=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),ii=BigInt(1),un=BigInt(2),Wo=(t,e)=>(t+e/un)/e;function ai(t){const e=kn,n=BigInt(3),r=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=de(d,n,e)*d%e,m=de(u,n,e)*d%e,f=de(m,un,e)*l%e,p=de(f,o,e)*f%e,h=de(p,s,e)*p%e,y=de(h,a,e)*h%e,v=de(y,c,e)*y%e,E=de(v,a,e)*h%e,S=de(E,n,e)*d%e,M=de(S,i,e)*p%e,O=de(M,r,e)*l%e,_=de(O,un,e);if(!yr.eql(yr.sqr(_),t))throw new Error("Cannot find square root");return _}const yr=dl(kn,void 0,void 0,{sqrt:ai}),ut=El({a:BigInt(0),b:BigInt(7),Fp:yr,n:ln,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:t=>{const e=ln,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-ii*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=n,i=BigInt("0x100000000000000000000000000000000"),a=Wo(s*t,e),c=Wo(-r*t,e);let l=Q(t-a*n-c*o,e),d=Q(-a*r-c*s,e);const u=l>i,m=d>i;if(u&&(l=e-l),m&&(d=e-d),l>i||d>i)throw new Error("splitScalar: Endomorphism failed, k="+t);return{k1neg:u,k1:l,k2neg:m,k2:d}}}},mr),_n=BigInt(0),ci=t=>typeof t=="bigint"&&_n<t&&t<kn,kl=t=>typeof t=="bigint"&&_n<t&&t<ln,Zo={};function dn(t,...e){let n=Zo[t];if(n===void 0){const r=mr(Uint8Array.from(t,o=>o.charCodeAt(0)));n=ct(r,r),Zo[t]=n}return mr(ct(n,...e))}const Vr=t=>t.toRawBytes(!0).slice(1),br=t=>Ge(t,32),qn=t=>Q(t,kn),Mt=t=>Q(t,ln),Fr=ut.ProjectivePoint,_l=(t,e,n)=>Fr.BASE.multiplyAndAddUnsafe(t,e,n);function wr(t){let e=ut.utils.normPrivateKeyToScalar(t),n=Fr.fromPrivateKey(e);return{scalar:n.hasEvenY()?e:Mt(-e),bytes:Vr(n)}}function li(t){if(!ci(t))throw new Error("bad x: need 0 < x < p");const e=qn(t*t),n=qn(e*t+BigInt(7));let r=ai(n);r%un!==_n&&(r=qn(-r));const o=new Fr(t,r,ii);return o.assertValidity(),o}function ui(...t){return Mt(ce(dn("BIP0340/challenge",...t)))}function Al(t){return wr(t).bytes}function Sl(t,e,n=Xs(32)){const r=ee("message",t),{bytes:o,scalar:s}=wr(e),i=ee("auxRand",n,32),a=br(s^ce(dn("BIP0340/aux",i))),c=dn("BIP0340/nonce",a,o,r),l=Mt(ce(c));if(l===_n)throw new Error("sign failed: k is zero");const{bytes:d,scalar:u}=wr(l),m=ui(d,o,r),f=new Uint8Array(64);if(f.set(d,0),f.set(br(Mt(u+m*s)),32),!di(f,r,o))throw new Error("sign: Invalid signature produced");return f}function di(t,e,n){const r=ee("signature",t,64),o=ee("message",e),s=ee("publicKey",n,32);try{const i=li(ce(s)),a=ce(r.subarray(0,32));if(!ci(a))return!1;const c=ce(r.subarray(32,64));if(!kl(c))return!1;const l=ui(br(a),Vr(i),o),d=_l(i,c,Mt(-l));return!(!d||!d.hasEvenY()||d.toAffine().x!==a)}catch{return!1}}const ke={getPublicKey:Al,sign:Sl,verify:di,utils:{randomPrivateKey:ut.utils.randomPrivateKey,lift_x:li,pointToBytes:Vr,numberToBytesBE:Ge,bytesToNumberBE:ce,taggedHash:dn,mod:Q}},Vn=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Wr=t=>t instanceof Uint8Array,Fn=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),xe=(t,e)=>t<<32-e|t>>>e,Nl=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Nl)throw new Error("Non little-endian hardware is not supported");const Cl=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Y(t){if(!Wr(t))throw new Error("Uint8Array expected");let e="";for(let n=0;n<t.length;n++)e+=Cl[t[n]];return e}function lt(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(e/2);for(let r=0;r<n.length;r++){const o=r*2,s=t.slice(o,o+2),i=Number.parseInt(s,16);if(Number.isNaN(i)||i<0)throw new Error("Invalid byte sequence");n[r]=i}return n}function Bl(t){if(typeof t!="string")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function Dt(t){if(typeof t=="string"&&(t=Bl(t)),!Wr(t))throw new Error(`expected Uint8Array, got ${typeof t}`);return t}function dt(...t){const e=new Uint8Array(t.reduce((r,o)=>r+o.length,0));let n=0;return t.forEach(r=>{if(!Wr(r))throw new Error("Uint8Array expected");e.set(r,n),n+=r.length}),e}class hi{clone(){return this._cloneInto()}}function fi(t){const e=r=>t().update(Dt(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Zr(t=32){if(Vn&&typeof Vn.getRandomValues=="function")return Vn.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}function vr(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function Ll(t){if(typeof t!="boolean")throw new Error(`Expected boolean, not ${t}`)}function mi(t,...e){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(t.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function Il(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");vr(t.outputLen),vr(t.blockLen)}function Rl(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function $l(t,e){mi(t);const n=e.outputLen;if(t.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}const _e={number:vr,bool:Ll,bytes:mi,hash:Il,exists:Rl,output:$l};function Tl(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,i,r),t.setUint32(e+l,a,r)}class Pl extends hi{constructor(e,n,r,o){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Fn(this.buffer)}update(e){_e.exists(this);const{view:n,buffer:r,blockLen:o}=this;e=Dt(e);const s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=Fn(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){_e.exists(this),_e.output(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;Tl(r,o-8,BigInt(this.length*8),s),this.process(r,0);const a=Fn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%n&&e.buffer.set(r),e}}const Ul=(t,e,n)=>t&e^~t&n,Ol=(t,e,n)=>t&e^t&n^e&n,Ml=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),He=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ze=new Uint32Array(64);class pi extends Pl{constructor(){super(64,32,8,!1),this.A=He[0]|0,this.B=He[1]|0,this.C=He[2]|0,this.D=He[3]|0,this.E=He[4]|0,this.F=He[5]|0,this.G=He[6]|0,this.H=He[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)ze[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const m=ze[u-15],f=ze[u-2],p=xe(m,7)^xe(m,18)^m>>>3,h=xe(f,17)^xe(f,19)^f>>>10;ze[u]=h+ze[u-7]+p+ze[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const m=xe(a,6)^xe(a,11)^xe(a,25),f=d+m+Ul(a,c,l)+Ml[u]+ze[u]|0,h=(xe(r,2)^xe(r,13)^xe(r,22))+Ol(r,o,s)|0;d=l,l=c,c=a,a=i+f|0,i=s,s=o,o=r,r=f+h|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){ze.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}class Dl extends pi{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}}const be=fi(()=>new pi);fi(()=>new Dl);/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function Nt(t){if(!Number.isSafeInteger(t))throw new Error(`Wrong integer: ${t}`)}function Pe(...t){const e=(o,s)=>i=>o(s(i)),n=Array.from(t).reverse().reduce((o,s)=>o?e(o,s.encode):s.encode,void 0),r=t.reduce((o,s)=>o?e(o,s.decode):s.decode,void 0);return{encode:n,decode:r}}function Ue(t){return{encode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="number")throw new Error("alphabet.encode input should be an array of numbers");return e.map(n=>{if(Nt(n),n<0||n>=t.length)throw new Error(`Digit index outside alphabet: ${n} (alphabet: ${t.length})`);return t[n]})},decode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="string")throw new Error("alphabet.decode input should be array of strings");return e.map(n=>{if(typeof n!="string")throw new Error(`alphabet.decode: not string element=${n}`);const r=t.indexOf(n);if(r===-1)throw new Error(`Unknown letter: "${n}". Allowed: ${t}`);return r})}}}function Oe(t=""){if(typeof t!="string")throw new Error("join separator should be string");return{encode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="string")throw new Error("join.encode input should be array of strings");for(let n of e)if(typeof n!="string")throw new Error(`join.encode: non-string input=${n}`);return e.join(t)},decode:e=>{if(typeof e!="string")throw new Error("join.decode input should be string");return e.split(t)}}}function An(t,e="="){if(Nt(t),typeof e!="string")throw new Error("padding chr should be string");return{encode(n){if(!Array.isArray(n)||n.length&&typeof n[0]!="string")throw new Error("padding.encode input should be array of strings");for(let r of n)if(typeof r!="string")throw new Error(`padding.encode: non-string input=${r}`);for(;n.length*t%8;)n.push(e);return n},decode(n){if(!Array.isArray(n)||n.length&&typeof n[0]!="string")throw new Error("padding.encode input should be array of strings");for(let o of n)if(typeof o!="string")throw new Error(`padding.decode: non-string input=${o}`);let r=n.length;if(r*t%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;r>0&&n[r-1]===e;r--)if(!((r-1)*t%8))throw new Error("Invalid padding: string has too much padding");return n.slice(0,r)}}}function gi(t){if(typeof t!="function")throw new Error("normalize fn should be function");return{encode:e=>e,decode:e=>t(e)}}function Jo(t,e,n){if(e<2)throw new Error(`convertRadix: wrong from=${e}, base cannot be less than 2`);if(n<2)throw new Error(`convertRadix: wrong to=${n}, base cannot be less than 2`);if(!Array.isArray(t))throw new Error("convertRadix: data should be array");if(!t.length)return[];let r=0;const o=[],s=Array.from(t);for(s.forEach(i=>{if(Nt(i),i<0||i>=e)throw new Error(`Wrong integer: ${i}`)});;){let i=0,a=!0;for(let c=r;c<s.length;c++){const l=s[c],d=e*i+l;if(!Number.isSafeInteger(d)||e*i/e!==i||d-l!==e*i)throw new Error("convertRadix: carry overflow");if(i=d%n,s[c]=Math.floor(d/n),!Number.isSafeInteger(s[c])||s[c]*n+i!==d)throw new Error("convertRadix: carry overflow");if(a)s[c]?a=!1:r=c;else continue}if(o.push(i),a)break}for(let i=0;i<t.length-1&&t[i]===0;i++)o.push(0);return o.reverse()}const yi=(t,e)=>e?yi(e,t%e):t,hn=(t,e)=>t+(e-yi(t,e));function xr(t,e,n,r){if(!Array.isArray(t))throw new Error("convertRadix2: data should be array");if(e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(hn(e,n)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${n} carryBits=${hn(e,n)}`);let o=0,s=0;const i=2**n-1,a=[];for(const c of t){if(Nt(c),c>=2**e)throw new Error(`convertRadix2: invalid data word=${c} from=${e}`);if(o=o<<e|c,s+e>32)throw new Error(`convertRadix2: carry overflow pos=${s} from=${e}`);for(s+=e;s>=n;s-=n)a.push((o>>s-n&i)>>>0);o&=2**s-1}if(o=o<<n-s&i,!r&&s>=e)throw new Error("Excess padding");if(!r&&o)throw new Error(`Non-zero padding: ${o}`);return r&&s>0&&a.push(o>>>0),a}function Kl(t){return Nt(t),{encode:e=>{if(!(e instanceof Uint8Array))throw new Error("radix.encode input should be Uint8Array");return Jo(Array.from(e),2**8,t)},decode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="number")throw new Error("radix.decode input should be array of strings");return Uint8Array.from(Jo(e,t,2**8))}}}function Ye(t,e=!1){if(Nt(t),t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(hn(8,t)>32||hn(t,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!(n instanceof Uint8Array))throw new Error("radix2.encode input should be Uint8Array");return xr(Array.from(n),8,t,!e)},decode:n=>{if(!Array.isArray(n)||n.length&&typeof n[0]!="number")throw new Error("radix2.decode input should be array of strings");return Uint8Array.from(xr(n,t,8,e))}}}function Go(t){if(typeof t!="function")throw new Error("unsafeWrapper fn should be function");return function(...e){try{return t.apply(null,e)}catch{}}}const jl=Pe(Ye(4),Ue("0123456789ABCDEF"),Oe("")),Hl=Pe(Ye(5),Ue("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),An(5),Oe(""));Pe(Ye(5),Ue("0123456789ABCDEFGHIJKLMNOPQRSTUV"),An(5),Oe(""));Pe(Ye(5),Ue("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),Oe(""),gi(t=>t.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1")));const ge=Pe(Ye(6),Ue("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),An(6),Oe("")),zl=Pe(Ye(6),Ue("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),An(6),Oe("")),Jr=t=>Pe(Kl(58),Ue(t),Oe("")),Er=Jr("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");Jr("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ");Jr("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");const Yo=[0,2,3,5,6,7,9,10,11],ql={encode(t){let e="";for(let n=0;n<t.length;n+=8){const r=t.subarray(n,n+8);e+=Er.encode(r).padStart(Yo[r.length],"1")}return e},decode(t){let e=[];for(let n=0;n<t.length;n+=11){const r=t.slice(n,n+11),o=Yo.indexOf(r.length),s=Er.decode(r);for(let i=0;i<s.length-o;i++)if(s[i]!==0)throw new Error("base58xmr: wrong padding");e=e.concat(Array.from(s.slice(s.length-o)))}return Uint8Array.from(e)}},kr=Pe(Ue("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),Oe("")),Xo=[996825010,642813549,513874426,1027748829,705979059];function Lt(t){const e=t>>25;let n=(t&33554431)<<5;for(let r=0;r<Xo.length;r++)(e>>r&1)===1&&(n^=Xo[r]);return n}function Qo(t,e,n=1){const r=t.length;let o=1;for(let s=0;s<r;s++){const i=t.charCodeAt(s);if(i<33||i>126)throw new Error(`Invalid prefix (${t})`);o=Lt(o)^i>>5}o=Lt(o);for(let s=0;s<r;s++)o=Lt(o)^t.charCodeAt(s)&31;for(let s of e)o=Lt(o)^s;for(let s=0;s<6;s++)o=Lt(o);return o^=n,kr.encode(xr([o%2**30],30,5,!1))}function bi(t){const e=t==="bech32"?1:734539939,n=Ye(5),r=n.decode,o=n.encode,s=Go(r);function i(d,u,m=90){if(typeof d!="string")throw new Error(`bech32.encode prefix should be string, not ${typeof d}`);if(!Array.isArray(u)||u.length&&typeof u[0]!="number")throw new Error(`bech32.encode words should be array of numbers, not ${typeof u}`);const f=d.length+7+u.length;if(m!==!1&&f>m)throw new TypeError(`Length ${f} exceeds limit ${m}`);return d=d.toLowerCase(),`${d}1${kr.encode(u)}${Qo(d,u,e)}`}function a(d,u=90){if(typeof d!="string")throw new Error(`bech32.decode input should be string, not ${typeof d}`);if(d.length<8||u!==!1&&d.length>u)throw new TypeError(`Wrong string length: ${d.length} (${d}). Expected (8..${u})`);const m=d.toLowerCase();if(d!==m&&d!==d.toUpperCase())throw new Error("String must be lowercase or uppercase");d=m;const f=d.lastIndexOf("1");if(f===0||f===-1)throw new Error('Letter "1" must be present between prefix and data only');const p=d.slice(0,f),h=d.slice(f+1);if(h.length<6)throw new Error("Data must be at least 6 characters long");const y=kr.decode(h).slice(0,-6),v=Qo(p,y,e);if(!h.endsWith(v))throw new Error(`Invalid checksum in ${d}: expected "${v}"`);return{prefix:p,words:y}}const c=Go(a);function l(d){const{prefix:u,words:m}=a(d,!1);return{prefix:u,words:m,bytes:r(m)}}return{encode:i,decode:a,decodeToBytes:l,decodeUnsafe:c,fromWords:r,fromWordsUnsafe:s,toWords:o}}const kt=bi("bech32");bi("bech32m");const Vl={encode:t=>new TextDecoder().decode(t),decode:t=>new TextEncoder().encode(t)},Fl=Pe(Ye(4),Ue("0123456789abcdef"),Oe(""),gi(t=>{if(typeof t!="string"||t.length%2)throw new TypeError(`hex.decode: expected string, got ${typeof t} with length ${t.length}`);return t.toLowerCase()})),Wl={utf8:Vl,hex:Fl,base16:jl,base32:Hl,base64:ge,base64url:zl,base58:Er,base58xmr:ql};`${Object.keys(Wl).join(", ")}`;function Wn(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`positive integer expected, not ${t}`)}function es(t){if(typeof t!="boolean")throw new Error(`boolean expected, not ${t}`)}function Zl(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function Ae(t,...e){if(!Zl(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${t.length}`)}/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */const te=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),Jl=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Jl)throw new Error("Non little-endian hardware is not supported");const Gl=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function mt(t){Ae(t);let e="";for(let n=0;n<t.length;n++)e+=Gl[t[n]];return e}const Ce={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function ts(t){if(t>=Ce._0&&t<=Ce._9)return t-Ce._0;if(t>=Ce._A&&t<=Ce._F)return t-(Ce._A-10);if(t>=Ce._a&&t<=Ce._f)return t-(Ce._a-10)}function wi(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length,n=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=ts(t.charCodeAt(s)),a=ts(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Yl(t,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(t,e)}function vi(t,e){if(t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}const Xl=(t,e)=>(Object.assign(e,t),e),Je=16,Ql=283;function Gr(t){return t<<1^Ql&-(t>>7)}function wt(t,e){let n=0;for(;e>0;e>>=1)n^=t&-(e&1),t=Gr(t);return n}const _r=(()=>{let t=new Uint8Array(256);for(let n=0,r=1;n<256;n++,r^=Gr(r))t[n]=r;const e=new Uint8Array(256);e[0]=99;for(let n=0;n<255;n++){let r=t[255-n];r|=r<<8,e[t[n]]=(r^r>>4^r>>5^r>>6^r>>7^99)&255}return e})(),eu=_r.map((t,e)=>_r.indexOf(e)),tu=t=>t<<24|t>>>8,Zn=t=>t<<8|t>>>24;function xi(t,e){if(t.length!==256)throw new Error("Wrong sbox length");const n=new Uint32Array(256).map((l,d)=>e(t[d])),r=n.map(Zn),o=r.map(Zn),s=o.map(Zn),i=new Uint32Array(256*256),a=new Uint32Array(256*256),c=new Uint16Array(256*256);for(let l=0;l<256;l++)for(let d=0;d<256;d++){const u=l*256+d;i[u]=n[l]^r[d],a[u]=o[l]^s[d],c[u]=t[l]<<8|t[d]}return{sbox:t,sbox2:c,T0:n,T1:r,T2:o,T3:s,T01:i,T23:a}}const Yr=xi(_r,t=>wt(t,3)<<24|t<<16|t<<8|wt(t,2)),Ei=xi(eu,t=>wt(t,11)<<24|wt(t,13)<<16|wt(t,9)<<8|wt(t,14)),nu=(()=>{const t=new Uint8Array(16);for(let e=0,n=1;e<16;e++,n=Gr(n))t[e]=n;return t})();function ki(t){Ae(t);const e=t.length;if(![16,24,32].includes(e))throw new Error(`aes: wrong key size: should be 16, 24 or 32, got: ${e}`);const{sbox2:n}=Yr,r=te(t),o=r.length,s=a=>Se(n,a,a,a,a),i=new Uint32Array(e+28);i.set(r);for(let a=o;a<i.length;a++){let c=i[a-1];a%o===0?c=s(tu(c))^nu[a/o-1]:o>6&&a%o===4&&(c=s(c)),i[a]=i[a-o]^c}return i}function ru(t){const e=ki(t),n=e.slice(),r=e.length,{sbox2:o}=Yr,{T0:s,T1:i,T2:a,T3:c}=Ei;for(let l=0;l<r;l+=4)for(let d=0;d<4;d++)n[l+d]=e[r-l-4+d];e.fill(0);for(let l=4;l<r-4;l++){const d=n[l],u=Se(o,d,d,d,d);n[l]=s[u&255]^i[u>>>8&255]^a[u>>>16&255]^c[u>>>24]}return n}function Ze(t,e,n,r,o,s){return t[n<<8&65280|r>>>8&255]^e[o>>>8&65280|s>>>24&255]}function Se(t,e,n,r,o){return t[e&255|n&65280]|t[r>>>16&255|o>>>16&65280]<<16}function ns(t,e,n,r,o){const{sbox2:s,T01:i,T23:a}=Yr;let c=0;e^=t[c++],n^=t[c++],r^=t[c++],o^=t[c++];const l=t.length/4-2;for(let p=0;p<l;p++){const h=t[c++]^Ze(i,a,e,n,r,o),y=t[c++]^Ze(i,a,n,r,o,e),v=t[c++]^Ze(i,a,r,o,e,n),E=t[c++]^Ze(i,a,o,e,n,r);e=h,n=y,r=v,o=E}const d=t[c++]^Se(s,e,n,r,o),u=t[c++]^Se(s,n,r,o,e),m=t[c++]^Se(s,r,o,e,n),f=t[c++]^Se(s,o,e,n,r);return{s0:d,s1:u,s2:m,s3:f}}function ou(t,e,n,r,o){const{sbox2:s,T01:i,T23:a}=Ei;let c=0;e^=t[c++],n^=t[c++],r^=t[c++],o^=t[c++];const l=t.length/4-2;for(let p=0;p<l;p++){const h=t[c++]^Ze(i,a,e,o,r,n),y=t[c++]^Ze(i,a,n,e,o,r),v=t[c++]^Ze(i,a,r,n,e,o),E=t[c++]^Ze(i,a,o,r,n,e);e=h,n=y,r=v,o=E}const d=t[c++]^Se(s,e,o,r,n),u=t[c++]^Se(s,n,e,o,r),m=t[c++]^Se(s,r,n,e,o),f=t[c++]^Se(s,o,r,n,e);return{s0:d,s1:u,s2:m,s3:f}}function _i(t,e){if(!e)return new Uint8Array(t);if(Ae(e),e.length<t)throw new Error(`aes: wrong destination length, expected at least ${t}, got: ${e.length}`);return e}function su(t){if(Ae(t),t.length%Je!==0)throw new Error(`aes/(cbc-ecb).decrypt ciphertext should consist of blocks with size ${Je}`)}function iu(t,e,n){let r=t.length;const o=r%Je;if(!e&&o!==0)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");const s=te(t);if(e){let c=Je-o;c||(c=Je),r=r+c}const i=_i(r,n),a=te(i);return{b:s,o:a,out:i}}function au(t,e){if(!e)return t;const n=t.length;if(!n)throw new Error("aes/pcks5: empty ciphertext not allowed");const r=t[n-1];if(r<=0||r>16)throw new Error(`aes/pcks5: wrong padding byte: ${r}`);const o=t.subarray(0,-r);for(let s=0;s<r;s++)if(t[n-s-1]!==r)throw new Error("aes/pcks5: wrong padding");return o}function cu(t){const e=new Uint8Array(16),n=te(e);e.set(t);const r=Je-t.length;for(let o=Je-r;o<Je;o++)e[o]=r;return n}const Ai=Xl({blockSize:16,nonceLength:16},function(e,n,r={}){Ae(e),Ae(n,16);const o=!r.disablePadding;return{encrypt:(s,i)=>{const a=ki(e),{b:c,o:l,out:d}=iu(s,o,i),u=te(n);let m=u[0],f=u[1],p=u[2],h=u[3],y=0;for(;y+4<=c.length;)m^=c[y+0],f^=c[y+1],p^=c[y+2],h^=c[y+3],{s0:m,s1:f,s2:p,s3:h}=ns(a,m,f,p,h),l[y++]=m,l[y++]=f,l[y++]=p,l[y++]=h;if(o){const v=cu(s.subarray(y*4));m^=v[0],f^=v[1],p^=v[2],h^=v[3],{s0:m,s1:f,s2:p,s3:h}=ns(a,m,f,p,h),l[y++]=m,l[y++]=f,l[y++]=p,l[y++]=h}return a.fill(0),d},decrypt:(s,i)=>{su(s);const a=ru(e),c=te(n),l=_i(s.length,i),d=te(s),u=te(l);let m=c[0],f=c[1],p=c[2],h=c[3];for(let y=0;y+4<=d.length;){const v=m,E=f,S=p,M=h;m=d[y+0],f=d[y+1],p=d[y+2],h=d[y+3];const{s0:O,s1:_,s2:N,s3:L}=ou(a,m,f,p,h);u[y++]=O^v,u[y++]=_^E,u[y++]=N^S,u[y++]=L^M}return a.fill(0),au(l,o)}}}),Si=t=>Uint8Array.from(t.split("").map(e=>e.charCodeAt(0))),lu=Si("expand 16-byte k"),uu=Si("expand 32-byte k"),du=te(lu),Ni=te(uu);Ni.slice();function V(t,e){return t<<e|t>>>32-e}function Ar(t){return t.byteOffset%4===0}const Ft=64,hu=16,Ci=2**32-1,rs=new Uint32Array;function fu(t,e,n,r,o,s,i,a){const c=o.length,l=new Uint8Array(Ft),d=te(l),u=Ar(o)&&Ar(s),m=u?te(o):rs,f=u?te(s):rs;for(let p=0;p<c;i++){if(t(e,n,r,d,i,a),i>=Ci)throw new Error("arx: counter overflow");const h=Math.min(Ft,c-p);if(u&&h===Ft){const y=p/4;if(p%4!==0)throw new Error("arx: invalid block position");for(let v=0,E;v<hu;v++)E=y+v,f[E]=m[E]^d[v];p+=Ft;continue}for(let y=0,v;y<h;y++)v=p+y,s[v]=o[v]^l[y];p+=h}}function mu(t,e){const{allowShortKeys:n,extendNonceFn:r,counterLength:o,counterRight:s,rounds:i}=Yl({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return Wn(o),Wn(i),es(s),es(n),(a,c,l,d,u=0)=>{Ae(a),Ae(c),Ae(l);const m=l.length;if(d||(d=new Uint8Array(m)),Ae(d),Wn(u),u<0||u>=Ci)throw new Error("arx: counter overflow");if(d.length<m)throw new Error(`arx: output (${d.length}) is shorter than data (${m})`);const f=[];let p=a.length,h,y;if(p===32)h=a.slice(),f.push(h),y=Ni;else if(p===16&&n)h=new Uint8Array(32),h.set(a),h.set(a,16),y=du,f.push(h);else throw new Error(`arx: invalid 32-byte key, got length=${p}`);Ar(c)||(c=c.slice(),f.push(c));const v=te(h);if(r){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");r(y,v,te(c.subarray(0,16)),v),c=c.subarray(16)}const E=16-o;if(E!==c.length)throw new Error(`arx: nonce must be ${E} or 16 bytes`);if(E!==12){const M=new Uint8Array(12);M.set(c,s?0:12-c.length),c=M,f.push(c)}const S=te(c);for(fu(t,y,v,S,l,d,u,i);f.length>0;)f.pop().fill(0);return d}}function pu(t,e,n,r,o,s=20){let i=t[0],a=t[1],c=t[2],l=t[3],d=e[0],u=e[1],m=e[2],f=e[3],p=e[4],h=e[5],y=e[6],v=e[7],E=o,S=n[0],M=n[1],O=n[2],_=i,N=a,L=c,K=l,P=d,$=u,U=m,D=f,k=p,w=h,x=y,A=v,I=E,C=S,R=M,B=O;for(let H=0;H<s;H+=2)_=_+P|0,I=V(I^_,16),k=k+I|0,P=V(P^k,12),_=_+P|0,I=V(I^_,8),k=k+I|0,P=V(P^k,7),N=N+$|0,C=V(C^N,16),w=w+C|0,$=V($^w,12),N=N+$|0,C=V(C^N,8),w=w+C|0,$=V($^w,7),L=L+U|0,R=V(R^L,16),x=x+R|0,U=V(U^x,12),L=L+U|0,R=V(R^L,8),x=x+R|0,U=V(U^x,7),K=K+D|0,B=V(B^K,16),A=A+B|0,D=V(D^A,12),K=K+D|0,B=V(B^K,8),A=A+B|0,D=V(D^A,7),_=_+$|0,B=V(B^_,16),x=x+B|0,$=V($^x,12),_=_+$|0,B=V(B^_,8),x=x+B|0,$=V($^x,7),N=N+U|0,I=V(I^N,16),A=A+I|0,U=V(U^A,12),N=N+U|0,I=V(I^N,8),A=A+I|0,U=V(U^A,7),L=L+D|0,C=V(C^L,16),k=k+C|0,D=V(D^k,12),L=L+D|0,C=V(C^L,8),k=k+C|0,D=V(D^k,7),K=K+P|0,R=V(R^K,16),w=w+R|0,P=V(P^w,12),K=K+P|0,R=V(R^K,8),w=w+R|0,P=V(P^w,7);let T=0;r[T++]=i+_|0,r[T++]=a+N|0,r[T++]=c+L|0,r[T++]=l+K|0,r[T++]=d+P|0,r[T++]=u+$|0,r[T++]=m+U|0,r[T++]=f+D|0,r[T++]=p+k|0,r[T++]=h+w|0,r[T++]=y+x|0,r[T++]=v+A|0,r[T++]=E+I|0,r[T++]=S+C|0,r[T++]=M+R|0,r[T++]=O+B|0}const Sn=mu(pu,{counterRight:!1,counterLength:4,allowShortKeys:!1});class Bi extends hi{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,_e.hash(e);const r=Dt(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(e){return _e.exists(this),this.iHash.update(e),this}digestInto(e){_e.exists(this),_e.bytes(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const zt=(t,e,n)=>new Bi(t,e).update(n).digest();zt.create=(t,e)=>new Bi(t,e);function Li(t,e,n){return _e.hash(t),zt(t,Dt(n),Dt(e))}const Jn=new Uint8Array([0]),os=new Uint8Array;function Ii(t,e,n,r=32){if(_e.hash(t),_e.number(r),r>255*t.outputLen)throw new Error("Length should be <= 255*HashLen");const o=Math.ceil(r/t.outputLen);n===void 0&&(n=os);const s=new Uint8Array(o*t.outputLen),i=zt.create(t,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)Jn[0]=l+1,a.update(l===0?os:c).update(n).update(Jn).digestInto(c),s.set(c,t.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),Jn.fill(0),s.slice(0,r)}var gu=Object.defineProperty,W=(t,e)=>{for(var n in e)gu(t,n,{get:e[n],enumerable:!0})},pt=Symbol("verified"),yu=t=>t instanceof Object;function Xr(t){if(!yu(t)||typeof t.kind!="number"||typeof t.content!="string"||typeof t.created_at!="number"||typeof t.pubkey!="string"||!t.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(t.tags))return!1;for(let e=0;e<t.tags.length;e++){let n=t.tags[e];if(!Array.isArray(n))return!1;for(let r=0;r<n.length;r++)if(typeof n[r]!="string")return!1}return!0}var bu={};W(bu,{Queue:()=>Eu,QueueNode:()=>Ri,binarySearch:()=>Qr,bytesToHex:()=>Y,hexToBytes:()=>lt,insertEventIntoAscendingList:()=>xu,insertEventIntoDescendingList:()=>vu,normalizeURL:()=>wu,utf8Decoder:()=>Te,utf8Encoder:()=>ye});var Te=new TextDecoder("utf-8"),ye=new TextEncoder;function wu(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}function vu(t,e){const[n,r]=Qr(t,o=>e.id===o.id?0:e.created_at===o.created_at?-1:o.created_at-e.created_at);return r||t.splice(n,0,e),t}function xu(t,e){const[n,r]=Qr(t,o=>e.id===o.id?0:e.created_at===o.created_at?-1:e.created_at-o.created_at);return r||t.splice(n,0,e),t}function Qr(t,e){let n=0,r=t.length-1;for(;n<=r;){const o=Math.floor((n+r)/2),s=e(t[o]);if(s===0)return[o,!0];s<0?r=o-1:n=o+1}return[n,!1]}var Ri=class{constructor(e){g(this,"value");g(this,"next",null);g(this,"prev",null);this.value=e}},Eu=class{constructor(){g(this,"first");g(this,"last");this.first=null,this.last=null}enqueue(e){const n=new Ri(e);return this.last?this.last===this.first?(this.last=n,this.last.prev=this.first,this.first.next=n):(n.prev=this.last,this.last.next=n,this.last=n):(this.first=n,this.last=n),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const n=this.first;return this.first=null,this.last=null,n.value}const e=this.first;return this.first=e.next,this.first&&(this.first.prev=null),e.value}},ku=class{generateSecretKey(){return ke.utils.randomPrivateKey()}getPublicKey(e){return Y(ke.getPublicKey(e))}finalizeEvent(e,n){const r=e;return r.pubkey=Y(ke.getPublicKey(n)),r.id=tn(r),r.sig=Y(ke.sign(tn(r),n)),r[pt]=!0,r}verifyEvent(e){if(typeof e[pt]=="boolean")return e[pt];const n=tn(e);if(n!==e.id)return e[pt]=!1,!1;try{const r=ke.verify(e.sig,n,e.pubkey);return e[pt]=r,r}catch{return e[pt]=!1,!1}}};function _u(t){if(!Xr(t))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content])}function tn(t){let e=be(ye.encode(_u(t)));return Y(e)}var Nn=new ku,eo=Nn.generateSecretKey,Cn=Nn.getPublicKey,we=Nn.finalizeEvent,to=Nn.verifyEvent,Au={};W(Au,{Application:()=>Od,BadgeAward:()=>$u,BadgeDefinition:()=>Ld,BlockedRelaysList:()=>hd,BlossomServerList:()=>wd,BookmarkList:()=>ld,Bookmarksets:()=>Nd,Calendar:()=>qd,CalendarEventRSVP:()=>Vd,ChannelCreation:()=>Mi,ChannelHideMessage:()=>ji,ChannelMessage:()=>Ki,ChannelMetadata:()=>Di,ChannelMuteUser:()=>Hi,ChatMessage:()=>Tu,ClassifiedListing:()=>Kd,ClientAuth:()=>qi,Comment:()=>zu,CommunitiesList:()=>ud,CommunityDefinition:()=>Jd,CommunityPostApproval:()=>Yu,Contacts:()=>Lu,CreateOrUpdateProduct:()=>$d,CreateOrUpdateStall:()=>Rd,Curationsets:()=>Cd,Date:()=>Hd,DirectMessageRelaysList:()=>yd,DraftClassifiedListing:()=>jd,DraftLong:()=>Pd,Emojisets:()=>Ud,EncryptedDirectMessage:()=>Iu,EventDeletion:()=>Ru,FavoriteRelays:()=>md,FileMessage:()=>Uu,FileMetadata:()=>Hu,FileServerPreference:()=>bd,Followsets:()=>_d,ForumThread:()=>Pu,GenericRepost:()=>io,Genericlists:()=>Ad,GiftWrap:()=>zi,GroupMetadata:()=>Gd,HTTPAuth:()=>ao,Handlerinformation:()=>Zd,Handlerrecommendation:()=>Wd,Highlights:()=>od,InterestsList:()=>pd,Interestsets:()=>Id,JobFeedback:()=>ed,JobRequest:()=>Xu,JobResult:()=>Qu,Label:()=>Gu,LightningPubRPC:()=>xd,LiveChatMessage:()=>qu,LiveEvent:()=>Md,LongFormArticle:()=>Td,Metadata:()=>Cu,Mutelist:()=>id,NWCWalletInfo:()=>vd,NWCWalletRequest:()=>Vi,NWCWalletResponse:()=>Ed,NormalVideo:()=>Mu,NostrConnect:()=>kd,OpenTimestamps:()=>Ku,Photo:()=>Ou,Pinlist:()=>ad,Poll:()=>ju,PollResponse:()=>sd,PrivateDirectMessage:()=>Oi,ProblemTracker:()=>Wu,ProfileBadges:()=>Bd,PublicChatsList:()=>dd,Reaction:()=>so,RecommendRelay:()=>Bu,RelayList:()=>cd,RelayReview:()=>Fd,Relaysets:()=>Sd,Report:()=>Zu,Reporting:()=>Ju,Repost:()=>oo,Seal:()=>Ui,SearchRelaysList:()=>fd,ShortTextNote:()=>Pi,ShortVideo:()=>Du,Time:()=>zd,UserEmojiList:()=>gd,UserStatuses:()=>Dd,Voice:()=>Vu,VoiceComment:()=>Fu,Zap:()=>rd,ZapGoal:()=>td,ZapRequest:()=>nd,classifyKind:()=>Su,isAddressableKind:()=>ro,isEphemeralKind:()=>Ti,isKind:()=>Nu,isRegularKind:()=>$i,isReplaceableKind:()=>no});function $i(t){return t<1e4&&t!==0&&t!==3}function no(t){return t===0||t===3||1e4<=t&&t<2e4}function Ti(t){return 2e4<=t&&t<3e4}function ro(t){return 3e4<=t&&t<4e4}function Su(t){return $i(t)?"regular":no(t)?"replaceable":Ti(t)?"ephemeral":ro(t)?"parameterized":"unknown"}function Nu(t,e){const n=e instanceof Array?e:[e];return Xr(t)&&n.includes(t.kind)||!1}var Cu=0,Pi=1,Bu=2,Lu=3,Iu=4,Ru=5,oo=6,so=7,$u=8,Tu=9,Pu=11,Ui=13,Oi=14,Uu=15,io=16,Ou=20,Mu=21,Du=22,Mi=40,Di=41,Ki=42,ji=43,Hi=44,Ku=1040,zi=1059,ju=1068,Hu=1063,zu=1111,qu=1311,Vu=1222,Fu=1244,Wu=1971,Zu=1984,Ju=1984,Gu=1985,Yu=4550,Xu=5999,Qu=6999,ed=7e3,td=9041,nd=9734,rd=9735,od=9802,sd=1018,id=1e4,ad=10001,cd=10002,ld=10003,ud=10004,dd=10005,hd=10006,fd=10007,md=10012,pd=10015,gd=10030,yd=10050,bd=10096,wd=10063,vd=13194,xd=21e3,qi=22242,Vi=23194,Ed=23195,kd=24133,ao=27235,_d=3e4,Ad=30001,Sd=30002,Nd=30003,Cd=30004,Bd=30008,Ld=30009,Id=30015,Rd=30017,$d=30018,Td=30023,Pd=30024,Ud=30030,Od=30078,Md=30311,Dd=30315,Kd=30402,jd=30403,Hd=31922,zd=31923,qd=31924,Vd=31925,Fd=31987,Wd=31989,Zd=31990,Jd=34550,Gd=39e3,Yd={};W(Yd,{getHex64:()=>co,getInt:()=>Fi,getSubscriptionId:()=>Xd,matchEventId:()=>Qd,matchEventKind:()=>th,matchEventPubkey:()=>eh});function co(t,e){let n=e.length+3,r=t.indexOf(`"${e}":`)+n,o=t.slice(r).indexOf('"')+r+1;return t.slice(o,o+64)}function Fi(t,e){let n=e.length,r=t.indexOf(`"${e}":`)+n+3,o=t.slice(r),s=Math.min(o.indexOf(","),o.indexOf("}"));return parseInt(o.slice(0,s),10)}function Xd(t){let e=t.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let n=t.slice(e+7+1).indexOf('"');if(n===-1)return null;let r=e+7+1+n,o=t.slice(r+1,80).indexOf('"');if(o===-1)return null;let s=r+1+o;return t.slice(r+1,s)}function Qd(t,e){return e===co(t,"id")}function eh(t,e){return e===co(t,"pubkey")}function th(t,e){return e===Fi(t,"kind")}var nh={};W(nh,{makeAuthEvent:()=>rh});function rh(t,e){return{kind:qi,created_at:Math.floor(Date.now()/1e3),tags:[["relay",t],["challenge",e]],content:""}}var oh;try{oh=WebSocket}catch{}var sh;try{sh=WebSocket}catch{}var vt={};W(vt,{BECH32_REGEX:()=>Wi,Bech32MaxSize:()=>lo,NostrTypeGuard:()=>ih,decode:()=>Bn,decodeNostrURI:()=>ch,encodeBytes:()=>In,naddrEncode:()=>mh,neventEncode:()=>fh,noteEncode:()=>dh,nprofileEncode:()=>hh,npubEncode:()=>uh,nsecEncode:()=>lh});var ih={isNProfile:t=>/^nprofile1[a-z\d]+$/.test(t||""),isNEvent:t=>/^nevent1[a-z\d]+$/.test(t||""),isNAddr:t=>/^naddr1[a-z\d]+$/.test(t||""),isNSec:t=>/^nsec1[a-z\d]{58}$/.test(t||""),isNPub:t=>/^npub1[a-z\d]{58}$/.test(t||""),isNote:t=>/^note1[a-z\d]+$/.test(t||""),isNcryptsec:t=>/^ncryptsec1[a-z\d]+$/.test(t||"")},lo=5e3,Wi=/[\x21-\x7E]{1,83}1[023456789acdefghjklmnpqrstuvwxyz]{6,}/;function ah(t){const e=new Uint8Array(4);return e[0]=t>>24&255,e[1]=t>>16&255,e[2]=t>>8&255,e[3]=t&255,e}function ch(t){try{return t.startsWith("nostr:")&&(t=t.substring(6)),Bn(t)}catch{return{type:"invalid",data:null}}}function Bn(t){var o,s,i,a,c,l,d;let{prefix:e,words:n}=kt.decode(t,lo),r=new Uint8Array(kt.fromWords(n));switch(e){case"nprofile":{let u=Gn(r);if(!((o=u[0])!=null&&o[0]))throw new Error("missing TLV 0 for nprofile");if(u[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");return{type:"nprofile",data:{pubkey:Y(u[0][0]),relays:u[1]?u[1].map(m=>Te.decode(m)):[]}}}case"nevent":{let u=Gn(r);if(!((s=u[0])!=null&&s[0]))throw new Error("missing TLV 0 for nevent");if(u[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");if(u[2]&&u[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(u[3]&&u[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"nevent",data:{id:Y(u[0][0]),relays:u[1]?u[1].map(m=>Te.decode(m)):[],author:(i=u[2])!=null&&i[0]?Y(u[2][0]):void 0,kind:(a=u[3])!=null&&a[0]?parseInt(Y(u[3][0]),16):void 0}}}case"naddr":{let u=Gn(r);if(!((c=u[0])!=null&&c[0]))throw new Error("missing TLV 0 for naddr");if(!((l=u[2])!=null&&l[0]))throw new Error("missing TLV 2 for naddr");if(u[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(!((d=u[3])!=null&&d[0]))throw new Error("missing TLV 3 for naddr");if(u[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"naddr",data:{identifier:Te.decode(u[0][0]),pubkey:Y(u[2][0]),kind:parseInt(Y(u[3][0]),16),relays:u[1]?u[1].map(m=>Te.decode(m)):[]}}}case"nsec":return{type:e,data:r};case"npub":case"note":return{type:e,data:Y(r)};default:throw new Error(`unknown prefix ${e}`)}}function Gn(t){let e={},n=t;for(;n.length>0;){let r=n[0],o=n[1],s=n.slice(2,2+o);if(n=n.slice(2+o),s.length<o)throw new Error(`not enough data to read on TLV ${r}`);e[r]=e[r]||[],e[r].push(s)}return e}function lh(t){return In("nsec",t)}function uh(t){return In("npub",lt(t))}function dh(t){return In("note",lt(t))}function Ln(t,e){let n=kt.toWords(e);return kt.encode(t,n,lo)}function In(t,e){return Ln(t,e)}function hh(t){let e=uo({0:[lt(t.pubkey)],1:(t.relays||[]).map(n=>ye.encode(n))});return Ln("nprofile",e)}function fh(t){let e;t.kind!==void 0&&(e=ah(t.kind));let n=uo({0:[lt(t.id)],1:(t.relays||[]).map(r=>ye.encode(r)),2:t.author?[lt(t.author)]:[],3:e?[new Uint8Array(e)]:[]});return Ln("nevent",n)}function mh(t){let e=new ArrayBuffer(4);new DataView(e).setUint32(0,t.kind,!1);let n=uo({0:[ye.encode(t.identifier)],1:(t.relays||[]).map(r=>ye.encode(r)),2:[lt(t.pubkey)],3:[new Uint8Array(e)]});return Ln("naddr",n)}function uo(t){let e=[];return Object.entries(t).reverse().forEach(([n,r])=>{r.forEach(o=>{let s=new Uint8Array(o.length+2);s.set([parseInt(n)],0),s.set([o.length],1),s.set(o,2),e.push(s)})}),dt(...e)}var ph={};W(ph,{decrypt:()=>gh,encrypt:()=>Zi});function Zi(t,e,n){const r=t instanceof Uint8Array?Y(t):t,o=ut.getSharedSecret(r,"02"+e),s=Ji(o);let i=Uint8Array.from(Zr(16)),a=ye.encode(n),c=Ai(s,i).encrypt(a),l=ge.encode(new Uint8Array(c)),d=ge.encode(new Uint8Array(i.buffer));return`${l}?iv=${d}`}function gh(t,e,n){const r=t instanceof Uint8Array?Y(t):t;let[o,s]=n.split("?iv="),i=ut.getSharedSecret(r,"02"+e),a=Ji(i),c=ge.decode(s),l=ge.decode(o),d=Ai(a,c).decrypt(l);return Te.decode(d)}function Ji(t){return t.slice(1,33)}var yh={};W(yh,{NIP05_REGEX:()=>ho,isNip05:()=>bh,isValid:()=>xh,queryProfile:()=>Gi,searchDomain:()=>vh,useFetchImplementation:()=>wh});var ho=/^(?:([\w.+-]+)@)?([\w_-]+(\.[\w_-]+)+)$/,bh=t=>ho.test(t||""),Rn;try{Rn=fetch}catch{}function wh(t){Rn=t}async function vh(t,e=""){try{const n=`https://${t}/.well-known/nostr.json?name=${e}`,r=await Rn(n,{redirect:"manual"});if(r.status!==200)throw Error("Wrong response code");return(await r.json()).names}catch{return{}}}async function Gi(t){var o;const e=t.match(ho);if(!e)return null;const[,n="_",r]=e;try{const s=`https://${r}/.well-known/nostr.json?name=${n}`,i=await Rn(s,{redirect:"manual"});if(i.status!==200)throw Error("Wrong response code");const a=await i.json(),c=a.names[n];return c?{pubkey:c,relays:(o=a.relays)==null?void 0:o[c]}:null}catch{return null}}async function xh(t,e){const n=await Gi(e);return n?n.pubkey===t:!1}var Eh={};W(Eh,{parse:()=>kh});function kh(t){const e={reply:void 0,root:void 0,mentions:[],profiles:[],quotes:[]};let n,r;for(let o=t.tags.length-1;o>=0;o--){const s=t.tags[o];if(s[0]==="e"&&s[1]){const[i,a,c,l,d]=s,u={id:a,relays:c?[c]:[],author:d};if(l==="root"){e.root=u;continue}if(l==="reply"){e.reply=u;continue}if(l==="mention"){e.mentions.push(u);continue}n?r=u:n=u,e.mentions.push(u);continue}if(s[0]==="q"&&s[1]){const[i,a,c]=s;e.quotes.push({id:a,relays:c?[c]:[]})}if(s[0]==="p"&&s[1]){e.profiles.push({pubkey:s[1],relays:s[2]?[s[2]]:[]});continue}}return e.root||(e.root=r||n||e.reply),e.reply||(e.reply=n||e.root),[e.reply,e.root].forEach(o=>{if(!o)return;let s=e.mentions.indexOf(o);if(s!==-1&&e.mentions.splice(s,1),o.author){let i=e.profiles.find(a=>a.pubkey===o.author);i&&i.relays&&(o.relays||(o.relays=[]),i.relays.forEach(a=>{var c;((c=o.relays)==null?void 0:c.indexOf(a))===-1&&o.relays.push(a)}),i.relays=o.relays)}}),e.mentions.forEach(o=>{if(o.author){let s=e.profiles.find(i=>i.pubkey===o.author);s&&s.relays&&(o.relays||(o.relays=[]),s.relays.forEach(i=>{o.relays.indexOf(i)===-1&&o.relays.push(i)}),s.relays=o.relays)}}),e}var _h={};W(_h,{fetchRelayInformation:()=>Sh,useFetchImplementation:()=>Ah});var Yi;try{Yi=fetch}catch{}function Ah(t){Yi=t}async function Sh(t){return await(await fetch(t.replace("ws://","http://").replace("wss://","https://"),{headers:{Accept:"application/nostr+json"}})).json()}var Nh={};W(Nh,{fastEventHash:()=>Qi,getPow:()=>Xi,minePow:()=>Ch});function Xi(t){let e=0;for(let n=0;n<64;n+=8){const r=parseInt(t.substring(n,n+8),16);if(r===0)e+=32;else{e+=Math.clz32(r);break}}return e}function Ch(t,e){let n=0;const r=t,o=["nonce",n.toString(),e.toString()];for(r.tags.push(o);;){const s=Math.floor(new Date().getTime()/1e3);if(s!==r.created_at&&(n=0,r.created_at=s),o[1]=(++n).toString(),r.id=Qi(r),Xi(r.id)>=e)break}return r}function Qi(t){return Y(be(ye.encode(JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content]))))}var Bh={};W(Bh,{unwrapEvent:()=>jh,unwrapManyEvents:()=>Hh,wrapEvent:()=>ha,wrapManyEvents:()=>Kh});var Lh={};W(Lh,{createRumor:()=>ca,createSeal:()=>la,createWrap:()=>ua,unwrapEvent:()=>yo,unwrapManyEvents:()=>da,wrapEvent:()=>fn,wrapManyEvents:()=>Mh});var Ih={};W(Ih,{decrypt:()=>go,encrypt:()=>po,getConversationKey:()=>fo,v2:()=>Uh});var ea=1,ta=65535;function fo(t,e){const n=ut.getSharedSecret(t,"02"+e).subarray(1,33);return Li(be,n,"nip44-v2")}function na(t,e){const n=Ii(be,t,e,76);return{chacha_key:n.subarray(0,32),chacha_nonce:n.subarray(32,44),hmac_key:n.subarray(44,76)}}function mo(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("expected positive integer");if(t<=32)return 32;const e=1<<Math.floor(Math.log2(t-1))+1,n=e<=256?32:e/8;return n*(Math.floor((t-1)/n)+1)}function Rh(t){if(!Number.isSafeInteger(t)||t<ea||t>ta)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");const e=new Uint8Array(2);return new DataView(e.buffer).setUint16(0,t,!1),e}function $h(t){const e=ye.encode(t),n=e.length,r=Rh(n),o=new Uint8Array(mo(n)-n);return dt(r,e,o)}function Th(t){const e=new DataView(t.buffer).getUint16(0),n=t.subarray(2,2+e);if(e<ea||e>ta||n.length!==e||t.length!==2+mo(e))throw new Error("invalid padding");return Te.decode(n)}function ra(t,e,n){if(n.length!==32)throw new Error("AAD associated data must be 32 bytes");const r=dt(n,e);return zt(be,t,r)}function Ph(t){if(typeof t!="string")throw new Error("payload must be a valid string");const e=t.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(t[0]==="#")throw new Error("unknown encryption version");let n;try{n=ge.decode(t)}catch(s){throw new Error("invalid base64: "+s.message)}const r=n.length;if(r<99||r>65603)throw new Error("invalid data length: "+r);const o=n[0];if(o!==2)throw new Error("unknown encryption version "+o);return{nonce:n.subarray(1,33),ciphertext:n.subarray(33,-32),mac:n.subarray(-32)}}function po(t,e,n=Zr(32)){const{chacha_key:r,chacha_nonce:o,hmac_key:s}=na(e,n),i=$h(t),a=Sn(r,o,i),c=ra(s,a,n);return ge.encode(dt(new Uint8Array([2]),n,a,c))}function go(t,e){const{nonce:n,ciphertext:r,mac:o}=Ph(t),{chacha_key:s,chacha_nonce:i,hmac_key:a}=na(e,n),c=ra(a,r,n);if(!vi(c,o))throw new Error("invalid MAC");const l=Sn(s,i,r);return Th(l)}var Uh={utils:{getConversationKey:fo,calcPaddedLen:mo},encrypt:po,decrypt:go},Oh=2880*60,oa=()=>Math.round(Date.now()/1e3),sa=()=>Math.round(oa()-Math.random()*Oh),ia=(t,e)=>fo(t,e),aa=(t,e,n)=>po(JSON.stringify(t),ia(e,n)),ss=(t,e)=>JSON.parse(go(t.content,ia(e,t.pubkey)));function ca(t,e){const n={created_at:oa(),content:"",tags:[],...t,pubkey:Cn(e)};return n.id=tn(n),n}function la(t,e,n){return we({kind:Ui,content:aa(t,e,n),created_at:sa(),tags:[]},e)}function ua(t,e){const n=eo();return we({kind:zi,content:aa(t,n,e),created_at:sa(),tags:[["p",e]]},n)}function fn(t,e,n){const r=ca(t,e),o=la(r,e,n);return ua(o,n)}function Mh(t,e,n){if(!n||n.length===0)throw new Error("At least one recipient is required.");const r=Cn(e),o=[fn(t,e,r)];return n.forEach(s=>{o.push(fn(t,e,s))}),o}function yo(t,e){const n=ss(t,e);return ss(n,e)}function da(t,e){let n=[];return t.forEach(r=>{n.push(yo(r,e))}),n.sort((r,o)=>r.created_at-o.created_at),n}function Dh(t,e,n,r){const o={created_at:Math.ceil(Date.now()/1e3),kind:Oi,tags:[],content:e};return(Array.isArray(t)?t:[t]).forEach(({publicKey:i,relayUrl:a})=>{o.tags.push(a?["p",i,a]:["p",i])}),r&&o.tags.push(["e",r.eventId,r.relayUrl||"","reply"]),n&&o.tags.push(["subject",n]),o}function ha(t,e,n,r,o){const s=Dh(e,n,r,o);return fn(s,t,e.publicKey)}function Kh(t,e,n,r,o){if(!e||e.length===0)throw new Error("At least one recipient is required.");return[{publicKey:Cn(t)},...e].map(i=>ha(t,i,n,r,o))}var jh=yo,Hh=da,zh={};W(zh,{finishRepostEvent:()=>qh,getRepostedEvent:()=>Vh,getRepostedEventPointer:()=>fa});function qh(t,e,n,r){var i;let o;const s=[...t.tags??[],["e",e.id,n],["p",e.pubkey]];return e.kind===Pi?o=oo:(o=io,s.push(["k",String(e.kind)])),we({kind:o,tags:s,content:t.content===""||(i=e.tags)!=null&&i.find(a=>a[0]==="-")?"":JSON.stringify(e),created_at:t.created_at},r)}function fa(t){if(![oo,io].includes(t.kind))return;let e,n;for(let r=t.tags.length-1;r>=0&&(e===void 0||n===void 0);r--){const o=t.tags[r];o.length>=2&&(o[0]==="e"&&e===void 0?e=o:o[0]==="p"&&n===void 0&&(n=o))}if(e!==void 0)return{id:e[1],relays:[e[2],n==null?void 0:n[2]].filter(r=>typeof r=="string"),author:n==null?void 0:n[1]}}function Vh(t,{skipVerification:e}={}){const n=fa(t);if(n===void 0||t.content==="")return;let r;try{r=JSON.parse(t.content)}catch{return}if(r.id===n.id&&!(!e&&!to(r)))return r}var Fh={};W(Fh,{NOSTR_URI_REGEX:()=>bo,parse:()=>Zh,test:()=>Wh});var bo=new RegExp(`nostr:(${Wi.source})`);function Wh(t){return typeof t=="string"&&new RegExp(`^${bo.source}$`).test(t)}function Zh(t){const e=t.match(new RegExp(`^${bo.source}$`));if(!e)throw new Error(`Invalid Nostr URI: ${t}`);return{uri:e[0],value:e[1],decoded:Bn(e[1])}}var Jh={};W(Jh,{finishReactionEvent:()=>Gh,getReactedEventPointer:()=>Yh});function Gh(t,e,n){const r=e.tags.filter(o=>o.length>=2&&(o[0]==="e"||o[0]==="p"));return we({...t,kind:so,tags:[...t.tags??[],...r,["e",e.id],["p",e.pubkey]],content:t.content??"+"},n)}function Yh(t){if(t.kind!==so)return;let e,n;for(let r=t.tags.length-1;r>=0&&(e===void 0||n===void 0);r--){const o=t.tags[r];o.length>=2&&(o[0]==="e"&&e===void 0?e=o:o[0]==="p"&&n===void 0&&(n=o))}if(!(e===void 0||n===void 0))return{id:e[1],relays:[e[2],n[2]].filter(r=>r!==void 0),author:n[1]}}var Xh={};W(Xh,{parse:()=>ef});var is=/\W/m,as=/[^\w\/] |[^\w\/]$|$|,| /m,Qh=42;function*ef(t){let e=[];if(typeof t!="string"){for(let s=0;s<t.tags.length;s++){const i=t.tags[s];i[0]==="emoji"&&i.length>=3&&e.push({type:"emoji",shortcode:i[1],url:i[2]})}t=t.content}const n=t.length;let r=0,o=0;e:for(;o<n;){const s=t.indexOf(":",o),i=t.indexOf("#",o);if(s===-1&&i===-1)break e;if(s===-1||i>=0&&i<s){if(i===0||t[i-1]===" "){const a=t.slice(i+1,i+Qh).match(is),c=a?i+1+a.index:n;yield{type:"text",text:t.slice(r,i)},yield{type:"hashtag",value:t.slice(i+1,c)},o=c,r=o;continue e}o=i+1;continue e}if(t.slice(s-5,s)==="nostr"){const a=t.slice(s+60).match(is),c=a?s+60+a.index:n;try{let l,{data:d,type:u}=Bn(t.slice(s+1,c));switch(u){case"npub":l={pubkey:d};break;case"note":l={id:d};break;case"nsec":o=c+1;continue;default:l=d}r!==s-5&&(yield{type:"text",text:t.slice(r,s-5)}),yield{type:"reference",pointer:l},o=c,r=o;continue e}catch{o=s+1;continue e}}else if(t.slice(s-5,s)==="https"||t.slice(s-4,s)==="http"){const a=t.slice(s+4).match(as),c=a?s+4+a.index:n,l=t[s-1]==="s"?5:4;try{let d=new URL(t.slice(s-l,c));if(d.hostname.indexOf(".")===-1)throw new Error("invalid url");if(r!==s-l&&(yield{type:"text",text:t.slice(r,s-l)}),/\.(png|jpe?g|gif|webp|heic|svg)$/i.test(d.pathname)){yield{type:"image",url:d.toString()},o=c,r=o;continue e}if(/\.(mp4|avi|webm|mkv|mov)$/i.test(d.pathname)){yield{type:"video",url:d.toString()},o=c,r=o;continue e}if(/\.(mp3|aac|ogg|opus|wav|flac)$/i.test(d.pathname)){yield{type:"audio",url:d.toString()},o=c,r=o;continue e}yield{type:"url",url:d.toString()},o=c,r=o;continue e}catch{o=c+1;continue e}}else if(t.slice(s-3,s)==="wss"||t.slice(s-2,s)==="ws"){const a=t.slice(s+4).match(as),c=a?s+4+a.index:n,l=t[s-1]==="s"?3:2;try{let d=new URL(t.slice(s-l,c));if(d.hostname.indexOf(".")===-1)throw new Error("invalid ws url");r!==s-l&&(yield{type:"text",text:t.slice(r,s-l)}),yield{type:"relay",url:d.toString()},o=c,r=o;continue e}catch{o=c+1;continue e}}else{for(let a=0;a<e.length;a++){const c=e[a];if(t[s+c.shortcode.length+1]===":"&&t.slice(s+1,s+c.shortcode.length+1)===c.shortcode){r!==s&&(yield{type:"text",text:t.slice(r,s)}),yield c,o=s+c.shortcode.length+2,r=o;continue e}}o=s+1;continue e}}r!==n&&(yield{type:"text",text:t.slice(r)})}var tf={};W(tf,{channelCreateEvent:()=>nf,channelHideMessageEvent:()=>sf,channelMessageEvent:()=>of,channelMetadataEvent:()=>rf,channelMuteUserEvent:()=>af});var nf=(t,e)=>{let n;if(typeof t.content=="object")n=JSON.stringify(t.content);else if(typeof t.content=="string")n=t.content;else return;return we({kind:Mi,tags:[...t.tags??[]],content:n,created_at:t.created_at},e)},rf=(t,e)=>{let n;if(typeof t.content=="object")n=JSON.stringify(t.content);else if(typeof t.content=="string")n=t.content;else return;return we({kind:Di,tags:[["e",t.channel_create_event_id],...t.tags??[]],content:n,created_at:t.created_at},e)},of=(t,e)=>{const n=[["e",t.channel_create_event_id,t.relay_url,"root"]];return t.reply_to_channel_message_event_id&&n.push(["e",t.reply_to_channel_message_event_id,t.relay_url,"reply"]),we({kind:Ki,tags:[...n,...t.tags??[]],content:t.content,created_at:t.created_at},e)},sf=(t,e)=>{let n;if(typeof t.content=="object")n=JSON.stringify(t.content);else if(typeof t.content=="string")n=t.content;else return;return we({kind:ji,tags:[["e",t.channel_message_event_id],...t.tags??[]],content:n,created_at:t.created_at},e)},af=(t,e)=>{let n;if(typeof t.content=="object")n=JSON.stringify(t.content);else if(typeof t.content=="string")n=t.content;else return;return we({kind:Hi,tags:[["p",t.pubkey_to_mute],...t.tags??[]],content:n,created_at:t.created_at},e)},cf={};W(cf,{EMOJI_SHORTCODE_REGEX:()=>ma,matchAll:()=>lf,regex:()=>wo,replaceAll:()=>uf});var ma=/:(\w+):/,wo=()=>new RegExp(`\\B${ma.source}\\B`,"g");function*lf(t){const e=t.matchAll(wo());for(const n of e)try{const[r,o]=n;yield{shortcode:r,name:o,start:n.index,end:n.index+r.length}}catch{}}function uf(t,e){return t.replaceAll(wo(),(n,r)=>e({shortcode:n,name:r}))}var df={};W(df,{useFetchImplementation:()=>hf,validateGithub:()=>ff});var vo;try{vo=fetch}catch{}function hf(t){vo=t}async function ff(t,e,n){try{return await(await vo(`https://gist.github.com/${e}/${n}/raw`)).text()===`Verifying that I control the following Nostr public key: ${t}`}catch{return!1}}var mf={};W(mf,{makeNwcRequestEvent:()=>gf,parseConnectionString:()=>pf});function pf(t){const{host:e,pathname:n,searchParams:r}=new URL(t),o=n||e,s=r.get("relay"),i=r.get("secret");if(!o||!s||!i)throw new Error("invalid connection string");return{pubkey:o,relay:s,secret:i}}async function gf(t,e,n){const o=Zi(e,t,JSON.stringify({method:"pay_invoice",params:{invoice:n}})),s={kind:Vi,created_at:Math.round(Date.now()/1e3),content:o,tags:[["p",t]]};return we(s,e)}var yf={};W(yf,{normalizeIdentifier:()=>bf});function bf(t){return t=t.trim().toLowerCase(),t=t.normalize("NFKC"),Array.from(t).map(e=>new RegExp("\\p{Letter}","u").test(e)||new RegExp("\\p{Number}","u").test(e)?e:"-").join("")}var wf={};W(wf,{getSatoshisAmountFromBolt11:()=>Af,getZapEndpoint:()=>xf,makeZapReceipt:()=>_f,makeZapRequest:()=>Ef,useFetchImplementation:()=>vf,validateZapRequest:()=>kf});var xo;try{xo=fetch}catch{}function vf(t){xo=t}async function xf(t){try{let e="",{lud06:n,lud16:r}=JSON.parse(t.content);if(r){let[i,a]=r.split("@");e=new URL(`/.well-known/lnurlp/${i}`,`https://${a}`).toString()}else if(n){let{words:i}=kt.decode(n,1e3),a=kt.fromWords(i);e=Te.decode(a)}else return null;let s=await(await xo(e)).json();if(s.allowsNostr&&s.nostrPubkey)return s.callback}catch{}return null}function Ef(t){let e={kind:9734,created_at:Math.round(Date.now()/1e3),content:t.comment||"",tags:[["p","pubkey"in t?t.pubkey:t.event.pubkey],["amount",t.amount.toString()],["relays",...t.relays]]};if("event"in t){if(e.tags.push(["e",t.event.id]),no(t.event.kind)){const n=["a",`${t.event.kind}:${t.event.pubkey}:`];e.tags.push(n)}else if(ro(t.event.kind)){let n=t.event.tags.find(([o,s])=>o==="d"&&s);if(!n)throw new Error("d tag not found or is empty");const r=["a",`${t.event.kind}:${t.event.pubkey}:${n[1]}`];e.tags.push(r)}e.tags.push(["k",t.event.kind.toString()])}return e}function kf(t){let e;try{e=JSON.parse(t)}catch{return"Invalid zap request JSON."}if(!Xr(e))return"Zap request is not a valid Nostr event.";if(!to(e))return"Invalid signature on zap request.";let n=e.tags.find(([s,i])=>s==="p"&&i);if(!n)return"Zap request doesn't have a 'p' tag.";if(!n[1].match(/^[a-f0-9]{64}$/))return"Zap request 'p' tag is not valid hex.";let r=e.tags.find(([s,i])=>s==="e"&&i);return r&&!r[1].match(/^[a-f0-9]{64}$/)?"Zap request 'e' tag is not valid hex.":e.tags.find(([s,i])=>s==="relays"&&i)?null:"Zap request doesn't have a 'relays' tag."}function _f({zapRequest:t,preimage:e,bolt11:n,paidAt:r}){let o=JSON.parse(t),s=o.tags.filter(([a])=>a==="e"||a==="p"||a==="a"),i={kind:9735,created_at:Math.round(r.getTime()/1e3),content:"",tags:[...s,["P",o.pubkey],["bolt11",n],["description",t]]};return e&&i.tags.push(["preimage",e]),i}function Af(t){if(t.length<50)return 0;t=t.substring(0,50);const e=t.lastIndexOf("1");if(e===-1)return 0;const n=t.substring(0,e);if(!n.startsWith("lnbc"))return 0;const r=n.substring(4);if(r.length<1)return 0;const o=r[r.length-1],s=o.charCodeAt(0)-48,i=s>=0&&s<=9;let a=r.length-1;if(i&&a++,a<1)return 0;const c=parseInt(r.substring(0,a));switch(o){case"m":return c*1e5;case"u":return c*100;case"n":return c/10;case"p":return c/1e4;default:return c*1e8}}var Sf={};W(Sf,{Negentropy:()=>ga,NegentropyStorageVector:()=>Bf,NegentropySync:()=>Lf});var Yn=97,xt=32,pa=16,et={Skip:0,Fingerprint:1,IdList:2},Re=class{constructor(t){g(this,"_raw");g(this,"length");typeof t=="number"?(this._raw=new Uint8Array(t),this.length=0):t instanceof Uint8Array?(this._raw=new Uint8Array(t),this.length=t.length):(this._raw=new Uint8Array(512),this.length=0)}unwrap(){return this._raw.subarray(0,this.length)}get capacity(){return this._raw.byteLength}extend(t){if(t instanceof Re&&(t=t.unwrap()),typeof t.length!="number")throw Error("bad length");const e=t.length+this.length;if(this.capacity<e){const n=this._raw,r=Math.max(this.capacity*2,e);this._raw=new Uint8Array(r),this._raw.set(n)}this._raw.set(t,this.length),this.length+=t.length}shift(){const t=this._raw[0];return this._raw=this._raw.subarray(1),this.length--,t}shiftN(t=1){const e=this._raw.subarray(0,t);return this._raw=this._raw.subarray(t),this.length-=t,e}};function Wt(t){let e=0;for(;;){if(t.length===0)throw Error("parse ends prematurely");let n=t.shift();if(e=e<<7|n&127,(n&128)===0)break}return e}function Le(t){if(t===0)return new Re(new Uint8Array([0]));let e=[];for(;t!==0;)e.push(t&127),t>>>=7;e.reverse();for(let n=0;n<e.length-1;n++)e[n]|=128;return new Re(new Uint8Array(e))}function Nf(t){return nn(t,1)[0]}function nn(t,e){if(t.length<e)throw Error("parse ends prematurely");return t.shiftN(e)}var Cf=class{constructor(){g(this,"buf");this.setToZero()}setToZero(){this.buf=new Uint8Array(xt)}add(t){let e=0,n=0,r=new DataView(this.buf.buffer),o=new DataView(t.buffer);for(let s=0;s<8;s++){let i=s*4,a=r.getUint32(i,!0),c=o.getUint32(i,!0),l=a;l+=e,l+=c,l>4294967295&&(n=1),r.setUint32(i,l&4294967295,!0),e=n,n=0}}negate(){let t=new DataView(this.buf.buffer);for(let n=0;n<8;n++){let r=n*4;t.setUint32(r,~t.getUint32(r,!0))}let e=new Uint8Array(xt);e[0]=1,this.add(e)}getFingerprint(t){let e=new Re;return e.extend(this.buf),e.extend(Le(t)),be(e.unwrap()).subarray(0,pa)}},Bf=class{constructor(){g(this,"items");g(this,"sealed");this.items=[],this.sealed=!1}insert(t,e){if(this.sealed)throw Error("already sealed");const n=wi(e);if(n.byteLength!==xt)throw Error("bad id size for added item");this.items.push({timestamp:t,id:n})}seal(){if(this.sealed)throw Error("already sealed");this.sealed=!0,this.items.sort(Xn);for(let t=1;t<this.items.length;t++)if(Xn(this.items[t-1],this.items[t])===0)throw Error("duplicate item inserted")}unseal(){this.sealed=!1}size(){return this._checkSealed(),this.items.length}getItem(t){if(this._checkSealed(),t>=this.items.length)throw Error("out of range");return this.items[t]}iterate(t,e,n){this._checkSealed(),this._checkBounds(t,e);for(let r=t;r<e&&n(this.items[r],r);++r);}findLowerBound(t,e,n){return this._checkSealed(),this._checkBounds(t,e),this._binarySearch(this.items,t,e,r=>Xn(r,n)<0)}fingerprint(t,e){let n=new Cf;return n.setToZero(),this.iterate(t,e,r=>(n.add(r.id),!0)),n.getFingerprint(e-t)}_checkSealed(){if(!this.sealed)throw Error("not sealed")}_checkBounds(t,e){if(t>e||e>this.items.length)throw Error("bad range")}_binarySearch(t,e,n,r){let o=n-e;for(;o>0;){let s=e,i=Math.floor(o/2);s+=i,r(t[s])?(e=++s,o-=i+1):o=i}return e}},ga=class{constructor(t,e=6e4){g(this,"storage");g(this,"frameSizeLimit");g(this,"lastTimestampIn");g(this,"lastTimestampOut");if(e<4096)throw Error("frameSizeLimit too small");this.storage=t,this.frameSizeLimit=e,this.lastTimestampIn=0,this.lastTimestampOut=0}_bound(t,e){return{timestamp:t,id:e||new Uint8Array(0)}}initiate(){let t=new Re;return t.extend(new Uint8Array([Yn])),this.splitRange(0,this.storage.size(),this._bound(Number.MAX_VALUE),t),mt(t.unwrap())}reconcile(t,e,n){const r=new Re(wi(t));this.lastTimestampIn=this.lastTimestampOut=0;let o=new Re;o.extend(new Uint8Array([Yn]));let s=Nf(r);if(s<96||s>111)throw Error("invalid negentropy protocol version byte");if(s!==Yn)throw Error("unsupported negentropy protocol version requested: "+(s-96));let i=this.storage.size(),a=this._bound(0),c=0,l=!1;for(;r.length!==0;){let d=new Re,u=()=>{l&&(l=!1,d.extend(this.encodeBound(a)),d.extend(Le(et.Skip)))},m=this.decodeBound(r),f=Wt(r),p=c,h=this.storage.findLowerBound(c,i,m);if(f===et.Skip)l=!0;else if(f===et.Fingerprint){let y=nn(r,pa),v=this.storage.fingerprint(p,h);ya(y,v)!==0?(u(),this.splitRange(p,h,m,d)):l=!0}else if(f===et.IdList){let y=Wt(r),v={};for(let E=0;E<y;E++){let S=nn(r,xt);v[mt(S)]=S}if(l=!0,this.storage.iterate(p,h,E=>{let S=E.id;const M=mt(S);return v[M]?delete v[mt(S)]:e==null||e(M),!0}),n)for(let E of Object.values(v))n(mt(E))}else throw Error("unexpected mode");if(this.exceededFrameSizeLimit(o.length+d.length)){let y=this.storage.fingerprint(h,i);o.extend(this.encodeBound(this._bound(Number.MAX_VALUE))),o.extend(Le(et.Fingerprint)),o.extend(y);break}else o.extend(d);c=h,a=m}return o.length===1?null:mt(o.unwrap())}splitRange(t,e,n,r){let o=e-t,s=16;if(o<s*2)r.extend(this.encodeBound(n)),r.extend(Le(et.IdList)),r.extend(Le(o)),this.storage.iterate(t,e,i=>(r.extend(i.id),!0));else{let i=Math.floor(o/s),a=o%s,c=t;for(let l=0;l<s;l++){let d=i+(l<a?1:0),u=this.storage.fingerprint(c,c+d);c+=d;let m;if(c===e)m=n;else{let f,p;this.storage.iterate(c-1,c+1,(h,y)=>(y===c-1?f=h:p=h,!0)),m=this.getMinimalBound(f,p)}r.extend(this.encodeBound(m)),r.extend(Le(et.Fingerprint)),r.extend(u)}}}exceededFrameSizeLimit(t){return t>this.frameSizeLimit-200}decodeTimestampIn(t){let e=Wt(t);return e=e===0?Number.MAX_VALUE:e-1,this.lastTimestampIn===Number.MAX_VALUE||e===Number.MAX_VALUE?(this.lastTimestampIn=Number.MAX_VALUE,Number.MAX_VALUE):(e+=this.lastTimestampIn,this.lastTimestampIn=e,e)}decodeBound(t){let e=this.decodeTimestampIn(t),n=Wt(t);if(n>xt)throw Error("bound key too long");let r=nn(t,n);return{timestamp:e,id:r}}encodeTimestampOut(t){if(t===Number.MAX_VALUE)return this.lastTimestampOut=Number.MAX_VALUE,Le(0);let e=t;return t-=this.lastTimestampOut,this.lastTimestampOut=e,Le(t+1)}encodeBound(t){let e=new Re;return e.extend(this.encodeTimestampOut(t.timestamp)),e.extend(Le(t.id.length)),e.extend(t.id),e}getMinimalBound(t,e){if(e.timestamp!==t.timestamp)return this._bound(e.timestamp);{let n=0,r=e.id,o=t.id;for(let s=0;s<xt&&r[s]===o[s];s++)n++;return this._bound(e.timestamp,e.id.subarray(0,n+1))}}};function ya(t,e){for(let n=0;n<t.byteLength;n++){if(t[n]<e[n])return-1;if(t[n]>e[n])return 1}return t.byteLength>e.byteLength?1:t.byteLength<e.byteLength?-1:0}function Xn(t,e){return t.timestamp===e.timestamp?ya(t.id,e.id):t.timestamp-e.timestamp}var Lf=class{constructor(t,e,n,r={}){g(this,"relay");g(this,"storage");g(this,"neg");g(this,"filter");g(this,"subscription");g(this,"onhave");g(this,"onneed");this.relay=t,this.storage=e,this.neg=new ga(e),this.onhave=r.onhave,this.onneed=r.onneed,this.filter=n,this.subscription=this.relay.prepareSubscription([{}],{label:r.label||"negentropy"}),this.subscription.oncustom=o=>{var s,i,a,c;switch(o[0]){case"NEG-MSG":{o.length<3&&console.warn(`got invalid NEG-MSG from ${this.relay.url}: ${o}`);try{const l=this.neg.reconcile(o[2],this.onhave,this.onneed);l?this.relay.send(`["NEG-MSG", "${this.subscription.id}", "${l}"]`):(this.close(),(s=r.onclose)==null||s.call(r))}catch(l){console.error("negentropy reconcile error:",l),(i=r==null?void 0:r.onclose)==null||i.call(r,`reconcile error: ${l}`)}break}case"NEG-CLOSE":{const l=o[2];console.warn("negentropy error:",l),(a=r.onclose)==null||a.call(r,l);break}case"NEG-ERR":(c=r.onclose)==null||c.call(r)}}}async start(){const t=this.neg.initiate();this.relay.send(`["NEG-OPEN","${this.subscription.id}",${JSON.stringify(this.filter)},"${t}"]`)}close(){this.relay.send(`["NEG-CLOSE","${this.subscription.id}"]`),this.subscription.close()}},If={};W(If,{getToken:()=>Rf,hashPayload:()=>Eo,unpackEventFromToken:()=>wa,validateEvent:()=>Aa,validateEventKind:()=>xa,validateEventMethodTag:()=>ka,validateEventPayloadTag:()=>_a,validateEventTimestamp:()=>va,validateEventUrlTag:()=>Ea,validateToken:()=>$f});var ba="Nostr ";async function Rf(t,e,n,r=!1,o){const s={kind:ao,tags:[["u",t],["method",e]],created_at:Math.round(new Date().getTime()/1e3),content:""};o&&s.tags.push(["payload",Eo(o)]);const i=await n(s);return(r?ba:"")+ge.encode(ye.encode(JSON.stringify(i)))}async function $f(t,e,n){const r=await wa(t).catch(s=>{throw s});return await Aa(r,e,n).catch(s=>{throw s})}async function wa(t){if(!t)throw new Error("Missing token");t=t.replace(ba,"");const e=Te.decode(ge.decode(t));if(!e||e.length===0||!e.startsWith("{"))throw new Error("Invalid token");return JSON.parse(e)}function va(t){return t.created_at?Math.round(new Date().getTime()/1e3)-t.created_at<60:!1}function xa(t){return t.kind===ao}function Ea(t,e){const n=t.tags.find(r=>r[0]==="u");return n?n.length>0&&n[1]===e:!1}function ka(t,e){const n=t.tags.find(r=>r[0]==="method");return n?n.length>0&&n[1].toLowerCase()===e.toLowerCase():!1}function Eo(t){const e=be(ye.encode(JSON.stringify(t)));return Y(e)}function _a(t,e){const n=t.tags.find(o=>o[0]==="payload");if(!n)return!1;const r=Eo(e);return n.length>0&&n[1]===r}async function Aa(t,e,n,r){if(!to(t))throw new Error("Invalid nostr event, signature invalid");if(!xa(t))throw new Error("Invalid nostr event, kind invalid");if(!va(t))throw new Error("Invalid nostr event, created_at timestamp invalid");if(!Ea(t,e))throw new Error("Invalid nostr event, url tag invalid");if(!ka(t,n))throw new Error("Invalid nostr event, method tag invalid");if(r&&typeof r=="object"&&Object.keys(r).length>0&&!_a(t,r))throw new Error("Invalid nostr event, payload tag does not match request body hash");return!0}class _t{constructor(e){g(this,"secretKey");g(this,"pubkey");this.secretKey=e||eo(),this.pubkey=Cn(this.secretKey)}async getPublicKey(){return this.pubkey}async signEvent(e){return we(e,this.secretKey)}getNsec(){return vt.nsecEncode(this.secretKey)}getNpub(){return vt.npubEncode(this.pubkey)}exportKeyFile(){return{nsec:this.getNsec(),npub:this.getNpub(),pubkey:this.pubkey}}downloadKeyFile(){const e=this.exportKeyFile(),n=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),r=URL.createObjectURL(n),o=document.createElement("a");o.href=r,o.download=`nostr-key-${this.pubkey.slice(0,8)}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(r)}copyNsec(){return navigator.clipboard.writeText(this.getNsec())}static fromNsec(e){const{type:n,data:r}=vt.decode(e);if(n!=="nsec")throw new Error("Invalid nsec");return new _t(r)}}var tt=Symbol("verified"),Tf=t=>t instanceof Object;function Pf(t){if(!Tf(t)||typeof t.kind!="number"||typeof t.content!="string"||typeof t.created_at!="number"||typeof t.pubkey!="string"||!t.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(t.tags))return!1;for(let e=0;e<t.tags.length;e++){let n=t.tags[e];if(!Array.isArray(n))return!1;for(let r=0;r<n.length;r++)if(typeof n[r]!="string")return!1}return!0}var Uf=new TextDecoder("utf-8"),Sa=new TextEncoder;function yt(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}var Of=class{constructor(e){g(this,"value");g(this,"next",null);g(this,"prev",null);this.value=e}},Mf=class{constructor(){g(this,"first");g(this,"last");this.first=null,this.last=null}enqueue(e){const n=new Of(e);return this.last?this.last===this.first?(this.last=n,this.last.prev=this.first,this.first.next=n):(n.prev=this.last,this.last.next=n,this.last=n):(this.first=n,this.last=n),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const n=this.first;return this.first=null,this.last=null,n.value}const e=this.first;return this.first=e.next,this.first&&(this.first.prev=null),e.value}},Df=class{generateSecretKey(){return ke.utils.randomPrivateKey()}getPublicKey(e){return Y(ke.getPublicKey(e))}finalizeEvent(e,n){const r=e;return r.pubkey=Y(ke.getPublicKey(n)),r.id=Qn(r),r.sig=Y(ke.sign(Qn(r),n)),r[tt]=!0,r}verifyEvent(e){if(typeof e[tt]=="boolean")return e[tt];const n=Qn(e);if(n!==e.id)return e[tt]=!1,!1;try{const r=ke.verify(e.sig,n,e.pubkey);return e[tt]=r,r}catch{return e[tt]=!1,!1}}};function Kf(t){if(!Pf(t))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content])}function Qn(t){let e=be(Sa.encode(Kf(t)));return Y(e)}var $n=new Df;$n.generateSecretKey;var cs=$n.getPublicKey,jf=$n.finalizeEvent,Na=$n.verifyEvent,Ca=1,Ba=65535;function er(t,e){const n=ut.getSharedSecret(t,"02"+e).subarray(1,33);return Li(be,n,"nip44-v2")}function La(t,e){const n=Ii(be,t,e,76);return{chacha_key:n.subarray(0,32),chacha_nonce:n.subarray(32,44),hmac_key:n.subarray(44,76)}}function Ia(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("expected positive integer");if(t<=32)return 32;const e=1<<Math.floor(Math.log2(t-1))+1,n=e<=256?32:e/8;return n*(Math.floor((t-1)/n)+1)}function Hf(t){if(!Number.isSafeInteger(t)||t<Ca||t>Ba)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");const e=new Uint8Array(2);return new DataView(e.buffer).setUint16(0,t,!1),e}function zf(t){const e=Sa.encode(t),n=e.length,r=Hf(n),o=new Uint8Array(Ia(n)-n);return dt(r,e,o)}function qf(t){const e=new DataView(t.buffer).getUint16(0),n=t.subarray(2,2+e);if(e<Ca||e>Ba||n.length!==e||t.length!==2+Ia(e))throw new Error("invalid padding");return Uf.decode(n)}function Ra(t,e,n){if(n.length!==32)throw new Error("AAD associated data must be 32 bytes");const r=dt(n,e);return zt(be,t,r)}function Vf(t){if(typeof t!="string")throw new Error("payload must be a valid string");const e=t.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(t[0]==="#")throw new Error("unknown encryption version");let n;try{n=ge.decode(t)}catch(s){throw new Error("invalid base64: "+s.message)}const r=n.length;if(r<99||r>65603)throw new Error("invalid data length: "+r);const o=n[0];if(o!==2)throw new Error("unknown encryption version "+o);return{nonce:n.subarray(1,33),ciphertext:n.subarray(33,-32),mac:n.subarray(-32)}}function Ff(t,e,n=Zr(32)){const{chacha_key:r,chacha_nonce:o,hmac_key:s}=La(e,n),i=zf(t),a=Sn(r,o,i),c=Ra(s,a,n);return ge.encode(dt(new Uint8Array([2]),n,a,c))}function ls(t,e){const{nonce:n,ciphertext:r,mac:o}=Vf(t),{chacha_key:s,chacha_nonce:i,hmac_key:a}=La(e,n),c=Ra(a,r,n);if(!vi(c,o))throw new Error("invalid MAC");const l=Sn(s,i,r);return qf(l)}var Wf=/^(?:([\w.+-]+)@)?([\w_-]+(\.[\w_-]+)+)$/,Zf;try{Zf=fetch}catch{}var Jf=22242,tr=24133;function Gf(t,e){if(t.ids&&t.ids.indexOf(e.id)===-1||t.kinds&&t.kinds.indexOf(e.kind)===-1||t.authors&&t.authors.indexOf(e.pubkey)===-1)return!1;for(let n in t)if(n[0]==="#"){let r=n.slice(1),o=t[`#${r}`];if(o&&!e.tags.find(([s,i])=>s===n.slice(1)&&o.indexOf(i)!==-1))return!1}return!(t.since&&e.created_at<t.since||t.until&&e.created_at>t.until)}function Yf(t,e){for(let n=0;n<t.length;n++)if(Gf(t[n],e))return!0;return!1}function Xf(t,e){let n=e.length+3,r=t.indexOf(`"${e}":`)+n,o=t.slice(r).indexOf('"')+r+1;return t.slice(o,o+64)}function Qf(t){let e=t.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let n=t.slice(e+7+1).indexOf('"');if(n===-1)return null;let r=e+7+1+n,o=t.slice(r+1,80).indexOf('"');if(o===-1)return null;let s=r+1+o;return t.slice(r+1,s)}function em(t,e){return{kind:Jf,created_at:Math.floor(Date.now()/1e3),tags:[["relay",t],["challenge",e]],content:""}}async function tm(){return new Promise((t,e)=>{try{if(typeof MessageChannel<"u"){const n=new MessageChannel,r=()=>{n.port1.removeEventListener("message",r),t()};n.port1.addEventListener("message",r),n.port2.postMessage(0),n.port1.start()}else typeof setImmediate<"u"?setImmediate(t):typeof setTimeout<"u"?setTimeout(t,0):t()}catch(n){console.error("during yield: ",n),e(n)}})}var nm=t=>(t[tt]=!0,!0),$a=class extends Error{constructor(e,n){super(`Tried to send message '${e} on a closed connection to ${n}.`),this.name="SendingOnClosedConnection"}},Ta=class{constructor(e,n){g(this,"url");g(this,"_connected",!1);g(this,"onclose",null);g(this,"onnotice",e=>console.debug(`NOTICE from ${this.url}: ${e}`));g(this,"onauth");g(this,"baseEoseTimeout",4400);g(this,"publishTimeout",4400);g(this,"pingFrequency",29e3);g(this,"pingTimeout",2e4);g(this,"resubscribeBackoff",[1e4,1e4,1e4,2e4,2e4,3e4,6e4]);g(this,"openSubs",new Map);g(this,"enablePing");g(this,"enableReconnect");g(this,"reconnectTimeoutHandle");g(this,"pingIntervalHandle");g(this,"reconnectAttempts",0);g(this,"closedIntentionally",!1);g(this,"connectionPromise");g(this,"openCountRequests",new Map);g(this,"openEventPublishes",new Map);g(this,"ws");g(this,"incomingMessageQueue",new Mf);g(this,"queueRunning",!1);g(this,"challenge");g(this,"authPromise");g(this,"serial",0);g(this,"verifyEvent");g(this,"_WebSocket");this.url=yt(e),this.verifyEvent=n.verifyEvent,this._WebSocket=n.websocketImplementation||WebSocket,this.enablePing=n.enablePing,this.enableReconnect=n.enableReconnect||!1}static async connect(e,n){const r=new Ta(e,n);return await r.connect(n),r}closeAllSubscriptions(e){for(let[n,r]of this.openSubs)r.close(e);this.openSubs.clear();for(let[n,r]of this.openEventPublishes)r.reject(new Error(e));this.openEventPublishes.clear();for(let[n,r]of this.openCountRequests)r.reject(new Error(e));this.openCountRequests.clear()}get connected(){return this._connected}async reconnect(){const e=this.resubscribeBackoff[Math.min(this.reconnectAttempts,this.resubscribeBackoff.length-1)];this.reconnectAttempts++,this.reconnectTimeoutHandle=setTimeout(async()=>{try{await this.connect()}catch{}},e)}handleHardClose(e){var r;this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this._connected=!1,this.connectionPromise=void 0;const n=this.closedIntentionally;this.closedIntentionally=!1,(r=this.onclose)==null||r.call(this),this.enableReconnect&&!n?this.reconnect():this.closeAllSubscriptions(e)}async connect(e){let n;return this.connectionPromise?this.connectionPromise:(this.challenge=void 0,this.authPromise=void 0,this.connectionPromise=new Promise((r,o)=>{e!=null&&e.timeout&&(n=setTimeout(()=>{var s;o("connection timed out"),this.connectionPromise=void 0,(s=this.onclose)==null||s.call(this),this.closeAllSubscriptions("relay connection timed out")},e.timeout)),e!=null&&e.abort&&(e.abort.onabort=o);try{this.ws=new this._WebSocket(this.url)}catch(s){clearTimeout(n),o(s);return}this.ws.onopen=()=>{this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),clearTimeout(n),this._connected=!0;const s=this.reconnectAttempts>0;this.reconnectAttempts=0;for(const i of this.openSubs.values()){if(i.eosed=!1,s)for(let a=0;a<i.filters.length;a++)i.lastEmitted&&(i.filters[a].since=i.lastEmitted+1);i.fire()}this.enablePing&&(this.pingIntervalHandle=setInterval(()=>this.pingpong(),this.pingFrequency)),r()},this.ws.onerror=s=>{clearTimeout(n),o(s.message||"websocket error"),this.handleHardClose("relay connection errored")},this.ws.onclose=s=>{clearTimeout(n),o(s.message||"websocket closed"),this.handleHardClose("relay connection closed")},this.ws.onmessage=this._onmessage.bind(this)}),this.connectionPromise)}waitForPingPong(){return new Promise(e=>{this.ws.once("pong",()=>e(!0)),this.ws.ping()})}waitForDummyReq(){return new Promise((e,n)=>{if(!this.connectionPromise)return n(new Error(`no connection to ${this.url}, can't ping`));try{const r=this.subscribe([{ids:["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],limit:0}],{label:"forced-ping",oneose:()=>{e(!0),r.close()},onclose(){e(!0)},eoseTimeout:this.pingTimeout+1e3})}catch(r){n(r)}})}async pingpong(){var e,n,r;((e=this.ws)==null?void 0:e.readyState)===1&&(await Promise.any([this.ws&&this.ws.ping&&this.ws.once?this.waitForPingPong():this.waitForDummyReq(),new Promise(s=>setTimeout(()=>s(!1),this.pingTimeout))])||((n=this.ws)==null?void 0:n.readyState)===this._WebSocket.OPEN&&((r=this.ws)==null||r.close()))}async runQueue(){for(this.queueRunning=!0;this.handleNext()!==!1;)await tm();this.queueRunning=!1}handleNext(){var r,o,s;const e=this.incomingMessageQueue.dequeue();if(!e)return!1;const n=Qf(e);if(n){const i=this.openSubs.get(n);if(!i)return;const a=Xf(e,"id"),c=(r=i.alreadyHaveEvent)==null?void 0:r.call(i,a);if((o=i.receivedEvent)==null||o.call(i,this,a),c)return}try{let i=JSON.parse(e);switch(i[0]){case"EVENT":{const a=this.openSubs.get(i[1]),c=i[2];this.verifyEvent(c)&&Yf(a.filters,c)&&a.onevent(c),(!a.lastEmitted||a.lastEmitted<c.created_at)&&(a.lastEmitted=c.created_at);return}case"COUNT":{const a=i[1],c=i[2],l=this.openCountRequests.get(a);l&&(l.resolve(c.count),this.openCountRequests.delete(a));return}case"EOSE":{const a=this.openSubs.get(i[1]);if(!a)return;a.receivedEose();return}case"OK":{const a=i[1],c=i[2],l=i[3],d=this.openEventPublishes.get(a);d&&(clearTimeout(d.timeout),c?d.resolve(l):d.reject(new Error(l)),this.openEventPublishes.delete(a));return}case"CLOSED":{const a=i[1],c=this.openSubs.get(a);if(!c)return;c.closed=!0,c.close(i[2]);return}case"NOTICE":{this.onnotice(i[1]);return}case"AUTH":{this.challenge=i[1],this.onauth&&this.auth(this.onauth);return}default:{const a=this.openSubs.get(i[1]);(s=a==null?void 0:a.oncustom)==null||s.call(a,i);return}}}catch{return}}async send(e){if(!this.connectionPromise)throw new $a(e,this.url);this.connectionPromise.then(()=>{var n;(n=this.ws)==null||n.send(e)})}async auth(e){const n=this.challenge;if(!n)throw new Error("can't perform auth, no challenge was received");return this.authPromise?this.authPromise:(this.authPromise=new Promise(async(r,o)=>{try{let s=await e(em(this.url,n)),i=setTimeout(()=>{let a=this.openEventPublishes.get(s.id);a&&(a.reject(new Error("auth timed out")),this.openEventPublishes.delete(s.id))},this.publishTimeout);this.openEventPublishes.set(s.id,{resolve:r,reject:o,timeout:i}),this.send('["AUTH",'+JSON.stringify(s)+"]")}catch(s){console.warn("subscribe auth function failed:",s)}}),this.authPromise)}async publish(e){const n=new Promise((r,o)=>{const s=setTimeout(()=>{const i=this.openEventPublishes.get(e.id);i&&(i.reject(new Error("publish timed out")),this.openEventPublishes.delete(e.id))},this.publishTimeout);this.openEventPublishes.set(e.id,{resolve:r,reject:o,timeout:s})});return this.send('["EVENT",'+JSON.stringify(e)+"]"),n}async count(e,n){this.serial++;const r=(n==null?void 0:n.id)||"count:"+this.serial,o=new Promise((s,i)=>{this.openCountRequests.set(r,{resolve:s,reject:i})});return this.send('["COUNT","'+r+'",'+JSON.stringify(e).substring(1)),o}subscribe(e,n){const r=this.prepareSubscription(e,n);return r.fire(),n.abort&&(n.abort.onabort=()=>r.close(String(n.abort.reason||"<aborted>"))),r}prepareSubscription(e,n){this.serial++;const r=n.id||(n.label?n.label+":":"sub:")+this.serial,o=new rm(this,r,e,n);return this.openSubs.set(r,o),o}close(){var e,n,r;this.closedIntentionally=!0,this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this.closeAllSubscriptions("relay connection closed by us"),this._connected=!1,(e=this.onclose)==null||e.call(this),((n=this.ws)==null?void 0:n.readyState)===this._WebSocket.OPEN&&((r=this.ws)==null||r.close())}_onmessage(e){this.incomingMessageQueue.enqueue(e.data),this.queueRunning||this.runQueue()}},rm=class{constructor(e,n,r,o){g(this,"relay");g(this,"id");g(this,"lastEmitted");g(this,"closed",!1);g(this,"eosed",!1);g(this,"filters");g(this,"alreadyHaveEvent");g(this,"receivedEvent");g(this,"onevent");g(this,"oneose");g(this,"onclose");g(this,"oncustom");g(this,"eoseTimeout");g(this,"eoseTimeoutHandle");if(r.length===0)throw new Error("subscription can't be created with zero filters");this.relay=e,this.filters=r,this.id=n,this.alreadyHaveEvent=o.alreadyHaveEvent,this.receivedEvent=o.receivedEvent,this.eoseTimeout=o.eoseTimeout||e.baseEoseTimeout,this.oneose=o.oneose,this.onclose=o.onclose,this.onevent=o.onevent||(s=>{console.warn(`onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,s)})}fire(){this.relay.send('["REQ","'+this.id+'",'+JSON.stringify(this.filters).substring(1)),this.eoseTimeoutHandle=setTimeout(this.receivedEose.bind(this),this.eoseTimeout)}receivedEose(){var e;this.eosed||(clearTimeout(this.eoseTimeoutHandle),this.eosed=!0,(e=this.oneose)==null||e.call(this))}close(e="closed by caller"){var n;if(!this.closed&&this.relay.connected){try{this.relay.send('["CLOSE",'+JSON.stringify(this.id)+"]")}catch(r){if(!(r instanceof $a))throw r}this.closed=!0}this.relay.openSubs.delete(this.id),(n=this.onclose)==null||n.call(this,e)}},om=class{constructor(e){g(this,"relays",new Map);g(this,"seenOn",new Map);g(this,"trackRelays",!1);g(this,"verifyEvent");g(this,"enablePing");g(this,"enableReconnect");g(this,"automaticallyAuth");g(this,"trustedRelayURLs",new Set);g(this,"_WebSocket");this.verifyEvent=e.verifyEvent,this._WebSocket=e.websocketImplementation,this.enablePing=e.enablePing,this.enableReconnect=e.enableReconnect||!1,this.automaticallyAuth=e.automaticallyAuth}async ensureRelay(e,n){e=yt(e);let r=this.relays.get(e);if(r||(r=new Ta(e,{verifyEvent:this.trustedRelayURLs.has(e)?nm:this.verifyEvent,websocketImplementation:this._WebSocket,enablePing:this.enablePing,enableReconnect:this.enableReconnect}),r.onclose=()=>{r&&!r.enableReconnect&&this.relays.delete(e)},this.relays.set(e,r)),this.automaticallyAuth){const o=this.automaticallyAuth(e);o&&(r.onauth=o)}return await r.connect({timeout:n==null?void 0:n.connectionTimeout,abort:n==null?void 0:n.abort}),r}close(e){e.map(yt).forEach(n=>{var r;(r=this.relays.get(n))==null||r.close(),this.relays.delete(n)})}subscribe(e,n,r){const o=[];for(let s=0;s<e.length;s++){const i=yt(e[s]);o.find(a=>a.url===i)||o.push({url:i,filter:n})}return this.subscribeMap(o,r)}subscribeMany(e,n,r){const o=[],s=[];for(let i=0;i<e.length;i++){const a=yt(e[i]);s.indexOf(a)===-1&&(s.push(a),o.push({url:a,filter:n}))}return this.subscribeMap(o,r)}subscribeMap(e,n){const r=new Map;for(const f of e){const{url:p,filter:h}=f;r.has(p)||r.set(p,[]),r.get(p).push(h)}const o=Array.from(r.entries()).map(([f,p])=>({url:f,filters:p}));this.trackRelays&&(n.receivedEvent=(f,p)=>{let h=this.seenOn.get(p);h||(h=new Set,this.seenOn.set(p,h)),h.add(f)});const s=new Set,i=[],a=[];let c=f=>{var p;a[f]||(a[f]=!0,a.filter(h=>h).length===o.length&&((p=n.oneose)==null||p.call(n),c=()=>{}))};const l=[];let d=(f,p)=>{var h;l[f]||(c(f),l[f]=p,l.filter(y=>y).length===o.length&&((h=n.onclose)==null||h.call(n,l),d=()=>{}))};const u=f=>{var h;if((h=n.alreadyHaveEvent)!=null&&h.call(n,f))return!0;const p=s.has(f);return s.add(f),p},m=Promise.all(o.map(async({url:f,filters:p},h)=>{let y;try{y=await this.ensureRelay(f,{connectionTimeout:n.maxWait?Math.max(n.maxWait*.8,n.maxWait-1e3):void 0,abort:n.abort})}catch(E){d(h,(E==null?void 0:E.message)||String(E));return}let v=y.subscribe(p,{...n,oneose:()=>c(h),onclose:E=>{E.startsWith("auth-required: ")&&n.onauth?y.auth(n.onauth).then(()=>{y.subscribe(p,{...n,oneose:()=>c(h),onclose:S=>{d(h,S)},alreadyHaveEvent:u,eoseTimeout:n.maxWait,abort:n.abort})}).catch(S=>{d(h,`auth was required and attempted, but failed with: ${S}`)}):d(h,E)},alreadyHaveEvent:u,eoseTimeout:n.maxWait,abort:n.abort});i.push(v)}));return{async close(f){await m,i.forEach(p=>{p.close(f)})}}}subscribeEose(e,n,r){const o=this.subscribe(e,n,{...r,oneose(){o.close("closed automatically on eose")}});return o}subscribeManyEose(e,n,r){const o=this.subscribeMany(e,n,{...r,oneose(){o.close("closed automatically on eose")}});return o}async querySync(e,n,r){return new Promise(async o=>{const s=[];this.subscribeEose(e,n,{...r,onevent(i){s.push(i)},onclose(i){o(s)}})})}async get(e,n,r){n.limit=1;const o=await this.querySync(e,n,r);return o.sort((s,i)=>i.created_at-s.created_at),o[0]||null}publish(e,n,r){return e.map(yt).map(async(o,s,i)=>{if(i.indexOf(o)!==s)return Promise.reject("duplicate url");let a=await this.ensureRelay(o);return a.publish(n).catch(async c=>{if(c instanceof Error&&c.message.startsWith("auth-required: ")&&(r!=null&&r.onauth))return await a.auth(r.onauth),a.publish(n);throw c}).then(c=>{if(this.trackRelays){let l=this.seenOn.get(n.id);l||(l=new Set,this.seenOn.set(n.id,l)),l.add(a)}return c})})}listConnectionStatus(){const e=new Map;return this.relays.forEach((n,r)=>e.set(r,n.connected)),e}destroy(){this.relays.forEach(e=>e.close()),this.relays=new Map}},Pa;try{Pa=WebSocket}catch{}var sm=class extends om{constructor(e){super({verifyEvent:Na,websocketImplementation:Pa,...e})}},Ua;try{Ua=fetch}catch{}var im=/^bunker:\/\/([0-9a-f]{64})\??([?\/\w:.=&%-]*)$/;async function am(t){let e=t.match(im);if(e)try{const n=e[1],r=new URLSearchParams(e[2]);return{pubkey:n,relays:r.getAll("relay"),secret:r.get("secret")}}catch{}return cm(t)}async function cm(t){const e=t.match(Wf);if(!e)return null;const[n,r="_",o]=e;try{const s=`https://${o}/.well-known/nostr.json?name=${r}`,i=await(await Ua(s,{redirect:"error"})).json();let a=i.names[r],c=i.nip46[a]||[];return{pubkey:a,relays:c,secret:null}}catch{return null}}var Sr=class{constructor(e,n){g(this,"params");g(this,"pool");g(this,"subCloser");g(this,"isOpen");g(this,"serial");g(this,"idPrefix");g(this,"listeners");g(this,"waitingForAuth");g(this,"secretKey");g(this,"conversationKey");g(this,"bp");g(this,"cachedPubKey");this.params=n,this.pool=n.pool||new sm,this.secretKey=e,this.isOpen=!1,this.idPrefix=Math.random().toString(36).substring(7),this.serial=0,this.listeners={},this.waitingForAuth={}}static fromBunker(e,n,r={}){if(n.relays.length===0)throw new Error("no relays specified for this bunker");const o=new Sr(e,r);return o.conversationKey=er(e,n.pubkey),o.bp=n,o.setupSubscription(),o}static async fromURI(e,n,r={},o=3e5){const s=new Sr(e,r),i=new URL(n),a=cs(e);return new Promise((c,l)=>{let d=!1;const u=s.pool.subscribe(i.searchParams.getAll("relay"),{kinds:[tr],"#p":[a],limit:0},{onevent:async m=>{try{const f=er(e,m.pubkey),p=ls(m.content,f);JSON.parse(p).result===i.searchParams.get("secret")&&(u.close(),s.bp={pubkey:m.pubkey,relays:i.searchParams.getAll("relay"),secret:i.searchParams.get("secret")},s.conversationKey=er(e,m.pubkey),s.setupSubscription(),d=!0,await Promise.race([new Promise(y=>setTimeout(y,1e3)),s.switchRelays()]),c(s))}catch(f){console.warn("failed to process potential connection event",f)}},onclose:()=>{d||l(new Error("subscription closed before connection was established."))},maxWait:typeof o=="number"?o:void 0,abort:typeof o!="number"?o:void 0})})}setupSubscription(){const e=this.listeners,n=this.waitingForAuth,r=this.conversationKey;this.subCloser=this.pool.subscribe(this.bp.relays,{kinds:[tr],authors:[this.bp.pubkey],"#p":[cs(this.secretKey)],limit:0},{onevent:async o=>{const s=JSON.parse(ls(o.content,r)),{id:i,result:a,error:c}=s;if(a==="auth_url"&&n[i]){delete n[i],this.params.onauth?this.params.onauth(c):console.warn(`nostr-tools/nip46: remote signer ${this.bp.pubkey} tried to send an "auth_url"='${c}' but there was no onauth() callback configured.`);return}let l=e[i];l&&(c?l.reject(c):a&&l.resolve(a),delete e[i])},onclose:()=>{this.subCloser=void 0}}),this.isOpen=!0}async switchRelays(){try{const e=await this.sendRequest("switch_relays",[]);let n=JSON.parse(e);if(!n||JSON.stringify(n.sort())===JSON.stringify(this.bp.relays))return!1;this.bp.relays=n;let r=this.subCloser;return setTimeout(()=>{r.close()},5e3),this.subCloser=void 0,this.setupSubscription(),!0}catch{return!1}}async close(){this.isOpen=!1,this.subCloser.close()}async sendRequest(e,n){return new Promise(async(r,o)=>{try{if(!this.isOpen)throw new Error("this signer is not open anymore, create a new one");this.subCloser||this.setupSubscription(),this.serial++;const s=`${this.idPrefix}-${this.serial}`,i=Ff(JSON.stringify({id:s,method:e,params:n}),this.conversationKey),a=jf({kind:tr,tags:[["p",this.bp.pubkey]],content:i,created_at:Math.floor(Date.now()/1e3)},this.secretKey);this.listeners[s]={resolve:r,reject:o},this.waitingForAuth[s]=!0,await Promise.any(this.pool.publish(this.bp.relays,a))}catch(s){o(s)}})}async ping(){let e=await this.sendRequest("ping",[]);if(e!=="pong")throw new Error(`result is not pong: ${e}`)}async connect(){await this.sendRequest("connect",[this.bp.pubkey,this.bp.secret||""])}async getPublicKey(){return this.cachedPubKey||(this.cachedPubKey=await this.sendRequest("get_public_key",[])),this.cachedPubKey}async signEvent(e){let n=await this.sendRequest("sign_event",[JSON.stringify(e)]),r=JSON.parse(n);if(Na(r))return r;throw new Error(`event returned from bunker is improperly signed: ${JSON.stringify(r)}`)}async nip04Encrypt(e,n){return await this.sendRequest("nip04_encrypt",[e,n])}async nip04Decrypt(e,n){return await this.sendRequest("nip04_decrypt",[e,n])}async nip44Encrypt(e,n){return await this.sendRequest("nip44_encrypt",[e,n])}async nip44Decrypt(e,n){return await this.sendRequest("nip44_decrypt",[e,n])}};class Tn{constructor(e){g(this,"signer");g(this,"cachedPubKey");this.signer=e}async connect(){await this.signer.connect()}async getPublicKey(){return this.cachedPubKey||(this.cachedPubKey=await this.signer.getPublicKey()),this.cachedPubKey}async signEvent(e){return await this.signer.signEvent(e)}async close(){await this.signer.close()}static async create(e){const n=await am(e);if(!n)throw new Error("Invalid bunker input");const r=Sr.fromBunker(eo(),n,{onauth:o=>{window.open(o,"_blank")}});return new Tn(r)}}let $e={signer:null,signerInfo:null,loading:!1,error:null};const Nr=new Set;function re(t){$e={...$e,...t},Nr.forEach(e=>e())}function lm(t){return Nr.add(t),()=>Nr.delete(t)}function us(){return $e}function um(){return $e.signer!==null}function Ct(){const{signer:t,signerInfo:e,loading:n,error:r}=j.useSyncExternalStore(lm,us,us),o=j.useCallback(async()=>{if(!en.isAvailable()){re({error:"NIP-07 extension not found"});return}re({loading:!0,error:null});try{const u=new en,m=await u.getPublicKey();re({signer:u,signerInfo:{type:"nip07",pubkey:m},loading:!1})}catch(u){re({error:u instanceof Error?u.message:"Login failed",loading:!1})}},[]),s=j.useCallback(async()=>{re({loading:!0,error:null});try{const u=new _t,m=await u.getPublicKey();re({signer:u,signerInfo:{type:"temp",pubkey:m},loading:!1})}catch(u){re({error:u instanceof Error?u.message:"Login failed",loading:!1})}},[]),i=j.useCallback(async u=>{re({loading:!0,error:null});try{const m=_t.fromNsec(u.trim()),f=await m.getPublicKey();re({signer:m,signerInfo:{type:"temp",pubkey:f},loading:!1})}catch(m){throw re({error:m instanceof Error?m.message:"Invalid nsec",loading:!1}),m}},[]),a=j.useCallback(async u=>{re({loading:!0,error:null});try{const m=await Tn.create(u);await m.connect();const f=await m.getPublicKey();re({signer:m,signerInfo:{type:"bunker",pubkey:f},loading:!1})}catch(m){re({error:m instanceof Error?m.message:"Login failed",loading:!1})}},[]),c=j.useCallback(()=>{var u;((u=$e.signerInfo)==null?void 0:u.type)==="bunker"&&$e.signer&&$e.signer.close(),re({signer:null,signerInfo:null,error:null})},[]),l=j.useCallback(()=>{re({error:null})},[]),d=j.useCallback(()=>{var u;return((u=$e.signerInfo)==null?void 0:u.type)==="temp"?$e.signer:null},[]);return{signer:t,signerInfo:e,loading:n,error:r,isLoggedIn:t!==null,loginWithNip07:o,loginWithTemp:s,loginWithNsec:i,loginWithBunker:a,logout:c,clearError:l,getTempSigner:d,isNip07Available:en.isAvailable()}}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function dm(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function ko(t,e=""){if(!Number.isSafeInteger(t)||t<0){const n=e&&`"${e}" `;throw new Error(`${n}expected integer >= 0, got ${t}`)}}function le(t,e,n=""){const r=dm(t),o=t==null?void 0:t.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",c=r?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function ds(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function hm(t,e){le(t,void 0,"digestInto() output");const n=e.outputLen;if(t.length<n)throw new Error('"digestInto() output" expected to be of length >='+n)}function Cr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function nr(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function Ee(t,e){return t<<32-e|t>>>e}const Oa=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",fm=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function ie(t){if(le(t),Oa)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=fm[t[n]];return e}const Be={_0:48,_9:57,A:65,F:70,a:97,f:102};function hs(t){if(t>=Be._0&&t<=Be._9)return t-Be._0;if(t>=Be.A&&t<=Be.F)return t-(Be.A-10);if(t>=Be.a&&t<=Be.f)return t-(Be.a-10)}function st(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(Oa)return Uint8Array.fromHex(t);const e=t.length,n=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=hs(t.charCodeAt(s)),a=hs(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function mn(...t){let e=0;for(let r=0;r<t.length;r++){const o=t[r];le(o),e+=o.length}const n=new Uint8Array(e);for(let r=0,o=0;r<t.length;r++){const s=t[r];n.set(s,o),o+=s.length}return n}function mm(t,e={}){const n=(o,s)=>t(s).update(o).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.create=o=>t(o),Object.assign(n,e),Object.freeze(n)}function Ma(t=32){const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof(e==null?void 0:e.getRandomValues)!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(t))}const pm=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function gm(t,e,n){return t&e^~t&n}function ym(t,e,n){return t&e^t&n^e&n}class bm{constructor(e,n,r,o){g(this,"blockLen");g(this,"outputLen");g(this,"padOffset");g(this,"isLE");g(this,"buffer");g(this,"view");g(this,"finished",!1);g(this,"length",0);g(this,"pos",0);g(this,"destroyed",!1);this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=nr(this.buffer)}update(e){ds(this),le(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=nr(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ds(this),hm(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,Cr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;r.setBigUint64(o-8,BigInt(this.length*8),s),this.process(r,0);const a=nr(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const qe=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),wm=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ve=new Uint32Array(64);class vm extends bm{constructor(e){super(64,e,8,!1)}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)Ve[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const m=Ve[u-15],f=Ve[u-2],p=Ee(m,7)^Ee(m,18)^m>>>3,h=Ee(f,17)^Ee(f,19)^f>>>10;Ve[u]=h+Ve[u-7]+p+Ve[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const m=Ee(a,6)^Ee(a,11)^Ee(a,25),f=d+m+gm(a,c,l)+wm[u]+Ve[u]|0,h=(Ee(r,2)^Ee(r,13)^Ee(r,22))+ym(r,o,s)|0;d=l,l=c,c=a,a=i+f|0,i=s,s=o,o=r,r=f+h|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){Cr(Ve)}destroy(){this.set(0,0,0,0,0,0,0,0),Cr(this.buffer)}}class xm extends vm{constructor(){super(32);g(this,"A",qe[0]|0);g(this,"B",qe[1]|0);g(this,"C",qe[2]|0);g(this,"D",qe[3]|0);g(this,"E",qe[4]|0);g(this,"F",qe[5]|0);g(this,"G",qe[6]|0);g(this,"H",qe[7]|0)}}const Br=mm(()=>new xm,pm(1)),_o=BigInt(0),Lr=BigInt(1);function fs(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}" `;throw new Error(n+"expected boolean, got type="+typeof t)}return t}function Em(t){if(typeof t=="bigint"){if(!_m(t))throw new Error("positive bigint expected, got "+t)}else ko(t);return t}function Da(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?_o:BigInt("0x"+t)}function Ao(t){return Da(ie(t))}function Ka(t){return Da(ie(km(le(t)).reverse()))}function So(t,e){ko(e),t=Em(t);const n=st(t.toString(16).padStart(e*2,"0"));if(n.length!==e)throw new Error("number too large");return n}function ja(t,e){return So(t,e).reverse()}function km(t){return Uint8Array.from(t)}function Ha(t){return Uint8Array.from(t,(e,n)=>{const r=e.charCodeAt(0);if(e.length!==1||r>127)throw new Error(`string contains non-ASCII character "${t[n]}" with code ${r} at position ${n}`);return r})}const _m=t=>typeof t=="bigint"&&_o<=t;function Am(t){let e;for(e=0;t>_o;t>>=Lr,e+=1);return e}const za=t=>(Lr<<BigInt(t))-Lr;function qa(t,e={},n={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function r(s,i,a){const c=t[s];if(a&&c===void 0)return;const l=typeof c;if(l!==i||c===null)throw new Error(`param "${s}" is invalid: expected ${i}, got ${l}`)}const o=(s,i)=>Object.entries(s).forEach(([a,c])=>r(a,c,i));o(e,!1),o(n,!0)}function ms(t){const e=new WeakMap;return(n,...r)=>{const o=e.get(n);if(o!==void 0)return o;const s=t(n,...r);return e.set(n,s),s}}const ae=BigInt(0),oe=BigInt(1),it=BigInt(2),Va=BigInt(3),Fa=BigInt(4),Wa=BigInt(5),Sm=BigInt(7),Za=BigInt(8),Nm=BigInt(9),Ja=BigInt(16);function pe(t,e){const n=t%e;return n>=ae?n:e+n}function he(t,e,n){let r=t;for(;e-- >ae;)r*=r,r%=n;return r}function ps(t,e){if(t===ae)throw new Error("invert: expected non-zero number");if(e<=ae)throw new Error("invert: expected positive modulus, got "+e);let n=pe(t,e),r=e,o=ae,s=oe;for(;n!==ae;){const a=r/n,c=r%n,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==oe)throw new Error("invert: does not exist");return pe(o,e)}function No(t,e,n){if(!t.eql(t.sqr(e),n))throw new Error("Cannot find square root")}function Ga(t,e){const n=(t.ORDER+oe)/Fa,r=t.pow(e,n);return No(t,r,e),r}function Cm(t,e){const n=(t.ORDER-Wa)/Za,r=t.mul(e,it),o=t.pow(r,n),s=t.mul(e,o),i=t.mul(t.mul(s,it),o),a=t.mul(s,t.sub(i,t.ONE));return No(t,a,e),a}function Bm(t){const e=Pn(t),n=Ya(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+Sm)/Ja;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,r);const u=a.mul(l,o),m=a.mul(l,s),f=a.eql(a.sqr(d),c),p=a.eql(a.sqr(u),c);l=a.cmov(l,d,f),d=a.cmov(m,u,p);const h=a.eql(a.sqr(d),c),y=a.cmov(l,d,h);return No(a,y,c),y}}function Ya(t){if(t<Va)throw new Error("sqrt is not defined for small field");let e=t-oe,n=0;for(;e%it===ae;)e/=it,n++;let r=it;const o=Pn(t);for(;gs(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return Ga;let s=o.pow(r,e);const i=(e+oe)/it;return function(c,l){if(c.is0(l))return l;if(gs(c,l)!==1)throw new Error("Cannot find square root");let d=n,u=c.mul(c.ONE,s),m=c.pow(l,e),f=c.pow(l,i);for(;!c.eql(m,c.ONE);){if(c.is0(m))return c.ZERO;let p=1,h=c.sqr(m);for(;!c.eql(h,c.ONE);)if(p++,h=c.sqr(h),p===d)throw new Error("Cannot find square root");const y=oe<<BigInt(d-p-1),v=c.pow(u,y);d=p,u=c.sqr(v),m=c.mul(m,u),f=c.mul(f,v)}return f}}function Lm(t){return t%Fa===Va?Ga:t%Za===Wa?Cm:t%Ja===Nm?Bm(t):Ya(t)}const Im=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Rm(t){const e={ORDER:"bigint",BYTES:"number",BITS:"number"},n=Im.reduce((r,o)=>(r[o]="function",r),e);return qa(t,n),t}function $m(t,e,n){if(n<ae)throw new Error("invalid exponent, negatives unsupported");if(n===ae)return t.ONE;if(n===oe)return e;let r=t.ONE,o=e;for(;n>ae;)n&oe&&(r=t.mul(r,o)),o=t.sqr(o),n>>=oe;return r}function Xa(t,e,n=!1){const r=new Array(e.length).fill(n?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(r[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(r[c]=t.mul(i,r[c]),t.mul(i,a)),s),r}function gs(t,e){const n=(t.ORDER-oe)/it,r=t.pow(e,n),o=t.eql(r,t.ONE),s=t.eql(r,t.ZERO),i=t.eql(r,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Tm(t,e){e!==void 0&&ko(e);const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}class Pm{constructor(e,n={}){g(this,"ORDER");g(this,"BITS");g(this,"BYTES");g(this,"isLE");g(this,"ZERO",ae);g(this,"ONE",oe);g(this,"_lengths");g(this,"_sqrt");g(this,"_mod");var i;if(e<=ae)throw new Error("invalid field: expected ORDER > 0, got "+e);let r;this.isLE=!1,n!=null&&typeof n=="object"&&(typeof n.BITS=="number"&&(r=n.BITS),typeof n.sqrt=="function"&&(this.sqrt=n.sqrt),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=(i=n.allowedLengths)==null?void 0:i.slice()),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));const{nBitLength:o,nByteLength:s}=Tm(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return pe(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return ae<=e&&e<this.ORDER}is0(e){return e===ae}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&oe)===oe}neg(e){return pe(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return pe(e*e,this.ORDER)}add(e,n){return pe(e+n,this.ORDER)}sub(e,n){return pe(e-n,this.ORDER)}mul(e,n){return pe(e*n,this.ORDER)}pow(e,n){return $m(this,e,n)}div(e,n){return pe(e*ps(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return ps(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=Lm(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?ja(e,this.BYTES):So(e,this.BYTES)}fromBytes(e,n=!1){le(e);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(r){if(!r.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?Ka(e):Ao(e);if(a&&(c=pe(c,i)),!n&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return Xa(this,e)}cmov(e,n,r){return r?n:e}}function Pn(t,e={}){return new Pm(t,e)}function Qa(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function Um(t){const e=Qa(t);return e+Math.ceil(e/2)}function Om(t,e,n=!1){le(t);const r=t.length,o=Qa(e),s=Um(e);if(r<16||r<s||r>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+r);const i=n?Ka(t):Ao(t),a=pe(i,e-oe)+oe;return n?ja(a,o):So(a,o)}const At=BigInt(0),at=BigInt(1);function pn(t,e){const n=e.negate();return t?n:e}function ys(t,e){const n=Xa(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function ec(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function rr(t,e){ec(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=za(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function bs(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),c=t>>i;a>r&&(a-=s,c+=at);const l=e*r,d=l+Math.abs(a)-1,u=a===0,m=a<0,f=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:m,isNegF:f,offsetF:l}}const or=new WeakMap,tc=new WeakMap;function sr(t){return tc.get(t)||1}function ws(t){if(t!==At)throw new Error("invalid wNAF")}class Mm{constructor(e,n){g(this,"BASE");g(this,"ZERO");g(this,"Fn");g(this,"bits");this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=n}_unsafeLadder(e,n,r=this.ZERO){let o=e;for(;n>At;)n&at&&(r=r.add(o)),o=o.double(),n>>=at;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=rr(n,this.bits),s=[];let i=e,a=i;for(let c=0;c<r;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=rr(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:m,offsetF:f}=bs(r,a,i);r=c,d?s=s.add(pn(m,n[f])):o=o.add(pn(u,n[l]))}return ws(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=rr(e,this.bits);for(let i=0;i<s.windows&&r!==At;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=bs(r,i,s);if(r=a,!l){const u=n[c];o=o.add(d?u.negate():u)}}return ws(r),o}getPrecomputes(e,n,r){let o=or.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),or.set(n,o))),o}cached(e,n,r){const o=sr(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=sr(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){ec(n,this.bits),tc.set(e,n),or.delete(e)}hasCache(e){return sr(e)!==1}}function Dm(t,e,n,r){let o=e,s=t.ZERO,i=t.ZERO;for(;n>At||r>At;)n&at&&(s=s.add(o)),r&at&&(i=i.add(o)),o=o.double(),n>>=at,r>>=at;return{p1:s,p2:i}}function vs(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Rm(e),e}else return Pn(t,{isLE:n})}function Km(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const c of["p","n","h"]){const l=e[c];if(!(typeof l=="bigint"&&l>At))throw new Error(`CURVE.${c} must be positive bigint`)}const o=vs(e.p,n.Fp,r),s=vs(e.n,n.Fn,r),a=["Gx","Gy","a","b"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function jm(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}Ha("HashToScalar-");const xs=(t,e)=>(t+(t>=0?e:-e)/zm)/e;function Hm(t,e,n){const[[r,o],[s,i]]=e,a=xs(i*t,n),c=xs(-o*t,n);let l=t-a*r-c*s,d=-a*o-c*i;const u=l<Tt,m=d<Tt;u&&(l=-l),m&&(d=-d);const f=za(Math.ceil(Am(n)/2))+rn;if(l<Tt||l>=f||d<Tt||d>=f)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:m,k2:d}}const Tt=BigInt(0),rn=BigInt(1),zm=BigInt(2),Zt=BigInt(3),qm=BigInt(4);function Vm(t,e={}){const n=Km("weierstrass",t,e),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i,n:a}=s;qa(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});const{endo:c}=e;if(c&&(!r.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Wm(r,o);function d(){if(!r.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(D,k,w){const{x,y:A}=k.toAffine(),I=r.toBytes(x);if(fs(w,"isCompressed"),w){d();const C=!r.isOdd(A);return mn(Fm(C),I)}else return mn(Uint8Array.of(4),I,r.toBytes(A))}function m(D){le(D,void 0,"Point");const{publicKey:k,publicKeyUncompressed:w}=l,x=D.length,A=D[0],I=D.subarray(1);if(x===k&&(A===2||A===3)){const C=r.fromBytes(I);if(!r.isValid(C))throw new Error("bad point: is not on curve, wrong x");const R=h(C);let B;try{B=r.sqrt(R)}catch(z){const F=z instanceof Error?": "+z.message:"";throw new Error("bad point: is not on curve, sqrt error"+F)}d();const T=r.isOdd(B);return(A&1)===1!==T&&(B=r.neg(B)),{x:C,y:B}}else if(x===w&&A===4){const C=r.BYTES,R=r.fromBytes(I.subarray(0,C)),B=r.fromBytes(I.subarray(C,C*2));if(!y(R,B))throw new Error("bad point: is not on curve");return{x:R,y:B}}else throw new Error(`bad point: got length ${x}, expected compressed=${k} or uncompressed=${w}`)}const f=e.toBytes||u,p=e.fromBytes||m;function h(D){const k=r.sqr(D),w=r.mul(k,D);return r.add(r.add(w,r.mul(D,s.a)),s.b)}function y(D,k){const w=r.sqr(k),x=h(D);return r.eql(w,x)}if(!y(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const v=r.mul(r.pow(s.a,Zt),qm),E=r.mul(r.sqr(s.b),BigInt(27));if(r.is0(r.add(v,E)))throw new Error("bad curve params: a or b");function S(D,k,w=!1){if(!r.isValid(k)||w&&r.is0(k))throw new Error(`bad point coordinate ${D}`);return k}function M(D){if(!(D instanceof K))throw new Error("Weierstrass Point expected")}function O(D){if(!c||!c.basises)throw new Error("no endo");return Hm(D,c.basises,o.ORDER)}const _=ms((D,k)=>{const{X:w,Y:x,Z:A}=D;if(r.eql(A,r.ONE))return{x:w,y:x};const I=D.is0();k==null&&(k=I?r.ONE:r.inv(A));const C=r.mul(w,k),R=r.mul(x,k),B=r.mul(A,k);if(I)return{x:r.ZERO,y:r.ZERO};if(!r.eql(B,r.ONE))throw new Error("invZ was invalid");return{x:C,y:R}}),N=ms(D=>{if(D.is0()){if(e.allowInfinityPoint&&!r.is0(D.Y))return;throw new Error("bad point: ZERO")}const{x:k,y:w}=D.toAffine();if(!r.isValid(k)||!r.isValid(w))throw new Error("bad point: x or y not field elements");if(!y(k,w))throw new Error("bad point: equation left != right");if(!D.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function L(D,k,w,x,A){return w=new K(r.mul(w.X,D),w.Y,w.Z),k=pn(x,k),w=pn(A,w),k.add(w)}const U=class U{constructor(k,w,x){g(this,"X");g(this,"Y");g(this,"Z");this.X=S("x",k),this.Y=S("y",w,!0),this.Z=S("z",x),Object.freeze(this)}static CURVE(){return s}static fromAffine(k){const{x:w,y:x}=k||{};if(!k||!r.isValid(w)||!r.isValid(x))throw new Error("invalid affine point");if(k instanceof U)throw new Error("projective point not allowed");return r.is0(w)&&r.is0(x)?U.ZERO:new U(w,x,r.ONE)}static fromBytes(k){const w=U.fromAffine(p(le(k,void 0,"point")));return w.assertValidity(),w}static fromHex(k){return U.fromBytes(st(k))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(k=8,w=!0){return $.createCache(this,k),w||this.multiply(Zt),this}assertValidity(){N(this)}hasEvenY(){const{y:k}=this.toAffine();if(!r.isOdd)throw new Error("Field doesn't support isOdd");return!r.isOdd(k)}equals(k){M(k);const{X:w,Y:x,Z:A}=this,{X:I,Y:C,Z:R}=k,B=r.eql(r.mul(w,R),r.mul(I,A)),T=r.eql(r.mul(x,R),r.mul(C,A));return B&&T}negate(){return new U(this.X,r.neg(this.Y),this.Z)}double(){const{a:k,b:w}=s,x=r.mul(w,Zt),{X:A,Y:I,Z:C}=this;let R=r.ZERO,B=r.ZERO,T=r.ZERO,H=r.mul(A,A),z=r.mul(I,I),F=r.mul(C,C),q=r.mul(A,I);return q=r.add(q,q),T=r.mul(A,C),T=r.add(T,T),R=r.mul(k,T),B=r.mul(x,F),B=r.add(R,B),R=r.sub(z,B),B=r.add(z,B),B=r.mul(R,B),R=r.mul(q,R),T=r.mul(x,T),F=r.mul(k,F),q=r.sub(H,F),q=r.mul(k,q),q=r.add(q,T),T=r.add(H,H),H=r.add(T,H),H=r.add(H,F),H=r.mul(H,q),B=r.add(B,H),F=r.mul(I,C),F=r.add(F,F),H=r.mul(F,q),R=r.sub(R,H),T=r.mul(F,z),T=r.add(T,T),T=r.add(T,T),new U(R,B,T)}add(k){M(k);const{X:w,Y:x,Z:A}=this,{X:I,Y:C,Z:R}=k;let B=r.ZERO,T=r.ZERO,H=r.ZERO;const z=s.a,F=r.mul(s.b,Zt);let q=r.mul(w,I),G=r.mul(x,C),ne=r.mul(A,R),se=r.add(w,x),Z=r.add(I,C);se=r.mul(se,Z),Z=r.add(q,G),se=r.sub(se,Z),Z=r.add(w,A);let ue=r.add(I,R);return Z=r.mul(Z,ue),ue=r.add(q,ne),Z=r.sub(Z,ue),ue=r.add(x,A),B=r.add(C,R),ue=r.mul(ue,B),B=r.add(G,ne),ue=r.sub(ue,B),H=r.mul(z,Z),B=r.mul(F,ne),H=r.add(B,H),B=r.sub(G,H),H=r.add(G,H),T=r.mul(B,H),G=r.add(q,q),G=r.add(G,q),ne=r.mul(z,ne),Z=r.mul(F,Z),G=r.add(G,ne),ne=r.sub(q,ne),ne=r.mul(z,ne),Z=r.add(Z,ne),q=r.mul(G,Z),T=r.add(T,q),q=r.mul(ue,Z),B=r.mul(se,B),B=r.sub(B,q),q=r.mul(se,G),H=r.mul(ue,H),H=r.add(H,q),new U(B,T,H)}subtract(k){return this.add(k.negate())}is0(){return this.equals(U.ZERO)}multiply(k){const{endo:w}=e;if(!o.isValidNot0(k))throw new Error("invalid scalar: out of range");let x,A;const I=C=>$.cached(this,C,R=>ys(U,R));if(w){const{k1neg:C,k1:R,k2neg:B,k2:T}=O(k),{p:H,f:z}=I(R),{p:F,f:q}=I(T);A=z.add(q),x=L(w.beta,H,F,C,B)}else{const{p:C,f:R}=I(k);x=C,A=R}return ys(U,[x,A])[0]}multiplyUnsafe(k){const{endo:w}=e,x=this;if(!o.isValid(k))throw new Error("invalid scalar: out of range");if(k===Tt||x.is0())return U.ZERO;if(k===rn)return x;if($.hasCache(this))return this.multiply(k);if(w){const{k1neg:A,k1:I,k2neg:C,k2:R}=O(k),{p1:B,p2:T}=Dm(U,x,I,R);return L(w.beta,B,T,A,C)}else return $.unsafe(x,k)}toAffine(k){return _(this,k)}isTorsionFree(){const{isTorsionFree:k}=e;return i===rn?!0:k?k(U,this):$.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:k}=e;return i===rn?this:k?k(U,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(k=!0){return fs(k,"isCompressed"),this.assertValidity(),f(U,this,k)}toHex(k=!0){return ie(this.toBytes(k))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}};g(U,"BASE",new U(s.Gx,s.Gy,r.ONE)),g(U,"ZERO",new U(r.ZERO,r.ONE,r.ZERO)),g(U,"Fp",r),g(U,"Fn",o);let K=U;const P=o.BITS,$=new Mm(K,e.endo?Math.ceil(P/2):P);return K.BASE.precompute(8),K}function Fm(t){return Uint8Array.of(t?2:3)}function Wm(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}const Un={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Zm={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Jm=BigInt(0),Ir=BigInt(2);function Gm(t){const e=Un.p,n=BigInt(3),r=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=he(d,n,e)*d%e,m=he(u,n,e)*d%e,f=he(m,Ir,e)*l%e,p=he(f,o,e)*f%e,h=he(p,s,e)*p%e,y=he(h,a,e)*h%e,v=he(y,c,e)*y%e,E=he(v,a,e)*h%e,S=he(E,n,e)*d%e,M=he(S,i,e)*p%e,O=he(M,r,e)*l%e,_=he(O,Ir,e);if(!gn.eql(gn.sqr(_),t))throw new Error("Cannot find square root");return _}const gn=Pn(Un.p,{sqrt:Gm}),Bt=Vm(Un,{Fp:gn,endo:Zm}),Es={};function yn(t,...e){let n=Es[t];if(n===void 0){const r=Br(Ha(t));n=mn(r,r),Es[t]=n}return Br(mn(n,...e))}const Co=t=>t.toBytes(!0).slice(1),Bo=t=>t%Ir===Jm;function Rr(t){const{Fn:e,BASE:n}=Bt,r=e.fromBytes(t),o=n.multiply(r);return{scalar:Bo(o.y)?r:e.neg(r),bytes:Co(o)}}function nc(t){const e=gn;if(!e.isValidNot0(t))throw new Error("invalid x: Fail if x ≥ p");const n=e.create(t*t),r=e.create(n*t+BigInt(7));let o=e.sqrt(r);Bo(o)||(o=e.neg(o));const s=Bt.fromAffine({x:t,y:o});return s.assertValidity(),s}const Ut=Ao;function rc(...t){return Bt.Fn.create(Ut(yn("BIP0340/challenge",...t)))}function ks(t){return Rr(t).bytes}function Ym(t,e,n=Ma(32)){const{Fn:r}=Bt,o=le(t,void 0,"message"),{bytes:s,scalar:i}=Rr(e),a=le(n,32,"auxRand"),c=r.toBytes(i^Ut(yn("BIP0340/aux",a))),l=yn("BIP0340/nonce",c,s,o),{bytes:d,scalar:u}=Rr(l),m=rc(d,s,o),f=new Uint8Array(64);if(f.set(d,0),f.set(r.toBytes(r.create(u+m*i)),32),!oc(f,o,s))throw new Error("sign: Invalid signature produced");return f}function oc(t,e,n){const{Fp:r,Fn:o,BASE:s}=Bt,i=le(t,64,"signature"),a=le(e,void 0,"message"),c=le(n,32,"publicKey");try{const l=nc(Ut(c)),d=Ut(i.subarray(0,32));if(!r.isValidNot0(d))return!1;const u=Ut(i.subarray(32,64));if(!o.isValidNot0(u))return!1;const m=rc(o.toBytes(d),Co(l),a),f=s.multiplyUnsafe(u).add(l.multiplyUnsafe(o.neg(m))),{x:p,y:h}=f.toAffine();return!(f.is0()||!Bo(h)||p!==d)}catch{return!1}}const It=(()=>{const n=(r=Ma(48))=>Om(r,Un.n);return{keygen:jm(n,ks),getPublicKey:ks,sign:Ym,verify:oc,Point:Bt,utils:{randomSecretKey:n,taggedHash:yn,lift_x:nc,pointToBytes:Co},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})(),nt=Symbol("verified"),Xm=t=>t instanceof Object;function Qm(t){if(!Xm(t)||typeof t.kind!="number"||typeof t.content!="string"||typeof t.created_at!="number"||typeof t.pubkey!="string"||!t.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(t.tags))return!1;for(let e=0;e<t.tags.length;e++){let n=t.tags[e];if(!Array.isArray(n))return!1;for(let r=0;r<n.length;r++)if(typeof n[r]!="string")return!1}return!0}const Jt=new TextDecoder("utf-8"),ep=new TextEncoder;function We(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}class tp{constructor(e){g(this,"value");g(this,"next",null);g(this,"prev",null);this.value=e}}class np{constructor(){g(this,"first");g(this,"last");this.first=null,this.last=null}enqueue(e){const n=new tp(e);return this.last?this.last===this.first?(this.last=n,this.last.prev=this.first,this.first.next=n):(n.prev=this.last,this.last.next=n,this.last=n):(this.first=n,this.last=n),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const n=this.first;return this.first=null,this.last=null,n.value}const e=this.first;return this.first=e.next,this.first&&(this.first.prev=null),e.value}}class rp{generateSecretKey(){return It.utils.randomSecretKey()}getPublicKey(e){return ie(It.getPublicKey(e))}finalizeEvent(e,n){const r=e;return r.pubkey=ie(It.getPublicKey(n)),r.id=ir(r),r.sig=ie(It.sign(st(ir(r)),n)),r[nt]=!0,r}verifyEvent(e){if(typeof e[nt]=="boolean")return e[nt];const n=ir(e);if(n!==e.id)return e[nt]=!1,!1;try{const r=It.verify(st(e.sig),st(n),st(e.pubkey));return e[nt]=r,r}catch{return e[nt]=!1,!1}}}function op(t){if(!Qm(t))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content])}function ir(t){let e=Br(ep.encode(op(t)));return ie(e)}const On=new rp;On.generateSecretKey;On.getPublicKey;On.finalizeEvent;const sp=On.verifyEvent,ip=22242;function ap(t,e){if(t.ids&&t.ids.indexOf(e.id)===-1||t.kinds&&t.kinds.indexOf(e.kind)===-1||t.authors&&t.authors.indexOf(e.pubkey)===-1)return!1;for(let n in t)if(n[0]==="#"){let r=n.slice(1),o=t[`#${r}`];if(o&&!e.tags.find(([s,i])=>s===n.slice(1)&&o.indexOf(i)!==-1))return!1}return!(t.since&&e.created_at<t.since||t.until&&e.created_at>t.until)}function cp(t,e){for(let n=0;n<t.length;n++)if(ap(t[n],e))return!0;return!1}function lp(t,e){let n=e.length+3,r=t.indexOf(`"${e}":`)+n,o=t.slice(r).indexOf('"')+r+1;return t.slice(o,o+64)}function up(t){let e=t.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let n=t.slice(e+7+1).indexOf('"');if(n===-1)return null;let r=e+7+1+n,o=t.slice(r+1,80).indexOf('"');if(o===-1)return null;let s=r+1+o;return t.slice(r+1,s)}function dp(t,e){return{kind:ip,created_at:Math.floor(Date.now()/1e3),tags:[["relay",t],["challenge",e]],content:""}}async function hp(){return new Promise((t,e)=>{try{if(typeof MessageChannel<"u"){const n=new MessageChannel,r=()=>{n.port1.removeEventListener("message",r),t()};n.port1.addEventListener("message",r),n.port2.postMessage(0),n.port1.start()}else typeof setImmediate<"u"?setImmediate(t):typeof setTimeout<"u"?setTimeout(t,0):t()}catch(n){console.error("during yield: ",n),e(n)}})}const fp=t=>(t[nt]=!0,!0);class sc extends Error{constructor(e,n){super(`Tried to send message '${e} on a closed connection to ${n}.`),this.name="SendingOnClosedConnection"}}class Lo{constructor(e,n){g(this,"url");g(this,"_connected",!1);g(this,"onclose",null);g(this,"onnotice",e=>console.debug(`NOTICE from ${this.url}: ${e}`));g(this,"onauth");g(this,"baseEoseTimeout",4400);g(this,"publishTimeout",4400);g(this,"pingFrequency",29e3);g(this,"pingTimeout",2e4);g(this,"resubscribeBackoff",[1e4,1e4,1e4,2e4,2e4,3e4,6e4]);g(this,"openSubs",new Map);g(this,"enablePing");g(this,"enableReconnect");g(this,"reconnectTimeoutHandle");g(this,"pingIntervalHandle");g(this,"reconnectAttempts",0);g(this,"closedIntentionally",!1);g(this,"connectionPromise");g(this,"openCountRequests",new Map);g(this,"openEventPublishes",new Map);g(this,"ws");g(this,"incomingMessageQueue",new np);g(this,"queueRunning",!1);g(this,"challenge");g(this,"authPromise");g(this,"serial",0);g(this,"verifyEvent");g(this,"_WebSocket");this.url=We(e),this.verifyEvent=n.verifyEvent,this._WebSocket=n.websocketImplementation||WebSocket,this.enablePing=n.enablePing,this.enableReconnect=n.enableReconnect||!1}static async connect(e,n){const r=new Lo(e,n);return await r.connect(n),r}closeAllSubscriptions(e){for(let[n,r]of this.openSubs)r.close(e);this.openSubs.clear();for(let[n,r]of this.openEventPublishes)r.reject(new Error(e));this.openEventPublishes.clear();for(let[n,r]of this.openCountRequests)r.reject(new Error(e));this.openCountRequests.clear()}get connected(){return this._connected}async reconnect(){const e=this.resubscribeBackoff[Math.min(this.reconnectAttempts,this.resubscribeBackoff.length-1)];this.reconnectAttempts++,this.reconnectTimeoutHandle=setTimeout(async()=>{try{await this.connect()}catch{}},e)}handleHardClose(e){var r;this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this._connected=!1,this.connectionPromise=void 0;const n=this.closedIntentionally;this.closedIntentionally=!1,(r=this.onclose)==null||r.call(this),this.enableReconnect&&!n?this.reconnect():this.closeAllSubscriptions(e)}async connect(e){let n;return this.connectionPromise?this.connectionPromise:(this.challenge=void 0,this.authPromise=void 0,this.connectionPromise=new Promise((r,o)=>{e!=null&&e.timeout&&(n=setTimeout(()=>{var s;o("connection timed out"),this.connectionPromise=void 0,(s=this.onclose)==null||s.call(this),this.closeAllSubscriptions("relay connection timed out")},e.timeout)),e!=null&&e.abort&&(e.abort.onabort=o);try{this.ws=new this._WebSocket(this.url)}catch(s){clearTimeout(n),o(s);return}this.ws.onopen=()=>{this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),clearTimeout(n),this._connected=!0;const s=this.reconnectAttempts>0;this.reconnectAttempts=0;for(const i of this.openSubs.values()){if(i.eosed=!1,s)for(let a=0;a<i.filters.length;a++)i.lastEmitted&&(i.filters[a].since=i.lastEmitted+1);i.fire()}this.enablePing&&(this.pingIntervalHandle=setInterval(()=>this.pingpong(),this.pingFrequency)),r()},this.ws.onerror=s=>{clearTimeout(n),o(s.message||"websocket error"),this.handleHardClose("relay connection errored")},this.ws.onclose=s=>{clearTimeout(n),o(s.message||"websocket closed"),this.handleHardClose("relay connection closed")},this.ws.onmessage=this._onmessage.bind(this)}),this.connectionPromise)}waitForPingPong(){return new Promise(e=>{this.ws.once("pong",()=>e(!0)),this.ws.ping()})}waitForDummyReq(){return new Promise((e,n)=>{if(!this.connectionPromise)return n(new Error(`no connection to ${this.url}, can't ping`));try{const r=this.subscribe([{ids:["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],limit:0}],{label:"forced-ping",oneose:()=>{e(!0),r.close()},onclose(){e(!0)},eoseTimeout:this.pingTimeout+1e3})}catch(r){n(r)}})}async pingpong(){var e,n,r;((e=this.ws)==null?void 0:e.readyState)===1&&(await Promise.any([this.ws&&this.ws.ping&&this.ws.once?this.waitForPingPong():this.waitForDummyReq(),new Promise(s=>setTimeout(()=>s(!1),this.pingTimeout))])||((n=this.ws)==null?void 0:n.readyState)===this._WebSocket.OPEN&&((r=this.ws)==null||r.close()))}async runQueue(){for(this.queueRunning=!0;this.handleNext()!==!1;)await hp();this.queueRunning=!1}handleNext(){var r,o,s;const e=this.incomingMessageQueue.dequeue();if(!e)return!1;const n=up(e);if(n){const i=this.openSubs.get(n);if(!i)return;const a=lp(e,"id"),c=(r=i.alreadyHaveEvent)==null?void 0:r.call(i,a);if((o=i.receivedEvent)==null||o.call(i,this,a),c)return}try{let i=JSON.parse(e);switch(i[0]){case"EVENT":{const a=this.openSubs.get(i[1]),c=i[2];this.verifyEvent(c)&&cp(a.filters,c)&&a.onevent(c),(!a.lastEmitted||a.lastEmitted<c.created_at)&&(a.lastEmitted=c.created_at);return}case"COUNT":{const a=i[1],c=i[2],l=this.openCountRequests.get(a);l&&(l.resolve(c.count),this.openCountRequests.delete(a));return}case"EOSE":{const a=this.openSubs.get(i[1]);if(!a)return;a.receivedEose();return}case"OK":{const a=i[1],c=i[2],l=i[3],d=this.openEventPublishes.get(a);d&&(clearTimeout(d.timeout),c?d.resolve(l):d.reject(new Error(l)),this.openEventPublishes.delete(a));return}case"CLOSED":{const a=i[1],c=this.openSubs.get(a);if(!c)return;c.closed=!0,c.close(i[2]);return}case"NOTICE":{this.onnotice(i[1]);return}case"AUTH":{this.challenge=i[1],this.onauth&&this.auth(this.onauth);return}default:{const a=this.openSubs.get(i[1]);(s=a==null?void 0:a.oncustom)==null||s.call(a,i);return}}}catch{return}}async send(e){if(!this.connectionPromise)throw new sc(e,this.url);this.connectionPromise.then(()=>{var n;(n=this.ws)==null||n.send(e)})}async auth(e){const n=this.challenge;if(!n)throw new Error("can't perform auth, no challenge was received");return this.authPromise?this.authPromise:(this.authPromise=new Promise(async(r,o)=>{try{let s=await e(dp(this.url,n)),i=setTimeout(()=>{let a=this.openEventPublishes.get(s.id);a&&(a.reject(new Error("auth timed out")),this.openEventPublishes.delete(s.id))},this.publishTimeout);this.openEventPublishes.set(s.id,{resolve:r,reject:o,timeout:i}),this.send('["AUTH",'+JSON.stringify(s)+"]")}catch(s){console.warn("subscribe auth function failed:",s)}}),this.authPromise)}async publish(e){const n=new Promise((r,o)=>{const s=setTimeout(()=>{const i=this.openEventPublishes.get(e.id);i&&(i.reject(new Error("publish timed out")),this.openEventPublishes.delete(e.id))},this.publishTimeout);this.openEventPublishes.set(e.id,{resolve:r,reject:o,timeout:s})});return this.send('["EVENT",'+JSON.stringify(e)+"]"),n}async count(e,n){this.serial++;const r=(n==null?void 0:n.id)||"count:"+this.serial,o=new Promise((s,i)=>{this.openCountRequests.set(r,{resolve:s,reject:i})});return this.send('["COUNT","'+r+'",'+JSON.stringify(e).substring(1)),o}subscribe(e,n){const r=this.prepareSubscription(e,n);return r.fire(),n.abort&&(n.abort.onabort=()=>r.close(String(n.abort.reason||"<aborted>"))),r}prepareSubscription(e,n){this.serial++;const r=n.id||(n.label?n.label+":":"sub:")+this.serial,o=new mp(this,r,e,n);return this.openSubs.set(r,o),o}close(){var e,n,r;this.closedIntentionally=!0,this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this.closeAllSubscriptions("relay connection closed by us"),this._connected=!1,(e=this.onclose)==null||e.call(this),((n=this.ws)==null?void 0:n.readyState)===this._WebSocket.OPEN&&((r=this.ws)==null||r.close())}_onmessage(e){this.incomingMessageQueue.enqueue(e.data),this.queueRunning||this.runQueue()}}class mp{constructor(e,n,r,o){g(this,"relay");g(this,"id");g(this,"lastEmitted");g(this,"closed",!1);g(this,"eosed",!1);g(this,"filters");g(this,"alreadyHaveEvent");g(this,"receivedEvent");g(this,"onevent");g(this,"oneose");g(this,"onclose");g(this,"oncustom");g(this,"eoseTimeout");g(this,"eoseTimeoutHandle");if(r.length===0)throw new Error("subscription can't be created with zero filters");this.relay=e,this.filters=r,this.id=n,this.alreadyHaveEvent=o.alreadyHaveEvent,this.receivedEvent=o.receivedEvent,this.eoseTimeout=o.eoseTimeout||e.baseEoseTimeout,this.oneose=o.oneose,this.onclose=o.onclose,this.onevent=o.onevent||(s=>{console.warn(`onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,s)})}fire(){this.relay.send('["REQ","'+this.id+'",'+JSON.stringify(this.filters).substring(1)),this.eoseTimeoutHandle=setTimeout(this.receivedEose.bind(this),this.eoseTimeout)}receivedEose(){var e;this.eosed||(clearTimeout(this.eoseTimeoutHandle),this.eosed=!0,(e=this.oneose)==null||e.call(this))}close(e="closed by caller"){var n;if(!this.closed&&this.relay.connected){try{this.relay.send('["CLOSE",'+JSON.stringify(this.id)+"]")}catch(r){if(!(r instanceof sc))throw r}this.closed=!0}this.relay.openSubs.delete(this.id),(n=this.onclose)==null||n.call(this,e)}}class pp{constructor(e){g(this,"relays",new Map);g(this,"seenOn",new Map);g(this,"trackRelays",!1);g(this,"verifyEvent");g(this,"enablePing");g(this,"enableReconnect");g(this,"automaticallyAuth");g(this,"trustedRelayURLs",new Set);g(this,"_WebSocket");this.verifyEvent=e.verifyEvent,this._WebSocket=e.websocketImplementation,this.enablePing=e.enablePing,this.enableReconnect=e.enableReconnect||!1,this.automaticallyAuth=e.automaticallyAuth}async ensureRelay(e,n){e=We(e);let r=this.relays.get(e);if(r||(r=new Lo(e,{verifyEvent:this.trustedRelayURLs.has(e)?fp:this.verifyEvent,websocketImplementation:this._WebSocket,enablePing:this.enablePing,enableReconnect:this.enableReconnect}),r.onclose=()=>{r&&!r.enableReconnect&&this.relays.delete(e)},this.relays.set(e,r)),this.automaticallyAuth){const o=this.automaticallyAuth(e);o&&(r.onauth=o)}return await r.connect({timeout:n==null?void 0:n.connectionTimeout,abort:n==null?void 0:n.abort}),r}close(e){e.map(We).forEach(n=>{var r;(r=this.relays.get(n))==null||r.close(),this.relays.delete(n)})}subscribe(e,n,r){const o=[];for(let s=0;s<e.length;s++){const i=We(e[s]);o.find(a=>a.url===i)||o.push({url:i,filter:n})}return this.subscribeMap(o,r)}subscribeMany(e,n,r){const o=[],s=[];for(let i=0;i<e.length;i++){const a=We(e[i]);s.indexOf(a)===-1&&(s.push(a),o.push({url:a,filter:n}))}return this.subscribeMap(o,r)}subscribeMap(e,n){const r=new Map;for(const f of e){const{url:p,filter:h}=f;r.has(p)||r.set(p,[]),r.get(p).push(h)}const o=Array.from(r.entries()).map(([f,p])=>({url:f,filters:p}));this.trackRelays&&(n.receivedEvent=(f,p)=>{let h=this.seenOn.get(p);h||(h=new Set,this.seenOn.set(p,h)),h.add(f)});const s=new Set,i=[],a=[];let c=f=>{var p;a[f]||(a[f]=!0,a.filter(h=>h).length===o.length&&((p=n.oneose)==null||p.call(n),c=()=>{}))};const l=[];let d=(f,p)=>{var h;l[f]||(c(f),l[f]=p,l.filter(y=>y).length===o.length&&((h=n.onclose)==null||h.call(n,l),d=()=>{}))};const u=f=>{var h;if((h=n.alreadyHaveEvent)!=null&&h.call(n,f))return!0;const p=s.has(f);return s.add(f),p},m=Promise.all(o.map(async({url:f,filters:p},h)=>{let y;try{y=await this.ensureRelay(f,{connectionTimeout:n.maxWait?Math.max(n.maxWait*.8,n.maxWait-1e3):void 0,abort:n.abort})}catch(E){d(h,(E==null?void 0:E.message)||String(E));return}let v=y.subscribe(p,{...n,oneose:()=>c(h),onclose:E=>{E.startsWith("auth-required: ")&&n.onauth?y.auth(n.onauth).then(()=>{y.subscribe(p,{...n,oneose:()=>c(h),onclose:S=>{d(h,S)},alreadyHaveEvent:u,eoseTimeout:n.maxWait,abort:n.abort})}).catch(S=>{d(h,`auth was required and attempted, but failed with: ${S}`)}):d(h,E)},alreadyHaveEvent:u,eoseTimeout:n.maxWait,abort:n.abort});i.push(v)}));return{async close(f){await m,i.forEach(p=>{p.close(f)})}}}subscribeEose(e,n,r){const o=this.subscribe(e,n,{...r,oneose(){o.close("closed automatically on eose")}});return o}subscribeManyEose(e,n,r){const o=this.subscribeMany(e,n,{...r,oneose(){o.close("closed automatically on eose")}});return o}async querySync(e,n,r){return new Promise(async o=>{const s=[];this.subscribeEose(e,n,{...r,onevent(i){s.push(i)},onclose(i){o(s)}})})}async get(e,n,r){n.limit=1;const o=await this.querySync(e,n,r);return o.sort((s,i)=>i.created_at-s.created_at),o[0]||null}publish(e,n,r){return e.map(We).map(async(o,s,i)=>{if(i.indexOf(o)!==s)return Promise.reject("duplicate url");let a=await this.ensureRelay(o);return a.publish(n).catch(async c=>{if(c instanceof Error&&c.message.startsWith("auth-required: ")&&(r!=null&&r.onauth))return await a.auth(r.onauth),a.publish(n);throw c}).then(c=>{if(this.trackRelays){let l=this.seenOn.get(n.id);l||(l=new Set,this.seenOn.set(n.id,l)),l.add(a)}return c})})}listConnectionStatus(){const e=new Map;return this.relays.forEach((n,r)=>e.set(r,n.connected)),e}destroy(){this.relays.forEach(e=>e.close()),this.relays=new Map}}var ic;try{ic=WebSocket}catch{}class gp extends pp{constructor(e){super({verifyEvent:sp,websocketImplementation:ic,...e})}}var yp=Math.pow(2,8)-1,bp=Math.pow(2,16)-1,wp=Math.pow(2,32)-1;const vp=function(t){var e=t-1;if(e<=yp)return Uint8Array;if(e<=bp)return Uint16Array;if(e<=wp)return Uint32Array;throw new Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};function Xe(t){if(this.capacity=t,typeof this.capacity!="number"||this.capacity<=0)throw new Error("mnemonist/lru-cache: capacity should be positive number.");if(!isFinite(this.capacity)||Math.floor(this.capacity)!==this.capacity)throw new Error("mnemonist/lru-cache: capacity should be a finite positive integer.");var e=vp(t);this.forward=new e(t),this.backward=new e(t),this.K=new Array(t),this.V=new Array(t),this.size=0,this.head=0,this.tail=0,this.items={}}Xe.prototype.clear=function(){this.size=0,this.head=0,this.tail=0,this.items={}};Xe.prototype.splayOnTop=function(t){var e=this.head;if(this.head===t)return this;var n=this.backward[t],r=this.forward[t];return this.tail===t?this.tail=n:this.backward[r]=n,this.forward[n]=r,this.backward[e]=t,this.head=t,this.forward[t]=e,this};Xe.prototype.set=function(t,e){var n=this.items[t];if(typeof n<"u"){this.splayOnTop(n),this.V[n]=e;return}this.size<this.capacity?n=this.size++:(n=this.tail,this.tail=this.backward[n],delete this.items[this.K[n]]),this.items[t]=n,this.K[n]=t,this.V[n]=e,this.forward[n]=this.head,this.backward[this.head]=n,this.head=n};Xe.prototype.setpop=function(t,e){var n=null,r=null,o=this.items[t];return typeof o<"u"?(this.splayOnTop(o),n=this.V[o],this.V[o]=e,{evicted:!1,key:t,value:n}):(this.size<this.capacity?o=this.size++:(o=this.tail,this.tail=this.backward[o],n=this.V[o],r=this.K[o],delete this.items[r]),this.items[t]=o,this.K[o]=t,this.V[o]=e,this.forward[o]=this.head,this.backward[this.head]=o,this.head=o,r?{evicted:!0,key:r,value:n}:null)};Xe.prototype.has=function(t){return t in this.items};Xe.prototype.get=function(t){var e=this.items[t];if(!(typeof e>"u"))return this.splayOnTop(e),this.V[e]};Xe.prototype.peek=function(t){var e=this.items[t];if(!(typeof e>"u"))return this.V[e]};class ac{constructor(e,n){g(this,"_batchLoadFn");g(this,"_maxBatchSize");g(this,"_cacheKeyFn");g(this,"_cacheMap");g(this,"_batch");if(typeof e!="function")throw new TypeError(`DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but got: ${e}.`);this._batchLoadFn=e,this._maxBatchSize=(n==null?void 0:n.maxBatchSize)||1/0,this._cacheKeyFn=n==null?void 0:n.cacheKeyFn;const r=new Xe(2e3);this._cacheMap={get:n.transformCacheHit?o=>{var s;return(s=r.get(o))==null?void 0:s.then(n.transformCacheHit)}:o=>r.get(o),set(o,s){return r.set(o,s)},delete(o){r.set(o,void 0)},clear(){r.clear()}},this._batch=null}load(e){if(e==null)throw new TypeError(`The loader.load() function must be called with a value, but got: ${String(e)}.`);const n=xp(this),r=this._cacheKeyFn(e),o=this._cacheMap.get(r);if(o){const i=n.cacheHits||(n.cacheHits=[]);return new Promise(a=>{i.push(()=>{a(o)})})}n.keys.push(e);const s=new Promise((i,a)=>{n.callbacks.push({resolve:i,reject:a})});return this._cacheMap.set(r,s),s}clear(e){const n=this._cacheMap;if(n){const r=this._cacheKeyFn(e);n.delete(r)}return this}}function xp(t){const e=t._batch;if(e!==null&&!e.hasDispatched&&e.keys.length<t._maxBatchSize)return e;const n={hasDispatched:!1,keys:[],callbacks:[]};return t._batch=n,setTimeout(()=>{Ep(t,n)}),n}function Ep(t,e){if(e.hasDispatched=!0,e.keys.length===0){$r(e);return}let n;try{n=t._batchLoadFn(e.keys)}catch(r){return ar(t,e,new TypeError(`DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function errored synchronously: ${String(r)}.`))}if(!n||typeof n.then!="function")return ar(t,e,new TypeError(`DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise: ${String(n)}.`));n.then(r=>{if(r.length!==e.keys.length)throw new TypeError(`DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array of the same length as the Array of keys.
2
+ "use strict";var Dc=Object.defineProperty;var Kc=(t,e,n)=>e in t?Dc(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var g=(t,e,n)=>Kc(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react/jsx-runtime"),j=require("react");class en{constructor(){g(this,"cachedPubKey")}static isAvailable(){return typeof window<"u"&&!!window.nostr}async getPublicKey(){if(!window.nostr)throw new Error("NIP-07 extension not available");return this.cachedPubKey||(this.cachedPubKey=await window.nostr.getPublicKey()),this.cachedPubKey}async signEvent(e){if(!window.nostr)throw new Error("NIP-07 extension not available");return window.nostr.signEvent(e)}}function Ho(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function Js(t,...e){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(t.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function jc(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Ho(t.outputLen),Ho(t.blockLen)}function cn(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Hc(t,e){Js(t);const n=e.outputLen;if(t.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}const Kn=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Gs=t=>t instanceof Uint8Array,jn=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),ve=(t,e)=>t<<32-e|t>>>e,zc=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!zc)throw new Error("Non little-endian hardware is not supported");function qc(t){if(typeof t!="string")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function Kr(t){if(typeof t=="string"&&(t=qc(t)),!Gs(t))throw new Error(`expected Uint8Array, got ${typeof t}`);return t}function Vc(...t){const e=new Uint8Array(t.reduce((r,o)=>r+o.length,0));let n=0;return t.forEach(r=>{if(!Gs(r))throw new Error("Uint8Array expected");e.set(r,n),n+=r.length}),e}let Ys=class{clone(){return this._cloneInto()}};function Fc(t){const e=r=>t().update(Kr(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Xs(t=32){if(Kn&&typeof Kn.getRandomValues=="function")return Kn.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}function Wc(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,i,r),t.setUint32(e+l,a,r)}let Zc=class extends Ys{constructor(e,n,r,o){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=jn(this.buffer)}update(e){cn(this);const{view:n,buffer:r,blockLen:o}=this;e=Kr(e);const s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=jn(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){cn(this),Hc(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;Wc(r,o-8,BigInt(this.length*8),s),this.process(r,0);const a=jn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%n&&e.buffer.set(r),e}};const Jc=(t,e,n)=>t&e^~t&n,Gc=(t,e,n)=>t&e^t&n^e&n,Yc=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ke=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),je=new Uint32Array(64);let Xc=class extends Zc{constructor(){super(64,32,8,!1),this.A=Ke[0]|0,this.B=Ke[1]|0,this.C=Ke[2]|0,this.D=Ke[3]|0,this.E=Ke[4]|0,this.F=Ke[5]|0,this.G=Ke[6]|0,this.H=Ke[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)je[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const m=je[u-15],f=je[u-2],p=ve(m,7)^ve(m,18)^m>>>3,h=ve(f,17)^ve(f,19)^f>>>10;je[u]=h+je[u-7]+p+je[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const m=ve(a,6)^ve(a,11)^ve(a,25),f=d+m+Jc(a,c,l)+Yc[u]+je[u]|0,h=(ve(r,2)^ve(r,13)^ve(r,22))+Gc(r,o,s)|0;d=l,l=c,c=a,a=i+f|0,i=s,s=o,o=r,r=f+h|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){je.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};const mr=Fc(()=>new Xc);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */BigInt(0);const Qc=BigInt(1),el=BigInt(2),En=t=>t instanceof Uint8Array,tl=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Et(t){if(!En(t))throw new Error("Uint8Array expected");let e="";for(let n=0;n<t.length;n++)e+=tl[t[n]];return e}function jr(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return BigInt(t===""?"0":`0x${t}`)}function Ot(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(e/2);for(let r=0;r<n.length;r++){const o=r*2,s=t.slice(o,o+2),i=Number.parseInt(s,16);if(Number.isNaN(i)||i<0)throw new Error("Invalid byte sequence");n[r]=i}return n}function ce(t){return jr(Et(t))}function Hr(t){if(!En(t))throw new Error("Uint8Array expected");return jr(Et(Uint8Array.from(t).reverse()))}function Ge(t,e){return Ot(t.toString(16).padStart(e*2,"0"))}function zr(t,e){return Ge(t,e).reverse()}function te(t,e,n){let r;if(typeof e=="string")try{r=Ot(e)}catch(s){throw new Error(`${t} must be valid hex string, got "${e}". Cause: ${s}`)}else if(En(e))r=Uint8Array.from(e);else throw new Error(`${t} must be hex string or Uint8Array`);const o=r.length;if(typeof n=="number"&&o!==n)throw new Error(`${t} expected ${n} bytes, got ${o}`);return r}function ct(...t){const e=new Uint8Array(t.reduce((r,o)=>r+o.length,0));let n=0;return t.forEach(r=>{if(!En(r))throw new Error("Uint8Array expected");e.set(r,n),n+=r.length}),e}const qr=t=>(el<<BigInt(t-1))-Qc,Hn=t=>new Uint8Array(t),zo=t=>Uint8Array.from(t);function Qs(t,e,n){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof n!="function")throw new Error("hmacFn must be a function");let r=Hn(t),o=Hn(t),s=0;const i=()=>{r.fill(1),o.fill(0),s=0},a=(...u)=>n(o,r,...u),c=(u=Hn())=>{o=a(zo([0]),u),r=a(),u.length!==0&&(o=a(zo([1]),u),r=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0;const m=[];for(;u<e;){r=a();const f=r.slice();m.push(f),u+=r.length}return ct(...m)};return(u,m)=>{i(),c(u);let f;for(;!(f=m(l()));)c();return i(),f}}const nl={bigint:t=>typeof t=="bigint",function:t=>typeof t=="function",boolean:t=>typeof t=="boolean",string:t=>typeof t=="string",stringOrUint8Array:t=>typeof t=="string"||t instanceof Uint8Array,isSafeInteger:t=>Number.isSafeInteger(t),array:t=>Array.isArray(t),field:(t,e)=>e.Fp.isValid(t),hash:t=>typeof t=="function"&&Number.isSafeInteger(t.outputLen)};function Ht(t,e,n={}){const r=(o,s,i)=>{const a=nl[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);const c=t[o];if(!(i&&c===void 0)&&!a(c,t))throw new Error(`Invalid param ${String(o)}=${c} (${typeof c}), expected ${s}`)};for(const[o,s]of Object.entries(e))r(o,s,!1);for(const[o,s]of Object.entries(n))r(o,s,!0);return t}const rl=Object.freeze(Object.defineProperty({__proto__:null,bitMask:qr,bytesToHex:Et,bytesToNumberBE:ce,bytesToNumberLE:Hr,concatBytes:ct,createHmacDrbg:Qs,ensureBytes:te,hexToBytes:Ot,hexToNumber:jr,numberToBytesBE:Ge,numberToBytesLE:zr,validateObject:Ht},Symbol.toStringTag,{value:"Module"}));/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Q=BigInt(0),J=BigInt(1),rt=BigInt(2),ol=BigInt(3),pr=BigInt(4),qo=BigInt(5),Vo=BigInt(8);BigInt(9);BigInt(16);function ee(t,e){const n=t%e;return n>=Q?n:e+n}function sl(t,e,n){if(n<=Q||e<Q)throw new Error("Expected power/modulo > 0");if(n===J)return Q;let r=J;for(;e>Q;)e&J&&(r=r*t%n),t=t*t%n,e>>=J;return r}function de(t,e,n){let r=t;for(;e-- >Q;)r*=r,r%=n;return r}function gr(t,e){if(t===Q||e<=Q)throw new Error(`invert: expected positive integers, got n=${t} mod=${e}`);let n=ee(t,e),r=e,o=Q,s=J;for(;n!==Q;){const a=r/n,c=r%n,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==J)throw new Error("invert: does not exist");return ee(o,e)}function il(t){const e=(t-J)/rt;let n,r,o;for(n=t-J,r=0;n%rt===Q;n/=rt,r++);for(o=rt;o<t&&sl(o,e,t)!==t-J;o++);if(r===1){const i=(t+J)/pr;return function(c,l){const d=c.pow(l,i);if(!c.eql(c.sqr(d),l))throw new Error("Cannot find square root");return d}}const s=(n+J)/rt;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=r,d=a.pow(a.mul(a.ONE,o),n),u=a.pow(c,s),m=a.pow(c,n);for(;!a.eql(m,a.ONE);){if(a.eql(m,a.ZERO))return a.ZERO;let f=1;for(let h=a.sqr(m);f<l&&!a.eql(h,a.ONE);f++)h=a.sqr(h);const p=a.pow(d,J<<BigInt(l-f-1));d=a.sqr(p),u=a.mul(u,p),m=a.mul(m,d),l=f}return u}}function al(t){if(t%pr===ol){const e=(t+J)/pr;return function(r,o){const s=r.pow(o,e);if(!r.eql(r.sqr(s),o))throw new Error("Cannot find square root");return s}}if(t%Vo===qo){const e=(t-qo)/Vo;return function(r,o){const s=r.mul(o,rt),i=r.pow(s,e),a=r.mul(o,i),c=r.mul(r.mul(a,rt),i),l=r.mul(a,r.sub(c,r.ONE));if(!r.eql(r.sqr(l),o))throw new Error("Cannot find square root");return l}}return il(t)}const cl=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function ll(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},n=cl.reduce((r,o)=>(r[o]="function",r),e);return Ht(t,n)}function ul(t,e,n){if(n<Q)throw new Error("Expected power > 0");if(n===Q)return t.ONE;if(n===J)return e;let r=t.ONE,o=e;for(;n>Q;)n&J&&(r=t.mul(r,o)),o=t.sqr(o),n>>=J;return r}function dl(t,e){const n=new Array(e.length),r=e.reduce((s,i,a)=>t.is0(i)?s:(n[a]=s,t.mul(s,i)),t.ONE),o=t.inv(r);return e.reduceRight((s,i,a)=>t.is0(i)?s:(n[a]=t.mul(s,n[a]),t.mul(s,i)),o),n}function ei(t,e){const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function hl(t,e,n=!1,r={}){if(t<=Q)throw new Error(`Expected Field ORDER > 0, got ${t}`);const{nBitLength:o,nByteLength:s}=ei(t,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");const i=al(t),a=Object.freeze({ORDER:t,BITS:o,BYTES:s,MASK:qr(o),ZERO:Q,ONE:J,create:c=>ee(c,t),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return Q<=c&&c<t},is0:c=>c===Q,isOdd:c=>(c&J)===J,neg:c=>ee(-c,t),eql:(c,l)=>c===l,sqr:c=>ee(c*c,t),add:(c,l)=>ee(c+l,t),sub:(c,l)=>ee(c-l,t),mul:(c,l)=>ee(c*l,t),pow:(c,l)=>ul(a,c,l),div:(c,l)=>ee(c*gr(l,t),t),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>gr(c,t),sqrt:r.sqrt||(c=>i(a,c)),invertBatch:c=>dl(a,c),cmov:(c,l,d)=>d?l:c,toBytes:c=>n?zr(c,s):Ge(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return n?Hr(c):ce(c)}});return Object.freeze(a)}function ti(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function ni(t){const e=ti(t);return e+Math.ceil(e/2)}function fl(t,e,n=!1){const r=t.length,o=ti(e),s=ni(e);if(r<16||r<s||r>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${r}`);const i=n?ce(t):Hr(t),a=ee(i,e-J)+J;return n?zr(a,o):Ge(a,o)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const ml=BigInt(0),zn=BigInt(1);function pl(t,e){const n=(o,s)=>{const i=s.negate();return o?i:s},r=o=>{const s=Math.ceil(e/o)+1,i=2**(o-1);return{windows:s,windowSize:i}};return{constTimeNegate:n,unsafeLadder(o,s){let i=t.ZERO,a=o;for(;s>ml;)s&zn&&(i=i.add(a)),a=a.double(),s>>=zn;return i},precomputeWindow(o,s){const{windows:i,windowSize:a}=r(s),c=[];let l=o,d=l;for(let u=0;u<i;u++){d=l,c.push(d);for(let m=1;m<a;m++)d=d.add(l),c.push(d);l=d.double()}return c},wNAF(o,s,i){const{windows:a,windowSize:c}=r(o);let l=t.ZERO,d=t.BASE;const u=BigInt(2**o-1),m=2**o,f=BigInt(o);for(let p=0;p<a;p++){const h=p*c;let y=Number(i&u);i>>=f,y>c&&(y-=m,i+=zn);const v=h,E=h+Math.abs(y)-1,S=p%2!==0,O=y<0;y===0?d=d.add(n(S,s[v])):l=l.add(n(O,s[E]))}return{p:l,f:d}},wNAFCached(o,s,i,a){const c=o._WINDOW_SIZE||1;let l=s.get(o);return l||(l=this.precomputeWindow(o,c),c!==1&&s.set(o,a(l))),this.wNAF(c,l,i)}}}function ri(t){return ll(t.Fp),Ht(t,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...ei(t.n,t.nBitLength),...t,p:t.Fp.ORDER})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function gl(t){const e=ri(t);Ht(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:n,Fp:r,a:o}=e;if(n){if(!r.eql(o,r.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof n!="object"||typeof n.beta!="bigint"||typeof n.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}const{bytesToNumberBE:yl,hexToBytes:bl}=rl,ot={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(t){const{Err:e}=ot;if(t.length<2||t[0]!==2)throw new e("Invalid signature integer tag");const n=t[1],r=t.subarray(2,n+2);if(!n||r.length!==n)throw new e("Invalid signature integer: wrong length");if(r[0]&128)throw new e("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:yl(r),l:t.subarray(n+2)}},toSig(t){const{Err:e}=ot,n=typeof t=="string"?bl(t):t;if(!(n instanceof Uint8Array))throw new Error("ui8a expected");let r=n.length;if(r<2||n[0]!=48)throw new e("Invalid signature tag");if(n[1]!==r-2)throw new e("Invalid signature: incorrect length");const{d:o,l:s}=ot._parseInt(n.subarray(2)),{d:i,l:a}=ot._parseInt(s);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(t){const e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,n=l=>{const d=l.toString(16);return d.length&1?`0${d}`:d},r=e(n(t.s)),o=e(n(t.r)),s=r.length/2,i=o.length/2,a=n(s),c=n(i);return`30${n(i+s+4)}02${c}${o}02${a}${r}`}},Ie=BigInt(0),fe=BigInt(1);BigInt(2);const Fo=BigInt(3);BigInt(4);function wl(t){const e=gl(t),{Fp:n}=e,r=e.toBytes||((p,h,y)=>{const v=h.toAffine();return ct(Uint8Array.from([4]),n.toBytes(v.x),n.toBytes(v.y))}),o=e.fromBytes||(p=>{const h=p.subarray(1),y=n.fromBytes(h.subarray(0,n.BYTES)),v=n.fromBytes(h.subarray(n.BYTES,2*n.BYTES));return{x:y,y:v}});function s(p){const{a:h,b:y}=e,v=n.sqr(p),E=n.mul(v,p);return n.add(n.add(E,n.mul(p,h)),y)}if(!n.eql(n.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(p){return typeof p=="bigint"&&Ie<p&&p<e.n}function a(p){if(!i(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){const{allowedPrivateKeyLengths:h,nByteLength:y,wrapPrivateKey:v,n:E}=e;if(h&&typeof p!="bigint"){if(p instanceof Uint8Array&&(p=Et(p)),typeof p!="string"||!h.includes(p.length))throw new Error("Invalid key");p=p.padStart(y*2,"0")}let S;try{S=typeof p=="bigint"?p:ce(te("private key",p,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof p}`)}return v&&(S=ee(S,E)),a(S),S}const l=new Map;function d(p){if(!(p instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(h,y,v){if(this.px=h,this.py=y,this.pz=v,h==null||!n.isValid(h))throw new Error("x required");if(y==null||!n.isValid(y))throw new Error("y required");if(v==null||!n.isValid(v))throw new Error("z required")}static fromAffine(h){const{x:y,y:v}=h||{};if(!h||!n.isValid(y)||!n.isValid(v))throw new Error("invalid affine point");if(h instanceof u)throw new Error("projective point not allowed");const E=S=>n.eql(S,n.ZERO);return E(y)&&E(v)?u.ZERO:new u(y,v,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(h){const y=n.invertBatch(h.map(v=>v.pz));return h.map((v,E)=>v.toAffine(y[E])).map(u.fromAffine)}static fromHex(h){const y=u.fromAffine(o(te("pointHex",h)));return y.assertValidity(),y}static fromPrivateKey(h){return u.BASE.multiply(c(h))}_setWindowSize(h){this._WINDOW_SIZE=h,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!n.is0(this.py))return;throw new Error("bad point: ZERO")}const{x:h,y}=this.toAffine();if(!n.isValid(h)||!n.isValid(y))throw new Error("bad point: x or y not FE");const v=n.sqr(y),E=s(h);if(!n.eql(v,E))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){const{y:h}=this.toAffine();if(n.isOdd)return!n.isOdd(h);throw new Error("Field doesn't support isOdd")}equals(h){d(h);const{px:y,py:v,pz:E}=this,{px:S,py:O,pz:M}=h,_=n.eql(n.mul(y,M),n.mul(S,E)),N=n.eql(n.mul(v,M),n.mul(O,E));return _&&N}negate(){return new u(this.px,n.neg(this.py),this.pz)}double(){const{a:h,b:y}=e,v=n.mul(y,Fo),{px:E,py:S,pz:O}=this;let M=n.ZERO,_=n.ZERO,N=n.ZERO,L=n.mul(E,E),K=n.mul(S,S),T=n.mul(O,O),P=n.mul(E,S);return P=n.add(P,P),N=n.mul(E,O),N=n.add(N,N),M=n.mul(h,N),_=n.mul(v,T),_=n.add(M,_),M=n.sub(K,_),_=n.add(K,_),_=n.mul(M,_),M=n.mul(P,M),N=n.mul(v,N),T=n.mul(h,T),P=n.sub(L,T),P=n.mul(h,P),P=n.add(P,N),N=n.add(L,L),L=n.add(N,L),L=n.add(L,T),L=n.mul(L,P),_=n.add(_,L),T=n.mul(S,O),T=n.add(T,T),L=n.mul(T,P),M=n.sub(M,L),N=n.mul(T,K),N=n.add(N,N),N=n.add(N,N),new u(M,_,N)}add(h){d(h);const{px:y,py:v,pz:E}=this,{px:S,py:O,pz:M}=h;let _=n.ZERO,N=n.ZERO,L=n.ZERO;const K=e.a,T=n.mul(e.b,Fo);let P=n.mul(y,S),D=n.mul(v,O),U=n.mul(E,M),k=n.add(y,v),w=n.add(S,O);k=n.mul(k,w),w=n.add(P,D),k=n.sub(k,w),w=n.add(y,E);let x=n.add(S,M);return w=n.mul(w,x),x=n.add(P,U),w=n.sub(w,x),x=n.add(v,E),_=n.add(O,M),x=n.mul(x,_),_=n.add(D,U),x=n.sub(x,_),L=n.mul(K,w),_=n.mul(T,U),L=n.add(_,L),_=n.sub(D,L),L=n.add(D,L),N=n.mul(_,L),D=n.add(P,P),D=n.add(D,P),U=n.mul(K,U),w=n.mul(T,w),D=n.add(D,U),U=n.sub(P,U),U=n.mul(K,U),w=n.add(w,U),P=n.mul(D,w),N=n.add(N,P),P=n.mul(x,w),_=n.mul(k,_),_=n.sub(_,P),P=n.mul(k,D),L=n.mul(x,L),L=n.add(L,P),new u(_,N,L)}subtract(h){return this.add(h.negate())}is0(){return this.equals(u.ZERO)}wNAF(h){return f.wNAFCached(this,l,h,y=>{const v=n.invertBatch(y.map(E=>E.pz));return y.map((E,S)=>E.toAffine(v[S])).map(u.fromAffine)})}multiplyUnsafe(h){const y=u.ZERO;if(h===Ie)return y;if(a(h),h===fe)return this;const{endo:v}=e;if(!v)return f.unsafeLadder(this,h);let{k1neg:E,k1:S,k2neg:O,k2:M}=v.splitScalar(h),_=y,N=y,L=this;for(;S>Ie||M>Ie;)S&fe&&(_=_.add(L)),M&fe&&(N=N.add(L)),L=L.double(),S>>=fe,M>>=fe;return E&&(_=_.negate()),O&&(N=N.negate()),N=new u(n.mul(N.px,v.beta),N.py,N.pz),_.add(N)}multiply(h){a(h);let y=h,v,E;const{endo:S}=e;if(S){const{k1neg:O,k1:M,k2neg:_,k2:N}=S.splitScalar(y);let{p:L,f:K}=this.wNAF(M),{p:T,f:P}=this.wNAF(N);L=f.constTimeNegate(O,L),T=f.constTimeNegate(_,T),T=new u(n.mul(T.px,S.beta),T.py,T.pz),v=L.add(T),E=K.add(P)}else{const{p:O,f:M}=this.wNAF(y);v=O,E=M}return u.normalizeZ([v,E])[0]}multiplyAndAddUnsafe(h,y,v){const E=u.BASE,S=(M,_)=>_===Ie||_===fe||!M.equals(E)?M.multiplyUnsafe(_):M.multiply(_),O=S(this,y).add(S(h,v));return O.is0()?void 0:O}toAffine(h){const{px:y,py:v,pz:E}=this,S=this.is0();h==null&&(h=S?n.ONE:n.inv(E));const O=n.mul(y,h),M=n.mul(v,h),_=n.mul(E,h);if(S)return{x:n.ZERO,y:n.ZERO};if(!n.eql(_,n.ONE))throw new Error("invZ was invalid");return{x:O,y:M}}isTorsionFree(){const{h,isTorsionFree:y}=e;if(h===fe)return!0;if(y)return y(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h,clearCofactor:y}=e;return h===fe?this:y?y(u,this):this.multiplyUnsafe(e.h)}toRawBytes(h=!0){return this.assertValidity(),r(u,this,h)}toHex(h=!0){return Et(this.toRawBytes(h))}}u.BASE=new u(e.Gx,e.Gy,n.ONE),u.ZERO=new u(n.ZERO,n.ONE,n.ZERO);const m=e.nBitLength,f=pl(u,e.endo?Math.ceil(m/2):m);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function vl(t){const e=ri(t);return Ht(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function xl(t){const e=vl(t),{Fp:n,n:r}=e,o=n.BYTES+1,s=2*n.BYTES+1;function i(w){return Ie<w&&w<n.ORDER}function a(w){return ee(w,r)}function c(w){return gr(w,r)}const{ProjectivePoint:l,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:m}=wl({...e,toBytes(w,x,A){const I=x.toAffine(),C=n.toBytes(I.x),R=ct;return A?R(Uint8Array.from([x.hasEvenY()?2:3]),C):R(Uint8Array.from([4]),C,n.toBytes(I.y))},fromBytes(w){const x=w.length,A=w[0],I=w.subarray(1);if(x===o&&(A===2||A===3)){const C=ce(I);if(!i(C))throw new Error("Point is not on curve");const R=u(C);let B=n.sqrt(R);const $=(B&fe)===fe;return(A&1)===1!==$&&(B=n.neg(B)),{x:C,y:B}}else if(x===s&&A===4){const C=n.fromBytes(I.subarray(0,n.BYTES)),R=n.fromBytes(I.subarray(n.BYTES,2*n.BYTES));return{x:C,y:R}}else throw new Error(`Point of length ${x} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),f=w=>Et(Ge(w,e.nByteLength));function p(w){const x=r>>fe;return w>x}function h(w){return p(w)?a(-w):w}const y=(w,x,A)=>ce(w.slice(x,A));class v{constructor(x,A,I){this.r=x,this.s=A,this.recovery=I,this.assertValidity()}static fromCompact(x){const A=e.nByteLength;return x=te("compactSignature",x,A*2),new v(y(x,0,A),y(x,A,2*A))}static fromDER(x){const{r:A,s:I}=ot.toSig(te("DER",x));return new v(A,I)}assertValidity(){if(!m(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!m(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(x){return new v(this.r,this.s,x)}recoverPublicKey(x){const{r:A,s:I,recovery:C}=this,R=N(te("msgHash",x));if(C==null||![0,1,2,3].includes(C))throw new Error("recovery id invalid");const B=C===2||C===3?A+e.n:A;if(B>=n.ORDER)throw new Error("recovery id 2 or 3 invalid");const $=(C&1)===0?"02":"03",H=l.fromHex($+f(B)),z=c(B),F=a(-R*z),q=a(I*z),G=l.BASE.multiplyAndAddUnsafe(H,F,q);if(!G)throw new Error("point at infinify");return G.assertValidity(),G}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new v(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return Ot(this.toDERHex())}toDERHex(){return ot.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Ot(this.toCompactHex())}toCompactHex(){return f(this.r)+f(this.s)}}const E={isValidPrivateKey(w){try{return d(w),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{const w=ni(e.n);return fl(e.randomBytes(w),e.n)},precompute(w=8,x=l.BASE){return x._setWindowSize(w),x.multiply(BigInt(3)),x}};function S(w,x=!0){return l.fromPrivateKey(w).toRawBytes(x)}function O(w){const x=w instanceof Uint8Array,A=typeof w=="string",I=(x||A)&&w.length;return x?I===o||I===s:A?I===2*o||I===2*s:w instanceof l}function M(w,x,A=!0){if(O(w))throw new Error("first arg must be private key");if(!O(x))throw new Error("second arg must be public key");return l.fromHex(x).multiply(d(w)).toRawBytes(A)}const _=e.bits2int||function(w){const x=ce(w),A=w.length*8-e.nBitLength;return A>0?x>>BigInt(A):x},N=e.bits2int_modN||function(w){return a(_(w))},L=qr(e.nBitLength);function K(w){if(typeof w!="bigint")throw new Error("bigint expected");if(!(Ie<=w&&w<L))throw new Error(`bigint expected < 2^${e.nBitLength}`);return Ge(w,e.nByteLength)}function T(w,x,A=P){if(["recovered","canonical"].some(se=>se in A))throw new Error("sign() legacy options not supported");const{hash:I,randomBytes:C}=e;let{lowS:R,prehash:B,extraEntropy:$}=A;R==null&&(R=!0),w=te("msgHash",w),B&&(w=te("prehashed msgHash",I(w)));const H=N(w),z=d(x),F=[K(z),K(H)];if($!=null){const se=$===!0?C(n.BYTES):$;F.push(te("extraEntropy",se))}const q=ct(...F),G=H;function re(se){const Z=_(se);if(!m(Z))return;const ue=c(Z),ht=l.BASE.multiply(Z).toAffine(),me=a(ht.x);if(me===Ie)return;const ft=a(ue*a(G+me*z));if(ft===Ie)return;let Ko=(ht.x===me?0:2)|Number(ht.y&fe),jo=ft;return R&&p(ft)&&(jo=h(ft),Ko^=1),new v(me,jo,Ko)}return{seed:q,k2sig:re}}const P={lowS:e.lowS,prehash:!1},D={lowS:e.lowS,prehash:!1};function U(w,x,A=P){const{seed:I,k2sig:C}=T(w,x,A),R=e;return Qs(R.hash.outputLen,R.nByteLength,R.hmac)(I,C)}l.BASE._setWindowSize(8);function k(w,x,A,I=D){var ht;const C=w;if(x=te("msgHash",x),A=te("publicKey",A),"strict"in I)throw new Error("options.strict was renamed to lowS");const{lowS:R,prehash:B}=I;let $,H;try{if(typeof C=="string"||C instanceof Uint8Array)try{$=v.fromDER(C)}catch(me){if(!(me instanceof ot.Err))throw me;$=v.fromCompact(C)}else if(typeof C=="object"&&typeof C.r=="bigint"&&typeof C.s=="bigint"){const{r:me,s:ft}=C;$=new v(me,ft)}else throw new Error("PARSE");H=l.fromHex(A)}catch(me){if(me.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(R&&$.hasHighS())return!1;B&&(x=e.hash(x));const{r:z,s:F}=$,q=N(x),G=c(F),re=a(q*G),se=a(z*G),Z=(ht=l.BASE.multiplyAndAddUnsafe(H,re,se))==null?void 0:ht.toAffine();return Z?a(Z.x)===z:!1}return{CURVE:e,getPublicKey:S,getSharedSecret:M,sign:U,verify:k,ProjectivePoint:l,Signature:v,utils:E}}let oi=class extends Ys{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,jc(e);const r=Kr(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(e){return cn(this),this.iHash.update(e),this}digestInto(e){cn(this),Js(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}};const si=(t,e,n)=>new oi(t,e).update(n).digest();si.create=(t,e)=>new oi(t,e);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function El(t){return{hash:t,hmac:(e,...n)=>si(t,e,Vc(...n)),randomBytes:Xs}}function kl(t,e){const n=r=>xl({...t,...El(r)});return Object.freeze({...n(e),create:n})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const kn=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),ln=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),ii=BigInt(1),un=BigInt(2),Wo=(t,e)=>(t+e/un)/e;function ai(t){const e=kn,n=BigInt(3),r=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=de(d,n,e)*d%e,m=de(u,n,e)*d%e,f=de(m,un,e)*l%e,p=de(f,o,e)*f%e,h=de(p,s,e)*p%e,y=de(h,a,e)*h%e,v=de(y,c,e)*y%e,E=de(v,a,e)*h%e,S=de(E,n,e)*d%e,O=de(S,i,e)*p%e,M=de(O,r,e)*l%e,_=de(M,un,e);if(!yr.eql(yr.sqr(_),t))throw new Error("Cannot find square root");return _}const yr=hl(kn,void 0,void 0,{sqrt:ai}),ut=kl({a:BigInt(0),b:BigInt(7),Fp:yr,n:ln,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:t=>{const e=ln,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-ii*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=n,i=BigInt("0x100000000000000000000000000000000"),a=Wo(s*t,e),c=Wo(-r*t,e);let l=ee(t-a*n-c*o,e),d=ee(-a*r-c*s,e);const u=l>i,m=d>i;if(u&&(l=e-l),m&&(d=e-d),l>i||d>i)throw new Error("splitScalar: Endomorphism failed, k="+t);return{k1neg:u,k1:l,k2neg:m,k2:d}}}},mr),_n=BigInt(0),ci=t=>typeof t=="bigint"&&_n<t&&t<kn,_l=t=>typeof t=="bigint"&&_n<t&&t<ln,Zo={};function dn(t,...e){let n=Zo[t];if(n===void 0){const r=mr(Uint8Array.from(t,o=>o.charCodeAt(0)));n=ct(r,r),Zo[t]=n}return mr(ct(n,...e))}const Vr=t=>t.toRawBytes(!0).slice(1),br=t=>Ge(t,32),qn=t=>ee(t,kn),Mt=t=>ee(t,ln),Fr=ut.ProjectivePoint,Al=(t,e,n)=>Fr.BASE.multiplyAndAddUnsafe(t,e,n);function wr(t){let e=ut.utils.normPrivateKeyToScalar(t),n=Fr.fromPrivateKey(e);return{scalar:n.hasEvenY()?e:Mt(-e),bytes:Vr(n)}}function li(t){if(!ci(t))throw new Error("bad x: need 0 < x < p");const e=qn(t*t),n=qn(e*t+BigInt(7));let r=ai(n);r%un!==_n&&(r=qn(-r));const o=new Fr(t,r,ii);return o.assertValidity(),o}function ui(...t){return Mt(ce(dn("BIP0340/challenge",...t)))}function Sl(t){return wr(t).bytes}function Nl(t,e,n=Xs(32)){const r=te("message",t),{bytes:o,scalar:s}=wr(e),i=te("auxRand",n,32),a=br(s^ce(dn("BIP0340/aux",i))),c=dn("BIP0340/nonce",a,o,r),l=Mt(ce(c));if(l===_n)throw new Error("sign failed: k is zero");const{bytes:d,scalar:u}=wr(l),m=ui(d,o,r),f=new Uint8Array(64);if(f.set(d,0),f.set(br(Mt(u+m*s)),32),!di(f,r,o))throw new Error("sign: Invalid signature produced");return f}function di(t,e,n){const r=te("signature",t,64),o=te("message",e),s=te("publicKey",n,32);try{const i=li(ce(s)),a=ce(r.subarray(0,32));if(!ci(a))return!1;const c=ce(r.subarray(32,64));if(!_l(c))return!1;const l=ui(br(a),Vr(i),o),d=Al(i,c,Mt(-l));return!(!d||!d.hasEvenY()||d.toAffine().x!==a)}catch{return!1}}const ke={getPublicKey:Sl,sign:Nl,verify:di,utils:{randomPrivateKey:ut.utils.randomPrivateKey,lift_x:li,pointToBytes:Vr,numberToBytesBE:Ge,bytesToNumberBE:ce,taggedHash:dn,mod:ee}},Vn=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Wr=t=>t instanceof Uint8Array,Fn=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),xe=(t,e)=>t<<32-e|t>>>e,Cl=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Cl)throw new Error("Non little-endian hardware is not supported");const Bl=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Y(t){if(!Wr(t))throw new Error("Uint8Array expected");let e="";for(let n=0;n<t.length;n++)e+=Bl[t[n]];return e}function lt(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(e/2);for(let r=0;r<n.length;r++){const o=r*2,s=t.slice(o,o+2),i=Number.parseInt(s,16);if(Number.isNaN(i)||i<0)throw new Error("Invalid byte sequence");n[r]=i}return n}function Ll(t){if(typeof t!="string")throw new Error(`utf8ToBytes expected string, got ${typeof t}`);return new Uint8Array(new TextEncoder().encode(t))}function Dt(t){if(typeof t=="string"&&(t=Ll(t)),!Wr(t))throw new Error(`expected Uint8Array, got ${typeof t}`);return t}function dt(...t){const e=new Uint8Array(t.reduce((r,o)=>r+o.length,0));let n=0;return t.forEach(r=>{if(!Wr(r))throw new Error("Uint8Array expected");e.set(r,n),n+=r.length}),e}class hi{clone(){return this._cloneInto()}}function fi(t){const e=r=>t().update(Dt(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Zr(t=32){if(Vn&&typeof Vn.getRandomValues=="function")return Vn.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}function vr(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function Il(t){if(typeof t!="boolean")throw new Error(`Expected boolean, not ${t}`)}function mi(t,...e){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(t.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function Rl(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");vr(t.outputLen),vr(t.blockLen)}function $l(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Tl(t,e){mi(t);const n=e.outputLen;if(t.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}const _e={number:vr,bool:Il,bytes:mi,hash:Rl,exists:$l,output:Tl};function Pl(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,i,r),t.setUint32(e+l,a,r)}class Ul extends hi{constructor(e,n,r,o){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Fn(this.buffer)}update(e){_e.exists(this);const{view:n,buffer:r,blockLen:o}=this;e=Dt(e);const s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=Fn(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){_e.exists(this),_e.output(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;Pl(r,o-8,BigInt(this.length*8),s),this.process(r,0);const a=Fn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%n&&e.buffer.set(r),e}}const Ol=(t,e,n)=>t&e^~t&n,Ml=(t,e,n)=>t&e^t&n^e&n,Dl=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),He=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ze=new Uint32Array(64);class pi extends Ul{constructor(){super(64,32,8,!1),this.A=He[0]|0,this.B=He[1]|0,this.C=He[2]|0,this.D=He[3]|0,this.E=He[4]|0,this.F=He[5]|0,this.G=He[6]|0,this.H=He[7]|0}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)ze[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const m=ze[u-15],f=ze[u-2],p=xe(m,7)^xe(m,18)^m>>>3,h=xe(f,17)^xe(f,19)^f>>>10;ze[u]=h+ze[u-7]+p+ze[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const m=xe(a,6)^xe(a,11)^xe(a,25),f=d+m+Ol(a,c,l)+Dl[u]+ze[u]|0,h=(xe(r,2)^xe(r,13)^xe(r,22))+Ml(r,o,s)|0;d=l,l=c,c=a,a=i+f|0,i=s,s=o,o=r,r=f+h|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){ze.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}class Kl extends pi{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}}const be=fi(()=>new pi);fi(()=>new Kl);/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function Nt(t){if(!Number.isSafeInteger(t))throw new Error(`Wrong integer: ${t}`)}function Pe(...t){const e=(o,s)=>i=>o(s(i)),n=Array.from(t).reverse().reduce((o,s)=>o?e(o,s.encode):s.encode,void 0),r=t.reduce((o,s)=>o?e(o,s.decode):s.decode,void 0);return{encode:n,decode:r}}function Ue(t){return{encode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="number")throw new Error("alphabet.encode input should be an array of numbers");return e.map(n=>{if(Nt(n),n<0||n>=t.length)throw new Error(`Digit index outside alphabet: ${n} (alphabet: ${t.length})`);return t[n]})},decode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="string")throw new Error("alphabet.decode input should be array of strings");return e.map(n=>{if(typeof n!="string")throw new Error(`alphabet.decode: not string element=${n}`);const r=t.indexOf(n);if(r===-1)throw new Error(`Unknown letter: "${n}". Allowed: ${t}`);return r})}}}function Oe(t=""){if(typeof t!="string")throw new Error("join separator should be string");return{encode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="string")throw new Error("join.encode input should be array of strings");for(let n of e)if(typeof n!="string")throw new Error(`join.encode: non-string input=${n}`);return e.join(t)},decode:e=>{if(typeof e!="string")throw new Error("join.decode input should be string");return e.split(t)}}}function An(t,e="="){if(Nt(t),typeof e!="string")throw new Error("padding chr should be string");return{encode(n){if(!Array.isArray(n)||n.length&&typeof n[0]!="string")throw new Error("padding.encode input should be array of strings");for(let r of n)if(typeof r!="string")throw new Error(`padding.encode: non-string input=${r}`);for(;n.length*t%8;)n.push(e);return n},decode(n){if(!Array.isArray(n)||n.length&&typeof n[0]!="string")throw new Error("padding.encode input should be array of strings");for(let o of n)if(typeof o!="string")throw new Error(`padding.decode: non-string input=${o}`);let r=n.length;if(r*t%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;r>0&&n[r-1]===e;r--)if(!((r-1)*t%8))throw new Error("Invalid padding: string has too much padding");return n.slice(0,r)}}}function gi(t){if(typeof t!="function")throw new Error("normalize fn should be function");return{encode:e=>e,decode:e=>t(e)}}function Jo(t,e,n){if(e<2)throw new Error(`convertRadix: wrong from=${e}, base cannot be less than 2`);if(n<2)throw new Error(`convertRadix: wrong to=${n}, base cannot be less than 2`);if(!Array.isArray(t))throw new Error("convertRadix: data should be array");if(!t.length)return[];let r=0;const o=[],s=Array.from(t);for(s.forEach(i=>{if(Nt(i),i<0||i>=e)throw new Error(`Wrong integer: ${i}`)});;){let i=0,a=!0;for(let c=r;c<s.length;c++){const l=s[c],d=e*i+l;if(!Number.isSafeInteger(d)||e*i/e!==i||d-l!==e*i)throw new Error("convertRadix: carry overflow");if(i=d%n,s[c]=Math.floor(d/n),!Number.isSafeInteger(s[c])||s[c]*n+i!==d)throw new Error("convertRadix: carry overflow");if(a)s[c]?a=!1:r=c;else continue}if(o.push(i),a)break}for(let i=0;i<t.length-1&&t[i]===0;i++)o.push(0);return o.reverse()}const yi=(t,e)=>e?yi(e,t%e):t,hn=(t,e)=>t+(e-yi(t,e));function xr(t,e,n,r){if(!Array.isArray(t))throw new Error("convertRadix2: data should be array");if(e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(hn(e,n)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${n} carryBits=${hn(e,n)}`);let o=0,s=0;const i=2**n-1,a=[];for(const c of t){if(Nt(c),c>=2**e)throw new Error(`convertRadix2: invalid data word=${c} from=${e}`);if(o=o<<e|c,s+e>32)throw new Error(`convertRadix2: carry overflow pos=${s} from=${e}`);for(s+=e;s>=n;s-=n)a.push((o>>s-n&i)>>>0);o&=2**s-1}if(o=o<<n-s&i,!r&&s>=e)throw new Error("Excess padding");if(!r&&o)throw new Error(`Non-zero padding: ${o}`);return r&&s>0&&a.push(o>>>0),a}function jl(t){return Nt(t),{encode:e=>{if(!(e instanceof Uint8Array))throw new Error("radix.encode input should be Uint8Array");return Jo(Array.from(e),2**8,t)},decode:e=>{if(!Array.isArray(e)||e.length&&typeof e[0]!="number")throw new Error("radix.decode input should be array of strings");return Uint8Array.from(Jo(e,t,2**8))}}}function Ye(t,e=!1){if(Nt(t),t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(hn(8,t)>32||hn(t,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!(n instanceof Uint8Array))throw new Error("radix2.encode input should be Uint8Array");return xr(Array.from(n),8,t,!e)},decode:n=>{if(!Array.isArray(n)||n.length&&typeof n[0]!="number")throw new Error("radix2.decode input should be array of strings");return Uint8Array.from(xr(n,t,8,e))}}}function Go(t){if(typeof t!="function")throw new Error("unsafeWrapper fn should be function");return function(...e){try{return t.apply(null,e)}catch{}}}const Hl=Pe(Ye(4),Ue("0123456789ABCDEF"),Oe("")),zl=Pe(Ye(5),Ue("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),An(5),Oe(""));Pe(Ye(5),Ue("0123456789ABCDEFGHIJKLMNOPQRSTUV"),An(5),Oe(""));Pe(Ye(5),Ue("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),Oe(""),gi(t=>t.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1")));const ge=Pe(Ye(6),Ue("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),An(6),Oe("")),ql=Pe(Ye(6),Ue("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),An(6),Oe("")),Jr=t=>Pe(jl(58),Ue(t),Oe("")),Er=Jr("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");Jr("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ");Jr("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");const Yo=[0,2,3,5,6,7,9,10,11],Vl={encode(t){let e="";for(let n=0;n<t.length;n+=8){const r=t.subarray(n,n+8);e+=Er.encode(r).padStart(Yo[r.length],"1")}return e},decode(t){let e=[];for(let n=0;n<t.length;n+=11){const r=t.slice(n,n+11),o=Yo.indexOf(r.length),s=Er.decode(r);for(let i=0;i<s.length-o;i++)if(s[i]!==0)throw new Error("base58xmr: wrong padding");e=e.concat(Array.from(s.slice(s.length-o)))}return Uint8Array.from(e)}},kr=Pe(Ue("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),Oe("")),Xo=[996825010,642813549,513874426,1027748829,705979059];function Lt(t){const e=t>>25;let n=(t&33554431)<<5;for(let r=0;r<Xo.length;r++)(e>>r&1)===1&&(n^=Xo[r]);return n}function Qo(t,e,n=1){const r=t.length;let o=1;for(let s=0;s<r;s++){const i=t.charCodeAt(s);if(i<33||i>126)throw new Error(`Invalid prefix (${t})`);o=Lt(o)^i>>5}o=Lt(o);for(let s=0;s<r;s++)o=Lt(o)^t.charCodeAt(s)&31;for(let s of e)o=Lt(o)^s;for(let s=0;s<6;s++)o=Lt(o);return o^=n,kr.encode(xr([o%2**30],30,5,!1))}function bi(t){const e=t==="bech32"?1:734539939,n=Ye(5),r=n.decode,o=n.encode,s=Go(r);function i(d,u,m=90){if(typeof d!="string")throw new Error(`bech32.encode prefix should be string, not ${typeof d}`);if(!Array.isArray(u)||u.length&&typeof u[0]!="number")throw new Error(`bech32.encode words should be array of numbers, not ${typeof u}`);const f=d.length+7+u.length;if(m!==!1&&f>m)throw new TypeError(`Length ${f} exceeds limit ${m}`);return d=d.toLowerCase(),`${d}1${kr.encode(u)}${Qo(d,u,e)}`}function a(d,u=90){if(typeof d!="string")throw new Error(`bech32.decode input should be string, not ${typeof d}`);if(d.length<8||u!==!1&&d.length>u)throw new TypeError(`Wrong string length: ${d.length} (${d}). Expected (8..${u})`);const m=d.toLowerCase();if(d!==m&&d!==d.toUpperCase())throw new Error("String must be lowercase or uppercase");d=m;const f=d.lastIndexOf("1");if(f===0||f===-1)throw new Error('Letter "1" must be present between prefix and data only');const p=d.slice(0,f),h=d.slice(f+1);if(h.length<6)throw new Error("Data must be at least 6 characters long");const y=kr.decode(h).slice(0,-6),v=Qo(p,y,e);if(!h.endsWith(v))throw new Error(`Invalid checksum in ${d}: expected "${v}"`);return{prefix:p,words:y}}const c=Go(a);function l(d){const{prefix:u,words:m}=a(d,!1);return{prefix:u,words:m,bytes:r(m)}}return{encode:i,decode:a,decodeToBytes:l,decodeUnsafe:c,fromWords:r,fromWordsUnsafe:s,toWords:o}}const kt=bi("bech32");bi("bech32m");const Fl={encode:t=>new TextDecoder().decode(t),decode:t=>new TextEncoder().encode(t)},Wl=Pe(Ye(4),Ue("0123456789abcdef"),Oe(""),gi(t=>{if(typeof t!="string"||t.length%2)throw new TypeError(`hex.decode: expected string, got ${typeof t} with length ${t.length}`);return t.toLowerCase()})),Zl={utf8:Fl,hex:Wl,base16:Hl,base32:zl,base64:ge,base64url:ql,base58:Er,base58xmr:Vl};`${Object.keys(Zl).join(", ")}`;function Wn(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`positive integer expected, not ${t}`)}function es(t){if(typeof t!="boolean")throw new Error(`boolean expected, not ${t}`)}function Jl(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function Ae(t,...e){if(!Jl(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${t.length}`)}/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */const ne=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),Gl=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Gl)throw new Error("Non little-endian hardware is not supported");const Yl=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function mt(t){Ae(t);let e="";for(let n=0;n<t.length;n++)e+=Yl[t[n]];return e}const Ce={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function ts(t){if(t>=Ce._0&&t<=Ce._9)return t-Ce._0;if(t>=Ce._A&&t<=Ce._F)return t-(Ce._A-10);if(t>=Ce._a&&t<=Ce._f)return t-(Ce._a-10)}function wi(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length,n=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=ts(t.charCodeAt(s)),a=ts(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function Xl(t,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(t,e)}function vi(t,e){if(t.length!==e.length)return!1;let n=0;for(let r=0;r<t.length;r++)n|=t[r]^e[r];return n===0}const Ql=(t,e)=>(Object.assign(e,t),e),Je=16,eu=283;function Gr(t){return t<<1^eu&-(t>>7)}function wt(t,e){let n=0;for(;e>0;e>>=1)n^=t&-(e&1),t=Gr(t);return n}const _r=(()=>{let t=new Uint8Array(256);for(let n=0,r=1;n<256;n++,r^=Gr(r))t[n]=r;const e=new Uint8Array(256);e[0]=99;for(let n=0;n<255;n++){let r=t[255-n];r|=r<<8,e[t[n]]=(r^r>>4^r>>5^r>>6^r>>7^99)&255}return e})(),tu=_r.map((t,e)=>_r.indexOf(e)),nu=t=>t<<24|t>>>8,Zn=t=>t<<8|t>>>24;function xi(t,e){if(t.length!==256)throw new Error("Wrong sbox length");const n=new Uint32Array(256).map((l,d)=>e(t[d])),r=n.map(Zn),o=r.map(Zn),s=o.map(Zn),i=new Uint32Array(256*256),a=new Uint32Array(256*256),c=new Uint16Array(256*256);for(let l=0;l<256;l++)for(let d=0;d<256;d++){const u=l*256+d;i[u]=n[l]^r[d],a[u]=o[l]^s[d],c[u]=t[l]<<8|t[d]}return{sbox:t,sbox2:c,T0:n,T1:r,T2:o,T3:s,T01:i,T23:a}}const Yr=xi(_r,t=>wt(t,3)<<24|t<<16|t<<8|wt(t,2)),Ei=xi(tu,t=>wt(t,11)<<24|wt(t,13)<<16|wt(t,9)<<8|wt(t,14)),ru=(()=>{const t=new Uint8Array(16);for(let e=0,n=1;e<16;e++,n=Gr(n))t[e]=n;return t})();function ki(t){Ae(t);const e=t.length;if(![16,24,32].includes(e))throw new Error(`aes: wrong key size: should be 16, 24 or 32, got: ${e}`);const{sbox2:n}=Yr,r=ne(t),o=r.length,s=a=>Se(n,a,a,a,a),i=new Uint32Array(e+28);i.set(r);for(let a=o;a<i.length;a++){let c=i[a-1];a%o===0?c=s(nu(c))^ru[a/o-1]:o>6&&a%o===4&&(c=s(c)),i[a]=i[a-o]^c}return i}function ou(t){const e=ki(t),n=e.slice(),r=e.length,{sbox2:o}=Yr,{T0:s,T1:i,T2:a,T3:c}=Ei;for(let l=0;l<r;l+=4)for(let d=0;d<4;d++)n[l+d]=e[r-l-4+d];e.fill(0);for(let l=4;l<r-4;l++){const d=n[l],u=Se(o,d,d,d,d);n[l]=s[u&255]^i[u>>>8&255]^a[u>>>16&255]^c[u>>>24]}return n}function Ze(t,e,n,r,o,s){return t[n<<8&65280|r>>>8&255]^e[o>>>8&65280|s>>>24&255]}function Se(t,e,n,r,o){return t[e&255|n&65280]|t[r>>>16&255|o>>>16&65280]<<16}function ns(t,e,n,r,o){const{sbox2:s,T01:i,T23:a}=Yr;let c=0;e^=t[c++],n^=t[c++],r^=t[c++],o^=t[c++];const l=t.length/4-2;for(let p=0;p<l;p++){const h=t[c++]^Ze(i,a,e,n,r,o),y=t[c++]^Ze(i,a,n,r,o,e),v=t[c++]^Ze(i,a,r,o,e,n),E=t[c++]^Ze(i,a,o,e,n,r);e=h,n=y,r=v,o=E}const d=t[c++]^Se(s,e,n,r,o),u=t[c++]^Se(s,n,r,o,e),m=t[c++]^Se(s,r,o,e,n),f=t[c++]^Se(s,o,e,n,r);return{s0:d,s1:u,s2:m,s3:f}}function su(t,e,n,r,o){const{sbox2:s,T01:i,T23:a}=Ei;let c=0;e^=t[c++],n^=t[c++],r^=t[c++],o^=t[c++];const l=t.length/4-2;for(let p=0;p<l;p++){const h=t[c++]^Ze(i,a,e,o,r,n),y=t[c++]^Ze(i,a,n,e,o,r),v=t[c++]^Ze(i,a,r,n,e,o),E=t[c++]^Ze(i,a,o,r,n,e);e=h,n=y,r=v,o=E}const d=t[c++]^Se(s,e,o,r,n),u=t[c++]^Se(s,n,e,o,r),m=t[c++]^Se(s,r,n,e,o),f=t[c++]^Se(s,o,r,n,e);return{s0:d,s1:u,s2:m,s3:f}}function _i(t,e){if(!e)return new Uint8Array(t);if(Ae(e),e.length<t)throw new Error(`aes: wrong destination length, expected at least ${t}, got: ${e.length}`);return e}function iu(t){if(Ae(t),t.length%Je!==0)throw new Error(`aes/(cbc-ecb).decrypt ciphertext should consist of blocks with size ${Je}`)}function au(t,e,n){let r=t.length;const o=r%Je;if(!e&&o!==0)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");const s=ne(t);if(e){let c=Je-o;c||(c=Je),r=r+c}const i=_i(r,n),a=ne(i);return{b:s,o:a,out:i}}function cu(t,e){if(!e)return t;const n=t.length;if(!n)throw new Error("aes/pcks5: empty ciphertext not allowed");const r=t[n-1];if(r<=0||r>16)throw new Error(`aes/pcks5: wrong padding byte: ${r}`);const o=t.subarray(0,-r);for(let s=0;s<r;s++)if(t[n-s-1]!==r)throw new Error("aes/pcks5: wrong padding");return o}function lu(t){const e=new Uint8Array(16),n=ne(e);e.set(t);const r=Je-t.length;for(let o=Je-r;o<Je;o++)e[o]=r;return n}const Ai=Ql({blockSize:16,nonceLength:16},function(e,n,r={}){Ae(e),Ae(n,16);const o=!r.disablePadding;return{encrypt:(s,i)=>{const a=ki(e),{b:c,o:l,out:d}=au(s,o,i),u=ne(n);let m=u[0],f=u[1],p=u[2],h=u[3],y=0;for(;y+4<=c.length;)m^=c[y+0],f^=c[y+1],p^=c[y+2],h^=c[y+3],{s0:m,s1:f,s2:p,s3:h}=ns(a,m,f,p,h),l[y++]=m,l[y++]=f,l[y++]=p,l[y++]=h;if(o){const v=lu(s.subarray(y*4));m^=v[0],f^=v[1],p^=v[2],h^=v[3],{s0:m,s1:f,s2:p,s3:h}=ns(a,m,f,p,h),l[y++]=m,l[y++]=f,l[y++]=p,l[y++]=h}return a.fill(0),d},decrypt:(s,i)=>{iu(s);const a=ou(e),c=ne(n),l=_i(s.length,i),d=ne(s),u=ne(l);let m=c[0],f=c[1],p=c[2],h=c[3];for(let y=0;y+4<=d.length;){const v=m,E=f,S=p,O=h;m=d[y+0],f=d[y+1],p=d[y+2],h=d[y+3];const{s0:M,s1:_,s2:N,s3:L}=su(a,m,f,p,h);u[y++]=M^v,u[y++]=_^E,u[y++]=N^S,u[y++]=L^O}return a.fill(0),cu(l,o)}}}),Si=t=>Uint8Array.from(t.split("").map(e=>e.charCodeAt(0))),uu=Si("expand 16-byte k"),du=Si("expand 32-byte k"),hu=ne(uu),Ni=ne(du);Ni.slice();function V(t,e){return t<<e|t>>>32-e}function Ar(t){return t.byteOffset%4===0}const Ft=64,fu=16,Ci=2**32-1,rs=new Uint32Array;function mu(t,e,n,r,o,s,i,a){const c=o.length,l=new Uint8Array(Ft),d=ne(l),u=Ar(o)&&Ar(s),m=u?ne(o):rs,f=u?ne(s):rs;for(let p=0;p<c;i++){if(t(e,n,r,d,i,a),i>=Ci)throw new Error("arx: counter overflow");const h=Math.min(Ft,c-p);if(u&&h===Ft){const y=p/4;if(p%4!==0)throw new Error("arx: invalid block position");for(let v=0,E;v<fu;v++)E=y+v,f[E]=m[E]^d[v];p+=Ft;continue}for(let y=0,v;y<h;y++)v=p+y,s[v]=o[v]^l[y];p+=h}}function pu(t,e){const{allowShortKeys:n,extendNonceFn:r,counterLength:o,counterRight:s,rounds:i}=Xl({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return Wn(o),Wn(i),es(s),es(n),(a,c,l,d,u=0)=>{Ae(a),Ae(c),Ae(l);const m=l.length;if(d||(d=new Uint8Array(m)),Ae(d),Wn(u),u<0||u>=Ci)throw new Error("arx: counter overflow");if(d.length<m)throw new Error(`arx: output (${d.length}) is shorter than data (${m})`);const f=[];let p=a.length,h,y;if(p===32)h=a.slice(),f.push(h),y=Ni;else if(p===16&&n)h=new Uint8Array(32),h.set(a),h.set(a,16),y=hu,f.push(h);else throw new Error(`arx: invalid 32-byte key, got length=${p}`);Ar(c)||(c=c.slice(),f.push(c));const v=ne(h);if(r){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");r(y,v,ne(c.subarray(0,16)),v),c=c.subarray(16)}const E=16-o;if(E!==c.length)throw new Error(`arx: nonce must be ${E} or 16 bytes`);if(E!==12){const O=new Uint8Array(12);O.set(c,s?0:12-c.length),c=O,f.push(c)}const S=ne(c);for(mu(t,y,v,S,l,d,u,i);f.length>0;)f.pop().fill(0);return d}}function gu(t,e,n,r,o,s=20){let i=t[0],a=t[1],c=t[2],l=t[3],d=e[0],u=e[1],m=e[2],f=e[3],p=e[4],h=e[5],y=e[6],v=e[7],E=o,S=n[0],O=n[1],M=n[2],_=i,N=a,L=c,K=l,T=d,P=u,D=m,U=f,k=p,w=h,x=y,A=v,I=E,C=S,R=O,B=M;for(let H=0;H<s;H+=2)_=_+T|0,I=V(I^_,16),k=k+I|0,T=V(T^k,12),_=_+T|0,I=V(I^_,8),k=k+I|0,T=V(T^k,7),N=N+P|0,C=V(C^N,16),w=w+C|0,P=V(P^w,12),N=N+P|0,C=V(C^N,8),w=w+C|0,P=V(P^w,7),L=L+D|0,R=V(R^L,16),x=x+R|0,D=V(D^x,12),L=L+D|0,R=V(R^L,8),x=x+R|0,D=V(D^x,7),K=K+U|0,B=V(B^K,16),A=A+B|0,U=V(U^A,12),K=K+U|0,B=V(B^K,8),A=A+B|0,U=V(U^A,7),_=_+P|0,B=V(B^_,16),x=x+B|0,P=V(P^x,12),_=_+P|0,B=V(B^_,8),x=x+B|0,P=V(P^x,7),N=N+D|0,I=V(I^N,16),A=A+I|0,D=V(D^A,12),N=N+D|0,I=V(I^N,8),A=A+I|0,D=V(D^A,7),L=L+U|0,C=V(C^L,16),k=k+C|0,U=V(U^k,12),L=L+U|0,C=V(C^L,8),k=k+C|0,U=V(U^k,7),K=K+T|0,R=V(R^K,16),w=w+R|0,T=V(T^w,12),K=K+T|0,R=V(R^K,8),w=w+R|0,T=V(T^w,7);let $=0;r[$++]=i+_|0,r[$++]=a+N|0,r[$++]=c+L|0,r[$++]=l+K|0,r[$++]=d+T|0,r[$++]=u+P|0,r[$++]=m+D|0,r[$++]=f+U|0,r[$++]=p+k|0,r[$++]=h+w|0,r[$++]=y+x|0,r[$++]=v+A|0,r[$++]=E+I|0,r[$++]=S+C|0,r[$++]=O+R|0,r[$++]=M+B|0}const Sn=pu(gu,{counterRight:!1,counterLength:4,allowShortKeys:!1});class Bi extends hi{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,_e.hash(e);const r=Dt(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(e){return _e.exists(this),this.iHash.update(e),this}digestInto(e){_e.exists(this),_e.bytes(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const zt=(t,e,n)=>new Bi(t,e).update(n).digest();zt.create=(t,e)=>new Bi(t,e);function Li(t,e,n){return _e.hash(t),zt(t,Dt(n),Dt(e))}const Jn=new Uint8Array([0]),os=new Uint8Array;function Ii(t,e,n,r=32){if(_e.hash(t),_e.number(r),r>255*t.outputLen)throw new Error("Length should be <= 255*HashLen");const o=Math.ceil(r/t.outputLen);n===void 0&&(n=os);const s=new Uint8Array(o*t.outputLen),i=zt.create(t,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)Jn[0]=l+1,a.update(l===0?os:c).update(n).update(Jn).digestInto(c),s.set(c,t.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),Jn.fill(0),s.slice(0,r)}var yu=Object.defineProperty,W=(t,e)=>{for(var n in e)yu(t,n,{get:e[n],enumerable:!0})},pt=Symbol("verified"),bu=t=>t instanceof Object;function Xr(t){if(!bu(t)||typeof t.kind!="number"||typeof t.content!="string"||typeof t.created_at!="number"||typeof t.pubkey!="string"||!t.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(t.tags))return!1;for(let e=0;e<t.tags.length;e++){let n=t.tags[e];if(!Array.isArray(n))return!1;for(let r=0;r<n.length;r++)if(typeof n[r]!="string")return!1}return!0}var wu={};W(wu,{Queue:()=>ku,QueueNode:()=>Ri,binarySearch:()=>Qr,bytesToHex:()=>Y,hexToBytes:()=>lt,insertEventIntoAscendingList:()=>Eu,insertEventIntoDescendingList:()=>xu,normalizeURL:()=>vu,utf8Decoder:()=>Te,utf8Encoder:()=>ye});var Te=new TextDecoder("utf-8"),ye=new TextEncoder;function vu(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}function xu(t,e){const[n,r]=Qr(t,o=>e.id===o.id?0:e.created_at===o.created_at?-1:o.created_at-e.created_at);return r||t.splice(n,0,e),t}function Eu(t,e){const[n,r]=Qr(t,o=>e.id===o.id?0:e.created_at===o.created_at?-1:e.created_at-o.created_at);return r||t.splice(n,0,e),t}function Qr(t,e){let n=0,r=t.length-1;for(;n<=r;){const o=Math.floor((n+r)/2),s=e(t[o]);if(s===0)return[o,!0];s<0?r=o-1:n=o+1}return[n,!1]}var Ri=class{constructor(e){g(this,"value");g(this,"next",null);g(this,"prev",null);this.value=e}},ku=class{constructor(){g(this,"first");g(this,"last");this.first=null,this.last=null}enqueue(e){const n=new Ri(e);return this.last?this.last===this.first?(this.last=n,this.last.prev=this.first,this.first.next=n):(n.prev=this.last,this.last.next=n,this.last=n):(this.first=n,this.last=n),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const n=this.first;return this.first=null,this.last=null,n.value}const e=this.first;return this.first=e.next,this.first&&(this.first.prev=null),e.value}},_u=class{generateSecretKey(){return ke.utils.randomPrivateKey()}getPublicKey(e){return Y(ke.getPublicKey(e))}finalizeEvent(e,n){const r=e;return r.pubkey=Y(ke.getPublicKey(n)),r.id=tn(r),r.sig=Y(ke.sign(tn(r),n)),r[pt]=!0,r}verifyEvent(e){if(typeof e[pt]=="boolean")return e[pt];const n=tn(e);if(n!==e.id)return e[pt]=!1,!1;try{const r=ke.verify(e.sig,n,e.pubkey);return e[pt]=r,r}catch{return e[pt]=!1,!1}}};function Au(t){if(!Xr(t))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content])}function tn(t){let e=be(ye.encode(Au(t)));return Y(e)}var Nn=new _u,eo=Nn.generateSecretKey,Cn=Nn.getPublicKey,we=Nn.finalizeEvent,to=Nn.verifyEvent,Su={};W(Su,{Application:()=>Md,BadgeAward:()=>Tu,BadgeDefinition:()=>Id,BlockedRelaysList:()=>fd,BlossomServerList:()=>vd,BookmarkList:()=>ud,Bookmarksets:()=>Cd,Calendar:()=>Vd,CalendarEventRSVP:()=>Fd,ChannelCreation:()=>Mi,ChannelHideMessage:()=>ji,ChannelMessage:()=>Ki,ChannelMetadata:()=>Di,ChannelMuteUser:()=>Hi,ChatMessage:()=>Pu,ClassifiedListing:()=>jd,ClientAuth:()=>qi,Comment:()=>qu,CommunitiesList:()=>dd,CommunityDefinition:()=>Gd,CommunityPostApproval:()=>Xu,Contacts:()=>Iu,CreateOrUpdateProduct:()=>Td,CreateOrUpdateStall:()=>$d,Curationsets:()=>Bd,Date:()=>zd,DirectMessageRelaysList:()=>bd,DraftClassifiedListing:()=>Hd,DraftLong:()=>Ud,Emojisets:()=>Od,EncryptedDirectMessage:()=>Ru,EventDeletion:()=>$u,FavoriteRelays:()=>pd,FileMessage:()=>Ou,FileMetadata:()=>zu,FileServerPreference:()=>wd,Followsets:()=>Ad,ForumThread:()=>Uu,GenericRepost:()=>io,Genericlists:()=>Sd,GiftWrap:()=>zi,GroupMetadata:()=>Yd,HTTPAuth:()=>ao,Handlerinformation:()=>Jd,Handlerrecommendation:()=>Zd,Highlights:()=>sd,InterestsList:()=>gd,Interestsets:()=>Rd,JobFeedback:()=>td,JobRequest:()=>Qu,JobResult:()=>ed,Label:()=>Yu,LightningPubRPC:()=>Ed,LiveChatMessage:()=>Vu,LiveEvent:()=>Dd,LongFormArticle:()=>Pd,Metadata:()=>Bu,Mutelist:()=>ad,NWCWalletInfo:()=>xd,NWCWalletRequest:()=>Vi,NWCWalletResponse:()=>kd,NormalVideo:()=>Du,NostrConnect:()=>_d,OpenTimestamps:()=>ju,Photo:()=>Mu,Pinlist:()=>cd,Poll:()=>Hu,PollResponse:()=>id,PrivateDirectMessage:()=>Oi,ProblemTracker:()=>Zu,ProfileBadges:()=>Ld,PublicChatsList:()=>hd,Reaction:()=>so,RecommendRelay:()=>Lu,RelayList:()=>ld,RelayReview:()=>Wd,Relaysets:()=>Nd,Report:()=>Ju,Reporting:()=>Gu,Repost:()=>oo,Seal:()=>Ui,SearchRelaysList:()=>md,ShortTextNote:()=>Pi,ShortVideo:()=>Ku,Time:()=>qd,UserEmojiList:()=>yd,UserStatuses:()=>Kd,Voice:()=>Fu,VoiceComment:()=>Wu,Zap:()=>od,ZapGoal:()=>nd,ZapRequest:()=>rd,classifyKind:()=>Nu,isAddressableKind:()=>ro,isEphemeralKind:()=>Ti,isKind:()=>Cu,isRegularKind:()=>$i,isReplaceableKind:()=>no});function $i(t){return t<1e4&&t!==0&&t!==3}function no(t){return t===0||t===3||1e4<=t&&t<2e4}function Ti(t){return 2e4<=t&&t<3e4}function ro(t){return 3e4<=t&&t<4e4}function Nu(t){return $i(t)?"regular":no(t)?"replaceable":Ti(t)?"ephemeral":ro(t)?"parameterized":"unknown"}function Cu(t,e){const n=e instanceof Array?e:[e];return Xr(t)&&n.includes(t.kind)||!1}var Bu=0,Pi=1,Lu=2,Iu=3,Ru=4,$u=5,oo=6,so=7,Tu=8,Pu=9,Uu=11,Ui=13,Oi=14,Ou=15,io=16,Mu=20,Du=21,Ku=22,Mi=40,Di=41,Ki=42,ji=43,Hi=44,ju=1040,zi=1059,Hu=1068,zu=1063,qu=1111,Vu=1311,Fu=1222,Wu=1244,Zu=1971,Ju=1984,Gu=1984,Yu=1985,Xu=4550,Qu=5999,ed=6999,td=7e3,nd=9041,rd=9734,od=9735,sd=9802,id=1018,ad=1e4,cd=10001,ld=10002,ud=10003,dd=10004,hd=10005,fd=10006,md=10007,pd=10012,gd=10015,yd=10030,bd=10050,wd=10096,vd=10063,xd=13194,Ed=21e3,qi=22242,Vi=23194,kd=23195,_d=24133,ao=27235,Ad=3e4,Sd=30001,Nd=30002,Cd=30003,Bd=30004,Ld=30008,Id=30009,Rd=30015,$d=30017,Td=30018,Pd=30023,Ud=30024,Od=30030,Md=30078,Dd=30311,Kd=30315,jd=30402,Hd=30403,zd=31922,qd=31923,Vd=31924,Fd=31925,Wd=31987,Zd=31989,Jd=31990,Gd=34550,Yd=39e3,Xd={};W(Xd,{getHex64:()=>co,getInt:()=>Fi,getSubscriptionId:()=>Qd,matchEventId:()=>eh,matchEventKind:()=>nh,matchEventPubkey:()=>th});function co(t,e){let n=e.length+3,r=t.indexOf(`"${e}":`)+n,o=t.slice(r).indexOf('"')+r+1;return t.slice(o,o+64)}function Fi(t,e){let n=e.length,r=t.indexOf(`"${e}":`)+n+3,o=t.slice(r),s=Math.min(o.indexOf(","),o.indexOf("}"));return parseInt(o.slice(0,s),10)}function Qd(t){let e=t.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let n=t.slice(e+7+1).indexOf('"');if(n===-1)return null;let r=e+7+1+n,o=t.slice(r+1,80).indexOf('"');if(o===-1)return null;let s=r+1+o;return t.slice(r+1,s)}function eh(t,e){return e===co(t,"id")}function th(t,e){return e===co(t,"pubkey")}function nh(t,e){return e===Fi(t,"kind")}var rh={};W(rh,{makeAuthEvent:()=>oh});function oh(t,e){return{kind:qi,created_at:Math.floor(Date.now()/1e3),tags:[["relay",t],["challenge",e]],content:""}}var sh;try{sh=WebSocket}catch{}var ih;try{ih=WebSocket}catch{}var vt={};W(vt,{BECH32_REGEX:()=>Wi,Bech32MaxSize:()=>lo,NostrTypeGuard:()=>ah,decode:()=>Bn,decodeNostrURI:()=>lh,encodeBytes:()=>In,naddrEncode:()=>ph,neventEncode:()=>mh,noteEncode:()=>hh,nprofileEncode:()=>fh,npubEncode:()=>dh,nsecEncode:()=>uh});var ah={isNProfile:t=>/^nprofile1[a-z\d]+$/.test(t||""),isNEvent:t=>/^nevent1[a-z\d]+$/.test(t||""),isNAddr:t=>/^naddr1[a-z\d]+$/.test(t||""),isNSec:t=>/^nsec1[a-z\d]{58}$/.test(t||""),isNPub:t=>/^npub1[a-z\d]{58}$/.test(t||""),isNote:t=>/^note1[a-z\d]+$/.test(t||""),isNcryptsec:t=>/^ncryptsec1[a-z\d]+$/.test(t||"")},lo=5e3,Wi=/[\x21-\x7E]{1,83}1[023456789acdefghjklmnpqrstuvwxyz]{6,}/;function ch(t){const e=new Uint8Array(4);return e[0]=t>>24&255,e[1]=t>>16&255,e[2]=t>>8&255,e[3]=t&255,e}function lh(t){try{return t.startsWith("nostr:")&&(t=t.substring(6)),Bn(t)}catch{return{type:"invalid",data:null}}}function Bn(t){var o,s,i,a,c,l,d;let{prefix:e,words:n}=kt.decode(t,lo),r=new Uint8Array(kt.fromWords(n));switch(e){case"nprofile":{let u=Gn(r);if(!((o=u[0])!=null&&o[0]))throw new Error("missing TLV 0 for nprofile");if(u[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");return{type:"nprofile",data:{pubkey:Y(u[0][0]),relays:u[1]?u[1].map(m=>Te.decode(m)):[]}}}case"nevent":{let u=Gn(r);if(!((s=u[0])!=null&&s[0]))throw new Error("missing TLV 0 for nevent");if(u[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");if(u[2]&&u[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(u[3]&&u[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"nevent",data:{id:Y(u[0][0]),relays:u[1]?u[1].map(m=>Te.decode(m)):[],author:(i=u[2])!=null&&i[0]?Y(u[2][0]):void 0,kind:(a=u[3])!=null&&a[0]?parseInt(Y(u[3][0]),16):void 0}}}case"naddr":{let u=Gn(r);if(!((c=u[0])!=null&&c[0]))throw new Error("missing TLV 0 for naddr");if(!((l=u[2])!=null&&l[0]))throw new Error("missing TLV 2 for naddr");if(u[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(!((d=u[3])!=null&&d[0]))throw new Error("missing TLV 3 for naddr");if(u[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"naddr",data:{identifier:Te.decode(u[0][0]),pubkey:Y(u[2][0]),kind:parseInt(Y(u[3][0]),16),relays:u[1]?u[1].map(m=>Te.decode(m)):[]}}}case"nsec":return{type:e,data:r};case"npub":case"note":return{type:e,data:Y(r)};default:throw new Error(`unknown prefix ${e}`)}}function Gn(t){let e={},n=t;for(;n.length>0;){let r=n[0],o=n[1],s=n.slice(2,2+o);if(n=n.slice(2+o),s.length<o)throw new Error(`not enough data to read on TLV ${r}`);e[r]=e[r]||[],e[r].push(s)}return e}function uh(t){return In("nsec",t)}function dh(t){return In("npub",lt(t))}function hh(t){return In("note",lt(t))}function Ln(t,e){let n=kt.toWords(e);return kt.encode(t,n,lo)}function In(t,e){return Ln(t,e)}function fh(t){let e=uo({0:[lt(t.pubkey)],1:(t.relays||[]).map(n=>ye.encode(n))});return Ln("nprofile",e)}function mh(t){let e;t.kind!==void 0&&(e=ch(t.kind));let n=uo({0:[lt(t.id)],1:(t.relays||[]).map(r=>ye.encode(r)),2:t.author?[lt(t.author)]:[],3:e?[new Uint8Array(e)]:[]});return Ln("nevent",n)}function ph(t){let e=new ArrayBuffer(4);new DataView(e).setUint32(0,t.kind,!1);let n=uo({0:[ye.encode(t.identifier)],1:(t.relays||[]).map(r=>ye.encode(r)),2:[lt(t.pubkey)],3:[new Uint8Array(e)]});return Ln("naddr",n)}function uo(t){let e=[];return Object.entries(t).reverse().forEach(([n,r])=>{r.forEach(o=>{let s=new Uint8Array(o.length+2);s.set([parseInt(n)],0),s.set([o.length],1),s.set(o,2),e.push(s)})}),dt(...e)}var gh={};W(gh,{decrypt:()=>yh,encrypt:()=>Zi});function Zi(t,e,n){const r=t instanceof Uint8Array?Y(t):t,o=ut.getSharedSecret(r,"02"+e),s=Ji(o);let i=Uint8Array.from(Zr(16)),a=ye.encode(n),c=Ai(s,i).encrypt(a),l=ge.encode(new Uint8Array(c)),d=ge.encode(new Uint8Array(i.buffer));return`${l}?iv=${d}`}function yh(t,e,n){const r=t instanceof Uint8Array?Y(t):t;let[o,s]=n.split("?iv="),i=ut.getSharedSecret(r,"02"+e),a=Ji(i),c=ge.decode(s),l=ge.decode(o),d=Ai(a,c).decrypt(l);return Te.decode(d)}function Ji(t){return t.slice(1,33)}var bh={};W(bh,{NIP05_REGEX:()=>ho,isNip05:()=>wh,isValid:()=>Eh,queryProfile:()=>Gi,searchDomain:()=>xh,useFetchImplementation:()=>vh});var ho=/^(?:([\w.+-]+)@)?([\w_-]+(\.[\w_-]+)+)$/,wh=t=>ho.test(t||""),Rn;try{Rn=fetch}catch{}function vh(t){Rn=t}async function xh(t,e=""){try{const n=`https://${t}/.well-known/nostr.json?name=${e}`,r=await Rn(n,{redirect:"manual"});if(r.status!==200)throw Error("Wrong response code");return(await r.json()).names}catch{return{}}}async function Gi(t){var o;const e=t.match(ho);if(!e)return null;const[,n="_",r]=e;try{const s=`https://${r}/.well-known/nostr.json?name=${n}`,i=await Rn(s,{redirect:"manual"});if(i.status!==200)throw Error("Wrong response code");const a=await i.json(),c=a.names[n];return c?{pubkey:c,relays:(o=a.relays)==null?void 0:o[c]}:null}catch{return null}}async function Eh(t,e){const n=await Gi(e);return n?n.pubkey===t:!1}var kh={};W(kh,{parse:()=>_h});function _h(t){const e={reply:void 0,root:void 0,mentions:[],profiles:[],quotes:[]};let n,r;for(let o=t.tags.length-1;o>=0;o--){const s=t.tags[o];if(s[0]==="e"&&s[1]){const[i,a,c,l,d]=s,u={id:a,relays:c?[c]:[],author:d};if(l==="root"){e.root=u;continue}if(l==="reply"){e.reply=u;continue}if(l==="mention"){e.mentions.push(u);continue}n?r=u:n=u,e.mentions.push(u);continue}if(s[0]==="q"&&s[1]){const[i,a,c]=s;e.quotes.push({id:a,relays:c?[c]:[]})}if(s[0]==="p"&&s[1]){e.profiles.push({pubkey:s[1],relays:s[2]?[s[2]]:[]});continue}}return e.root||(e.root=r||n||e.reply),e.reply||(e.reply=n||e.root),[e.reply,e.root].forEach(o=>{if(!o)return;let s=e.mentions.indexOf(o);if(s!==-1&&e.mentions.splice(s,1),o.author){let i=e.profiles.find(a=>a.pubkey===o.author);i&&i.relays&&(o.relays||(o.relays=[]),i.relays.forEach(a=>{var c;((c=o.relays)==null?void 0:c.indexOf(a))===-1&&o.relays.push(a)}),i.relays=o.relays)}}),e.mentions.forEach(o=>{if(o.author){let s=e.profiles.find(i=>i.pubkey===o.author);s&&s.relays&&(o.relays||(o.relays=[]),s.relays.forEach(i=>{o.relays.indexOf(i)===-1&&o.relays.push(i)}),s.relays=o.relays)}}),e}var Ah={};W(Ah,{fetchRelayInformation:()=>Nh,useFetchImplementation:()=>Sh});var Yi;try{Yi=fetch}catch{}function Sh(t){Yi=t}async function Nh(t){return await(await fetch(t.replace("ws://","http://").replace("wss://","https://"),{headers:{Accept:"application/nostr+json"}})).json()}var Ch={};W(Ch,{fastEventHash:()=>Qi,getPow:()=>Xi,minePow:()=>Bh});function Xi(t){let e=0;for(let n=0;n<64;n+=8){const r=parseInt(t.substring(n,n+8),16);if(r===0)e+=32;else{e+=Math.clz32(r);break}}return e}function Bh(t,e){let n=0;const r=t,o=["nonce",n.toString(),e.toString()];for(r.tags.push(o);;){const s=Math.floor(new Date().getTime()/1e3);if(s!==r.created_at&&(n=0,r.created_at=s),o[1]=(++n).toString(),r.id=Qi(r),Xi(r.id)>=e)break}return r}function Qi(t){return Y(be(ye.encode(JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content]))))}var Lh={};W(Lh,{unwrapEvent:()=>Hh,unwrapManyEvents:()=>zh,wrapEvent:()=>ha,wrapManyEvents:()=>jh});var Ih={};W(Ih,{createRumor:()=>ca,createSeal:()=>la,createWrap:()=>ua,unwrapEvent:()=>yo,unwrapManyEvents:()=>da,wrapEvent:()=>fn,wrapManyEvents:()=>Dh});var Rh={};W(Rh,{decrypt:()=>go,encrypt:()=>po,getConversationKey:()=>fo,v2:()=>Oh});var ea=1,ta=65535;function fo(t,e){const n=ut.getSharedSecret(t,"02"+e).subarray(1,33);return Li(be,n,"nip44-v2")}function na(t,e){const n=Ii(be,t,e,76);return{chacha_key:n.subarray(0,32),chacha_nonce:n.subarray(32,44),hmac_key:n.subarray(44,76)}}function mo(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("expected positive integer");if(t<=32)return 32;const e=1<<Math.floor(Math.log2(t-1))+1,n=e<=256?32:e/8;return n*(Math.floor((t-1)/n)+1)}function $h(t){if(!Number.isSafeInteger(t)||t<ea||t>ta)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");const e=new Uint8Array(2);return new DataView(e.buffer).setUint16(0,t,!1),e}function Th(t){const e=ye.encode(t),n=e.length,r=$h(n),o=new Uint8Array(mo(n)-n);return dt(r,e,o)}function Ph(t){const e=new DataView(t.buffer).getUint16(0),n=t.subarray(2,2+e);if(e<ea||e>ta||n.length!==e||t.length!==2+mo(e))throw new Error("invalid padding");return Te.decode(n)}function ra(t,e,n){if(n.length!==32)throw new Error("AAD associated data must be 32 bytes");const r=dt(n,e);return zt(be,t,r)}function Uh(t){if(typeof t!="string")throw new Error("payload must be a valid string");const e=t.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(t[0]==="#")throw new Error("unknown encryption version");let n;try{n=ge.decode(t)}catch(s){throw new Error("invalid base64: "+s.message)}const r=n.length;if(r<99||r>65603)throw new Error("invalid data length: "+r);const o=n[0];if(o!==2)throw new Error("unknown encryption version "+o);return{nonce:n.subarray(1,33),ciphertext:n.subarray(33,-32),mac:n.subarray(-32)}}function po(t,e,n=Zr(32)){const{chacha_key:r,chacha_nonce:o,hmac_key:s}=na(e,n),i=Th(t),a=Sn(r,o,i),c=ra(s,a,n);return ge.encode(dt(new Uint8Array([2]),n,a,c))}function go(t,e){const{nonce:n,ciphertext:r,mac:o}=Uh(t),{chacha_key:s,chacha_nonce:i,hmac_key:a}=na(e,n),c=ra(a,r,n);if(!vi(c,o))throw new Error("invalid MAC");const l=Sn(s,i,r);return Ph(l)}var Oh={utils:{getConversationKey:fo,calcPaddedLen:mo},encrypt:po,decrypt:go},Mh=2880*60,oa=()=>Math.round(Date.now()/1e3),sa=()=>Math.round(oa()-Math.random()*Mh),ia=(t,e)=>fo(t,e),aa=(t,e,n)=>po(JSON.stringify(t),ia(e,n)),ss=(t,e)=>JSON.parse(go(t.content,ia(e,t.pubkey)));function ca(t,e){const n={created_at:oa(),content:"",tags:[],...t,pubkey:Cn(e)};return n.id=tn(n),n}function la(t,e,n){return we({kind:Ui,content:aa(t,e,n),created_at:sa(),tags:[]},e)}function ua(t,e){const n=eo();return we({kind:zi,content:aa(t,n,e),created_at:sa(),tags:[["p",e]]},n)}function fn(t,e,n){const r=ca(t,e),o=la(r,e,n);return ua(o,n)}function Dh(t,e,n){if(!n||n.length===0)throw new Error("At least one recipient is required.");const r=Cn(e),o=[fn(t,e,r)];return n.forEach(s=>{o.push(fn(t,e,s))}),o}function yo(t,e){const n=ss(t,e);return ss(n,e)}function da(t,e){let n=[];return t.forEach(r=>{n.push(yo(r,e))}),n.sort((r,o)=>r.created_at-o.created_at),n}function Kh(t,e,n,r){const o={created_at:Math.ceil(Date.now()/1e3),kind:Oi,tags:[],content:e};return(Array.isArray(t)?t:[t]).forEach(({publicKey:i,relayUrl:a})=>{o.tags.push(a?["p",i,a]:["p",i])}),r&&o.tags.push(["e",r.eventId,r.relayUrl||"","reply"]),n&&o.tags.push(["subject",n]),o}function ha(t,e,n,r,o){const s=Kh(e,n,r,o);return fn(s,t,e.publicKey)}function jh(t,e,n,r,o){if(!e||e.length===0)throw new Error("At least one recipient is required.");return[{publicKey:Cn(t)},...e].map(i=>ha(t,i,n,r,o))}var Hh=yo,zh=da,qh={};W(qh,{finishRepostEvent:()=>Vh,getRepostedEvent:()=>Fh,getRepostedEventPointer:()=>fa});function Vh(t,e,n,r){var i;let o;const s=[...t.tags??[],["e",e.id,n],["p",e.pubkey]];return e.kind===Pi?o=oo:(o=io,s.push(["k",String(e.kind)])),we({kind:o,tags:s,content:t.content===""||(i=e.tags)!=null&&i.find(a=>a[0]==="-")?"":JSON.stringify(e),created_at:t.created_at},r)}function fa(t){if(![oo,io].includes(t.kind))return;let e,n;for(let r=t.tags.length-1;r>=0&&(e===void 0||n===void 0);r--){const o=t.tags[r];o.length>=2&&(o[0]==="e"&&e===void 0?e=o:o[0]==="p"&&n===void 0&&(n=o))}if(e!==void 0)return{id:e[1],relays:[e[2],n==null?void 0:n[2]].filter(r=>typeof r=="string"),author:n==null?void 0:n[1]}}function Fh(t,{skipVerification:e}={}){const n=fa(t);if(n===void 0||t.content==="")return;let r;try{r=JSON.parse(t.content)}catch{return}if(r.id===n.id&&!(!e&&!to(r)))return r}var Wh={};W(Wh,{NOSTR_URI_REGEX:()=>bo,parse:()=>Jh,test:()=>Zh});var bo=new RegExp(`nostr:(${Wi.source})`);function Zh(t){return typeof t=="string"&&new RegExp(`^${bo.source}$`).test(t)}function Jh(t){const e=t.match(new RegExp(`^${bo.source}$`));if(!e)throw new Error(`Invalid Nostr URI: ${t}`);return{uri:e[0],value:e[1],decoded:Bn(e[1])}}var Gh={};W(Gh,{finishReactionEvent:()=>Yh,getReactedEventPointer:()=>Xh});function Yh(t,e,n){const r=e.tags.filter(o=>o.length>=2&&(o[0]==="e"||o[0]==="p"));return we({...t,kind:so,tags:[...t.tags??[],...r,["e",e.id],["p",e.pubkey]],content:t.content??"+"},n)}function Xh(t){if(t.kind!==so)return;let e,n;for(let r=t.tags.length-1;r>=0&&(e===void 0||n===void 0);r--){const o=t.tags[r];o.length>=2&&(o[0]==="e"&&e===void 0?e=o:o[0]==="p"&&n===void 0&&(n=o))}if(!(e===void 0||n===void 0))return{id:e[1],relays:[e[2],n[2]].filter(r=>r!==void 0),author:n[1]}}var Qh={};W(Qh,{parse:()=>tf});var is=/\W/m,as=/[^\w\/] |[^\w\/]$|$|,| /m,ef=42;function*tf(t){let e=[];if(typeof t!="string"){for(let s=0;s<t.tags.length;s++){const i=t.tags[s];i[0]==="emoji"&&i.length>=3&&e.push({type:"emoji",shortcode:i[1],url:i[2]})}t=t.content}const n=t.length;let r=0,o=0;e:for(;o<n;){const s=t.indexOf(":",o),i=t.indexOf("#",o);if(s===-1&&i===-1)break e;if(s===-1||i>=0&&i<s){if(i===0||t[i-1]===" "){const a=t.slice(i+1,i+ef).match(is),c=a?i+1+a.index:n;yield{type:"text",text:t.slice(r,i)},yield{type:"hashtag",value:t.slice(i+1,c)},o=c,r=o;continue e}o=i+1;continue e}if(t.slice(s-5,s)==="nostr"){const a=t.slice(s+60).match(is),c=a?s+60+a.index:n;try{let l,{data:d,type:u}=Bn(t.slice(s+1,c));switch(u){case"npub":l={pubkey:d};break;case"note":l={id:d};break;case"nsec":o=c+1;continue;default:l=d}r!==s-5&&(yield{type:"text",text:t.slice(r,s-5)}),yield{type:"reference",pointer:l},o=c,r=o;continue e}catch{o=s+1;continue e}}else if(t.slice(s-5,s)==="https"||t.slice(s-4,s)==="http"){const a=t.slice(s+4).match(as),c=a?s+4+a.index:n,l=t[s-1]==="s"?5:4;try{let d=new URL(t.slice(s-l,c));if(d.hostname.indexOf(".")===-1)throw new Error("invalid url");if(r!==s-l&&(yield{type:"text",text:t.slice(r,s-l)}),/\.(png|jpe?g|gif|webp|heic|svg)$/i.test(d.pathname)){yield{type:"image",url:d.toString()},o=c,r=o;continue e}if(/\.(mp4|avi|webm|mkv|mov)$/i.test(d.pathname)){yield{type:"video",url:d.toString()},o=c,r=o;continue e}if(/\.(mp3|aac|ogg|opus|wav|flac)$/i.test(d.pathname)){yield{type:"audio",url:d.toString()},o=c,r=o;continue e}yield{type:"url",url:d.toString()},o=c,r=o;continue e}catch{o=c+1;continue e}}else if(t.slice(s-3,s)==="wss"||t.slice(s-2,s)==="ws"){const a=t.slice(s+4).match(as),c=a?s+4+a.index:n,l=t[s-1]==="s"?3:2;try{let d=new URL(t.slice(s-l,c));if(d.hostname.indexOf(".")===-1)throw new Error("invalid ws url");r!==s-l&&(yield{type:"text",text:t.slice(r,s-l)}),yield{type:"relay",url:d.toString()},o=c,r=o;continue e}catch{o=c+1;continue e}}else{for(let a=0;a<e.length;a++){const c=e[a];if(t[s+c.shortcode.length+1]===":"&&t.slice(s+1,s+c.shortcode.length+1)===c.shortcode){r!==s&&(yield{type:"text",text:t.slice(r,s)}),yield c,o=s+c.shortcode.length+2,r=o;continue e}}o=s+1;continue e}}r!==n&&(yield{type:"text",text:t.slice(r)})}var nf={};W(nf,{channelCreateEvent:()=>rf,channelHideMessageEvent:()=>af,channelMessageEvent:()=>sf,channelMetadataEvent:()=>of,channelMuteUserEvent:()=>cf});var rf=(t,e)=>{let n;if(typeof t.content=="object")n=JSON.stringify(t.content);else if(typeof t.content=="string")n=t.content;else return;return we({kind:Mi,tags:[...t.tags??[]],content:n,created_at:t.created_at},e)},of=(t,e)=>{let n;if(typeof t.content=="object")n=JSON.stringify(t.content);else if(typeof t.content=="string")n=t.content;else return;return we({kind:Di,tags:[["e",t.channel_create_event_id],...t.tags??[]],content:n,created_at:t.created_at},e)},sf=(t,e)=>{const n=[["e",t.channel_create_event_id,t.relay_url,"root"]];return t.reply_to_channel_message_event_id&&n.push(["e",t.reply_to_channel_message_event_id,t.relay_url,"reply"]),we({kind:Ki,tags:[...n,...t.tags??[]],content:t.content,created_at:t.created_at},e)},af=(t,e)=>{let n;if(typeof t.content=="object")n=JSON.stringify(t.content);else if(typeof t.content=="string")n=t.content;else return;return we({kind:ji,tags:[["e",t.channel_message_event_id],...t.tags??[]],content:n,created_at:t.created_at},e)},cf=(t,e)=>{let n;if(typeof t.content=="object")n=JSON.stringify(t.content);else if(typeof t.content=="string")n=t.content;else return;return we({kind:Hi,tags:[["p",t.pubkey_to_mute],...t.tags??[]],content:n,created_at:t.created_at},e)},lf={};W(lf,{EMOJI_SHORTCODE_REGEX:()=>ma,matchAll:()=>uf,regex:()=>wo,replaceAll:()=>df});var ma=/:(\w+):/,wo=()=>new RegExp(`\\B${ma.source}\\B`,"g");function*uf(t){const e=t.matchAll(wo());for(const n of e)try{const[r,o]=n;yield{shortcode:r,name:o,start:n.index,end:n.index+r.length}}catch{}}function df(t,e){return t.replaceAll(wo(),(n,r)=>e({shortcode:n,name:r}))}var hf={};W(hf,{useFetchImplementation:()=>ff,validateGithub:()=>mf});var vo;try{vo=fetch}catch{}function ff(t){vo=t}async function mf(t,e,n){try{return await(await vo(`https://gist.github.com/${e}/${n}/raw`)).text()===`Verifying that I control the following Nostr public key: ${t}`}catch{return!1}}var pf={};W(pf,{makeNwcRequestEvent:()=>yf,parseConnectionString:()=>gf});function gf(t){const{host:e,pathname:n,searchParams:r}=new URL(t),o=n||e,s=r.get("relay"),i=r.get("secret");if(!o||!s||!i)throw new Error("invalid connection string");return{pubkey:o,relay:s,secret:i}}async function yf(t,e,n){const o=Zi(e,t,JSON.stringify({method:"pay_invoice",params:{invoice:n}})),s={kind:Vi,created_at:Math.round(Date.now()/1e3),content:o,tags:[["p",t]]};return we(s,e)}var bf={};W(bf,{normalizeIdentifier:()=>wf});function wf(t){return t=t.trim().toLowerCase(),t=t.normalize("NFKC"),Array.from(t).map(e=>new RegExp("\\p{Letter}","u").test(e)||new RegExp("\\p{Number}","u").test(e)?e:"-").join("")}var vf={};W(vf,{getSatoshisAmountFromBolt11:()=>Sf,getZapEndpoint:()=>Ef,makeZapReceipt:()=>Af,makeZapRequest:()=>kf,useFetchImplementation:()=>xf,validateZapRequest:()=>_f});var xo;try{xo=fetch}catch{}function xf(t){xo=t}async function Ef(t){try{let e="",{lud06:n,lud16:r}=JSON.parse(t.content);if(r){let[i,a]=r.split("@");e=new URL(`/.well-known/lnurlp/${i}`,`https://${a}`).toString()}else if(n){let{words:i}=kt.decode(n,1e3),a=kt.fromWords(i);e=Te.decode(a)}else return null;let s=await(await xo(e)).json();if(s.allowsNostr&&s.nostrPubkey)return s.callback}catch{}return null}function kf(t){let e={kind:9734,created_at:Math.round(Date.now()/1e3),content:t.comment||"",tags:[["p","pubkey"in t?t.pubkey:t.event.pubkey],["amount",t.amount.toString()],["relays",...t.relays]]};if("event"in t){if(e.tags.push(["e",t.event.id]),no(t.event.kind)){const n=["a",`${t.event.kind}:${t.event.pubkey}:`];e.tags.push(n)}else if(ro(t.event.kind)){let n=t.event.tags.find(([o,s])=>o==="d"&&s);if(!n)throw new Error("d tag not found or is empty");const r=["a",`${t.event.kind}:${t.event.pubkey}:${n[1]}`];e.tags.push(r)}e.tags.push(["k",t.event.kind.toString()])}return e}function _f(t){let e;try{e=JSON.parse(t)}catch{return"Invalid zap request JSON."}if(!Xr(e))return"Zap request is not a valid Nostr event.";if(!to(e))return"Invalid signature on zap request.";let n=e.tags.find(([s,i])=>s==="p"&&i);if(!n)return"Zap request doesn't have a 'p' tag.";if(!n[1].match(/^[a-f0-9]{64}$/))return"Zap request 'p' tag is not valid hex.";let r=e.tags.find(([s,i])=>s==="e"&&i);return r&&!r[1].match(/^[a-f0-9]{64}$/)?"Zap request 'e' tag is not valid hex.":e.tags.find(([s,i])=>s==="relays"&&i)?null:"Zap request doesn't have a 'relays' tag."}function Af({zapRequest:t,preimage:e,bolt11:n,paidAt:r}){let o=JSON.parse(t),s=o.tags.filter(([a])=>a==="e"||a==="p"||a==="a"),i={kind:9735,created_at:Math.round(r.getTime()/1e3),content:"",tags:[...s,["P",o.pubkey],["bolt11",n],["description",t]]};return e&&i.tags.push(["preimage",e]),i}function Sf(t){if(t.length<50)return 0;t=t.substring(0,50);const e=t.lastIndexOf("1");if(e===-1)return 0;const n=t.substring(0,e);if(!n.startsWith("lnbc"))return 0;const r=n.substring(4);if(r.length<1)return 0;const o=r[r.length-1],s=o.charCodeAt(0)-48,i=s>=0&&s<=9;let a=r.length-1;if(i&&a++,a<1)return 0;const c=parseInt(r.substring(0,a));switch(o){case"m":return c*1e5;case"u":return c*100;case"n":return c/10;case"p":return c/1e4;default:return c*1e8}}var Nf={};W(Nf,{Negentropy:()=>ga,NegentropyStorageVector:()=>Lf,NegentropySync:()=>If});var Yn=97,xt=32,pa=16,et={Skip:0,Fingerprint:1,IdList:2},Re=class{constructor(t){g(this,"_raw");g(this,"length");typeof t=="number"?(this._raw=new Uint8Array(t),this.length=0):t instanceof Uint8Array?(this._raw=new Uint8Array(t),this.length=t.length):(this._raw=new Uint8Array(512),this.length=0)}unwrap(){return this._raw.subarray(0,this.length)}get capacity(){return this._raw.byteLength}extend(t){if(t instanceof Re&&(t=t.unwrap()),typeof t.length!="number")throw Error("bad length");const e=t.length+this.length;if(this.capacity<e){const n=this._raw,r=Math.max(this.capacity*2,e);this._raw=new Uint8Array(r),this._raw.set(n)}this._raw.set(t,this.length),this.length+=t.length}shift(){const t=this._raw[0];return this._raw=this._raw.subarray(1),this.length--,t}shiftN(t=1){const e=this._raw.subarray(0,t);return this._raw=this._raw.subarray(t),this.length-=t,e}};function Wt(t){let e=0;for(;;){if(t.length===0)throw Error("parse ends prematurely");let n=t.shift();if(e=e<<7|n&127,(n&128)===0)break}return e}function Le(t){if(t===0)return new Re(new Uint8Array([0]));let e=[];for(;t!==0;)e.push(t&127),t>>>=7;e.reverse();for(let n=0;n<e.length-1;n++)e[n]|=128;return new Re(new Uint8Array(e))}function Cf(t){return nn(t,1)[0]}function nn(t,e){if(t.length<e)throw Error("parse ends prematurely");return t.shiftN(e)}var Bf=class{constructor(){g(this,"buf");this.setToZero()}setToZero(){this.buf=new Uint8Array(xt)}add(t){let e=0,n=0,r=new DataView(this.buf.buffer),o=new DataView(t.buffer);for(let s=0;s<8;s++){let i=s*4,a=r.getUint32(i,!0),c=o.getUint32(i,!0),l=a;l+=e,l+=c,l>4294967295&&(n=1),r.setUint32(i,l&4294967295,!0),e=n,n=0}}negate(){let t=new DataView(this.buf.buffer);for(let n=0;n<8;n++){let r=n*4;t.setUint32(r,~t.getUint32(r,!0))}let e=new Uint8Array(xt);e[0]=1,this.add(e)}getFingerprint(t){let e=new Re;return e.extend(this.buf),e.extend(Le(t)),be(e.unwrap()).subarray(0,pa)}},Lf=class{constructor(){g(this,"items");g(this,"sealed");this.items=[],this.sealed=!1}insert(t,e){if(this.sealed)throw Error("already sealed");const n=wi(e);if(n.byteLength!==xt)throw Error("bad id size for added item");this.items.push({timestamp:t,id:n})}seal(){if(this.sealed)throw Error("already sealed");this.sealed=!0,this.items.sort(Xn);for(let t=1;t<this.items.length;t++)if(Xn(this.items[t-1],this.items[t])===0)throw Error("duplicate item inserted")}unseal(){this.sealed=!1}size(){return this._checkSealed(),this.items.length}getItem(t){if(this._checkSealed(),t>=this.items.length)throw Error("out of range");return this.items[t]}iterate(t,e,n){this._checkSealed(),this._checkBounds(t,e);for(let r=t;r<e&&n(this.items[r],r);++r);}findLowerBound(t,e,n){return this._checkSealed(),this._checkBounds(t,e),this._binarySearch(this.items,t,e,r=>Xn(r,n)<0)}fingerprint(t,e){let n=new Bf;return n.setToZero(),this.iterate(t,e,r=>(n.add(r.id),!0)),n.getFingerprint(e-t)}_checkSealed(){if(!this.sealed)throw Error("not sealed")}_checkBounds(t,e){if(t>e||e>this.items.length)throw Error("bad range")}_binarySearch(t,e,n,r){let o=n-e;for(;o>0;){let s=e,i=Math.floor(o/2);s+=i,r(t[s])?(e=++s,o-=i+1):o=i}return e}},ga=class{constructor(t,e=6e4){g(this,"storage");g(this,"frameSizeLimit");g(this,"lastTimestampIn");g(this,"lastTimestampOut");if(e<4096)throw Error("frameSizeLimit too small");this.storage=t,this.frameSizeLimit=e,this.lastTimestampIn=0,this.lastTimestampOut=0}_bound(t,e){return{timestamp:t,id:e||new Uint8Array(0)}}initiate(){let t=new Re;return t.extend(new Uint8Array([Yn])),this.splitRange(0,this.storage.size(),this._bound(Number.MAX_VALUE),t),mt(t.unwrap())}reconcile(t,e,n){const r=new Re(wi(t));this.lastTimestampIn=this.lastTimestampOut=0;let o=new Re;o.extend(new Uint8Array([Yn]));let s=Cf(r);if(s<96||s>111)throw Error("invalid negentropy protocol version byte");if(s!==Yn)throw Error("unsupported negentropy protocol version requested: "+(s-96));let i=this.storage.size(),a=this._bound(0),c=0,l=!1;for(;r.length!==0;){let d=new Re,u=()=>{l&&(l=!1,d.extend(this.encodeBound(a)),d.extend(Le(et.Skip)))},m=this.decodeBound(r),f=Wt(r),p=c,h=this.storage.findLowerBound(c,i,m);if(f===et.Skip)l=!0;else if(f===et.Fingerprint){let y=nn(r,pa),v=this.storage.fingerprint(p,h);ya(y,v)!==0?(u(),this.splitRange(p,h,m,d)):l=!0}else if(f===et.IdList){let y=Wt(r),v={};for(let E=0;E<y;E++){let S=nn(r,xt);v[mt(S)]=S}if(l=!0,this.storage.iterate(p,h,E=>{let S=E.id;const O=mt(S);return v[O]?delete v[mt(S)]:e==null||e(O),!0}),n)for(let E of Object.values(v))n(mt(E))}else throw Error("unexpected mode");if(this.exceededFrameSizeLimit(o.length+d.length)){let y=this.storage.fingerprint(h,i);o.extend(this.encodeBound(this._bound(Number.MAX_VALUE))),o.extend(Le(et.Fingerprint)),o.extend(y);break}else o.extend(d);c=h,a=m}return o.length===1?null:mt(o.unwrap())}splitRange(t,e,n,r){let o=e-t,s=16;if(o<s*2)r.extend(this.encodeBound(n)),r.extend(Le(et.IdList)),r.extend(Le(o)),this.storage.iterate(t,e,i=>(r.extend(i.id),!0));else{let i=Math.floor(o/s),a=o%s,c=t;for(let l=0;l<s;l++){let d=i+(l<a?1:0),u=this.storage.fingerprint(c,c+d);c+=d;let m;if(c===e)m=n;else{let f,p;this.storage.iterate(c-1,c+1,(h,y)=>(y===c-1?f=h:p=h,!0)),m=this.getMinimalBound(f,p)}r.extend(this.encodeBound(m)),r.extend(Le(et.Fingerprint)),r.extend(u)}}}exceededFrameSizeLimit(t){return t>this.frameSizeLimit-200}decodeTimestampIn(t){let e=Wt(t);return e=e===0?Number.MAX_VALUE:e-1,this.lastTimestampIn===Number.MAX_VALUE||e===Number.MAX_VALUE?(this.lastTimestampIn=Number.MAX_VALUE,Number.MAX_VALUE):(e+=this.lastTimestampIn,this.lastTimestampIn=e,e)}decodeBound(t){let e=this.decodeTimestampIn(t),n=Wt(t);if(n>xt)throw Error("bound key too long");let r=nn(t,n);return{timestamp:e,id:r}}encodeTimestampOut(t){if(t===Number.MAX_VALUE)return this.lastTimestampOut=Number.MAX_VALUE,Le(0);let e=t;return t-=this.lastTimestampOut,this.lastTimestampOut=e,Le(t+1)}encodeBound(t){let e=new Re;return e.extend(this.encodeTimestampOut(t.timestamp)),e.extend(Le(t.id.length)),e.extend(t.id),e}getMinimalBound(t,e){if(e.timestamp!==t.timestamp)return this._bound(e.timestamp);{let n=0,r=e.id,o=t.id;for(let s=0;s<xt&&r[s]===o[s];s++)n++;return this._bound(e.timestamp,e.id.subarray(0,n+1))}}};function ya(t,e){for(let n=0;n<t.byteLength;n++){if(t[n]<e[n])return-1;if(t[n]>e[n])return 1}return t.byteLength>e.byteLength?1:t.byteLength<e.byteLength?-1:0}function Xn(t,e){return t.timestamp===e.timestamp?ya(t.id,e.id):t.timestamp-e.timestamp}var If=class{constructor(t,e,n,r={}){g(this,"relay");g(this,"storage");g(this,"neg");g(this,"filter");g(this,"subscription");g(this,"onhave");g(this,"onneed");this.relay=t,this.storage=e,this.neg=new ga(e),this.onhave=r.onhave,this.onneed=r.onneed,this.filter=n,this.subscription=this.relay.prepareSubscription([{}],{label:r.label||"negentropy"}),this.subscription.oncustom=o=>{var s,i,a,c;switch(o[0]){case"NEG-MSG":{o.length<3&&console.warn(`got invalid NEG-MSG from ${this.relay.url}: ${o}`);try{const l=this.neg.reconcile(o[2],this.onhave,this.onneed);l?this.relay.send(`["NEG-MSG", "${this.subscription.id}", "${l}"]`):(this.close(),(s=r.onclose)==null||s.call(r))}catch(l){console.error("negentropy reconcile error:",l),(i=r==null?void 0:r.onclose)==null||i.call(r,`reconcile error: ${l}`)}break}case"NEG-CLOSE":{const l=o[2];console.warn("negentropy error:",l),(a=r.onclose)==null||a.call(r,l);break}case"NEG-ERR":(c=r.onclose)==null||c.call(r)}}}async start(){const t=this.neg.initiate();this.relay.send(`["NEG-OPEN","${this.subscription.id}",${JSON.stringify(this.filter)},"${t}"]`)}close(){this.relay.send(`["NEG-CLOSE","${this.subscription.id}"]`),this.subscription.close()}},Rf={};W(Rf,{getToken:()=>$f,hashPayload:()=>Eo,unpackEventFromToken:()=>wa,validateEvent:()=>Aa,validateEventKind:()=>xa,validateEventMethodTag:()=>ka,validateEventPayloadTag:()=>_a,validateEventTimestamp:()=>va,validateEventUrlTag:()=>Ea,validateToken:()=>Tf});var ba="Nostr ";async function $f(t,e,n,r=!1,o){const s={kind:ao,tags:[["u",t],["method",e]],created_at:Math.round(new Date().getTime()/1e3),content:""};o&&s.tags.push(["payload",Eo(o)]);const i=await n(s);return(r?ba:"")+ge.encode(ye.encode(JSON.stringify(i)))}async function Tf(t,e,n){const r=await wa(t).catch(s=>{throw s});return await Aa(r,e,n).catch(s=>{throw s})}async function wa(t){if(!t)throw new Error("Missing token");t=t.replace(ba,"");const e=Te.decode(ge.decode(t));if(!e||e.length===0||!e.startsWith("{"))throw new Error("Invalid token");return JSON.parse(e)}function va(t){return t.created_at?Math.round(new Date().getTime()/1e3)-t.created_at<60:!1}function xa(t){return t.kind===ao}function Ea(t,e){const n=t.tags.find(r=>r[0]==="u");return n?n.length>0&&n[1]===e:!1}function ka(t,e){const n=t.tags.find(r=>r[0]==="method");return n?n.length>0&&n[1].toLowerCase()===e.toLowerCase():!1}function Eo(t){const e=be(ye.encode(JSON.stringify(t)));return Y(e)}function _a(t,e){const n=t.tags.find(o=>o[0]==="payload");if(!n)return!1;const r=Eo(e);return n.length>0&&n[1]===r}async function Aa(t,e,n,r){if(!to(t))throw new Error("Invalid nostr event, signature invalid");if(!xa(t))throw new Error("Invalid nostr event, kind invalid");if(!va(t))throw new Error("Invalid nostr event, created_at timestamp invalid");if(!Ea(t,e))throw new Error("Invalid nostr event, url tag invalid");if(!ka(t,n))throw new Error("Invalid nostr event, method tag invalid");if(r&&typeof r=="object"&&Object.keys(r).length>0&&!_a(t,r))throw new Error("Invalid nostr event, payload tag does not match request body hash");return!0}class _t{constructor(e){g(this,"secretKey");g(this,"pubkey");this.secretKey=e||eo(),this.pubkey=Cn(this.secretKey)}async getPublicKey(){return this.pubkey}async signEvent(e){return we(e,this.secretKey)}getNsec(){return vt.nsecEncode(this.secretKey)}getNpub(){return vt.npubEncode(this.pubkey)}exportKeyFile(){return{nsec:this.getNsec(),npub:this.getNpub(),pubkey:this.pubkey}}downloadKeyFile(){const e=this.exportKeyFile(),n=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),r=URL.createObjectURL(n),o=document.createElement("a");o.href=r,o.download=`nostr-key-${this.pubkey.slice(0,8)}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(r)}copyNsec(){return navigator.clipboard.writeText(this.getNsec())}static fromNsec(e){const{type:n,data:r}=vt.decode(e);if(n!=="nsec")throw new Error("Invalid nsec");return new _t(r)}}var tt=Symbol("verified"),Pf=t=>t instanceof Object;function Uf(t){if(!Pf(t)||typeof t.kind!="number"||typeof t.content!="string"||typeof t.created_at!="number"||typeof t.pubkey!="string"||!t.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(t.tags))return!1;for(let e=0;e<t.tags.length;e++){let n=t.tags[e];if(!Array.isArray(n))return!1;for(let r=0;r<n.length;r++)if(typeof n[r]!="string")return!1}return!0}var Of=new TextDecoder("utf-8"),Sa=new TextEncoder;function yt(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}var Mf=class{constructor(e){g(this,"value");g(this,"next",null);g(this,"prev",null);this.value=e}},Df=class{constructor(){g(this,"first");g(this,"last");this.first=null,this.last=null}enqueue(e){const n=new Mf(e);return this.last?this.last===this.first?(this.last=n,this.last.prev=this.first,this.first.next=n):(n.prev=this.last,this.last.next=n,this.last=n):(this.first=n,this.last=n),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const n=this.first;return this.first=null,this.last=null,n.value}const e=this.first;return this.first=e.next,this.first&&(this.first.prev=null),e.value}},Kf=class{generateSecretKey(){return ke.utils.randomPrivateKey()}getPublicKey(e){return Y(ke.getPublicKey(e))}finalizeEvent(e,n){const r=e;return r.pubkey=Y(ke.getPublicKey(n)),r.id=Qn(r),r.sig=Y(ke.sign(Qn(r),n)),r[tt]=!0,r}verifyEvent(e){if(typeof e[tt]=="boolean")return e[tt];const n=Qn(e);if(n!==e.id)return e[tt]=!1,!1;try{const r=ke.verify(e.sig,n,e.pubkey);return e[tt]=r,r}catch{return e[tt]=!1,!1}}};function jf(t){if(!Uf(t))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content])}function Qn(t){let e=be(Sa.encode(jf(t)));return Y(e)}var $n=new Kf;$n.generateSecretKey;var cs=$n.getPublicKey,Hf=$n.finalizeEvent,Na=$n.verifyEvent,Ca=1,Ba=65535;function er(t,e){const n=ut.getSharedSecret(t,"02"+e).subarray(1,33);return Li(be,n,"nip44-v2")}function La(t,e){const n=Ii(be,t,e,76);return{chacha_key:n.subarray(0,32),chacha_nonce:n.subarray(32,44),hmac_key:n.subarray(44,76)}}function Ia(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("expected positive integer");if(t<=32)return 32;const e=1<<Math.floor(Math.log2(t-1))+1,n=e<=256?32:e/8;return n*(Math.floor((t-1)/n)+1)}function zf(t){if(!Number.isSafeInteger(t)||t<Ca||t>Ba)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");const e=new Uint8Array(2);return new DataView(e.buffer).setUint16(0,t,!1),e}function qf(t){const e=Sa.encode(t),n=e.length,r=zf(n),o=new Uint8Array(Ia(n)-n);return dt(r,e,o)}function Vf(t){const e=new DataView(t.buffer).getUint16(0),n=t.subarray(2,2+e);if(e<Ca||e>Ba||n.length!==e||t.length!==2+Ia(e))throw new Error("invalid padding");return Of.decode(n)}function Ra(t,e,n){if(n.length!==32)throw new Error("AAD associated data must be 32 bytes");const r=dt(n,e);return zt(be,t,r)}function Ff(t){if(typeof t!="string")throw new Error("payload must be a valid string");const e=t.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(t[0]==="#")throw new Error("unknown encryption version");let n;try{n=ge.decode(t)}catch(s){throw new Error("invalid base64: "+s.message)}const r=n.length;if(r<99||r>65603)throw new Error("invalid data length: "+r);const o=n[0];if(o!==2)throw new Error("unknown encryption version "+o);return{nonce:n.subarray(1,33),ciphertext:n.subarray(33,-32),mac:n.subarray(-32)}}function Wf(t,e,n=Zr(32)){const{chacha_key:r,chacha_nonce:o,hmac_key:s}=La(e,n),i=qf(t),a=Sn(r,o,i),c=Ra(s,a,n);return ge.encode(dt(new Uint8Array([2]),n,a,c))}function ls(t,e){const{nonce:n,ciphertext:r,mac:o}=Ff(t),{chacha_key:s,chacha_nonce:i,hmac_key:a}=La(e,n),c=Ra(a,r,n);if(!vi(c,o))throw new Error("invalid MAC");const l=Sn(s,i,r);return Vf(l)}var Zf=/^(?:([\w.+-]+)@)?([\w_-]+(\.[\w_-]+)+)$/,Jf;try{Jf=fetch}catch{}var Gf=22242,tr=24133;function Yf(t,e){if(t.ids&&t.ids.indexOf(e.id)===-1||t.kinds&&t.kinds.indexOf(e.kind)===-1||t.authors&&t.authors.indexOf(e.pubkey)===-1)return!1;for(let n in t)if(n[0]==="#"){let r=n.slice(1),o=t[`#${r}`];if(o&&!e.tags.find(([s,i])=>s===n.slice(1)&&o.indexOf(i)!==-1))return!1}return!(t.since&&e.created_at<t.since||t.until&&e.created_at>t.until)}function Xf(t,e){for(let n=0;n<t.length;n++)if(Yf(t[n],e))return!0;return!1}function Qf(t,e){let n=e.length+3,r=t.indexOf(`"${e}":`)+n,o=t.slice(r).indexOf('"')+r+1;return t.slice(o,o+64)}function em(t){let e=t.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let n=t.slice(e+7+1).indexOf('"');if(n===-1)return null;let r=e+7+1+n,o=t.slice(r+1,80).indexOf('"');if(o===-1)return null;let s=r+1+o;return t.slice(r+1,s)}function tm(t,e){return{kind:Gf,created_at:Math.floor(Date.now()/1e3),tags:[["relay",t],["challenge",e]],content:""}}async function nm(){return new Promise((t,e)=>{try{if(typeof MessageChannel<"u"){const n=new MessageChannel,r=()=>{n.port1.removeEventListener("message",r),t()};n.port1.addEventListener("message",r),n.port2.postMessage(0),n.port1.start()}else typeof setImmediate<"u"?setImmediate(t):typeof setTimeout<"u"?setTimeout(t,0):t()}catch(n){console.error("during yield: ",n),e(n)}})}var rm=t=>(t[tt]=!0,!0),$a=class extends Error{constructor(e,n){super(`Tried to send message '${e} on a closed connection to ${n}.`),this.name="SendingOnClosedConnection"}},Ta=class{constructor(e,n){g(this,"url");g(this,"_connected",!1);g(this,"onclose",null);g(this,"onnotice",e=>console.debug(`NOTICE from ${this.url}: ${e}`));g(this,"onauth");g(this,"baseEoseTimeout",4400);g(this,"publishTimeout",4400);g(this,"pingFrequency",29e3);g(this,"pingTimeout",2e4);g(this,"resubscribeBackoff",[1e4,1e4,1e4,2e4,2e4,3e4,6e4]);g(this,"openSubs",new Map);g(this,"enablePing");g(this,"enableReconnect");g(this,"reconnectTimeoutHandle");g(this,"pingIntervalHandle");g(this,"reconnectAttempts",0);g(this,"closedIntentionally",!1);g(this,"connectionPromise");g(this,"openCountRequests",new Map);g(this,"openEventPublishes",new Map);g(this,"ws");g(this,"incomingMessageQueue",new Df);g(this,"queueRunning",!1);g(this,"challenge");g(this,"authPromise");g(this,"serial",0);g(this,"verifyEvent");g(this,"_WebSocket");this.url=yt(e),this.verifyEvent=n.verifyEvent,this._WebSocket=n.websocketImplementation||WebSocket,this.enablePing=n.enablePing,this.enableReconnect=n.enableReconnect||!1}static async connect(e,n){const r=new Ta(e,n);return await r.connect(n),r}closeAllSubscriptions(e){for(let[n,r]of this.openSubs)r.close(e);this.openSubs.clear();for(let[n,r]of this.openEventPublishes)r.reject(new Error(e));this.openEventPublishes.clear();for(let[n,r]of this.openCountRequests)r.reject(new Error(e));this.openCountRequests.clear()}get connected(){return this._connected}async reconnect(){const e=this.resubscribeBackoff[Math.min(this.reconnectAttempts,this.resubscribeBackoff.length-1)];this.reconnectAttempts++,this.reconnectTimeoutHandle=setTimeout(async()=>{try{await this.connect()}catch{}},e)}handleHardClose(e){var r;this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this._connected=!1,this.connectionPromise=void 0;const n=this.closedIntentionally;this.closedIntentionally=!1,(r=this.onclose)==null||r.call(this),this.enableReconnect&&!n?this.reconnect():this.closeAllSubscriptions(e)}async connect(e){let n;return this.connectionPromise?this.connectionPromise:(this.challenge=void 0,this.authPromise=void 0,this.connectionPromise=new Promise((r,o)=>{e!=null&&e.timeout&&(n=setTimeout(()=>{var s;o("connection timed out"),this.connectionPromise=void 0,(s=this.onclose)==null||s.call(this),this.closeAllSubscriptions("relay connection timed out")},e.timeout)),e!=null&&e.abort&&(e.abort.onabort=o);try{this.ws=new this._WebSocket(this.url)}catch(s){clearTimeout(n),o(s);return}this.ws.onopen=()=>{this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),clearTimeout(n),this._connected=!0;const s=this.reconnectAttempts>0;this.reconnectAttempts=0;for(const i of this.openSubs.values()){if(i.eosed=!1,s)for(let a=0;a<i.filters.length;a++)i.lastEmitted&&(i.filters[a].since=i.lastEmitted+1);i.fire()}this.enablePing&&(this.pingIntervalHandle=setInterval(()=>this.pingpong(),this.pingFrequency)),r()},this.ws.onerror=s=>{clearTimeout(n),o(s.message||"websocket error"),this.handleHardClose("relay connection errored")},this.ws.onclose=s=>{clearTimeout(n),o(s.message||"websocket closed"),this.handleHardClose("relay connection closed")},this.ws.onmessage=this._onmessage.bind(this)}),this.connectionPromise)}waitForPingPong(){return new Promise(e=>{this.ws.once("pong",()=>e(!0)),this.ws.ping()})}waitForDummyReq(){return new Promise((e,n)=>{if(!this.connectionPromise)return n(new Error(`no connection to ${this.url}, can't ping`));try{const r=this.subscribe([{ids:["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],limit:0}],{label:"forced-ping",oneose:()=>{e(!0),r.close()},onclose(){e(!0)},eoseTimeout:this.pingTimeout+1e3})}catch(r){n(r)}})}async pingpong(){var e,n,r;((e=this.ws)==null?void 0:e.readyState)===1&&(await Promise.any([this.ws&&this.ws.ping&&this.ws.once?this.waitForPingPong():this.waitForDummyReq(),new Promise(s=>setTimeout(()=>s(!1),this.pingTimeout))])||((n=this.ws)==null?void 0:n.readyState)===this._WebSocket.OPEN&&((r=this.ws)==null||r.close()))}async runQueue(){for(this.queueRunning=!0;this.handleNext()!==!1;)await nm();this.queueRunning=!1}handleNext(){var r,o,s;const e=this.incomingMessageQueue.dequeue();if(!e)return!1;const n=em(e);if(n){const i=this.openSubs.get(n);if(!i)return;const a=Qf(e,"id"),c=(r=i.alreadyHaveEvent)==null?void 0:r.call(i,a);if((o=i.receivedEvent)==null||o.call(i,this,a),c)return}try{let i=JSON.parse(e);switch(i[0]){case"EVENT":{const a=this.openSubs.get(i[1]),c=i[2];this.verifyEvent(c)&&Xf(a.filters,c)&&a.onevent(c),(!a.lastEmitted||a.lastEmitted<c.created_at)&&(a.lastEmitted=c.created_at);return}case"COUNT":{const a=i[1],c=i[2],l=this.openCountRequests.get(a);l&&(l.resolve(c.count),this.openCountRequests.delete(a));return}case"EOSE":{const a=this.openSubs.get(i[1]);if(!a)return;a.receivedEose();return}case"OK":{const a=i[1],c=i[2],l=i[3],d=this.openEventPublishes.get(a);d&&(clearTimeout(d.timeout),c?d.resolve(l):d.reject(new Error(l)),this.openEventPublishes.delete(a));return}case"CLOSED":{const a=i[1],c=this.openSubs.get(a);if(!c)return;c.closed=!0,c.close(i[2]);return}case"NOTICE":{this.onnotice(i[1]);return}case"AUTH":{this.challenge=i[1],this.onauth&&this.auth(this.onauth);return}default:{const a=this.openSubs.get(i[1]);(s=a==null?void 0:a.oncustom)==null||s.call(a,i);return}}}catch{return}}async send(e){if(!this.connectionPromise)throw new $a(e,this.url);this.connectionPromise.then(()=>{var n;(n=this.ws)==null||n.send(e)})}async auth(e){const n=this.challenge;if(!n)throw new Error("can't perform auth, no challenge was received");return this.authPromise?this.authPromise:(this.authPromise=new Promise(async(r,o)=>{try{let s=await e(tm(this.url,n)),i=setTimeout(()=>{let a=this.openEventPublishes.get(s.id);a&&(a.reject(new Error("auth timed out")),this.openEventPublishes.delete(s.id))},this.publishTimeout);this.openEventPublishes.set(s.id,{resolve:r,reject:o,timeout:i}),this.send('["AUTH",'+JSON.stringify(s)+"]")}catch(s){console.warn("subscribe auth function failed:",s)}}),this.authPromise)}async publish(e){const n=new Promise((r,o)=>{const s=setTimeout(()=>{const i=this.openEventPublishes.get(e.id);i&&(i.reject(new Error("publish timed out")),this.openEventPublishes.delete(e.id))},this.publishTimeout);this.openEventPublishes.set(e.id,{resolve:r,reject:o,timeout:s})});return this.send('["EVENT",'+JSON.stringify(e)+"]"),n}async count(e,n){this.serial++;const r=(n==null?void 0:n.id)||"count:"+this.serial,o=new Promise((s,i)=>{this.openCountRequests.set(r,{resolve:s,reject:i})});return this.send('["COUNT","'+r+'",'+JSON.stringify(e).substring(1)),o}subscribe(e,n){const r=this.prepareSubscription(e,n);return r.fire(),n.abort&&(n.abort.onabort=()=>r.close(String(n.abort.reason||"<aborted>"))),r}prepareSubscription(e,n){this.serial++;const r=n.id||(n.label?n.label+":":"sub:")+this.serial,o=new om(this,r,e,n);return this.openSubs.set(r,o),o}close(){var e,n,r;this.closedIntentionally=!0,this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this.closeAllSubscriptions("relay connection closed by us"),this._connected=!1,(e=this.onclose)==null||e.call(this),((n=this.ws)==null?void 0:n.readyState)===this._WebSocket.OPEN&&((r=this.ws)==null||r.close())}_onmessage(e){this.incomingMessageQueue.enqueue(e.data),this.queueRunning||this.runQueue()}},om=class{constructor(e,n,r,o){g(this,"relay");g(this,"id");g(this,"lastEmitted");g(this,"closed",!1);g(this,"eosed",!1);g(this,"filters");g(this,"alreadyHaveEvent");g(this,"receivedEvent");g(this,"onevent");g(this,"oneose");g(this,"onclose");g(this,"oncustom");g(this,"eoseTimeout");g(this,"eoseTimeoutHandle");if(r.length===0)throw new Error("subscription can't be created with zero filters");this.relay=e,this.filters=r,this.id=n,this.alreadyHaveEvent=o.alreadyHaveEvent,this.receivedEvent=o.receivedEvent,this.eoseTimeout=o.eoseTimeout||e.baseEoseTimeout,this.oneose=o.oneose,this.onclose=o.onclose,this.onevent=o.onevent||(s=>{console.warn(`onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,s)})}fire(){this.relay.send('["REQ","'+this.id+'",'+JSON.stringify(this.filters).substring(1)),this.eoseTimeoutHandle=setTimeout(this.receivedEose.bind(this),this.eoseTimeout)}receivedEose(){var e;this.eosed||(clearTimeout(this.eoseTimeoutHandle),this.eosed=!0,(e=this.oneose)==null||e.call(this))}close(e="closed by caller"){var n;if(!this.closed&&this.relay.connected){try{this.relay.send('["CLOSE",'+JSON.stringify(this.id)+"]")}catch(r){if(!(r instanceof $a))throw r}this.closed=!0}this.relay.openSubs.delete(this.id),(n=this.onclose)==null||n.call(this,e)}},sm=class{constructor(e){g(this,"relays",new Map);g(this,"seenOn",new Map);g(this,"trackRelays",!1);g(this,"verifyEvent");g(this,"enablePing");g(this,"enableReconnect");g(this,"automaticallyAuth");g(this,"trustedRelayURLs",new Set);g(this,"_WebSocket");this.verifyEvent=e.verifyEvent,this._WebSocket=e.websocketImplementation,this.enablePing=e.enablePing,this.enableReconnect=e.enableReconnect||!1,this.automaticallyAuth=e.automaticallyAuth}async ensureRelay(e,n){e=yt(e);let r=this.relays.get(e);if(r||(r=new Ta(e,{verifyEvent:this.trustedRelayURLs.has(e)?rm:this.verifyEvent,websocketImplementation:this._WebSocket,enablePing:this.enablePing,enableReconnect:this.enableReconnect}),r.onclose=()=>{r&&!r.enableReconnect&&this.relays.delete(e)},this.relays.set(e,r)),this.automaticallyAuth){const o=this.automaticallyAuth(e);o&&(r.onauth=o)}return await r.connect({timeout:n==null?void 0:n.connectionTimeout,abort:n==null?void 0:n.abort}),r}close(e){e.map(yt).forEach(n=>{var r;(r=this.relays.get(n))==null||r.close(),this.relays.delete(n)})}subscribe(e,n,r){const o=[];for(let s=0;s<e.length;s++){const i=yt(e[s]);o.find(a=>a.url===i)||o.push({url:i,filter:n})}return this.subscribeMap(o,r)}subscribeMany(e,n,r){const o=[],s=[];for(let i=0;i<e.length;i++){const a=yt(e[i]);s.indexOf(a)===-1&&(s.push(a),o.push({url:a,filter:n}))}return this.subscribeMap(o,r)}subscribeMap(e,n){const r=new Map;for(const f of e){const{url:p,filter:h}=f;r.has(p)||r.set(p,[]),r.get(p).push(h)}const o=Array.from(r.entries()).map(([f,p])=>({url:f,filters:p}));this.trackRelays&&(n.receivedEvent=(f,p)=>{let h=this.seenOn.get(p);h||(h=new Set,this.seenOn.set(p,h)),h.add(f)});const s=new Set,i=[],a=[];let c=f=>{var p;a[f]||(a[f]=!0,a.filter(h=>h).length===o.length&&((p=n.oneose)==null||p.call(n),c=()=>{}))};const l=[];let d=(f,p)=>{var h;l[f]||(c(f),l[f]=p,l.filter(y=>y).length===o.length&&((h=n.onclose)==null||h.call(n,l),d=()=>{}))};const u=f=>{var h;if((h=n.alreadyHaveEvent)!=null&&h.call(n,f))return!0;const p=s.has(f);return s.add(f),p},m=Promise.all(o.map(async({url:f,filters:p},h)=>{let y;try{y=await this.ensureRelay(f,{connectionTimeout:n.maxWait?Math.max(n.maxWait*.8,n.maxWait-1e3):void 0,abort:n.abort})}catch(E){d(h,(E==null?void 0:E.message)||String(E));return}let v=y.subscribe(p,{...n,oneose:()=>c(h),onclose:E=>{E.startsWith("auth-required: ")&&n.onauth?y.auth(n.onauth).then(()=>{y.subscribe(p,{...n,oneose:()=>c(h),onclose:S=>{d(h,S)},alreadyHaveEvent:u,eoseTimeout:n.maxWait,abort:n.abort})}).catch(S=>{d(h,`auth was required and attempted, but failed with: ${S}`)}):d(h,E)},alreadyHaveEvent:u,eoseTimeout:n.maxWait,abort:n.abort});i.push(v)}));return{async close(f){await m,i.forEach(p=>{p.close(f)})}}}subscribeEose(e,n,r){const o=this.subscribe(e,n,{...r,oneose(){o.close("closed automatically on eose")}});return o}subscribeManyEose(e,n,r){const o=this.subscribeMany(e,n,{...r,oneose(){o.close("closed automatically on eose")}});return o}async querySync(e,n,r){return new Promise(async o=>{const s=[];this.subscribeEose(e,n,{...r,onevent(i){s.push(i)},onclose(i){o(s)}})})}async get(e,n,r){n.limit=1;const o=await this.querySync(e,n,r);return o.sort((s,i)=>i.created_at-s.created_at),o[0]||null}publish(e,n,r){return e.map(yt).map(async(o,s,i)=>{if(i.indexOf(o)!==s)return Promise.reject("duplicate url");let a=await this.ensureRelay(o);return a.publish(n).catch(async c=>{if(c instanceof Error&&c.message.startsWith("auth-required: ")&&(r!=null&&r.onauth))return await a.auth(r.onauth),a.publish(n);throw c}).then(c=>{if(this.trackRelays){let l=this.seenOn.get(n.id);l||(l=new Set,this.seenOn.set(n.id,l)),l.add(a)}return c})})}listConnectionStatus(){const e=new Map;return this.relays.forEach((n,r)=>e.set(r,n.connected)),e}destroy(){this.relays.forEach(e=>e.close()),this.relays=new Map}},Pa;try{Pa=WebSocket}catch{}var im=class extends sm{constructor(e){super({verifyEvent:Na,websocketImplementation:Pa,...e})}},Ua;try{Ua=fetch}catch{}var am=/^bunker:\/\/([0-9a-f]{64})\??([?\/\w:.=&%-]*)$/;async function cm(t){let e=t.match(am);if(e)try{const n=e[1],r=new URLSearchParams(e[2]);return{pubkey:n,relays:r.getAll("relay"),secret:r.get("secret")}}catch{}return lm(t)}async function lm(t){const e=t.match(Zf);if(!e)return null;const[n,r="_",o]=e;try{const s=`https://${o}/.well-known/nostr.json?name=${r}`,i=await(await Ua(s,{redirect:"error"})).json();let a=i.names[r],c=i.nip46[a]||[];return{pubkey:a,relays:c,secret:null}}catch{return null}}var Sr=class{constructor(e,n){g(this,"params");g(this,"pool");g(this,"subCloser");g(this,"isOpen");g(this,"serial");g(this,"idPrefix");g(this,"listeners");g(this,"waitingForAuth");g(this,"secretKey");g(this,"conversationKey");g(this,"bp");g(this,"cachedPubKey");this.params=n,this.pool=n.pool||new im,this.secretKey=e,this.isOpen=!1,this.idPrefix=Math.random().toString(36).substring(7),this.serial=0,this.listeners={},this.waitingForAuth={}}static fromBunker(e,n,r={}){if(n.relays.length===0)throw new Error("no relays specified for this bunker");const o=new Sr(e,r);return o.conversationKey=er(e,n.pubkey),o.bp=n,o.setupSubscription(),o}static async fromURI(e,n,r={},o=3e5){const s=new Sr(e,r),i=new URL(n),a=cs(e);return new Promise((c,l)=>{let d=!1;const u=s.pool.subscribe(i.searchParams.getAll("relay"),{kinds:[tr],"#p":[a],limit:0},{onevent:async m=>{try{const f=er(e,m.pubkey),p=ls(m.content,f);JSON.parse(p).result===i.searchParams.get("secret")&&(u.close(),s.bp={pubkey:m.pubkey,relays:i.searchParams.getAll("relay"),secret:i.searchParams.get("secret")},s.conversationKey=er(e,m.pubkey),s.setupSubscription(),d=!0,await Promise.race([new Promise(y=>setTimeout(y,1e3)),s.switchRelays()]),c(s))}catch(f){console.warn("failed to process potential connection event",f)}},onclose:()=>{d||l(new Error("subscription closed before connection was established."))},maxWait:typeof o=="number"?o:void 0,abort:typeof o!="number"?o:void 0})})}setupSubscription(){const e=this.listeners,n=this.waitingForAuth,r=this.conversationKey;this.subCloser=this.pool.subscribe(this.bp.relays,{kinds:[tr],authors:[this.bp.pubkey],"#p":[cs(this.secretKey)],limit:0},{onevent:async o=>{const s=JSON.parse(ls(o.content,r)),{id:i,result:a,error:c}=s;if(a==="auth_url"&&n[i]){delete n[i],this.params.onauth?this.params.onauth(c):console.warn(`nostr-tools/nip46: remote signer ${this.bp.pubkey} tried to send an "auth_url"='${c}' but there was no onauth() callback configured.`);return}let l=e[i];l&&(c?l.reject(c):a&&l.resolve(a),delete e[i])},onclose:()=>{this.subCloser=void 0}}),this.isOpen=!0}async switchRelays(){try{const e=await this.sendRequest("switch_relays",[]);let n=JSON.parse(e);if(!n||JSON.stringify(n.sort())===JSON.stringify(this.bp.relays))return!1;this.bp.relays=n;let r=this.subCloser;return setTimeout(()=>{r.close()},5e3),this.subCloser=void 0,this.setupSubscription(),!0}catch{return!1}}async close(){this.isOpen=!1,this.subCloser.close()}async sendRequest(e,n){return new Promise(async(r,o)=>{try{if(!this.isOpen)throw new Error("this signer is not open anymore, create a new one");this.subCloser||this.setupSubscription(),this.serial++;const s=`${this.idPrefix}-${this.serial}`,i=Wf(JSON.stringify({id:s,method:e,params:n}),this.conversationKey),a=Hf({kind:tr,tags:[["p",this.bp.pubkey]],content:i,created_at:Math.floor(Date.now()/1e3)},this.secretKey);this.listeners[s]={resolve:r,reject:o},this.waitingForAuth[s]=!0,await Promise.any(this.pool.publish(this.bp.relays,a))}catch(s){o(s)}})}async ping(){let e=await this.sendRequest("ping",[]);if(e!=="pong")throw new Error(`result is not pong: ${e}`)}async connect(){await this.sendRequest("connect",[this.bp.pubkey,this.bp.secret||""])}async getPublicKey(){return this.cachedPubKey||(this.cachedPubKey=await this.sendRequest("get_public_key",[])),this.cachedPubKey}async signEvent(e){let n=await this.sendRequest("sign_event",[JSON.stringify(e)]),r=JSON.parse(n);if(Na(r))return r;throw new Error(`event returned from bunker is improperly signed: ${JSON.stringify(r)}`)}async nip04Encrypt(e,n){return await this.sendRequest("nip04_encrypt",[e,n])}async nip04Decrypt(e,n){return await this.sendRequest("nip04_decrypt",[e,n])}async nip44Encrypt(e,n){return await this.sendRequest("nip44_encrypt",[e,n])}async nip44Decrypt(e,n){return await this.sendRequest("nip44_decrypt",[e,n])}};class Tn{constructor(e){g(this,"signer");g(this,"cachedPubKey");this.signer=e}async connect(){await this.signer.connect()}async getPublicKey(){return this.cachedPubKey||(this.cachedPubKey=await this.signer.getPublicKey()),this.cachedPubKey}async signEvent(e){return await this.signer.signEvent(e)}async close(){await this.signer.close()}static async create(e){const n=await cm(e);if(!n)throw new Error("Invalid bunker input");const r=Sr.fromBunker(eo(),n,{onauth:o=>{window.open(o,"_blank")}});return new Tn(r)}}let $e={signer:null,signerInfo:null,loading:!1,error:null};const Nr=new Set;function X(t){$e={...$e,...t},Nr.forEach(e=>e())}function um(t){return Nr.add(t),()=>Nr.delete(t)}function us(){return $e}function dm(){return $e.signer!==null}async function Oa(t){X({loading:!0,error:null});try{const e=await t.getPublicKey();return X({signer:t,signerInfo:{type:"nip07",pubkey:e},loading:!1,error:null}),!0}catch(e){return X({loading:!1,error:e instanceof Error?e.message:"Failed to get public key"}),!1}}function Ct(){const{signer:t,signerInfo:e,loading:n,error:r}=j.useSyncExternalStore(um,us,us),o=j.useCallback(async()=>{if(!en.isAvailable()){X({error:"NIP-07 extension not found"});return}X({loading:!0,error:null});try{const u=new en,m=await u.getPublicKey();X({signer:u,signerInfo:{type:"nip07",pubkey:m},loading:!1})}catch(u){X({error:u instanceof Error?u.message:"Login failed",loading:!1})}},[]),s=j.useCallback(async()=>{X({loading:!0,error:null});try{const u=new _t,m=await u.getPublicKey();X({signer:u,signerInfo:{type:"temp",pubkey:m},loading:!1})}catch(u){X({error:u instanceof Error?u.message:"Login failed",loading:!1})}},[]),i=j.useCallback(async u=>{X({loading:!0,error:null});try{const m=_t.fromNsec(u.trim()),f=await m.getPublicKey();X({signer:m,signerInfo:{type:"temp",pubkey:f},loading:!1})}catch(m){throw X({error:m instanceof Error?m.message:"Invalid nsec",loading:!1}),m}},[]),a=j.useCallback(async u=>{X({loading:!0,error:null});try{const m=await Tn.create(u);await m.connect();const f=await m.getPublicKey();X({signer:m,signerInfo:{type:"bunker",pubkey:f},loading:!1})}catch(m){X({error:m instanceof Error?m.message:"Login failed",loading:!1})}},[]),c=j.useCallback(()=>{var u;((u=$e.signerInfo)==null?void 0:u.type)==="bunker"&&$e.signer&&$e.signer.close(),X({signer:null,signerInfo:null,error:null})},[]),l=j.useCallback(()=>{X({error:null})},[]),d=j.useCallback(()=>{var u;return((u=$e.signerInfo)==null?void 0:u.type)==="temp"?$e.signer:null},[]);return{signer:t,signerInfo:e,loading:n,error:r,isLoggedIn:t!==null,loginWithNip07:o,loginWithTemp:s,loginWithNsec:i,loginWithBunker:a,logout:c,clearError:l,getTempSigner:d,isNip07Available:en.isAvailable()}}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function hm(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function ko(t,e=""){if(!Number.isSafeInteger(t)||t<0){const n=e&&`"${e}" `;throw new Error(`${n}expected integer >= 0, got ${t}`)}}function le(t,e,n=""){const r=hm(t),o=t==null?void 0:t.length,s=e!==void 0;if(!r||s&&o!==e){const i=n&&`"${n}" `,a=s?` of length ${e}`:"",c=r?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function ds(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function fm(t,e){le(t,void 0,"digestInto() output");const n=e.outputLen;if(t.length<n)throw new Error('"digestInto() output" expected to be of length >='+n)}function Cr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function nr(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function Ee(t,e){return t<<32-e|t>>>e}const Ma=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",mm=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function ie(t){if(le(t),Ma)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=mm[t[n]];return e}const Be={_0:48,_9:57,A:65,F:70,a:97,f:102};function hs(t){if(t>=Be._0&&t<=Be._9)return t-Be._0;if(t>=Be.A&&t<=Be.F)return t-(Be.A-10);if(t>=Be.a&&t<=Be.f)return t-(Be.a-10)}function st(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(Ma)return Uint8Array.fromHex(t);const e=t.length,n=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let o=0,s=0;o<n;o++,s+=2){const i=hs(t.charCodeAt(s)),a=hs(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}r[o]=i*16+a}return r}function mn(...t){let e=0;for(let r=0;r<t.length;r++){const o=t[r];le(o),e+=o.length}const n=new Uint8Array(e);for(let r=0,o=0;r<t.length;r++){const s=t[r];n.set(s,o),o+=s.length}return n}function pm(t,e={}){const n=(o,s)=>t(s).update(o).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.create=o=>t(o),Object.assign(n,e),Object.freeze(n)}function Da(t=32){const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof(e==null?void 0:e.getRandomValues)!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(t))}const gm=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function ym(t,e,n){return t&e^~t&n}function bm(t,e,n){return t&e^t&n^e&n}class wm{constructor(e,n,r,o){g(this,"blockLen");g(this,"outputLen");g(this,"padOffset");g(this,"isLE");g(this,"buffer");g(this,"view");g(this,"finished",!1);g(this,"length",0);g(this,"pos",0);g(this,"destroyed",!1);this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=nr(this.buffer)}update(e){ds(this),le(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=nr(e);for(;o<=s-i;i+=o)this.process(c,i);continue}r.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ds(this),fm(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:o,isLE:s}=this;let{pos:i}=this;n[i++]=128,Cr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(r,0),i=0);for(let u=i;u<o;u++)n[u]=0;r.setBigUint64(o-8,BigInt(this.length*8),s),this.process(r,0);const a=nr(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const qe=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),vm=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ve=new Uint32Array(64);class xm extends wm{constructor(e){super(64,e,8,!1)}get(){const{A:e,B:n,C:r,D:o,E:s,F:i,G:a,H:c}=this;return[e,n,r,o,s,i,a,c]}set(e,n,r,o,s,i,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,n){for(let u=0;u<16;u++,n+=4)Ve[u]=e.getUint32(n,!1);for(let u=16;u<64;u++){const m=Ve[u-15],f=Ve[u-2],p=Ee(m,7)^Ee(m,18)^m>>>3,h=Ee(f,17)^Ee(f,19)^f>>>10;Ve[u]=h+Ve[u-7]+p+Ve[u-16]|0}let{A:r,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const m=Ee(a,6)^Ee(a,11)^Ee(a,25),f=d+m+ym(a,c,l)+vm[u]+Ve[u]|0,h=(Ee(r,2)^Ee(r,13)^Ee(r,22))+bm(r,o,s)|0;d=l,l=c,c=a,a=i+f|0,i=s,s=o,o=r,r=f+h|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(r,o,s,i,a,c,l,d)}roundClean(){Cr(Ve)}destroy(){this.set(0,0,0,0,0,0,0,0),Cr(this.buffer)}}class Em extends xm{constructor(){super(32);g(this,"A",qe[0]|0);g(this,"B",qe[1]|0);g(this,"C",qe[2]|0);g(this,"D",qe[3]|0);g(this,"E",qe[4]|0);g(this,"F",qe[5]|0);g(this,"G",qe[6]|0);g(this,"H",qe[7]|0)}}const Br=pm(()=>new Em,gm(1)),_o=BigInt(0),Lr=BigInt(1);function fs(t,e=""){if(typeof t!="boolean"){const n=e&&`"${e}" `;throw new Error(n+"expected boolean, got type="+typeof t)}return t}function km(t){if(typeof t=="bigint"){if(!Am(t))throw new Error("positive bigint expected, got "+t)}else ko(t);return t}function Ka(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?_o:BigInt("0x"+t)}function Ao(t){return Ka(ie(t))}function ja(t){return Ka(ie(_m(le(t)).reverse()))}function So(t,e){ko(e),t=km(t);const n=st(t.toString(16).padStart(e*2,"0"));if(n.length!==e)throw new Error("number too large");return n}function Ha(t,e){return So(t,e).reverse()}function _m(t){return Uint8Array.from(t)}function za(t){return Uint8Array.from(t,(e,n)=>{const r=e.charCodeAt(0);if(e.length!==1||r>127)throw new Error(`string contains non-ASCII character "${t[n]}" with code ${r} at position ${n}`);return r})}const Am=t=>typeof t=="bigint"&&_o<=t;function Sm(t){let e;for(e=0;t>_o;t>>=Lr,e+=1);return e}const qa=t=>(Lr<<BigInt(t))-Lr;function Va(t,e={},n={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function r(s,i,a){const c=t[s];if(a&&c===void 0)return;const l=typeof c;if(l!==i||c===null)throw new Error(`param "${s}" is invalid: expected ${i}, got ${l}`)}const o=(s,i)=>Object.entries(s).forEach(([a,c])=>r(a,c,i));o(e,!1),o(n,!0)}function ms(t){const e=new WeakMap;return(n,...r)=>{const o=e.get(n);if(o!==void 0)return o;const s=t(n,...r);return e.set(n,s),s}}const ae=BigInt(0),oe=BigInt(1),it=BigInt(2),Fa=BigInt(3),Wa=BigInt(4),Za=BigInt(5),Nm=BigInt(7),Ja=BigInt(8),Cm=BigInt(9),Ga=BigInt(16);function pe(t,e){const n=t%e;return n>=ae?n:e+n}function he(t,e,n){let r=t;for(;e-- >ae;)r*=r,r%=n;return r}function ps(t,e){if(t===ae)throw new Error("invert: expected non-zero number");if(e<=ae)throw new Error("invert: expected positive modulus, got "+e);let n=pe(t,e),r=e,o=ae,s=oe;for(;n!==ae;){const a=r/n,c=r%n,l=o-s*a;r=n,n=c,o=s,s=l}if(r!==oe)throw new Error("invert: does not exist");return pe(o,e)}function No(t,e,n){if(!t.eql(t.sqr(e),n))throw new Error("Cannot find square root")}function Ya(t,e){const n=(t.ORDER+oe)/Wa,r=t.pow(e,n);return No(t,r,e),r}function Bm(t,e){const n=(t.ORDER-Za)/Ja,r=t.mul(e,it),o=t.pow(r,n),s=t.mul(e,o),i=t.mul(t.mul(s,it),o),a=t.mul(s,t.sub(i,t.ONE));return No(t,a,e),a}function Lm(t){const e=Pn(t),n=Xa(t),r=n(e,e.neg(e.ONE)),o=n(e,r),s=n(e,e.neg(r)),i=(t+Nm)/Ga;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,r);const u=a.mul(l,o),m=a.mul(l,s),f=a.eql(a.sqr(d),c),p=a.eql(a.sqr(u),c);l=a.cmov(l,d,f),d=a.cmov(m,u,p);const h=a.eql(a.sqr(d),c),y=a.cmov(l,d,h);return No(a,y,c),y}}function Xa(t){if(t<Fa)throw new Error("sqrt is not defined for small field");let e=t-oe,n=0;for(;e%it===ae;)e/=it,n++;let r=it;const o=Pn(t);for(;gs(o,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return Ya;let s=o.pow(r,e);const i=(e+oe)/it;return function(c,l){if(c.is0(l))return l;if(gs(c,l)!==1)throw new Error("Cannot find square root");let d=n,u=c.mul(c.ONE,s),m=c.pow(l,e),f=c.pow(l,i);for(;!c.eql(m,c.ONE);){if(c.is0(m))return c.ZERO;let p=1,h=c.sqr(m);for(;!c.eql(h,c.ONE);)if(p++,h=c.sqr(h),p===d)throw new Error("Cannot find square root");const y=oe<<BigInt(d-p-1),v=c.pow(u,y);d=p,u=c.sqr(v),m=c.mul(m,u),f=c.mul(f,v)}return f}}function Im(t){return t%Wa===Fa?Ya:t%Ja===Za?Bm:t%Ga===Cm?Lm(t):Xa(t)}const Rm=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function $m(t){const e={ORDER:"bigint",BYTES:"number",BITS:"number"},n=Rm.reduce((r,o)=>(r[o]="function",r),e);return Va(t,n),t}function Tm(t,e,n){if(n<ae)throw new Error("invalid exponent, negatives unsupported");if(n===ae)return t.ONE;if(n===oe)return e;let r=t.ONE,o=e;for(;n>ae;)n&oe&&(r=t.mul(r,o)),o=t.sqr(o),n>>=oe;return r}function Qa(t,e,n=!1){const r=new Array(e.length).fill(n?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(r[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(r[c]=t.mul(i,r[c]),t.mul(i,a)),s),r}function gs(t,e){const n=(t.ORDER-oe)/it,r=t.pow(e,n),o=t.eql(r,t.ONE),s=t.eql(r,t.ZERO),i=t.eql(r,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Pm(t,e){e!==void 0&&ko(e);const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}class Um{constructor(e,n={}){g(this,"ORDER");g(this,"BITS");g(this,"BYTES");g(this,"isLE");g(this,"ZERO",ae);g(this,"ONE",oe);g(this,"_lengths");g(this,"_sqrt");g(this,"_mod");var i;if(e<=ae)throw new Error("invalid field: expected ORDER > 0, got "+e);let r;this.isLE=!1,n!=null&&typeof n=="object"&&(typeof n.BITS=="number"&&(r=n.BITS),typeof n.sqrt=="function"&&(this.sqrt=n.sqrt),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=(i=n.allowedLengths)==null?void 0:i.slice()),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));const{nBitLength:o,nByteLength:s}=Pm(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return pe(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return ae<=e&&e<this.ORDER}is0(e){return e===ae}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&oe)===oe}neg(e){return pe(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return pe(e*e,this.ORDER)}add(e,n){return pe(e+n,this.ORDER)}sub(e,n){return pe(e-n,this.ORDER)}mul(e,n){return pe(e*n,this.ORDER)}pow(e,n){return Tm(this,e,n)}div(e,n){return pe(e*ps(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return ps(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=Im(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?Ha(e,this.BYTES):So(e,this.BYTES)}fromBytes(e,n=!1){le(e);const{_lengths:r,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(r){if(!r.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?ja(e):Ao(e);if(a&&(c=pe(c,i)),!n&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return Qa(this,e)}cmov(e,n,r){return r?n:e}}function Pn(t,e={}){return new Um(t,e)}function ec(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function Om(t){const e=ec(t);return e+Math.ceil(e/2)}function Mm(t,e,n=!1){le(t);const r=t.length,o=ec(e),s=Om(e);if(r<16||r<s||r>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+r);const i=n?ja(t):Ao(t),a=pe(i,e-oe)+oe;return n?Ha(a,o):So(a,o)}const At=BigInt(0),at=BigInt(1);function pn(t,e){const n=e.negate();return t?n:e}function ys(t,e){const n=Qa(t.Fp,e.map(r=>r.Z));return e.map((r,o)=>t.fromAffine(r.toAffine(n[o])))}function tc(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function rr(t,e){tc(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=qa(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function bs(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let a=Number(t&o),c=t>>i;a>r&&(a-=s,c+=at);const l=e*r,d=l+Math.abs(a)-1,u=a===0,m=a<0,f=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:m,isNegF:f,offsetF:l}}const or=new WeakMap,nc=new WeakMap;function sr(t){return nc.get(t)||1}function ws(t){if(t!==At)throw new Error("invalid wNAF")}class Dm{constructor(e,n){g(this,"BASE");g(this,"ZERO");g(this,"Fn");g(this,"bits");this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=n}_unsafeLadder(e,n,r=this.ZERO){let o=e;for(;n>At;)n&at&&(r=r.add(o)),o=o.double(),n>>=at;return r}precomputeWindow(e,n){const{windows:r,windowSize:o}=rr(n,this.bits),s=[];let i=e,a=i;for(let c=0;c<r;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,n,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=rr(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:m,offsetF:f}=bs(r,a,i);r=c,d?s=s.add(pn(m,n[f])):o=o.add(pn(u,n[l]))}return ws(r),{p:o,f:s}}wNAFUnsafe(e,n,r,o=this.ZERO){const s=rr(e,this.bits);for(let i=0;i<s.windows&&r!==At;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=bs(r,i,s);if(r=a,!l){const u=n[c];o=o.add(d?u.negate():u)}}return ws(r),o}getPrecomputes(e,n,r){let o=or.get(n);return o||(o=this.precomputeWindow(n,e),e!==1&&(typeof r=="function"&&(o=r(o)),or.set(n,o))),o}cached(e,n,r){const o=sr(e);return this.wNAF(o,this.getPrecomputes(o,e,r),n)}unsafe(e,n,r,o){const s=sr(e);return s===1?this._unsafeLadder(e,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),n,o)}createCache(e,n){tc(n,this.bits),nc.set(e,n),or.delete(e)}hasCache(e){return sr(e)!==1}}function Km(t,e,n,r){let o=e,s=t.ZERO,i=t.ZERO;for(;n>At||r>At;)n&at&&(s=s.add(o)),r&at&&(i=i.add(o)),o=o.double(),n>>=at,r>>=at;return{p1:s,p2:i}}function vs(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return $m(e),e}else return Pn(t,{isLE:n})}function jm(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const c of["p","n","h"]){const l=e[c];if(!(typeof l=="bigint"&&l>At))throw new Error(`CURVE.${c} must be positive bigint`)}const o=vs(e.p,n.Fp,r),s=vs(e.n,n.Fn,r),a=["Gx","Gy","a","b"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function Hm(t,e){return function(r){const o=t(r);return{secretKey:o,publicKey:e(o)}}}za("HashToScalar-");const xs=(t,e)=>(t+(t>=0?e:-e)/qm)/e;function zm(t,e,n){const[[r,o],[s,i]]=e,a=xs(i*t,n),c=xs(-o*t,n);let l=t-a*r-c*s,d=-a*o-c*i;const u=l<Tt,m=d<Tt;u&&(l=-l),m&&(d=-d);const f=qa(Math.ceil(Sm(n)/2))+rn;if(l<Tt||l>=f||d<Tt||d>=f)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:m,k2:d}}const Tt=BigInt(0),rn=BigInt(1),qm=BigInt(2),Zt=BigInt(3),Vm=BigInt(4);function Fm(t,e={}){const n=jm("weierstrass",t,e),{Fp:r,Fn:o}=n;let s=n.CURVE;const{h:i,n:a}=s;Va(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});const{endo:c}=e;if(c&&(!r.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Zm(r,o);function d(){if(!r.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(U,k,w){const{x,y:A}=k.toAffine(),I=r.toBytes(x);if(fs(w,"isCompressed"),w){d();const C=!r.isOdd(A);return mn(Wm(C),I)}else return mn(Uint8Array.of(4),I,r.toBytes(A))}function m(U){le(U,void 0,"Point");const{publicKey:k,publicKeyUncompressed:w}=l,x=U.length,A=U[0],I=U.subarray(1);if(x===k&&(A===2||A===3)){const C=r.fromBytes(I);if(!r.isValid(C))throw new Error("bad point: is not on curve, wrong x");const R=h(C);let B;try{B=r.sqrt(R)}catch(z){const F=z instanceof Error?": "+z.message:"";throw new Error("bad point: is not on curve, sqrt error"+F)}d();const $=r.isOdd(B);return(A&1)===1!==$&&(B=r.neg(B)),{x:C,y:B}}else if(x===w&&A===4){const C=r.BYTES,R=r.fromBytes(I.subarray(0,C)),B=r.fromBytes(I.subarray(C,C*2));if(!y(R,B))throw new Error("bad point: is not on curve");return{x:R,y:B}}else throw new Error(`bad point: got length ${x}, expected compressed=${k} or uncompressed=${w}`)}const f=e.toBytes||u,p=e.fromBytes||m;function h(U){const k=r.sqr(U),w=r.mul(k,U);return r.add(r.add(w,r.mul(U,s.a)),s.b)}function y(U,k){const w=r.sqr(k),x=h(U);return r.eql(w,x)}if(!y(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const v=r.mul(r.pow(s.a,Zt),Vm),E=r.mul(r.sqr(s.b),BigInt(27));if(r.is0(r.add(v,E)))throw new Error("bad curve params: a or b");function S(U,k,w=!1){if(!r.isValid(k)||w&&r.is0(k))throw new Error(`bad point coordinate ${U}`);return k}function O(U){if(!(U instanceof K))throw new Error("Weierstrass Point expected")}function M(U){if(!c||!c.basises)throw new Error("no endo");return zm(U,c.basises,o.ORDER)}const _=ms((U,k)=>{const{X:w,Y:x,Z:A}=U;if(r.eql(A,r.ONE))return{x:w,y:x};const I=U.is0();k==null&&(k=I?r.ONE:r.inv(A));const C=r.mul(w,k),R=r.mul(x,k),B=r.mul(A,k);if(I)return{x:r.ZERO,y:r.ZERO};if(!r.eql(B,r.ONE))throw new Error("invZ was invalid");return{x:C,y:R}}),N=ms(U=>{if(U.is0()){if(e.allowInfinityPoint&&!r.is0(U.Y))return;throw new Error("bad point: ZERO")}const{x:k,y:w}=U.toAffine();if(!r.isValid(k)||!r.isValid(w))throw new Error("bad point: x or y not field elements");if(!y(k,w))throw new Error("bad point: equation left != right");if(!U.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function L(U,k,w,x,A){return w=new K(r.mul(w.X,U),w.Y,w.Z),k=pn(x,k),w=pn(A,w),k.add(w)}const D=class D{constructor(k,w,x){g(this,"X");g(this,"Y");g(this,"Z");this.X=S("x",k),this.Y=S("y",w,!0),this.Z=S("z",x),Object.freeze(this)}static CURVE(){return s}static fromAffine(k){const{x:w,y:x}=k||{};if(!k||!r.isValid(w)||!r.isValid(x))throw new Error("invalid affine point");if(k instanceof D)throw new Error("projective point not allowed");return r.is0(w)&&r.is0(x)?D.ZERO:new D(w,x,r.ONE)}static fromBytes(k){const w=D.fromAffine(p(le(k,void 0,"point")));return w.assertValidity(),w}static fromHex(k){return D.fromBytes(st(k))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(k=8,w=!0){return P.createCache(this,k),w||this.multiply(Zt),this}assertValidity(){N(this)}hasEvenY(){const{y:k}=this.toAffine();if(!r.isOdd)throw new Error("Field doesn't support isOdd");return!r.isOdd(k)}equals(k){O(k);const{X:w,Y:x,Z:A}=this,{X:I,Y:C,Z:R}=k,B=r.eql(r.mul(w,R),r.mul(I,A)),$=r.eql(r.mul(x,R),r.mul(C,A));return B&&$}negate(){return new D(this.X,r.neg(this.Y),this.Z)}double(){const{a:k,b:w}=s,x=r.mul(w,Zt),{X:A,Y:I,Z:C}=this;let R=r.ZERO,B=r.ZERO,$=r.ZERO,H=r.mul(A,A),z=r.mul(I,I),F=r.mul(C,C),q=r.mul(A,I);return q=r.add(q,q),$=r.mul(A,C),$=r.add($,$),R=r.mul(k,$),B=r.mul(x,F),B=r.add(R,B),R=r.sub(z,B),B=r.add(z,B),B=r.mul(R,B),R=r.mul(q,R),$=r.mul(x,$),F=r.mul(k,F),q=r.sub(H,F),q=r.mul(k,q),q=r.add(q,$),$=r.add(H,H),H=r.add($,H),H=r.add(H,F),H=r.mul(H,q),B=r.add(B,H),F=r.mul(I,C),F=r.add(F,F),H=r.mul(F,q),R=r.sub(R,H),$=r.mul(F,z),$=r.add($,$),$=r.add($,$),new D(R,B,$)}add(k){O(k);const{X:w,Y:x,Z:A}=this,{X:I,Y:C,Z:R}=k;let B=r.ZERO,$=r.ZERO,H=r.ZERO;const z=s.a,F=r.mul(s.b,Zt);let q=r.mul(w,I),G=r.mul(x,C),re=r.mul(A,R),se=r.add(w,x),Z=r.add(I,C);se=r.mul(se,Z),Z=r.add(q,G),se=r.sub(se,Z),Z=r.add(w,A);let ue=r.add(I,R);return Z=r.mul(Z,ue),ue=r.add(q,re),Z=r.sub(Z,ue),ue=r.add(x,A),B=r.add(C,R),ue=r.mul(ue,B),B=r.add(G,re),ue=r.sub(ue,B),H=r.mul(z,Z),B=r.mul(F,re),H=r.add(B,H),B=r.sub(G,H),H=r.add(G,H),$=r.mul(B,H),G=r.add(q,q),G=r.add(G,q),re=r.mul(z,re),Z=r.mul(F,Z),G=r.add(G,re),re=r.sub(q,re),re=r.mul(z,re),Z=r.add(Z,re),q=r.mul(G,Z),$=r.add($,q),q=r.mul(ue,Z),B=r.mul(se,B),B=r.sub(B,q),q=r.mul(se,G),H=r.mul(ue,H),H=r.add(H,q),new D(B,$,H)}subtract(k){return this.add(k.negate())}is0(){return this.equals(D.ZERO)}multiply(k){const{endo:w}=e;if(!o.isValidNot0(k))throw new Error("invalid scalar: out of range");let x,A;const I=C=>P.cached(this,C,R=>ys(D,R));if(w){const{k1neg:C,k1:R,k2neg:B,k2:$}=M(k),{p:H,f:z}=I(R),{p:F,f:q}=I($);A=z.add(q),x=L(w.beta,H,F,C,B)}else{const{p:C,f:R}=I(k);x=C,A=R}return ys(D,[x,A])[0]}multiplyUnsafe(k){const{endo:w}=e,x=this;if(!o.isValid(k))throw new Error("invalid scalar: out of range");if(k===Tt||x.is0())return D.ZERO;if(k===rn)return x;if(P.hasCache(this))return this.multiply(k);if(w){const{k1neg:A,k1:I,k2neg:C,k2:R}=M(k),{p1:B,p2:$}=Km(D,x,I,R);return L(w.beta,B,$,A,C)}else return P.unsafe(x,k)}toAffine(k){return _(this,k)}isTorsionFree(){const{isTorsionFree:k}=e;return i===rn?!0:k?k(D,this):P.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:k}=e;return i===rn?this:k?k(D,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(k=!0){return fs(k,"isCompressed"),this.assertValidity(),f(D,this,k)}toHex(k=!0){return ie(this.toBytes(k))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}};g(D,"BASE",new D(s.Gx,s.Gy,r.ONE)),g(D,"ZERO",new D(r.ZERO,r.ONE,r.ZERO)),g(D,"Fp",r),g(D,"Fn",o);let K=D;const T=o.BITS,P=new Dm(K,e.endo?Math.ceil(T/2):T);return K.BASE.precompute(8),K}function Wm(t){return Uint8Array.of(t?2:3)}function Zm(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}const Un={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Jm={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Gm=BigInt(0),Ir=BigInt(2);function Ym(t){const e=Un.p,n=BigInt(3),r=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=he(d,n,e)*d%e,m=he(u,n,e)*d%e,f=he(m,Ir,e)*l%e,p=he(f,o,e)*f%e,h=he(p,s,e)*p%e,y=he(h,a,e)*h%e,v=he(y,c,e)*y%e,E=he(v,a,e)*h%e,S=he(E,n,e)*d%e,O=he(S,i,e)*p%e,M=he(O,r,e)*l%e,_=he(M,Ir,e);if(!gn.eql(gn.sqr(_),t))throw new Error("Cannot find square root");return _}const gn=Pn(Un.p,{sqrt:Ym}),Bt=Fm(Un,{Fp:gn,endo:Jm}),Es={};function yn(t,...e){let n=Es[t];if(n===void 0){const r=Br(za(t));n=mn(r,r),Es[t]=n}return Br(mn(n,...e))}const Co=t=>t.toBytes(!0).slice(1),Bo=t=>t%Ir===Gm;function Rr(t){const{Fn:e,BASE:n}=Bt,r=e.fromBytes(t),o=n.multiply(r);return{scalar:Bo(o.y)?r:e.neg(r),bytes:Co(o)}}function rc(t){const e=gn;if(!e.isValidNot0(t))throw new Error("invalid x: Fail if x ≥ p");const n=e.create(t*t),r=e.create(n*t+BigInt(7));let o=e.sqrt(r);Bo(o)||(o=e.neg(o));const s=Bt.fromAffine({x:t,y:o});return s.assertValidity(),s}const Ut=Ao;function oc(...t){return Bt.Fn.create(Ut(yn("BIP0340/challenge",...t)))}function ks(t){return Rr(t).bytes}function Xm(t,e,n=Da(32)){const{Fn:r}=Bt,o=le(t,void 0,"message"),{bytes:s,scalar:i}=Rr(e),a=le(n,32,"auxRand"),c=r.toBytes(i^Ut(yn("BIP0340/aux",a))),l=yn("BIP0340/nonce",c,s,o),{bytes:d,scalar:u}=Rr(l),m=oc(d,s,o),f=new Uint8Array(64);if(f.set(d,0),f.set(r.toBytes(r.create(u+m*i)),32),!sc(f,o,s))throw new Error("sign: Invalid signature produced");return f}function sc(t,e,n){const{Fp:r,Fn:o,BASE:s}=Bt,i=le(t,64,"signature"),a=le(e,void 0,"message"),c=le(n,32,"publicKey");try{const l=rc(Ut(c)),d=Ut(i.subarray(0,32));if(!r.isValidNot0(d))return!1;const u=Ut(i.subarray(32,64));if(!o.isValidNot0(u))return!1;const m=oc(o.toBytes(d),Co(l),a),f=s.multiplyUnsafe(u).add(l.multiplyUnsafe(o.neg(m))),{x:p,y:h}=f.toAffine();return!(f.is0()||!Bo(h)||p!==d)}catch{return!1}}const It=(()=>{const n=(r=Da(48))=>Mm(r,Un.n);return{keygen:Hm(n,ks),getPublicKey:ks,sign:Xm,verify:sc,Point:Bt,utils:{randomSecretKey:n,taggedHash:yn,lift_x:rc,pointToBytes:Co},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})(),nt=Symbol("verified"),Qm=t=>t instanceof Object;function ep(t){if(!Qm(t)||typeof t.kind!="number"||typeof t.content!="string"||typeof t.created_at!="number"||typeof t.pubkey!="string"||!t.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(t.tags))return!1;for(let e=0;e<t.tags.length;e++){let n=t.tags[e];if(!Array.isArray(n))return!1;for(let r=0;r<n.length;r++)if(typeof n[r]!="string")return!1}return!0}const Jt=new TextDecoder("utf-8"),tp=new TextEncoder;function We(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}class np{constructor(e){g(this,"value");g(this,"next",null);g(this,"prev",null);this.value=e}}class rp{constructor(){g(this,"first");g(this,"last");this.first=null,this.last=null}enqueue(e){const n=new np(e);return this.last?this.last===this.first?(this.last=n,this.last.prev=this.first,this.first.next=n):(n.prev=this.last,this.last.next=n,this.last=n):(this.first=n,this.last=n),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const n=this.first;return this.first=null,this.last=null,n.value}const e=this.first;return this.first=e.next,this.first&&(this.first.prev=null),e.value}}class op{generateSecretKey(){return It.utils.randomSecretKey()}getPublicKey(e){return ie(It.getPublicKey(e))}finalizeEvent(e,n){const r=e;return r.pubkey=ie(It.getPublicKey(n)),r.id=ir(r),r.sig=ie(It.sign(st(ir(r)),n)),r[nt]=!0,r}verifyEvent(e){if(typeof e[nt]=="boolean")return e[nt];const n=ir(e);if(n!==e.id)return e[nt]=!1,!1;try{const r=It.verify(st(e.sig),st(n),st(e.pubkey));return e[nt]=r,r}catch{return e[nt]=!1,!1}}}function sp(t){if(!ep(t))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content])}function ir(t){let e=Br(tp.encode(sp(t)));return ie(e)}const On=new op;On.generateSecretKey;On.getPublicKey;On.finalizeEvent;const ip=On.verifyEvent,ap=22242;function cp(t,e){if(t.ids&&t.ids.indexOf(e.id)===-1||t.kinds&&t.kinds.indexOf(e.kind)===-1||t.authors&&t.authors.indexOf(e.pubkey)===-1)return!1;for(let n in t)if(n[0]==="#"){let r=n.slice(1),o=t[`#${r}`];if(o&&!e.tags.find(([s,i])=>s===n.slice(1)&&o.indexOf(i)!==-1))return!1}return!(t.since&&e.created_at<t.since||t.until&&e.created_at>t.until)}function lp(t,e){for(let n=0;n<t.length;n++)if(cp(t[n],e))return!0;return!1}function up(t,e){let n=e.length+3,r=t.indexOf(`"${e}":`)+n,o=t.slice(r).indexOf('"')+r+1;return t.slice(o,o+64)}function dp(t){let e=t.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let n=t.slice(e+7+1).indexOf('"');if(n===-1)return null;let r=e+7+1+n,o=t.slice(r+1,80).indexOf('"');if(o===-1)return null;let s=r+1+o;return t.slice(r+1,s)}function hp(t,e){return{kind:ap,created_at:Math.floor(Date.now()/1e3),tags:[["relay",t],["challenge",e]],content:""}}async function fp(){return new Promise((t,e)=>{try{if(typeof MessageChannel<"u"){const n=new MessageChannel,r=()=>{n.port1.removeEventListener("message",r),t()};n.port1.addEventListener("message",r),n.port2.postMessage(0),n.port1.start()}else typeof setImmediate<"u"?setImmediate(t):typeof setTimeout<"u"?setTimeout(t,0):t()}catch(n){console.error("during yield: ",n),e(n)}})}const mp=t=>(t[nt]=!0,!0);class ic extends Error{constructor(e,n){super(`Tried to send message '${e} on a closed connection to ${n}.`),this.name="SendingOnClosedConnection"}}class Lo{constructor(e,n){g(this,"url");g(this,"_connected",!1);g(this,"onclose",null);g(this,"onnotice",e=>console.debug(`NOTICE from ${this.url}: ${e}`));g(this,"onauth");g(this,"baseEoseTimeout",4400);g(this,"publishTimeout",4400);g(this,"pingFrequency",29e3);g(this,"pingTimeout",2e4);g(this,"resubscribeBackoff",[1e4,1e4,1e4,2e4,2e4,3e4,6e4]);g(this,"openSubs",new Map);g(this,"enablePing");g(this,"enableReconnect");g(this,"reconnectTimeoutHandle");g(this,"pingIntervalHandle");g(this,"reconnectAttempts",0);g(this,"closedIntentionally",!1);g(this,"connectionPromise");g(this,"openCountRequests",new Map);g(this,"openEventPublishes",new Map);g(this,"ws");g(this,"incomingMessageQueue",new rp);g(this,"queueRunning",!1);g(this,"challenge");g(this,"authPromise");g(this,"serial",0);g(this,"verifyEvent");g(this,"_WebSocket");this.url=We(e),this.verifyEvent=n.verifyEvent,this._WebSocket=n.websocketImplementation||WebSocket,this.enablePing=n.enablePing,this.enableReconnect=n.enableReconnect||!1}static async connect(e,n){const r=new Lo(e,n);return await r.connect(n),r}closeAllSubscriptions(e){for(let[n,r]of this.openSubs)r.close(e);this.openSubs.clear();for(let[n,r]of this.openEventPublishes)r.reject(new Error(e));this.openEventPublishes.clear();for(let[n,r]of this.openCountRequests)r.reject(new Error(e));this.openCountRequests.clear()}get connected(){return this._connected}async reconnect(){const e=this.resubscribeBackoff[Math.min(this.reconnectAttempts,this.resubscribeBackoff.length-1)];this.reconnectAttempts++,this.reconnectTimeoutHandle=setTimeout(async()=>{try{await this.connect()}catch{}},e)}handleHardClose(e){var r;this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this._connected=!1,this.connectionPromise=void 0;const n=this.closedIntentionally;this.closedIntentionally=!1,(r=this.onclose)==null||r.call(this),this.enableReconnect&&!n?this.reconnect():this.closeAllSubscriptions(e)}async connect(e){let n;return this.connectionPromise?this.connectionPromise:(this.challenge=void 0,this.authPromise=void 0,this.connectionPromise=new Promise((r,o)=>{e!=null&&e.timeout&&(n=setTimeout(()=>{var s;o("connection timed out"),this.connectionPromise=void 0,(s=this.onclose)==null||s.call(this),this.closeAllSubscriptions("relay connection timed out")},e.timeout)),e!=null&&e.abort&&(e.abort.onabort=o);try{this.ws=new this._WebSocket(this.url)}catch(s){clearTimeout(n),o(s);return}this.ws.onopen=()=>{this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),clearTimeout(n),this._connected=!0;const s=this.reconnectAttempts>0;this.reconnectAttempts=0;for(const i of this.openSubs.values()){if(i.eosed=!1,s)for(let a=0;a<i.filters.length;a++)i.lastEmitted&&(i.filters[a].since=i.lastEmitted+1);i.fire()}this.enablePing&&(this.pingIntervalHandle=setInterval(()=>this.pingpong(),this.pingFrequency)),r()},this.ws.onerror=s=>{clearTimeout(n),o(s.message||"websocket error"),this.handleHardClose("relay connection errored")},this.ws.onclose=s=>{clearTimeout(n),o(s.message||"websocket closed"),this.handleHardClose("relay connection closed")},this.ws.onmessage=this._onmessage.bind(this)}),this.connectionPromise)}waitForPingPong(){return new Promise(e=>{this.ws.once("pong",()=>e(!0)),this.ws.ping()})}waitForDummyReq(){return new Promise((e,n)=>{if(!this.connectionPromise)return n(new Error(`no connection to ${this.url}, can't ping`));try{const r=this.subscribe([{ids:["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],limit:0}],{label:"forced-ping",oneose:()=>{e(!0),r.close()},onclose(){e(!0)},eoseTimeout:this.pingTimeout+1e3})}catch(r){n(r)}})}async pingpong(){var e,n,r;((e=this.ws)==null?void 0:e.readyState)===1&&(await Promise.any([this.ws&&this.ws.ping&&this.ws.once?this.waitForPingPong():this.waitForDummyReq(),new Promise(s=>setTimeout(()=>s(!1),this.pingTimeout))])||((n=this.ws)==null?void 0:n.readyState)===this._WebSocket.OPEN&&((r=this.ws)==null||r.close()))}async runQueue(){for(this.queueRunning=!0;this.handleNext()!==!1;)await fp();this.queueRunning=!1}handleNext(){var r,o,s;const e=this.incomingMessageQueue.dequeue();if(!e)return!1;const n=dp(e);if(n){const i=this.openSubs.get(n);if(!i)return;const a=up(e,"id"),c=(r=i.alreadyHaveEvent)==null?void 0:r.call(i,a);if((o=i.receivedEvent)==null||o.call(i,this,a),c)return}try{let i=JSON.parse(e);switch(i[0]){case"EVENT":{const a=this.openSubs.get(i[1]),c=i[2];this.verifyEvent(c)&&lp(a.filters,c)&&a.onevent(c),(!a.lastEmitted||a.lastEmitted<c.created_at)&&(a.lastEmitted=c.created_at);return}case"COUNT":{const a=i[1],c=i[2],l=this.openCountRequests.get(a);l&&(l.resolve(c.count),this.openCountRequests.delete(a));return}case"EOSE":{const a=this.openSubs.get(i[1]);if(!a)return;a.receivedEose();return}case"OK":{const a=i[1],c=i[2],l=i[3],d=this.openEventPublishes.get(a);d&&(clearTimeout(d.timeout),c?d.resolve(l):d.reject(new Error(l)),this.openEventPublishes.delete(a));return}case"CLOSED":{const a=i[1],c=this.openSubs.get(a);if(!c)return;c.closed=!0,c.close(i[2]);return}case"NOTICE":{this.onnotice(i[1]);return}case"AUTH":{this.challenge=i[1],this.onauth&&this.auth(this.onauth);return}default:{const a=this.openSubs.get(i[1]);(s=a==null?void 0:a.oncustom)==null||s.call(a,i);return}}}catch{return}}async send(e){if(!this.connectionPromise)throw new ic(e,this.url);this.connectionPromise.then(()=>{var n;(n=this.ws)==null||n.send(e)})}async auth(e){const n=this.challenge;if(!n)throw new Error("can't perform auth, no challenge was received");return this.authPromise?this.authPromise:(this.authPromise=new Promise(async(r,o)=>{try{let s=await e(hp(this.url,n)),i=setTimeout(()=>{let a=this.openEventPublishes.get(s.id);a&&(a.reject(new Error("auth timed out")),this.openEventPublishes.delete(s.id))},this.publishTimeout);this.openEventPublishes.set(s.id,{resolve:r,reject:o,timeout:i}),this.send('["AUTH",'+JSON.stringify(s)+"]")}catch(s){console.warn("subscribe auth function failed:",s)}}),this.authPromise)}async publish(e){const n=new Promise((r,o)=>{const s=setTimeout(()=>{const i=this.openEventPublishes.get(e.id);i&&(i.reject(new Error("publish timed out")),this.openEventPublishes.delete(e.id))},this.publishTimeout);this.openEventPublishes.set(e.id,{resolve:r,reject:o,timeout:s})});return this.send('["EVENT",'+JSON.stringify(e)+"]"),n}async count(e,n){this.serial++;const r=(n==null?void 0:n.id)||"count:"+this.serial,o=new Promise((s,i)=>{this.openCountRequests.set(r,{resolve:s,reject:i})});return this.send('["COUNT","'+r+'",'+JSON.stringify(e).substring(1)),o}subscribe(e,n){const r=this.prepareSubscription(e,n);return r.fire(),n.abort&&(n.abort.onabort=()=>r.close(String(n.abort.reason||"<aborted>"))),r}prepareSubscription(e,n){this.serial++;const r=n.id||(n.label?n.label+":":"sub:")+this.serial,o=new pp(this,r,e,n);return this.openSubs.set(r,o),o}close(){var e,n,r;this.closedIntentionally=!0,this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this.closeAllSubscriptions("relay connection closed by us"),this._connected=!1,(e=this.onclose)==null||e.call(this),((n=this.ws)==null?void 0:n.readyState)===this._WebSocket.OPEN&&((r=this.ws)==null||r.close())}_onmessage(e){this.incomingMessageQueue.enqueue(e.data),this.queueRunning||this.runQueue()}}class pp{constructor(e,n,r,o){g(this,"relay");g(this,"id");g(this,"lastEmitted");g(this,"closed",!1);g(this,"eosed",!1);g(this,"filters");g(this,"alreadyHaveEvent");g(this,"receivedEvent");g(this,"onevent");g(this,"oneose");g(this,"onclose");g(this,"oncustom");g(this,"eoseTimeout");g(this,"eoseTimeoutHandle");if(r.length===0)throw new Error("subscription can't be created with zero filters");this.relay=e,this.filters=r,this.id=n,this.alreadyHaveEvent=o.alreadyHaveEvent,this.receivedEvent=o.receivedEvent,this.eoseTimeout=o.eoseTimeout||e.baseEoseTimeout,this.oneose=o.oneose,this.onclose=o.onclose,this.onevent=o.onevent||(s=>{console.warn(`onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,s)})}fire(){this.relay.send('["REQ","'+this.id+'",'+JSON.stringify(this.filters).substring(1)),this.eoseTimeoutHandle=setTimeout(this.receivedEose.bind(this),this.eoseTimeout)}receivedEose(){var e;this.eosed||(clearTimeout(this.eoseTimeoutHandle),this.eosed=!0,(e=this.oneose)==null||e.call(this))}close(e="closed by caller"){var n;if(!this.closed&&this.relay.connected){try{this.relay.send('["CLOSE",'+JSON.stringify(this.id)+"]")}catch(r){if(!(r instanceof ic))throw r}this.closed=!0}this.relay.openSubs.delete(this.id),(n=this.onclose)==null||n.call(this,e)}}class gp{constructor(e){g(this,"relays",new Map);g(this,"seenOn",new Map);g(this,"trackRelays",!1);g(this,"verifyEvent");g(this,"enablePing");g(this,"enableReconnect");g(this,"automaticallyAuth");g(this,"trustedRelayURLs",new Set);g(this,"_WebSocket");this.verifyEvent=e.verifyEvent,this._WebSocket=e.websocketImplementation,this.enablePing=e.enablePing,this.enableReconnect=e.enableReconnect||!1,this.automaticallyAuth=e.automaticallyAuth}async ensureRelay(e,n){e=We(e);let r=this.relays.get(e);if(r||(r=new Lo(e,{verifyEvent:this.trustedRelayURLs.has(e)?mp:this.verifyEvent,websocketImplementation:this._WebSocket,enablePing:this.enablePing,enableReconnect:this.enableReconnect}),r.onclose=()=>{r&&!r.enableReconnect&&this.relays.delete(e)},this.relays.set(e,r)),this.automaticallyAuth){const o=this.automaticallyAuth(e);o&&(r.onauth=o)}return await r.connect({timeout:n==null?void 0:n.connectionTimeout,abort:n==null?void 0:n.abort}),r}close(e){e.map(We).forEach(n=>{var r;(r=this.relays.get(n))==null||r.close(),this.relays.delete(n)})}subscribe(e,n,r){const o=[];for(let s=0;s<e.length;s++){const i=We(e[s]);o.find(a=>a.url===i)||o.push({url:i,filter:n})}return this.subscribeMap(o,r)}subscribeMany(e,n,r){const o=[],s=[];for(let i=0;i<e.length;i++){const a=We(e[i]);s.indexOf(a)===-1&&(s.push(a),o.push({url:a,filter:n}))}return this.subscribeMap(o,r)}subscribeMap(e,n){const r=new Map;for(const f of e){const{url:p,filter:h}=f;r.has(p)||r.set(p,[]),r.get(p).push(h)}const o=Array.from(r.entries()).map(([f,p])=>({url:f,filters:p}));this.trackRelays&&(n.receivedEvent=(f,p)=>{let h=this.seenOn.get(p);h||(h=new Set,this.seenOn.set(p,h)),h.add(f)});const s=new Set,i=[],a=[];let c=f=>{var p;a[f]||(a[f]=!0,a.filter(h=>h).length===o.length&&((p=n.oneose)==null||p.call(n),c=()=>{}))};const l=[];let d=(f,p)=>{var h;l[f]||(c(f),l[f]=p,l.filter(y=>y).length===o.length&&((h=n.onclose)==null||h.call(n,l),d=()=>{}))};const u=f=>{var h;if((h=n.alreadyHaveEvent)!=null&&h.call(n,f))return!0;const p=s.has(f);return s.add(f),p},m=Promise.all(o.map(async({url:f,filters:p},h)=>{let y;try{y=await this.ensureRelay(f,{connectionTimeout:n.maxWait?Math.max(n.maxWait*.8,n.maxWait-1e3):void 0,abort:n.abort})}catch(E){d(h,(E==null?void 0:E.message)||String(E));return}let v=y.subscribe(p,{...n,oneose:()=>c(h),onclose:E=>{E.startsWith("auth-required: ")&&n.onauth?y.auth(n.onauth).then(()=>{y.subscribe(p,{...n,oneose:()=>c(h),onclose:S=>{d(h,S)},alreadyHaveEvent:u,eoseTimeout:n.maxWait,abort:n.abort})}).catch(S=>{d(h,`auth was required and attempted, but failed with: ${S}`)}):d(h,E)},alreadyHaveEvent:u,eoseTimeout:n.maxWait,abort:n.abort});i.push(v)}));return{async close(f){await m,i.forEach(p=>{p.close(f)})}}}subscribeEose(e,n,r){const o=this.subscribe(e,n,{...r,oneose(){o.close("closed automatically on eose")}});return o}subscribeManyEose(e,n,r){const o=this.subscribeMany(e,n,{...r,oneose(){o.close("closed automatically on eose")}});return o}async querySync(e,n,r){return new Promise(async o=>{const s=[];this.subscribeEose(e,n,{...r,onevent(i){s.push(i)},onclose(i){o(s)}})})}async get(e,n,r){n.limit=1;const o=await this.querySync(e,n,r);return o.sort((s,i)=>i.created_at-s.created_at),o[0]||null}publish(e,n,r){return e.map(We).map(async(o,s,i)=>{if(i.indexOf(o)!==s)return Promise.reject("duplicate url");let a=await this.ensureRelay(o);return a.publish(n).catch(async c=>{if(c instanceof Error&&c.message.startsWith("auth-required: ")&&(r!=null&&r.onauth))return await a.auth(r.onauth),a.publish(n);throw c}).then(c=>{if(this.trackRelays){let l=this.seenOn.get(n.id);l||(l=new Set,this.seenOn.set(n.id,l)),l.add(a)}return c})})}listConnectionStatus(){const e=new Map;return this.relays.forEach((n,r)=>e.set(r,n.connected)),e}destroy(){this.relays.forEach(e=>e.close()),this.relays=new Map}}var ac;try{ac=WebSocket}catch{}class yp extends gp{constructor(e){super({verifyEvent:ip,websocketImplementation:ac,...e})}}var bp=Math.pow(2,8)-1,wp=Math.pow(2,16)-1,vp=Math.pow(2,32)-1;const xp=function(t){var e=t-1;if(e<=bp)return Uint8Array;if(e<=wp)return Uint16Array;if(e<=vp)return Uint32Array;throw new Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};function Xe(t){if(this.capacity=t,typeof this.capacity!="number"||this.capacity<=0)throw new Error("mnemonist/lru-cache: capacity should be positive number.");if(!isFinite(this.capacity)||Math.floor(this.capacity)!==this.capacity)throw new Error("mnemonist/lru-cache: capacity should be a finite positive integer.");var e=xp(t);this.forward=new e(t),this.backward=new e(t),this.K=new Array(t),this.V=new Array(t),this.size=0,this.head=0,this.tail=0,this.items={}}Xe.prototype.clear=function(){this.size=0,this.head=0,this.tail=0,this.items={}};Xe.prototype.splayOnTop=function(t){var e=this.head;if(this.head===t)return this;var n=this.backward[t],r=this.forward[t];return this.tail===t?this.tail=n:this.backward[r]=n,this.forward[n]=r,this.backward[e]=t,this.head=t,this.forward[t]=e,this};Xe.prototype.set=function(t,e){var n=this.items[t];if(typeof n<"u"){this.splayOnTop(n),this.V[n]=e;return}this.size<this.capacity?n=this.size++:(n=this.tail,this.tail=this.backward[n],delete this.items[this.K[n]]),this.items[t]=n,this.K[n]=t,this.V[n]=e,this.forward[n]=this.head,this.backward[this.head]=n,this.head=n};Xe.prototype.setpop=function(t,e){var n=null,r=null,o=this.items[t];return typeof o<"u"?(this.splayOnTop(o),n=this.V[o],this.V[o]=e,{evicted:!1,key:t,value:n}):(this.size<this.capacity?o=this.size++:(o=this.tail,this.tail=this.backward[o],n=this.V[o],r=this.K[o],delete this.items[r]),this.items[t]=o,this.K[o]=t,this.V[o]=e,this.forward[o]=this.head,this.backward[this.head]=o,this.head=o,r?{evicted:!0,key:r,value:n}:null)};Xe.prototype.has=function(t){return t in this.items};Xe.prototype.get=function(t){var e=this.items[t];if(!(typeof e>"u"))return this.splayOnTop(e),this.V[e]};Xe.prototype.peek=function(t){var e=this.items[t];if(!(typeof e>"u"))return this.V[e]};class cc{constructor(e,n){g(this,"_batchLoadFn");g(this,"_maxBatchSize");g(this,"_cacheKeyFn");g(this,"_cacheMap");g(this,"_batch");if(typeof e!="function")throw new TypeError(`DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but got: ${e}.`);this._batchLoadFn=e,this._maxBatchSize=(n==null?void 0:n.maxBatchSize)||1/0,this._cacheKeyFn=n==null?void 0:n.cacheKeyFn;const r=new Xe(2e3);this._cacheMap={get:n.transformCacheHit?o=>{var s;return(s=r.get(o))==null?void 0:s.then(n.transformCacheHit)}:o=>r.get(o),set(o,s){return r.set(o,s)},delete(o){r.set(o,void 0)},clear(){r.clear()}},this._batch=null}load(e){if(e==null)throw new TypeError(`The loader.load() function must be called with a value, but got: ${String(e)}.`);const n=Ep(this),r=this._cacheKeyFn(e),o=this._cacheMap.get(r);if(o){const i=n.cacheHits||(n.cacheHits=[]);return new Promise(a=>{i.push(()=>{a(o)})})}n.keys.push(e);const s=new Promise((i,a)=>{n.callbacks.push({resolve:i,reject:a})});return this._cacheMap.set(r,s),s}clear(e){const n=this._cacheMap;if(n){const r=this._cacheKeyFn(e);n.delete(r)}return this}}function Ep(t){const e=t._batch;if(e!==null&&!e.hasDispatched&&e.keys.length<t._maxBatchSize)return e;const n={hasDispatched:!1,keys:[],callbacks:[]};return t._batch=n,setTimeout(()=>{kp(t,n)}),n}function kp(t,e){if(e.hasDispatched=!0,e.keys.length===0){$r(e);return}let n;try{n=t._batchLoadFn(e.keys)}catch(r){return ar(t,e,new TypeError(`DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function errored synchronously: ${String(r)}.`))}if(!n||typeof n.then!="function")return ar(t,e,new TypeError(`DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise: ${String(n)}.`));n.then(r=>{if(r.length!==e.keys.length)throw new TypeError(`DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array of the same length as the Array of keys.
3
3
 
4
4
  Keys:
5
5
  ${String(e.keys)}
6
6
 
7
7
  Values:
8
- ${String(r)}`);$r(e);for(let o=0;o<e.callbacks.length;o++){const s=r[o];s instanceof Error?e.callbacks[o].reject(s):e.callbacks[o].resolve(s)}}).catch(r=>{ar(t,e,r)})}function ar(t,e,n){$r(e);for(let r=0;r<e.keys.length;r++)t.clear(e.keys[r]),e.callbacks[r].reject(n)}function $r(t){if(t.cacheHits)for(let e=0;e<t.cacheHits.length;e++)t.cacheHits[e]()}function qt(t){return new Promise((e,n)=>{t.oncomplete=t.onsuccess=()=>e(t.result),t.onabort=t.onerror=()=>n(t.error)})}function Io(t,e){let n;const r=()=>{if(n)return n;const o=indexedDB.open(t);return o.onupgradeneeded=()=>o.result.createObjectStore(e),n=qt(o),n.then(s=>{s.onclose=()=>n=void 0},()=>{}),n};return(o,s)=>r().then(i=>s(i.transaction(e,o).objectStore(e)))}let cr;function Mn(){return cr||(cr=Io("keyval-store","keyval")),cr}function cc(t,e,n=Mn()){return n("readwrite",r=>(r.put(e,t),qt(r.transaction)))}function lc(t,e=Mn()){return e("readwrite",n=>(t.forEach(r=>n.put(r[1],r[0])),qt(n.transaction)))}function uc(t,e=Mn()){return e("readonly",n=>Promise.all(t.map(r=>qt(n.get(r)))))}function dc(t,e=Mn()){return e("readwrite",n=>(n.delete(t),qt(n.transaction)))}const Tr=["wss://purplepag.es","wss://relay.nos.social","wss://relay.primal.net"],kp=["wss://purplepag.es","wss://relay.nos.social","wss://indexer.coracle.social"];function St(t){for(let e=0;e<64;e++){let n=t.charCodeAt(e);if(isNaN(n)||n<48||n>102||n>57&&n<97)return!1}return!0}function _p(t){return!!t}let Ap=0;const Fe=Symbol("event was just downloaded or force-updated, not loaded from cache");Ne(3,Tr,Me(t=>{if(t.length>=2&&t[0]==="p"&&St(t[1]))return t[1]}));Ne(10101,[],Me(t=>{if(t.length>=2&&t[0]==="p"&&St(t[1]))return t[1]}));Ne(10102,[],Me(t=>{if(t.length>=2&&t[0]==="relay")return t[1]}));Ne(10012,[],Me(t=>{if(t.length>=2)switch(t[0]){case"relay":return We(t[1]);case"a":const e=t[1].split(":");return!St(e[1])||e[0]!=="30002"?void 0:{identifier:e.slice(2).join(":"),pubkey:e[1],kind:parseInt(e[0]),relays:t[2]?[t[2]]:[]}}}));const Ro=Ne(10002,kp,Me(t=>{if(t.length===2)return{url:t[1],read:!0,write:!0};if(t[2]==="read")return{url:t[1],read:!0,write:!1};if(t[2]==="write")return{url:t[1],read:!1,write:!0}}));Ne(1e4,[],Me(t=>{if(t.length>=2){switch(t[0]){case"p":if(St(t[1]))return{label:"pubkey",value:t[1]};break;case"e":if(St(t[1]))return{label:"thread",value:t[1]};break;case"t":return{label:"hashtag",value:t[1]};case"word":return{label:"word",value:t[1]}}return}}));Ne(10003,[],Me(t=>{if(t.length>=2&&(t[0]==="e"||t[0]==="a")&&t[1])return t[1]}));Ne(10063,[],t=>t?t.tags.filter(([e,n])=>e==="server"&&n).map(([,e])=>"http"+We(e).substring(2)).filter(Boolean):[]);Ne(10030,[],Me(t=>{if(!(t.length<2)){if(t[0]==="a"){const e=t[1].split(":");return!St(e[1])||e[0]!=="30030"?void 0:{identifier:e.slice(2).join(":"),pubkey:e[1],kind:parseInt(e[0]),relays:t[2]?[t[2]]:[]}}if(!(t.length<3||t[0]!=="emoji"))return{shortcode:t[1],url:t[2]}}}));Ne(10001,[],Me(t=>{if(t.length>=2&&t[0]==="e"&&t[1])return t[1]}));function Me(t){return e=>e?e.tags.map(t).filter(_p):[]}function Ne(t,e,n){const r=Io(`@nostr/gadgets/list:${t}`,"cache"),o=new ac(s=>new Promise(async i=>{var u;let a=[],c=Math.round(Date.now()/1e3),l=await uc(s.map(m=>m.target),r).then(m=>m.map((f,p)=>{const h=s[p];if(h.index=p,typeof h.refreshStyle=="object"){const y={event:h.refreshStyle,items:n(h.refreshStyle),[Fe]:!0};return cc(h.target,y,r),y}else return f?h.refreshStyle===!0||!f.lastAttempt||f.lastAttempt<c-3600*24*2?(h.refreshStyle!==!1&&a.push(h),{...f,[Fe]:!1}):f.event===null&&f.lastAttempt<Date.now()/1e3-3600?(h.refreshStyle!==!1&&a.push(h),{...f,[Fe]:!1}):{...f,[Fe]:!1}:(h.refreshStyle!==!1&&a.push(h),{items:h.defaultItems||[],event:null,[Fe]:!1})}));if(a.length===0){i(l);return}const d={};for(let m=0;m<a.length;m++){const f=a[m],p=f.relays.slice(0,Math.min(4,f.relays.length));do p.push(Sp(e));while(p.length<3);for(let h=0;h<p.length;h++){const y=p[h];let v=d[y];v||(v={kinds:[t],authors:[]},d[y]=v),(u=v.authors)==null||u.push(f.target)}}try{let m;m=Vt.subscribeMap(Object.entries(d).map(([f,p])=>({url:f,filter:p})),{label:`kind:${t}:batch(${a.length})`,onevent(f){var p;for(let h=0;h<a.length;h++){const y=a[h];if(y.target===f.pubkey){const v=(p=l[y.index])==null?void 0:p.event;if(((v==null?void 0:v.created_at)||0)>f.created_at)return;l[y.index]={event:f,items:n(f),[Fe]:!0};return}}},oneose(){m==null||m.close()},async onclose(){i(l),lc(a.map(f=>[f.target,{...l[f.index],lastAttempt:c}]),r)}})}catch(m){i(l.map(f=>m))}}),{cacheKeyFn:s=>s.target,transformCacheHit(s){return s[Fe]=!1,s}});return async function(s,i=[],a,c){if(a===null)return await dc(s,r),o._cacheMap.delete(s),{items:c||[],event:null,[Fe]:!0};let l=i;if(t===10002)return await o.load({target:s,relays:l,refreshStyle:a,defaultItems:c});{const d=await Ro(s,i,a);l.push(...d.items.filter(({write:m})=>m).map(({url:m})=>m).slice(0,3));const u={target:s,relays:l,refreshStyle:a,defaultItems:c};return a&&o.clear(u),await o.load(u)}}}function Sp(t){return t[Ap++%t.length]}let Vt=new gp;new TextDecoder("utf-8");new TextEncoder;function Np(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}const Cp=/^[0-9a-f]{64}$/i;function $o(t){return Cp.test(t)}const Bp=["wss://relay.damus.io/","wss://nos.lol/","wss://nostr.mom/"];function hc(){return[...Bp]}async function To(t,e){return Vt.querySync(t,e)}function Po(t,e,n,r){const o=Vt.subscribeMany(t,e,{onevent:n,oneose:r});return()=>o.close()}async function Uo(t,e){await Promise.any(Vt.publish(t,e))}async function Pr(t,e){const n=new Set;return t&&t.length>0&&t.forEach(r=>n.add(Np(r))),e&&$o(e)&&(await Ro(e)).items.forEach(o=>{o.read&&n.add(o.url)}),n.size===0&&hc().forEach(r=>n.add(r)),Array.from(n)}const Lp=Symbol("relays where this event was seen before stored");function Ip(t){return t[Lp]||[]}const Rp=1111;function fc(t){const{url:e,content:n,parentEvent:r}=t,o=t.mention&&$o(t.mention)?t.mention:void 0,s=[["I",e],["K","web"]];if(o&&s.push(["P",o]),r){const i=Ip(r);s.push(["e",r.id,i.length?i[0]:"",r.pubkey]),s.push(["k","1111"]),s.push(["p",r.pubkey])}else s.push(["i",e]),s.push(["k","web"]),o&&s.push(["p",o]);return{kind:Rp,content:n,tags:s,created_at:Math.floor(Date.now()/1e3)}}function $p(t){return t.tags.some(e=>e[0]==="e")}function Pt(t){const e=t.tags.find(n=>n[0]==="e");return e?e[1]:null}function Tp(t){const e=t.tags.find(n=>n[0]==="I");return e?e[1]:null}const Pp=`
8
+ ${String(r)}`);$r(e);for(let o=0;o<e.callbacks.length;o++){const s=r[o];s instanceof Error?e.callbacks[o].reject(s):e.callbacks[o].resolve(s)}}).catch(r=>{ar(t,e,r)})}function ar(t,e,n){$r(e);for(let r=0;r<e.keys.length;r++)t.clear(e.keys[r]),e.callbacks[r].reject(n)}function $r(t){if(t.cacheHits)for(let e=0;e<t.cacheHits.length;e++)t.cacheHits[e]()}function qt(t){return new Promise((e,n)=>{t.oncomplete=t.onsuccess=()=>e(t.result),t.onabort=t.onerror=()=>n(t.error)})}function Io(t,e){let n;const r=()=>{if(n)return n;const o=indexedDB.open(t);return o.onupgradeneeded=()=>o.result.createObjectStore(e),n=qt(o),n.then(s=>{s.onclose=()=>n=void 0},()=>{}),n};return(o,s)=>r().then(i=>s(i.transaction(e,o).objectStore(e)))}let cr;function Mn(){return cr||(cr=Io("keyval-store","keyval")),cr}function lc(t,e,n=Mn()){return n("readwrite",r=>(r.put(e,t),qt(r.transaction)))}function uc(t,e=Mn()){return e("readwrite",n=>(t.forEach(r=>n.put(r[1],r[0])),qt(n.transaction)))}function dc(t,e=Mn()){return e("readonly",n=>Promise.all(t.map(r=>qt(n.get(r)))))}function hc(t,e=Mn()){return e("readwrite",n=>(n.delete(t),qt(n.transaction)))}const Tr=["wss://purplepag.es","wss://relay.nos.social","wss://relay.primal.net"],_p=["wss://purplepag.es","wss://relay.nos.social","wss://indexer.coracle.social"];function St(t){for(let e=0;e<64;e++){let n=t.charCodeAt(e);if(isNaN(n)||n<48||n>102||n>57&&n<97)return!1}return!0}function Ap(t){return!!t}let Sp=0;const Fe=Symbol("event was just downloaded or force-updated, not loaded from cache");Ne(3,Tr,Me(t=>{if(t.length>=2&&t[0]==="p"&&St(t[1]))return t[1]}));Ne(10101,[],Me(t=>{if(t.length>=2&&t[0]==="p"&&St(t[1]))return t[1]}));Ne(10102,[],Me(t=>{if(t.length>=2&&t[0]==="relay")return t[1]}));Ne(10012,[],Me(t=>{if(t.length>=2)switch(t[0]){case"relay":return We(t[1]);case"a":const e=t[1].split(":");return!St(e[1])||e[0]!=="30002"?void 0:{identifier:e.slice(2).join(":"),pubkey:e[1],kind:parseInt(e[0]),relays:t[2]?[t[2]]:[]}}}));const Ro=Ne(10002,_p,Me(t=>{if(t.length===2)return{url:t[1],read:!0,write:!0};if(t[2]==="read")return{url:t[1],read:!0,write:!1};if(t[2]==="write")return{url:t[1],read:!1,write:!0}}));Ne(1e4,[],Me(t=>{if(t.length>=2){switch(t[0]){case"p":if(St(t[1]))return{label:"pubkey",value:t[1]};break;case"e":if(St(t[1]))return{label:"thread",value:t[1]};break;case"t":return{label:"hashtag",value:t[1]};case"word":return{label:"word",value:t[1]}}return}}));Ne(10003,[],Me(t=>{if(t.length>=2&&(t[0]==="e"||t[0]==="a")&&t[1])return t[1]}));Ne(10063,[],t=>t?t.tags.filter(([e,n])=>e==="server"&&n).map(([,e])=>"http"+We(e).substring(2)).filter(Boolean):[]);Ne(10030,[],Me(t=>{if(!(t.length<2)){if(t[0]==="a"){const e=t[1].split(":");return!St(e[1])||e[0]!=="30030"?void 0:{identifier:e.slice(2).join(":"),pubkey:e[1],kind:parseInt(e[0]),relays:t[2]?[t[2]]:[]}}if(!(t.length<3||t[0]!=="emoji"))return{shortcode:t[1],url:t[2]}}}));Ne(10001,[],Me(t=>{if(t.length>=2&&t[0]==="e"&&t[1])return t[1]}));function Me(t){return e=>e?e.tags.map(t).filter(Ap):[]}function Ne(t,e,n){const r=Io(`@nostr/gadgets/list:${t}`,"cache"),o=new cc(s=>new Promise(async i=>{var u;let a=[],c=Math.round(Date.now()/1e3),l=await dc(s.map(m=>m.target),r).then(m=>m.map((f,p)=>{const h=s[p];if(h.index=p,typeof h.refreshStyle=="object"){const y={event:h.refreshStyle,items:n(h.refreshStyle),[Fe]:!0};return lc(h.target,y,r),y}else return f?h.refreshStyle===!0||!f.lastAttempt||f.lastAttempt<c-3600*24*2?(h.refreshStyle!==!1&&a.push(h),{...f,[Fe]:!1}):f.event===null&&f.lastAttempt<Date.now()/1e3-3600?(h.refreshStyle!==!1&&a.push(h),{...f,[Fe]:!1}):{...f,[Fe]:!1}:(h.refreshStyle!==!1&&a.push(h),{items:h.defaultItems||[],event:null,[Fe]:!1})}));if(a.length===0){i(l);return}const d={};for(let m=0;m<a.length;m++){const f=a[m],p=f.relays.slice(0,Math.min(4,f.relays.length));do p.push(Np(e));while(p.length<3);for(let h=0;h<p.length;h++){const y=p[h];let v=d[y];v||(v={kinds:[t],authors:[]},d[y]=v),(u=v.authors)==null||u.push(f.target)}}try{let m;m=Vt.subscribeMap(Object.entries(d).map(([f,p])=>({url:f,filter:p})),{label:`kind:${t}:batch(${a.length})`,onevent(f){var p;for(let h=0;h<a.length;h++){const y=a[h];if(y.target===f.pubkey){const v=(p=l[y.index])==null?void 0:p.event;if(((v==null?void 0:v.created_at)||0)>f.created_at)return;l[y.index]={event:f,items:n(f),[Fe]:!0};return}}},oneose(){m==null||m.close()},async onclose(){i(l),uc(a.map(f=>[f.target,{...l[f.index],lastAttempt:c}]),r)}})}catch(m){i(l.map(f=>m))}}),{cacheKeyFn:s=>s.target,transformCacheHit(s){return s[Fe]=!1,s}});return async function(s,i=[],a,c){if(a===null)return await hc(s,r),o._cacheMap.delete(s),{items:c||[],event:null,[Fe]:!0};let l=i;if(t===10002)return await o.load({target:s,relays:l,refreshStyle:a,defaultItems:c});{const d=await Ro(s,i,a);l.push(...d.items.filter(({write:m})=>m).map(({url:m})=>m).slice(0,3));const u={target:s,relays:l,refreshStyle:a,defaultItems:c};return a&&o.clear(u),await o.load(u)}}}function Np(t){return t[Sp++%t.length]}let Vt=new yp;new TextDecoder("utf-8");new TextEncoder;function Cp(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}const Bp=/^[0-9a-f]{64}$/i;function $o(t){return Bp.test(t)}const Lp=["wss://relay.damus.io/","wss://nos.lol/","wss://nostr.mom/"];function fc(){return[...Lp]}async function To(t,e){return Vt.querySync(t,e)}function Po(t,e,n,r){const o=Vt.subscribeMany(t,e,{onevent:n,oneose:r});return()=>o.close()}async function Uo(t,e){await Promise.any(Vt.publish(t,e))}async function Pr(t,e){const n=new Set;return t&&t.length>0&&t.forEach(r=>n.add(Cp(r))),e&&$o(e)&&(await Ro(e)).items.forEach(o=>{o.read&&n.add(o.url)}),n.size===0&&fc().forEach(r=>n.add(r)),Array.from(n)}const Ip=Symbol("relays where this event was seen before stored");function Rp(t){return t[Ip]||[]}const $p=1111;function mc(t){const{url:e,content:n,parentEvent:r}=t,o=t.mention&&$o(t.mention)?t.mention:void 0,s=[["I",e],["K","web"]];if(o&&s.push(["P",o]),r){const i=Rp(r);s.push(["e",r.id,i.length?i[0]:"",r.pubkey]),s.push(["k","1111"]),s.push(["p",r.pubkey])}else s.push(["i",e]),s.push(["k","web"]),o&&s.push(["p",o]);return{kind:$p,content:n,tags:s,created_at:Math.floor(Date.now()/1e3)}}function Tp(t){return t.tags.some(e=>e[0]==="e")}function Pt(t){const e=t.tags.find(n=>n[0]==="e");return e?e[1]:null}function Pp(t){const e=t.tags.find(n=>n[0]==="I");return e?e[1]:null}const Up=`
9
9
  const utf8Encoder = new TextEncoder();
10
10
 
11
11
  async function sha256Hex(message) {
@@ -63,92 +63,92 @@ self.onmessage = async (e) => {
63
63
  self.postMessage({ success: false, error: error.message });
64
64
  }
65
65
  };
66
- `;let lr=null;function Up(){if(!lr){const t=new Blob([Pp],{type:"application/javascript"}),e=URL.createObjectURL(t);lr=new Worker(e)}return lr}function Op(t,e){return new Promise((n,r)=>{const o=Up(),s=i=>{o.removeEventListener("message",s),i.data.success?n(i.data.result):r(new Error(i.data.error))};o.addEventListener("message",s),o.postMessage({unsigned:t,difficulty:e})})}const mc=1111;function pc(t){const{url:e,relays:n,limit:r=50,onEvent:o,onEose:s}=t,i=[e];return e.endsWith("/")?i.push(e.slice(0,-1)):i.push(e+"/"),Po(n,{kinds:[mc],"#I":i,limit:r},o,s)}async function gc(t){const{url:e,relays:n,limit:r=50,until:o}=t,s=[e];return e.endsWith("/")?s.push(e.slice(0,-1)):s.push(e+"/"),To(n,{kinds:[mc],"#I":s,limit:r,...o?{until:o}:{}})}async function yc(t,e){let n=fc(e);if(e.pow&&e.pow>0){const o=await t.getPublicKey(),s={...n,pubkey:o},i=await Op(s,e.pow);n={...n,tags:i.tags,created_at:i.created_at}}const r=await t.signEvent(n);return await Uo(await Pr(e.relays,e.mention),r),r}function bc(t){const e=new Map;t.forEach(i=>e.set(i.id,i));const n=i=>{const a=Pt(i);if(!a)return null;const c=e.get(a);return!c||!Pt(c)?a:n(c)},r=[...t].sort((i,a)=>i.created_at-a.created_at),o=[],s=new Map;return r.forEach(i=>{const a=Pt(i);if(!a)o.push(i);else{const l=n(i)||a;s.has(l)||s.set(l,[]);const d=e.get(a),u=d&&!Pt(d);s.get(l).push({event:i,children:[],replyTo:u?void 0:d})}}),o.sort((i,a)=>a.created_at-i.created_at),o.map(i=>({event:i,children:s.get(i.id)||[]}))}const bt={comments:"Comments",writeComment:"Write a comment...",reply:"Reply",replyTo:"Reply to",publish:"Publish",publishing:"Publishing...",computing:"Computing...",cancel:"Cancel",login:"Login",logout:"Logout",loginRequired:"Please login first",loginDescription:"Choose a method to login and post comments",extensionLogin:"Browser Extension",extensionLoginDesc:"Login with NIP-07 extension (Alby, nos2x, etc.)",bunkerLogin:"Bunker Remote Signing",bunkerLoginDesc:"Use NIP-46 Bunker for remote signing",bunkerUrlPlaceholder:"Enter bunker:// URL",connect:"Connect",connecting:"Connecting...",tempAccount:"Temporary Account",tempAccountDesc:"Create a temporary key pair",tempAccountCreated:"Account created successfully!",createAccount:"Create Account",copyKey:"Copy Private Key (nsec)",keyCopied:"Copied!",downloadKey:"Download Key File",keyCompatibility:"This is a standard Nostr private key. You can use it in any Nostr client like Jumble, Damus, Amethyst, and more.",startCommenting:"Start Commenting",importKey:"Import Existing Key",importKeyDesc:"Login with a previously saved nsec private key",importKeyPlaceholder:"Paste nsec1... private key",importKeyError:"Invalid private key format",like:"Like",liked:"Liked",loadMore:"Load More",loading:"Loading...",noComments:"No comments yet. Be the first to comment!",error:"Error",retry:"Retry",anonymous:"Anonymous",timeJustNow:"just now",timeMinutesAgo:"{{n}}m ago",timeHoursAgo:"{{n}}h ago",timeDaysAgo:"{{n}}d ago"},on={comments:"评论",writeComment:"写下你的评论...",reply:"回复",replyTo:"回复",publish:"发布",publishing:"发布中...",computing:"计算中...",cancel:"取消",login:"登录",logout:"退出登录",loginRequired:"请先登录",loginDescription:"选择一种方式登录以发布评论",extensionLogin:"浏览器扩展",extensionLoginDesc:"使用 NIP-07 浏览器扩展(如 Alby、nos2x)登录",bunkerLogin:"Bunker 远程签名",bunkerLoginDesc:"使用 NIP-46 Bunker 进行远程签名",bunkerUrlPlaceholder:"输入 bunker:// URL",connect:"连接",connecting:"连接中...",tempAccount:"临时账号",tempAccountDesc:"创建一个临时密钥对",tempAccountCreated:"账号创建成功!",createAccount:"创建账号",copyKey:"复制私钥 (nsec)",keyCopied:"已复制!",downloadKey:"下载密钥文件",keyCompatibility:"此私钥是标准的 Nostr 密钥,可在 Jumble、Damus、Amethyst 等任何 Nostr 客户端中使用。",startCommenting:"开始评论",importKey:"导入已有密钥",importKeyDesc:"使用之前保存的 nsec 私钥登录",importKeyPlaceholder:"粘贴 nsec1... 私钥",importKeyError:"无效的私钥格式",like:"喜欢",liked:"已喜欢",loadMore:"加载更多",loading:"加载中...",noComments:"暂无评论,来说点什么吧",error:"出错了",retry:"重试",anonymous:"匿名用户",timeJustNow:"刚刚",timeMinutesAgo:"{{n}} 分钟前",timeHoursAgo:"{{n}} 小时前",timeDaysAgo:"{{n}} 天前"},ur={comments:"留言",writeComment:"撰寫留言...",reply:"回覆",replyTo:"回覆給",publish:"發布",publishing:"發布中...",computing:"計算中...",cancel:"取消",login:"登入",logout:"登出",loginRequired:"請先登入",loginDescription:"選擇登入方式以發表留言",extensionLogin:"瀏覽器擴充功能",extensionLoginDesc:"使用 NIP-07 擴充功能登入(Alby、nos2x 等)",bunkerLogin:"Bunker 遠端簽署",bunkerLoginDesc:"使用 NIP-46 Bunker 進行遠端簽署",bunkerUrlPlaceholder:"輸入 bunker:// 網址",connect:"連線",connecting:"連線中...",tempAccount:"臨時帳號",tempAccountDesc:"建立臨時金鑰對",tempAccountCreated:"帳號建立成功!",createAccount:"建立帳號",copyKey:"複製私鑰(nsec)",keyCopied:"已複製!",downloadKey:"下載金鑰檔案",keyCompatibility:"這是標準的 Nostr 私鑰。您可以在任何 Nostr 客戶端使用,如 Jumble、Damus、Amethyst 等。",startCommenting:"開始留言",importKey:"匯入現有金鑰",importKeyDesc:"使用已儲存的 nsec 私鑰登入",importKeyPlaceholder:"貼上 nsec1... 私鑰",importKeyError:"私鑰格式無效",like:"讚",liked:"已按讚",loadMore:"載入更多",loading:"載入中...",noComments:"尚無留言。成為第一個留言的人吧!",error:"錯誤",retry:"重試",anonymous:"匿名",timeJustNow:"剛剛",timeMinutesAgo:"{{n}}分鐘前",timeHoursAgo:"{{n}}小時前",timeDaysAgo:"{{n}}天前"},_s={comments:"コメント",writeComment:"コメントを書く...",reply:"返信",replyTo:"返信先",publish:"投稿",publishing:"投稿中...",computing:"計算中...",cancel:"キャンセル",login:"ログイン",logout:"ログアウト",loginRequired:"ログインしてください",loginDescription:"ログイン方法を選択してコメントを投稿",extensionLogin:"ブラウザ拡張機能",extensionLoginDesc:"NIP-07拡張機能でログイン(Alby、nos2xなど)",bunkerLogin:"Bunkerリモート署名",bunkerLoginDesc:"NIP-46 Bunkerでリモート署名",bunkerUrlPlaceholder:"bunker:// URLを入力",connect:"接続",connecting:"接続中...",tempAccount:"一時アカウント",tempAccountDesc:"一時的な鍵ペアを作成",tempAccountCreated:"アカウントが作成されました!",createAccount:"アカウント作成",copyKey:"秘密鍵をコピー(nsec)",keyCopied:"コピーしました!",downloadKey:"鍵ファイルをダウンロード",keyCompatibility:"これは標準的なNostr秘密鍵です。Jumble、Damus、Amethystなど、任意のNostrクライアントで使用できます。",startCommenting:"コメントを始める",importKey:"既存の鍵をインポート",importKeyDesc:"保存したnsec秘密鍵でログイン",importKeyPlaceholder:"nsec1...秘密鍵を貼り付け",importKeyError:"無効な秘密鍵形式",like:"いいね",liked:"いいね済み",loadMore:"もっと読み込む",loading:"読み込み中...",noComments:"まだコメントがありません。最初のコメントを投稿しましょう!",error:"エラー",retry:"再試行",anonymous:"匿名",timeJustNow:"たった今",timeMinutesAgo:"{{n}}分前",timeHoursAgo:"{{n}}時間前",timeDaysAgo:"{{n}}日前"},As={comments:"댓글",writeComment:"댓글 작성...",reply:"답글",replyTo:"답글 대상",publish:"게시",publishing:"게시 중...",computing:"계산 중...",cancel:"취소",login:"로그인",logout:"로그아웃",loginRequired:"먼저 로그인해 주세요",loginDescription:"로그인 방법을 선택하여 댓글 작성",extensionLogin:"브라우저 확장 프로그램",extensionLoginDesc:"NIP-07 확장 프로그램으로 로그인 (Alby, nos2x 등)",bunkerLogin:"Bunker 원격 서명",bunkerLoginDesc:"NIP-46 Bunker로 원격 서명 사용",bunkerUrlPlaceholder:"bunker:// URL 입력",connect:"연결",connecting:"연결 중...",tempAccount:"임시 계정",tempAccountDesc:"임시 키 쌍 생성",tempAccountCreated:"계정이 생성되었습니다!",createAccount:"계정 생성",copyKey:"개인 키 복사 (nsec)",keyCopied:"복사됨!",downloadKey:"키 파일 다운로드",keyCompatibility:"이것은 표준 Nostr 개인 키입니다. Jumble, Damus, Amethyst 등 모든 Nostr 클라이언트에서 사용할 수 있습니다.",startCommenting:"댓글 작성 시작",importKey:"기존 키 가져오기",importKeyDesc:"저장된 nsec 개인 키로 로그인",importKeyPlaceholder:"nsec1... 개인 키 붙여넣기",importKeyError:"잘못된 개인 키 형식",like:"좋아요",liked:"좋아요 완료",loadMore:"더 보기",loading:"로딩 중...",noComments:"아직 댓글이 없습니다. 첫 번째 댓글을 작성해 보세요!",error:"오류",retry:"다시 시도",anonymous:"익명",timeJustNow:"방금",timeMinutesAgo:"{{n}}분 전",timeHoursAgo:"{{n}}시간 전",timeDaysAgo:"{{n}}일 전"},gt={comments:"Comentarios",writeComment:"Escribe un comentario...",reply:"Responder",replyTo:"Responder a",publish:"Publicar",publishing:"Publicando...",computing:"Calculando...",cancel:"Cancelar",login:"Iniciar sesión",logout:"Cerrar sesión",loginRequired:"Por favor, inicia sesión primero",loginDescription:"Elige un método para iniciar sesión y publicar comentarios",extensionLogin:"Extensión del navegador",extensionLoginDesc:"Inicia sesión con extensión NIP-07 (Alby, nos2x, etc.)",bunkerLogin:"Firma remota Bunker",bunkerLoginDesc:"Usa NIP-46 Bunker para firma remota",bunkerUrlPlaceholder:"Introduce URL bunker://",connect:"Conectar",connecting:"Conectando...",tempAccount:"Cuenta temporal",tempAccountDesc:"Crear un par de claves temporal",tempAccountCreated:"¡Cuenta creada exitosamente!",createAccount:"Crear cuenta",copyKey:"Copiar clave privada (nsec)",keyCopied:"¡Copiado!",downloadKey:"Descargar archivo de clave",keyCompatibility:"Esta es una clave privada estándar de Nostr. Puedes usarla en cualquier cliente de Nostr como Jumble, Damus, Amethyst y más.",startCommenting:"Empezar a comentar",importKey:"Importar clave existente",importKeyDesc:"Inicia sesión con una clave privada nsec guardada",importKeyPlaceholder:"Pega la clave privada nsec1...",importKeyError:"Formato de clave privada inválido",like:"Me gusta",liked:"Te gusta",loadMore:"Cargar más",loading:"Cargando...",noComments:"Aún no hay comentarios. ¡Sé el primero en comentar!",error:"Error",retry:"Reintentar",anonymous:"Anónimo",timeJustNow:"ahora mismo",timeMinutesAgo:"hace {{n}}m",timeHoursAgo:"hace {{n}}h",timeDaysAgo:"hace {{n}}d"},Rt={comments:"Commentaires",writeComment:"Écrire un commentaire...",reply:"Répondre",replyTo:"Répondre à",publish:"Publier",publishing:"Publication...",computing:"Calcul...",cancel:"Annuler",login:"Connexion",logout:"Déconnexion",loginRequired:"Veuillez d'abord vous connecter",loginDescription:"Choisissez une méthode pour vous connecter et publier des commentaires",extensionLogin:"Extension navigateur",extensionLoginDesc:"Connexion avec extension NIP-07 (Alby, nos2x, etc.)",bunkerLogin:"Signature distante Bunker",bunkerLoginDesc:"Utiliser NIP-46 Bunker pour la signature distante",bunkerUrlPlaceholder:"Entrez l'URL bunker://",connect:"Connecter",connecting:"Connexion...",tempAccount:"Compte temporaire",tempAccountDesc:"Créer une paire de clés temporaire",tempAccountCreated:"Compte créé avec succès !",createAccount:"Créer un compte",copyKey:"Copier la clé privée (nsec)",keyCopied:"Copié !",downloadKey:"Télécharger le fichier de clé",keyCompatibility:"Ceci est une clé privée Nostr standard. Vous pouvez l'utiliser dans n'importe quel client Nostr comme Jumble, Damus, Amethyst, etc.",startCommenting:"Commencer à commenter",importKey:"Importer une clé existante",importKeyDesc:"Connexion avec une clé privée nsec sauvegardée",importKeyPlaceholder:"Collez la clé privée nsec1...",importKeyError:"Format de clé privée invalide",like:"J'aime",liked:"Aimé",loadMore:"Charger plus",loading:"Chargement...",noComments:"Pas encore de commentaires. Soyez le premier à commenter !",error:"Erreur",retry:"Réessayer",anonymous:"Anonyme",timeJustNow:"à l'instant",timeMinutesAgo:"il y a {{n}}min",timeHoursAgo:"il y a {{n}}h",timeDaysAgo:"il y a {{n}}j"},Gt={comments:"Kommentare",writeComment:"Kommentar schreiben...",reply:"Antworten",replyTo:"Antworten auf",publish:"Veröffentlichen",publishing:"Veröffentliche...",computing:"Berechne...",cancel:"Abbrechen",login:"Anmelden",logout:"Abmelden",loginRequired:"Bitte melden Sie sich zuerst an",loginDescription:"Wählen Sie eine Methode zum Anmelden und Kommentieren",extensionLogin:"Browser-Erweiterung",extensionLoginDesc:"Mit NIP-07-Erweiterung anmelden (Alby, nos2x, etc.)",bunkerLogin:"Bunker-Fernsignatur",bunkerLoginDesc:"NIP-46 Bunker für Fernsignatur verwenden",bunkerUrlPlaceholder:"bunker:// URL eingeben",connect:"Verbinden",connecting:"Verbinde...",tempAccount:"Temporäres Konto",tempAccountDesc:"Temporäres Schlüsselpaar erstellen",tempAccountCreated:"Konto erfolgreich erstellt!",createAccount:"Konto erstellen",copyKey:"Privaten Schlüssel kopieren (nsec)",keyCopied:"Kopiert!",downloadKey:"Schlüsseldatei herunterladen",keyCompatibility:"Dies ist ein standardmäßiger Nostr-Privatschlüssel. Sie können ihn in jedem Nostr-Client wie Jumble, Damus, Amethyst und mehr verwenden.",startCommenting:"Mit dem Kommentieren beginnen",importKey:"Vorhandenen Schlüssel importieren",importKeyDesc:"Mit gespeichertem nsec-Privatschlüssel anmelden",importKeyPlaceholder:"nsec1... Privatschlüssel einfügen",importKeyError:"Ungültiges Privatschlüssel-Format",like:"Gefällt mir",liked:"Gefällt mir",loadMore:"Mehr laden",loading:"Lädt...",noComments:"Noch keine Kommentare. Seien Sie der Erste!",error:"Fehler",retry:"Erneut versuchen",anonymous:"Anonym",timeJustNow:"gerade eben",timeMinutesAgo:"vor {{n}}min",timeHoursAgo:"vor {{n}}h",timeDaysAgo:"vor {{n}}T"},dr={comments:"Comentários",writeComment:"Escreva um comentário...",reply:"Responder",replyTo:"Responder a",publish:"Publicar",publishing:"Publicando...",computing:"Calculando...",cancel:"Cancelar",login:"Entrar",logout:"Sair",loginRequired:"Por favor, faça login primeiro",loginDescription:"Escolha um método para entrar e publicar comentários",extensionLogin:"Extensão do navegador",extensionLoginDesc:"Entre com extensão NIP-07 (Alby, nos2x, etc.)",bunkerLogin:"Assinatura remota Bunker",bunkerLoginDesc:"Use NIP-46 Bunker para assinatura remota",bunkerUrlPlaceholder:"Digite a URL bunker://",connect:"Conectar",connecting:"Conectando...",tempAccount:"Conta temporária",tempAccountDesc:"Criar um par de chaves temporário",tempAccountCreated:"Conta criada com sucesso!",createAccount:"Criar conta",copyKey:"Copiar chave privada (nsec)",keyCopied:"Copiado!",downloadKey:"Baixar arquivo de chave",keyCompatibility:"Esta é uma chave privada Nostr padrão. Você pode usá-la em qualquer cliente Nostr como Jumble, Damus, Amethyst e mais.",startCommenting:"Começar a comentar",importKey:"Importar chave existente",importKeyDesc:"Entre com uma chave privada nsec salva",importKeyPlaceholder:"Cole a chave privada nsec1...",importKeyError:"Formato de chave privada inválido",like:"Curtir",liked:"Curtido",loadMore:"Carregar mais",loading:"Carregando...",noComments:"Ainda não há comentários. Seja o primeiro a comentar!",error:"Erro",retry:"Tentar novamente",anonymous:"Anônimo",timeJustNow:"agora mesmo",timeMinutesAgo:"há {{n}}min",timeHoursAgo:"há {{n}}h",timeDaysAgo:"há {{n}}d"},Ss={comments:"Комментарии",writeComment:"Написать комментарий...",reply:"Ответить",replyTo:"Ответить",publish:"Опубликовать",publishing:"Публикация...",computing:"Вычисление...",cancel:"Отмена",login:"Войти",logout:"Выйти",loginRequired:"Пожалуйста, сначала войдите",loginDescription:"Выберите способ входа для публикации комментариев",extensionLogin:"Расширение браузера",extensionLoginDesc:"Войти через NIP-07 расширение (Alby, nos2x и др.)",bunkerLogin:"Удалённая подпись Bunker",bunkerLoginDesc:"Использовать NIP-46 Bunker для удалённой подписи",bunkerUrlPlaceholder:"Введите URL bunker://",connect:"Подключить",connecting:"Подключение...",tempAccount:"Временный аккаунт",tempAccountDesc:"Создать временную пару ключей",tempAccountCreated:"Аккаунт успешно создан!",createAccount:"Создать аккаунт",copyKey:"Копировать приватный ключ (nsec)",keyCopied:"Скопировано!",downloadKey:"Скачать файл ключа",keyCompatibility:"Это стандартный приватный ключ Nostr. Вы можете использовать его в любом клиенте Nostr, таком как Jumble, Damus, Amethyst и других.",startCommenting:"Начать комментировать",importKey:"Импортировать существующий ключ",importKeyDesc:"Войти с сохранённым приватным ключом nsec",importKeyPlaceholder:"Вставьте приватный ключ nsec1...",importKeyError:"Неверный формат приватного ключа",like:"Нравится",liked:"Понравилось",loadMore:"Загрузить ещё",loading:"Загрузка...",noComments:"Пока нет комментариев. Будьте первым!",error:"Ошибка",retry:"Повторить",anonymous:"Аноним",timeJustNow:"только что",timeMinutesAgo:"{{n}} мин. назад",timeHoursAgo:"{{n}} ч. назад",timeDaysAgo:"{{n}} дн. назад"},Yt={comments:"التعليقات",writeComment:"اكتب تعليقاً...",reply:"رد",replyTo:"الرد على",publish:"نشر",publishing:"جارِ النشر...",computing:"جارِ الحساب...",cancel:"إلغاء",login:"تسجيل الدخول",logout:"تسجيل الخروج",loginRequired:"يرجى تسجيل الدخول أولاً",loginDescription:"اختر طريقة لتسجيل الدخول ونشر التعليقات",extensionLogin:"إضافة المتصفح",extensionLoginDesc:"تسجيل الدخول باستخدام إضافة NIP-07 (Alby، nos2x، إلخ)",bunkerLogin:"توقيع Bunker عن بُعد",bunkerLoginDesc:"استخدام NIP-46 Bunker للتوقيع عن بُعد",bunkerUrlPlaceholder:"أدخل رابط bunker://",connect:"اتصال",connecting:"جارِ الاتصال...",tempAccount:"حساب مؤقت",tempAccountDesc:"إنشاء زوج مفاتيح مؤقت",tempAccountCreated:"تم إنشاء الحساب بنجاح!",createAccount:"إنشاء حساب",copyKey:"نسخ المفتاح الخاص (nsec)",keyCopied:"تم النسخ!",downloadKey:"تحميل ملف المفتاح",keyCompatibility:"هذا مفتاح Nostr خاص قياسي. يمكنك استخدامه في أي عميل Nostr مثل Jumble وDamus وAmethyst وغيرها.",startCommenting:"ابدأ التعليق",importKey:"استيراد مفتاح موجود",importKeyDesc:"تسجيل الدخول بمفتاح nsec خاص محفوظ",importKeyPlaceholder:"الصق المفتاح الخاص nsec1...",importKeyError:"صيغة المفتاح الخاص غير صالحة",like:"إعجاب",liked:"أُعجبت",loadMore:"تحميل المزيد",loading:"جارِ التحميل...",noComments:"لا توجد تعليقات بعد. كن أول من يعلق!",error:"خطأ",retry:"إعادة المحاولة",anonymous:"مجهول",timeJustNow:"الآن",timeMinutesAgo:"منذ {{n}} دقيقة",timeHoursAgo:"منذ {{n}} ساعة",timeDaysAgo:"منذ {{n}} يوم"},Ns={comments:"Commenti",writeComment:"Scrivi un commento...",reply:"Rispondi",replyTo:"Rispondi a",publish:"Pubblica",publishing:"Pubblicazione...",computing:"Calcolo...",cancel:"Annulla",login:"Accedi",logout:"Esci",loginRequired:"Effettua prima l'accesso",loginDescription:"Scegli un metodo per accedere e pubblicare commenti",extensionLogin:"Estensione browser",extensionLoginDesc:"Accedi con estensione NIP-07 (Alby, nos2x, ecc.)",bunkerLogin:"Firma remota Bunker",bunkerLoginDesc:"Usa NIP-46 Bunker per la firma remota",bunkerUrlPlaceholder:"Inserisci URL bunker://",connect:"Connetti",connecting:"Connessione...",tempAccount:"Account temporaneo",tempAccountDesc:"Crea una coppia di chiavi temporanea",tempAccountCreated:"Account creato con successo!",createAccount:"Crea account",copyKey:"Copia chiave privata (nsec)",keyCopied:"Copiato!",downloadKey:"Scarica file chiave",keyCompatibility:"Questa è una chiave privata Nostr standard. Puoi usarla in qualsiasi client Nostr come Jumble, Damus, Amethyst e altri.",startCommenting:"Inizia a commentare",importKey:"Importa chiave esistente",importKeyDesc:"Accedi con una chiave privata nsec salvata",importKeyPlaceholder:"Incolla la chiave privata nsec1...",importKeyError:"Formato chiave privata non valido",like:"Mi piace",liked:"Piaciuto",loadMore:"Carica altri",loading:"Caricamento...",noComments:"Ancora nessun commento. Sii il primo a commentare!",error:"Errore",retry:"Riprova",anonymous:"Anonimo",timeJustNow:"proprio ora",timeMinutesAgo:"{{n}}min fa",timeHoursAgo:"{{n}}h fa",timeDaysAgo:"{{n}}g fa"},hr={comments:"Reacties",writeComment:"Schrijf een reactie...",reply:"Reageren",replyTo:"Reageren op",publish:"Publiceren",publishing:"Publiceren...",computing:"Berekenen...",cancel:"Annuleren",login:"Inloggen",logout:"Uitloggen",loginRequired:"Log eerst in",loginDescription:"Kies een methode om in te loggen en reacties te plaatsen",extensionLogin:"Browserextensie",extensionLoginDesc:"Inloggen met NIP-07 extensie (Alby, nos2x, etc.)",bunkerLogin:"Bunker externe ondertekening",bunkerLoginDesc:"Gebruik NIP-46 Bunker voor externe ondertekening",bunkerUrlPlaceholder:"Voer bunker:// URL in",connect:"Verbinden",connecting:"Verbinden...",tempAccount:"Tijdelijk account",tempAccountDesc:"Maak een tijdelijk sleutelpaar aan",tempAccountCreated:"Account succesvol aangemaakt!",createAccount:"Account aanmaken",copyKey:"Kopieer privésleutel (nsec)",keyCopied:"Gekopieerd!",downloadKey:"Download sleutelbestand",keyCompatibility:"Dit is een standaard Nostr privésleutel. Je kunt deze gebruiken in elke Nostr-client zoals Jumble, Damus, Amethyst en meer.",startCommenting:"Begin met reageren",importKey:"Bestaande sleutel importeren",importKeyDesc:"Log in met een opgeslagen nsec privésleutel",importKeyPlaceholder:"Plak nsec1... privésleutel",importKeyError:"Ongeldig privésleutel formaat",like:"Vind ik leuk",liked:"Leuk gevonden",loadMore:"Meer laden",loading:"Laden...",noComments:"Nog geen reacties. Wees de eerste om te reageren!",error:"Fout",retry:"Opnieuw proberen",anonymous:"Anoniem",timeJustNow:"zojuist",timeMinutesAgo:"{{n}}min geleden",timeHoursAgo:"{{n}}u geleden",timeDaysAgo:"{{n}}d geleden"},Cs={comments:"Komentarze",writeComment:"Napisz komentarz...",reply:"Odpowiedz",replyTo:"Odpowiedz do",publish:"Opublikuj",publishing:"Publikowanie...",computing:"Obliczanie...",cancel:"Anuluj",login:"Zaloguj się",logout:"Wyloguj się",loginRequired:"Najpierw się zaloguj",loginDescription:"Wybierz metodę logowania i publikowania komentarzy",extensionLogin:"Rozszerzenie przeglądarki",extensionLoginDesc:"Zaloguj się za pomocą rozszerzenia NIP-07 (Alby, nos2x, itp.)",bunkerLogin:"Zdalne podpisywanie Bunker",bunkerLoginDesc:"Użyj NIP-46 Bunker do zdalnego podpisywania",bunkerUrlPlaceholder:"Wprowadź URL bunker://",connect:"Połącz",connecting:"Łączenie...",tempAccount:"Tymczasowe konto",tempAccountDesc:"Utwórz tymczasową parę kluczy",tempAccountCreated:"Konto utworzone pomyślnie!",createAccount:"Utwórz konto",copyKey:"Kopiuj klucz prywatny (nsec)",keyCopied:"Skopiowano!",downloadKey:"Pobierz plik klucza",keyCompatibility:"To jest standardowy klucz prywatny Nostr. Możesz go używać w dowolnym kliencie Nostr, takim jak Jumble, Damus, Amethyst i innych.",startCommenting:"Zacznij komentować",importKey:"Importuj istniejący klucz",importKeyDesc:"Zaloguj się za pomocą zapisanego klucza prywatnego nsec",importKeyPlaceholder:"Wklej klucz prywatny nsec1...",importKeyError:"Nieprawidłowy format klucza prywatnego",like:"Lubię",liked:"Polubione",loadMore:"Załaduj więcej",loading:"Ładowanie...",noComments:"Brak komentarzy. Bądź pierwszy!",error:"Błąd",retry:"Ponów",anonymous:"Anonim",timeJustNow:"właśnie teraz",timeMinutesAgo:"{{n}} min temu",timeHoursAgo:"{{n}} godz. temu",timeDaysAgo:"{{n}} dni temu"},Bs={comments:"Yorumlar",writeComment:"Yorum yaz...",reply:"Yanıtla",replyTo:"Yanıtla",publish:"Yayınla",publishing:"Yayınlanıyor...",computing:"Hesaplanıyor...",cancel:"İptal",login:"Giriş yap",logout:"Çıkış yap",loginRequired:"Lütfen önce giriş yapın",loginDescription:"Giriş yapmak ve yorum yazmak için bir yöntem seçin",extensionLogin:"Tarayıcı eklentisi",extensionLoginDesc:"NIP-07 eklentisiyle giriş yapın (Alby, nos2x, vb.)",bunkerLogin:"Bunker uzaktan imzalama",bunkerLoginDesc:"Uzaktan imzalama için NIP-46 Bunker kullanın",bunkerUrlPlaceholder:"bunker:// URL'sini girin",connect:"Bağlan",connecting:"Bağlanıyor...",tempAccount:"Geçici hesap",tempAccountDesc:"Geçici anahtar çifti oluştur",tempAccountCreated:"Hesap başarıyla oluşturuldu!",createAccount:"Hesap oluştur",copyKey:"Özel anahtarı kopyala (nsec)",keyCopied:"Kopyalandı!",downloadKey:"Anahtar dosyasını indir",keyCompatibility:"Bu standart bir Nostr özel anahtarıdır. Jumble, Damus, Amethyst ve daha fazlası gibi herhangi bir Nostr istemcisinde kullanabilirsiniz.",startCommenting:"Yorum yapmaya başla",importKey:"Mevcut anahtarı içe aktar",importKeyDesc:"Kayıtlı nsec özel anahtarıyla giriş yapın",importKeyPlaceholder:"nsec1... özel anahtarını yapıştırın",importKeyError:"Geçersiz özel anahtar formatı",like:"Beğen",liked:"Beğenildi",loadMore:"Daha fazla yükle",loading:"Yükleniyor...",noComments:"Henüz yorum yok. İlk yorumu siz yapın!",error:"Hata",retry:"Tekrar dene",anonymous:"Anonim",timeJustNow:"az önce",timeMinutesAgo:"{{n}}dk önce",timeHoursAgo:"{{n}}sa önce",timeDaysAgo:"{{n}}g önce"},Ls={comments:"Bình luận",writeComment:"Viết bình luận...",reply:"Trả lời",replyTo:"Trả lời",publish:"Đăng",publishing:"Đang đăng...",computing:"Đang tính toán...",cancel:"Hủy",login:"Đăng nhập",logout:"Đăng xuất",loginRequired:"Vui lòng đăng nhập trước",loginDescription:"Chọn phương thức đăng nhập để đăng bình luận",extensionLogin:"Tiện ích trình duyệt",extensionLoginDesc:"Đăng nhập bằng tiện ích NIP-07 (Alby, nos2x, v.v.)",bunkerLogin:"Ký từ xa Bunker",bunkerLoginDesc:"Sử dụng NIP-46 Bunker để ký từ xa",bunkerUrlPlaceholder:"Nhập URL bunker://",connect:"Kết nối",connecting:"Đang kết nối...",tempAccount:"Tài khoản tạm thời",tempAccountDesc:"Tạo cặp khóa tạm thời",tempAccountCreated:"Tạo tài khoản thành công!",createAccount:"Tạo tài khoản",copyKey:"Sao chép khóa riêng (nsec)",keyCopied:"Đã sao chép!",downloadKey:"Tải file khóa",keyCompatibility:"Đây là khóa riêng Nostr tiêu chuẩn. Bạn có thể sử dụng nó trong bất kỳ ứng dụng Nostr nào như Jumble, Damus, Amethyst và nhiều hơn nữa.",startCommenting:"Bắt đầu bình luận",importKey:"Nhập khóa hiện có",importKeyDesc:"Đăng nhập bằng khóa riêng nsec đã lưu",importKeyPlaceholder:"Dán khóa riêng nsec1...",importKeyError:"Định dạng khóa riêng không hợp lệ",like:"Thích",liked:"Đã thích",loadMore:"Tải thêm",loading:"Đang tải...",noComments:"Chưa có bình luận. Hãy là người đầu tiên bình luận!",error:"Lỗi",retry:"Thử lại",anonymous:"Ẩn danh",timeJustNow:"vừa xong",timeMinutesAgo:"{{n}} phút trước",timeHoursAgo:"{{n}} giờ trước",timeDaysAgo:"{{n}} ngày trước"},Is={comments:"ความคิดเห็น",writeComment:"เขียนความคิดเห็น...",reply:"ตอบกลับ",replyTo:"ตอบกลับถึง",publish:"เผยแพร่",publishing:"กำลังเผยแพร่...",computing:"กำลังคำนวณ...",cancel:"ยกเลิก",login:"เข้าสู่ระบบ",logout:"ออกจากระบบ",loginRequired:"กรุณาเข้าสู่ระบบก่อน",loginDescription:"เลือกวิธีเข้าสู่ระบบเพื่อโพสต์ความคิดเห็น",extensionLogin:"ส่วนขยายเบราว์เซอร์",extensionLoginDesc:"เข้าสู่ระบบด้วยส่วนขยาย NIP-07 (Alby, nos2x ฯลฯ)",bunkerLogin:"ลงนามระยะไกล Bunker",bunkerLoginDesc:"ใช้ NIP-46 Bunker สำหรับการลงนามระยะไกล",bunkerUrlPlaceholder:"ใส่ URL bunker://",connect:"เชื่อมต่อ",connecting:"กำลังเชื่อมต่อ...",tempAccount:"บัญชีชั่วคราว",tempAccountDesc:"สร้างคู่คีย์ชั่วคราว",tempAccountCreated:"สร้างบัญชีสำเร็จ!",createAccount:"สร้างบัญชี",copyKey:"คัดลอกคีย์ส่วนตัว (nsec)",keyCopied:"คัดลอกแล้ว!",downloadKey:"ดาวน์โหลดไฟล์คีย์",keyCompatibility:"นี่คือคีย์ส่วนตัว Nostr มาตรฐาน คุณสามารถใช้งานได้ในไคลเอนต์ Nostr ใดก็ได้ เช่น Jumble, Damus, Amethyst และอื่นๆ",startCommenting:"เริ่มแสดงความคิดเห็น",importKey:"นำเข้าคีย์ที่มีอยู่",importKeyDesc:"เข้าสู่ระบบด้วยคีย์ส่วนตัว nsec ที่บันทึกไว้",importKeyPlaceholder:"วางคีย์ส่วนตัว nsec1...",importKeyError:"รูปแบบคีย์ส่วนตัวไม่ถูกต้อง",like:"ถูกใจ",liked:"ถูกใจแล้ว",loadMore:"โหลดเพิ่มเติม",loading:"กำลังโหลด...",noComments:"ยังไม่มีความคิดเห็น เป็นคนแรกที่แสดงความคิดเห็น!",error:"ข้อผิดพลาด",retry:"ลองอีกครั้ง",anonymous:"ไม่ระบุชื่อ",timeJustNow:"เมื่อกี้",timeMinutesAgo:"{{n}} นาทีที่แล้ว",timeHoursAgo:"{{n}} ชั่วโมงที่แล้ว",timeDaysAgo:"{{n}} วันที่แล้ว"},Rs={comments:"Komentar",writeComment:"Tulis komentar...",reply:"Balas",replyTo:"Balas ke",publish:"Publikasikan",publishing:"Mempublikasikan...",computing:"Menghitung...",cancel:"Batal",login:"Masuk",logout:"Keluar",loginRequired:"Silakan masuk terlebih dahulu",loginDescription:"Pilih metode untuk masuk dan memposting komentar",extensionLogin:"Ekstensi browser",extensionLoginDesc:"Masuk dengan ekstensi NIP-07 (Alby, nos2x, dll.)",bunkerLogin:"Penandatanganan jarak jauh Bunker",bunkerLoginDesc:"Gunakan NIP-46 Bunker untuk penandatanganan jarak jauh",bunkerUrlPlaceholder:"Masukkan URL bunker://",connect:"Hubungkan",connecting:"Menghubungkan...",tempAccount:"Akun sementara",tempAccountDesc:"Buat pasangan kunci sementara",tempAccountCreated:"Akun berhasil dibuat!",createAccount:"Buat akun",copyKey:"Salin kunci privat (nsec)",keyCopied:"Tersalin!",downloadKey:"Unduh file kunci",keyCompatibility:"Ini adalah kunci privat Nostr standar. Anda dapat menggunakannya di klien Nostr mana pun seperti Jumble, Damus, Amethyst, dan lainnya.",startCommenting:"Mulai berkomentar",importKey:"Impor kunci yang ada",importKeyDesc:"Masuk dengan kunci privat nsec yang tersimpan",importKeyPlaceholder:"Tempel kunci privat nsec1...",importKeyError:"Format kunci privat tidak valid",like:"Suka",liked:"Disukai",loadMore:"Muat lebih banyak",loading:"Memuat...",noComments:"Belum ada komentar. Jadilah yang pertama berkomentar!",error:"Kesalahan",retry:"Coba lagi",anonymous:"Anonim",timeJustNow:"baru saja",timeMinutesAgo:"{{n}} menit yang lalu",timeHoursAgo:"{{n}} jam yang lalu",timeDaysAgo:"{{n}} hari yang lalu"},$s={comments:"टिप्पणियाँ",writeComment:"टिप्पणी लिखें...",reply:"जवाब दें",replyTo:"जवाब दें",publish:"प्रकाशित करें",publishing:"प्रकाशित हो रहा है...",computing:"गणना हो रही है...",cancel:"रद्द करें",login:"लॉग इन करें",logout:"लॉग आउट करें",loginRequired:"कृपया पहले लॉग इन करें",loginDescription:"लॉग इन करने और टिप्पणी पोस्ट करने के लिए एक विधि चुनें",extensionLogin:"ब्राउज़र एक्सटेंशन",extensionLoginDesc:"NIP-07 एक्सटेंशन से लॉग इन करें (Alby, nos2x, आदि)",bunkerLogin:"Bunker रिमोट साइनिंग",bunkerLoginDesc:"रिमोट साइनिंग के लिए NIP-46 Bunker का उपयोग करें",bunkerUrlPlaceholder:"bunker:// URL दर्ज करें",connect:"कनेक्ट करें",connecting:"कनेक्ट हो रहा है...",tempAccount:"अस्थायी खाता",tempAccountDesc:"अस्थायी की पेयर बनाएं",tempAccountCreated:"खाता सफलतापूर्वक बनाया गया!",createAccount:"खाता बनाएं",copyKey:"प्राइवेट की कॉपी करें (nsec)",keyCopied:"कॉपी हो गया!",downloadKey:"की फ़ाइल डाउनलोड करें",keyCompatibility:"यह एक मानक Nostr प्राइवेट की है। आप इसे किसी भी Nostr क्लाइंट जैसे Jumble, Damus, Amethyst और अन्य में उपयोग कर सकते हैं।",startCommenting:"टिप्पणी करना शुरू करें",importKey:"मौजूदा की इम्पोर्ट करें",importKeyDesc:"सेव की गई nsec प्राइवेट की से लॉग इन करें",importKeyPlaceholder:"nsec1... प्राइवेट की पेस्ट करें",importKeyError:"अमान्य प्राइवेट की फ़ॉर्मेट",like:"पसंद करें",liked:"पसंद किया",loadMore:"और लोड करें",loading:"लोड हो रहा है...",noComments:"अभी कोई टिप्पणी नहीं। पहले टिप्पणी करने वाले बनें!",error:"त्रुटि",retry:"पुनः प्रयास करें",anonymous:"अनाम",timeJustNow:"अभी",timeMinutesAgo:"{{n}} मिनट पहले",timeHoursAgo:"{{n}} घंटे पहले",timeDaysAgo:"{{n}} दिन पहले"},Ts={comments:"Коментарі",writeComment:"Написати коментар...",reply:"Відповісти",replyTo:"Відповісти",publish:"Опублікувати",publishing:"Публікація...",computing:"Обчислення...",cancel:"Скасувати",login:"Увійти",logout:"Вийти",loginRequired:"Спочатку увійдіть",loginDescription:"Оберіть спосіб входу для публікації коментарів",extensionLogin:"Розширення браузера",extensionLoginDesc:"Увійти через розширення NIP-07 (Alby, nos2x тощо)",bunkerLogin:"Віддалений підпис Bunker",bunkerLoginDesc:"Використовувати NIP-46 Bunker для віддаленого підпису",bunkerUrlPlaceholder:"Введіть URL bunker://",connect:"Підключити",connecting:"Підключення...",tempAccount:"Тимчасовий акаунт",tempAccountDesc:"Створити тимчасову пару ключів",tempAccountCreated:"Акаунт успішно створено!",createAccount:"Створити акаунт",copyKey:"Копіювати приватний ключ (nsec)",keyCopied:"Скопійовано!",downloadKey:"Завантажити файл ключа",keyCompatibility:"Це стандартний приватний ключ Nostr. Ви можете використовувати його в будь-якому клієнті Nostr, такому як Jumble, Damus, Amethyst та інших.",startCommenting:"Почати коментувати",importKey:"Імпортувати існуючий ключ",importKeyDesc:"Увійти зі збереженим приватним ключем nsec",importKeyPlaceholder:"Вставте приватний ключ nsec1...",importKeyError:"Невірний формат приватного ключа",like:"Подобається",liked:"Сподобалось",loadMore:"Завантажити ще",loading:"Завантаження...",noComments:"Ще немає коментарів. Будьте першим!",error:"Помилка",retry:"Повторити",anonymous:"Анонім",timeJustNow:"щойно",timeMinutesAgo:"{{n}} хв. тому",timeHoursAgo:"{{n}} год. тому",timeDaysAgo:"{{n}} дн. тому"},bn={en:bt,"en-US":bt,"en-GB":bt,"en-AU":bt,"en-CA":bt,"zh-CN":on,"zh-Hans":on,"zh-TW":ur,"zh-Hant":ur,"zh-HK":ur,zh:on,ja:_s,"ja-JP":_s,ko:As,"ko-KR":As,es:gt,"es-ES":gt,"es-MX":gt,"es-AR":gt,"es-CO":gt,"es-CL":gt,fr:Rt,"fr-FR":Rt,"fr-CA":Rt,"fr-BE":Rt,"fr-CH":Rt,de:Gt,"de-DE":Gt,"de-AT":Gt,"de-CH":Gt,pt:dr,"pt-BR":dr,"pt-PT":dr,ru:Ss,"ru-RU":Ss,ar:Yt,"ar-SA":Yt,"ar-EG":Yt,"ar-AE":Yt,it:Ns,"it-IT":Ns,nl:hr,"nl-NL":hr,"nl-BE":hr,pl:Cs,"pl-PL":Cs,tr:Bs,"tr-TR":Bs,vi:Ls,"vi-VN":Ls,th:Is,"th-TH":Is,id:Rs,"id-ID":Rs,hi:$s,"hi-IN":$s,uk:Ts,"uk-UA":Ts};function wc(){if(typeof navigator>"u")return"en";const t=navigator.languages||[navigator.language];for(const e of t){if(bn[e])return e;const n=e.split("-")[0];if(bn[n])return n}return"en"}function vc(t,e){const n=t||wc(),r=bn[n]||bn.en;return e?{...r,...e}:r}const xc=j.createContext(null);function Ec({locale:t,translations:e,children:n}){const r=t||wc(),o=vc(r,e),s=i=>o[i]||i;return b.jsx(xc.Provider,{value:{locale:r,translations:o,t:s},children:n})}function Qe(){const t=j.useContext(xc);if(!t){const e=vc();return{locale:"en",translations:e,t:n=>e[n]||n}}return t}/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function kc(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function _c(t,e){return Array.isArray(e)?e.length===0?!0:t?e.every(n=>typeof n=="string"):e.every(n=>Number.isSafeInteger(n)):!1}function Mp(t){if(typeof t!="function")throw new Error("function expected");return!0}function Kt(t,e){if(typeof e!="string")throw new Error(`${t}: string expected`);return!0}function Ac(t){if(!Number.isSafeInteger(t))throw new Error(`invalid integer: ${t}`)}function Ur(t){if(!Array.isArray(t))throw new Error("array expected")}function Sc(t,e){if(!_c(!0,e))throw new Error(`${t}: array of strings expected`)}function Nc(t,e){if(!_c(!1,e))throw new Error(`${t}: array of numbers expected`)}function Dp(...t){const e=s=>s,n=(s,i)=>a=>s(i(a)),r=t.map(s=>s.encode).reduceRight(n,e),o=t.map(s=>s.decode).reduce(n,e);return{encode:r,decode:o}}function Kp(t){const e=typeof t=="string"?t.split(""):t,n=e.length;Sc("alphabet",e);const r=new Map(e.map((o,s)=>[o,s]));return{encode:o=>(Ur(o),o.map(s=>{if(!Number.isSafeInteger(s)||s<0||s>=n)throw new Error(`alphabet.encode: digit index outside alphabet "${s}". Allowed: ${t}`);return e[s]})),decode:o=>(Ur(o),o.map(s=>{Kt("alphabet.decode",s);const i=r.get(s);if(i===void 0)throw new Error(`Unknown letter: "${s}". Allowed: ${t}`);return i}))}}function jp(t=""){return Kt("join",t),{encode:e=>(Sc("join.decode",e),e.join(t)),decode:e=>(Kt("join.decode",e),e.split(t))}}const Cc=(t,e)=>e===0?t:Cc(e,t%e),wn=(t,e)=>t+(e-Cc(t,e)),sn=(()=>{let t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function Or(t,e,n,r){if(Ur(t),e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(wn(e,n)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${n} carryBits=${wn(e,n)}`);let o=0,s=0;const i=sn[e],a=sn[n]-1,c=[];for(const l of t){if(Ac(l),l>=i)throw new Error(`convertRadix2: invalid data word=${l} from=${e}`);if(o=o<<e|l,s+e>32)throw new Error(`convertRadix2: carry overflow pos=${s} from=${e}`);for(s+=e;s>=n;s-=n)c.push((o>>s-n&a)>>>0);const d=sn[s];if(d===void 0)throw new Error("invalid carry");o&=d-1}if(o=o<<n-s&a,!r&&s>=e)throw new Error("Excess padding");if(!r&&o>0)throw new Error(`Non-zero padding: ${o}`);return r&&s>0&&c.push(o>>>0),c}function Hp(t,e=!1){if(Ac(t),t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(wn(8,t)>32||wn(t,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!kc(n))throw new Error("radix2.encode input should be Uint8Array");return Or(Array.from(n),8,t,!e)},decode:n=>(Nc("radix2.decode",n),Uint8Array.from(Or(n,t,8,e)))}}function Ps(t){return Mp(t),function(...e){try{return t.apply(null,e)}catch{}}}const Mr=Dp(Kp("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),jp("")),Us=[996825010,642813549,513874426,1027748829,705979059];function $t(t){const e=t>>25;let n=(t&33554431)<<5;for(let r=0;r<Us.length;r++)(e>>r&1)===1&&(n^=Us[r]);return n}function Os(t,e,n=1){const r=t.length;let o=1;for(let s=0;s<r;s++){const i=t.charCodeAt(s);if(i<33||i>126)throw new Error(`Invalid prefix (${t})`);o=$t(o)^i>>5}o=$t(o);for(let s=0;s<r;s++)o=$t(o)^t.charCodeAt(s)&31;for(let s of e)o=$t(o)^s;for(let s=0;s<6;s++)o=$t(o);return o^=n,Mr.encode(Or([o%sn[30]],30,5,!1))}function zp(t){const e=t==="bech32"?1:734539939,n=Hp(5),r=n.decode,o=n.encode,s=Ps(r);function i(u,m,f=90){Kt("bech32.encode prefix",u),kc(m)&&(m=Array.from(m)),Nc("bech32.encode",m);const p=u.length;if(p===0)throw new TypeError(`Invalid prefix length ${p}`);const h=p+7+m.length;if(f!==!1&&h>f)throw new TypeError(`Length ${h} exceeds limit ${f}`);const y=u.toLowerCase(),v=Os(y,m,e);return`${y}1${Mr.encode(m)}${v}`}function a(u,m=90){Kt("bech32.decode input",u);const f=u.length;if(f<8||m!==!1&&f>m)throw new TypeError(`invalid string length: ${f} (${u}). Expected (8..${m})`);const p=u.toLowerCase();if(u!==p&&u!==u.toUpperCase())throw new Error("String must be lowercase or uppercase");const h=p.lastIndexOf("1");if(h===0||h===-1)throw new Error('Letter "1" must be present between prefix and data only');const y=p.slice(0,h),v=p.slice(h+1);if(v.length<6)throw new Error("Data must be at least 6 characters long");const E=Mr.decode(v).slice(0,-6),S=Os(y,E,e);if(!v.endsWith(S))throw new Error(`Invalid checksum in ${u}: expected "${S}"`);return{prefix:y,words:E}}const c=Ps(a);function l(u){const{prefix:m,words:f}=a(u,!1);return{prefix:m,words:f,bytes:r(f)}}function d(u,m){return i(u,o(m))}return{encode:i,decode:a,encodeFromBytes:d,decodeToBytes:l,decodeUnsafe:c,fromWords:r,fromWordsUnsafe:s,toWords:o}}const vn=zp("bech32"),Bc=5e3;function Ms(t){var o,s,i,a,c,l,d;let{prefix:e,words:n}=vn.decode(t,Bc),r=new Uint8Array(vn.fromWords(n));switch(e){case"nprofile":{let u=fr(r);if(!((o=u[0])!=null&&o[0]))throw new Error("missing TLV 0 for nprofile");if(u[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");return{type:"nprofile",data:{pubkey:ie(u[0][0]),relays:u[1]?u[1].map(m=>Jt.decode(m)):[]}}}case"nevent":{let u=fr(r);if(!((s=u[0])!=null&&s[0]))throw new Error("missing TLV 0 for nevent");if(u[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");if(u[2]&&u[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(u[3]&&u[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"nevent",data:{id:ie(u[0][0]),relays:u[1]?u[1].map(m=>Jt.decode(m)):[],author:(i=u[2])!=null&&i[0]?ie(u[2][0]):void 0,kind:(a=u[3])!=null&&a[0]?parseInt(ie(u[3][0]),16):void 0}}}case"naddr":{let u=fr(r);if(!((c=u[0])!=null&&c[0]))throw new Error("missing TLV 0 for naddr");if(!((l=u[2])!=null&&l[0]))throw new Error("missing TLV 2 for naddr");if(u[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(!((d=u[3])!=null&&d[0]))throw new Error("missing TLV 3 for naddr");if(u[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"naddr",data:{identifier:Jt.decode(u[0][0]),pubkey:ie(u[2][0]),kind:parseInt(ie(u[3][0]),16),relays:u[1]?u[1].map(m=>Jt.decode(m)):[]}}}case"nsec":return{type:e,data:r};case"npub":case"note":return{type:e,data:ie(r)};default:throw new Error(`unknown prefix ${e}`)}}function fr(t){let e={},n=t;for(;n.length>0;){let r=n[0],o=n[1],s=n.slice(2,2+o);if(n=n.slice(2+o),s.length<o)throw new Error(`not enough data to read on TLV ${r}`);e[r]=e[r]||[],e[r].push(s)}return e}function Ds(t){return Vp("npub",st(t))}function qp(t,e){let n=vn.toWords(e);return vn.encode(t,n,Bc)}function Vp(t,e){return qp(t,e)}let Ks=0;function xn(t){let e,n;if(t.startsWith("npub1")){let{data:r}=Ms(t);n=r,e=t}else if(t.startsWith("nprofile")){let{data:r}=Ms(t);n=r.pubkey,e=Ds(n)}else n=t,e=Ds(t);return{pubkey:n,npub:e,shortName:e.substring(0,8)+"…"+e.substring(59),metadata:{},lastUpdated:0}}const an=Io("@nostr/gadgets/metadata","cache");async function Fp(t){return typeof t=="string"?Xt.load({pubkey:t}):t.refreshStyle===null?(await dc(t.pubkey,an),Xt._cacheMap.delete(t.pubkey),xn(t.pubkey)):(t.refreshStyle&&Xt.clear(t),Xt.load(t))}const Xt=new ac(async t=>new Promise(async e=>{const n=[];let r=Math.round(Date.now()/1e3),o=await uc(t.map(i=>i.pubkey),an).then(i=>i.map((a,c)=>{const l=t[c];if(typeof l.refreshStyle=="object"){let d=xn(l.pubkey);return js(d,l.refreshStyle),cc(l.pubkey,d,an),d}else{if(a)return l.refreshStyle===!0||a.lastAttempt<r-3600*24*2?(l.refreshStyle!==!1&&n.push(l),a.lastAttempt=r,a):(a.lastAttempt<r-3600&&!a.metadata.name&&!a.metadata.picture&&!a.metadata.about&&(l.refreshStyle!==!1&&n.push(l),a.lastAttempt=Math.round(Date.now()/1e3)),a);{l.refreshStyle!==!1&&n.push(l);let d=xn(l.pubkey);return d.lastAttempt=r,d}}}));if(n.length===0){e(o);return}const s={};await Promise.all(n.map(async({pubkey:i,relays:a=[]})=>{const c=new Set(a.slice(0,3));try{const{items:l}=await Ro(i);let d=0;for(let u=0;u<l.length&&!(l[u].write&&(c.add(l[u].url),d++,d>=2));u++);}catch(l){console.error("Failed to load relay list for",i,l)}do c.add(Tr[Ks%Tr.length]),Ks++;while(c.size<2);for(let l of c)s[l]?s[l].push(i):s[l]=[i]}));try{const i=Object.entries(s).map(([c,l])=>({url:c,filter:{kinds:[0],authors:l}}));let a=Vt.subscribeMap(i,{label:`metadata(${t.length})`,onevent(c){for(let l=0;l<t.length;l++)if(t[l].pubkey===c.pubkey){const d=o[l];if(d.lastUpdated>c.created_at)return;js(d,c);return}},oneose(){e(o),a.close();let c=[];for(let l=0;l<o.length;l++){let d=o[l];d.pubkey&&c.push([d.pubkey,d])}lc(c,an)}})}catch(i){for(let a=0;a<o.length;a++)o[a]=i;e(o)}}),{cacheKeyFn:t=>t.pubkey});function js(t,e){var r,o;let n={};try{n=JSON.parse(e.content)}catch{}t.metadata=n,t.shortName=n.name||n.display_name||((o=(r=n.nip05)==null?void 0:r.split("@"))==null?void 0:o[0])||t.shortName,t.lastUpdated=e.created_at,n.picture&&(t.image=n.picture)}function Oo(t){const[e,n]=j.useState(()=>xn(t));return j.useEffect(()=>{Fp(t).then(n)},[t]),{profile:e}}const Hs=["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4caf50","#8bc34a","#cddc39","#ffc107","#ff9800","#ff5722","#795548"];function Lc(t){let e=0;for(let n=0;n<t.length;n++)e=t.charCodeAt(n)+((e<<5)-e),e=e&e;return Hs[Math.abs(e)%Hs.length]}function Ic(t,e=40){const n=Lc(t),r=t.slice(0,2).toUpperCase();return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${e}" viewBox="0 0 ${e} ${e}">
66
+ `;let lr=null;function Op(){if(!lr){const t=new Blob([Up],{type:"application/javascript"}),e=URL.createObjectURL(t);lr=new Worker(e)}return lr}function Mp(t,e){return new Promise((n,r)=>{const o=Op(),s=i=>{o.removeEventListener("message",s),i.data.success?n(i.data.result):r(new Error(i.data.error))};o.addEventListener("message",s),o.postMessage({unsigned:t,difficulty:e})})}const pc=1111;function gc(t){const{url:e,relays:n,limit:r=50,onEvent:o,onEose:s}=t,i=[e];return e.endsWith("/")?i.push(e.slice(0,-1)):i.push(e+"/"),Po(n,{kinds:[pc],"#I":i,limit:r},o,s)}async function yc(t){const{url:e,relays:n,limit:r=50,until:o}=t,s=[e];return e.endsWith("/")?s.push(e.slice(0,-1)):s.push(e+"/"),To(n,{kinds:[pc],"#I":s,limit:r,...o?{until:o}:{}})}async function bc(t,e){let n=mc(e);if(e.pow&&e.pow>0){const o=await t.getPublicKey(),s={...n,pubkey:o},i=await Mp(s,e.pow);n={...n,tags:i.tags,created_at:i.created_at}}const r=await t.signEvent(n);return await Uo(await Pr(e.relays,e.mention),r),r}function wc(t){const e=new Map;t.forEach(i=>e.set(i.id,i));const n=i=>{const a=Pt(i);if(!a)return null;const c=e.get(a);return!c||!Pt(c)?a:n(c)},r=[...t].sort((i,a)=>i.created_at-a.created_at),o=[],s=new Map;return r.forEach(i=>{const a=Pt(i);if(!a)o.push(i);else{const l=n(i)||a;s.has(l)||s.set(l,[]);const d=e.get(a),u=d&&!Pt(d);s.get(l).push({event:i,children:[],replyTo:u?void 0:d})}}),o.sort((i,a)=>a.created_at-i.created_at),o.map(i=>({event:i,children:s.get(i.id)||[]}))}const bt={comments:"Comments",writeComment:"Write a comment...",reply:"Reply",replyTo:"Reply to",publish:"Publish",publishing:"Publishing...",computing:"Computing...",cancel:"Cancel",login:"Login",logout:"Logout",loginRequired:"Please login first",loginDescription:"Choose a method to login and post comments",extensionLogin:"Browser Extension",extensionLoginDesc:"Login with NIP-07 extension (Alby, nos2x, etc.)",bunkerLogin:"Bunker Remote Signing",bunkerLoginDesc:"Use NIP-46 Bunker for remote signing",bunkerUrlPlaceholder:"Enter bunker:// URL",connect:"Connect",connecting:"Connecting...",tempAccount:"Temporary Account",tempAccountDesc:"Create a temporary key pair",tempAccountCreated:"Account created successfully!",createAccount:"Create Account",copyKey:"Copy Private Key (nsec)",keyCopied:"Copied!",downloadKey:"Download Key File",keyCompatibility:"This is a standard Nostr private key. You can use it in any Nostr client like Jumble, Damus, Amethyst, and more.",startCommenting:"Start Commenting",importKey:"Import Existing Key",importKeyDesc:"Login with a previously saved nsec private key",importKeyPlaceholder:"Paste nsec1... private key",importKeyError:"Invalid private key format",like:"Like",liked:"Liked",loadMore:"Load More",loading:"Loading...",noComments:"No comments yet. Be the first to comment!",error:"Error",retry:"Retry",anonymous:"Anonymous",timeJustNow:"just now",timeMinutesAgo:"{{n}}m ago",timeHoursAgo:"{{n}}h ago",timeDaysAgo:"{{n}}d ago"},on={comments:"评论",writeComment:"写下你的评论...",reply:"回复",replyTo:"回复",publish:"发布",publishing:"发布中...",computing:"计算中...",cancel:"取消",login:"登录",logout:"退出登录",loginRequired:"请先登录",loginDescription:"选择一种方式登录以发布评论",extensionLogin:"浏览器扩展",extensionLoginDesc:"使用 NIP-07 浏览器扩展(如 Alby、nos2x)登录",bunkerLogin:"Bunker 远程签名",bunkerLoginDesc:"使用 NIP-46 Bunker 进行远程签名",bunkerUrlPlaceholder:"输入 bunker:// URL",connect:"连接",connecting:"连接中...",tempAccount:"临时账号",tempAccountDesc:"创建一个临时密钥对",tempAccountCreated:"账号创建成功!",createAccount:"创建账号",copyKey:"复制私钥 (nsec)",keyCopied:"已复制!",downloadKey:"下载密钥文件",keyCompatibility:"此私钥是标准的 Nostr 密钥,可在 Jumble、Damus、Amethyst 等任何 Nostr 客户端中使用。",startCommenting:"开始评论",importKey:"导入已有密钥",importKeyDesc:"使用之前保存的 nsec 私钥登录",importKeyPlaceholder:"粘贴 nsec1... 私钥",importKeyError:"无效的私钥格式",like:"喜欢",liked:"已喜欢",loadMore:"加载更多",loading:"加载中...",noComments:"暂无评论,来说点什么吧",error:"出错了",retry:"重试",anonymous:"匿名用户",timeJustNow:"刚刚",timeMinutesAgo:"{{n}} 分钟前",timeHoursAgo:"{{n}} 小时前",timeDaysAgo:"{{n}} 天前"},ur={comments:"留言",writeComment:"撰寫留言...",reply:"回覆",replyTo:"回覆給",publish:"發布",publishing:"發布中...",computing:"計算中...",cancel:"取消",login:"登入",logout:"登出",loginRequired:"請先登入",loginDescription:"選擇登入方式以發表留言",extensionLogin:"瀏覽器擴充功能",extensionLoginDesc:"使用 NIP-07 擴充功能登入(Alby、nos2x 等)",bunkerLogin:"Bunker 遠端簽署",bunkerLoginDesc:"使用 NIP-46 Bunker 進行遠端簽署",bunkerUrlPlaceholder:"輸入 bunker:// 網址",connect:"連線",connecting:"連線中...",tempAccount:"臨時帳號",tempAccountDesc:"建立臨時金鑰對",tempAccountCreated:"帳號建立成功!",createAccount:"建立帳號",copyKey:"複製私鑰(nsec)",keyCopied:"已複製!",downloadKey:"下載金鑰檔案",keyCompatibility:"這是標準的 Nostr 私鑰。您可以在任何 Nostr 客戶端使用,如 Jumble、Damus、Amethyst 等。",startCommenting:"開始留言",importKey:"匯入現有金鑰",importKeyDesc:"使用已儲存的 nsec 私鑰登入",importKeyPlaceholder:"貼上 nsec1... 私鑰",importKeyError:"私鑰格式無效",like:"讚",liked:"已按讚",loadMore:"載入更多",loading:"載入中...",noComments:"尚無留言。成為第一個留言的人吧!",error:"錯誤",retry:"重試",anonymous:"匿名",timeJustNow:"剛剛",timeMinutesAgo:"{{n}}分鐘前",timeHoursAgo:"{{n}}小時前",timeDaysAgo:"{{n}}天前"},_s={comments:"コメント",writeComment:"コメントを書く...",reply:"返信",replyTo:"返信先",publish:"投稿",publishing:"投稿中...",computing:"計算中...",cancel:"キャンセル",login:"ログイン",logout:"ログアウト",loginRequired:"ログインしてください",loginDescription:"ログイン方法を選択してコメントを投稿",extensionLogin:"ブラウザ拡張機能",extensionLoginDesc:"NIP-07拡張機能でログイン(Alby、nos2xなど)",bunkerLogin:"Bunkerリモート署名",bunkerLoginDesc:"NIP-46 Bunkerでリモート署名",bunkerUrlPlaceholder:"bunker:// URLを入力",connect:"接続",connecting:"接続中...",tempAccount:"一時アカウント",tempAccountDesc:"一時的な鍵ペアを作成",tempAccountCreated:"アカウントが作成されました!",createAccount:"アカウント作成",copyKey:"秘密鍵をコピー(nsec)",keyCopied:"コピーしました!",downloadKey:"鍵ファイルをダウンロード",keyCompatibility:"これは標準的なNostr秘密鍵です。Jumble、Damus、Amethystなど、任意のNostrクライアントで使用できます。",startCommenting:"コメントを始める",importKey:"既存の鍵をインポート",importKeyDesc:"保存したnsec秘密鍵でログイン",importKeyPlaceholder:"nsec1...秘密鍵を貼り付け",importKeyError:"無効な秘密鍵形式",like:"いいね",liked:"いいね済み",loadMore:"もっと読み込む",loading:"読み込み中...",noComments:"まだコメントがありません。最初のコメントを投稿しましょう!",error:"エラー",retry:"再試行",anonymous:"匿名",timeJustNow:"たった今",timeMinutesAgo:"{{n}}分前",timeHoursAgo:"{{n}}時間前",timeDaysAgo:"{{n}}日前"},As={comments:"댓글",writeComment:"댓글 작성...",reply:"답글",replyTo:"답글 대상",publish:"게시",publishing:"게시 중...",computing:"계산 중...",cancel:"취소",login:"로그인",logout:"로그아웃",loginRequired:"먼저 로그인해 주세요",loginDescription:"로그인 방법을 선택하여 댓글 작성",extensionLogin:"브라우저 확장 프로그램",extensionLoginDesc:"NIP-07 확장 프로그램으로 로그인 (Alby, nos2x 등)",bunkerLogin:"Bunker 원격 서명",bunkerLoginDesc:"NIP-46 Bunker로 원격 서명 사용",bunkerUrlPlaceholder:"bunker:// URL 입력",connect:"연결",connecting:"연결 중...",tempAccount:"임시 계정",tempAccountDesc:"임시 키 쌍 생성",tempAccountCreated:"계정이 생성되었습니다!",createAccount:"계정 생성",copyKey:"개인 키 복사 (nsec)",keyCopied:"복사됨!",downloadKey:"키 파일 다운로드",keyCompatibility:"이것은 표준 Nostr 개인 키입니다. Jumble, Damus, Amethyst 등 모든 Nostr 클라이언트에서 사용할 수 있습니다.",startCommenting:"댓글 작성 시작",importKey:"기존 키 가져오기",importKeyDesc:"저장된 nsec 개인 키로 로그인",importKeyPlaceholder:"nsec1... 개인 키 붙여넣기",importKeyError:"잘못된 개인 키 형식",like:"좋아요",liked:"좋아요 완료",loadMore:"더 보기",loading:"로딩 중...",noComments:"아직 댓글이 없습니다. 첫 번째 댓글을 작성해 보세요!",error:"오류",retry:"다시 시도",anonymous:"익명",timeJustNow:"방금",timeMinutesAgo:"{{n}}분 전",timeHoursAgo:"{{n}}시간 전",timeDaysAgo:"{{n}}일 전"},gt={comments:"Comentarios",writeComment:"Escribe un comentario...",reply:"Responder",replyTo:"Responder a",publish:"Publicar",publishing:"Publicando...",computing:"Calculando...",cancel:"Cancelar",login:"Iniciar sesión",logout:"Cerrar sesión",loginRequired:"Por favor, inicia sesión primero",loginDescription:"Elige un método para iniciar sesión y publicar comentarios",extensionLogin:"Extensión del navegador",extensionLoginDesc:"Inicia sesión con extensión NIP-07 (Alby, nos2x, etc.)",bunkerLogin:"Firma remota Bunker",bunkerLoginDesc:"Usa NIP-46 Bunker para firma remota",bunkerUrlPlaceholder:"Introduce URL bunker://",connect:"Conectar",connecting:"Conectando...",tempAccount:"Cuenta temporal",tempAccountDesc:"Crear un par de claves temporal",tempAccountCreated:"¡Cuenta creada exitosamente!",createAccount:"Crear cuenta",copyKey:"Copiar clave privada (nsec)",keyCopied:"¡Copiado!",downloadKey:"Descargar archivo de clave",keyCompatibility:"Esta es una clave privada estándar de Nostr. Puedes usarla en cualquier cliente de Nostr como Jumble, Damus, Amethyst y más.",startCommenting:"Empezar a comentar",importKey:"Importar clave existente",importKeyDesc:"Inicia sesión con una clave privada nsec guardada",importKeyPlaceholder:"Pega la clave privada nsec1...",importKeyError:"Formato de clave privada inválido",like:"Me gusta",liked:"Te gusta",loadMore:"Cargar más",loading:"Cargando...",noComments:"Aún no hay comentarios. ¡Sé el primero en comentar!",error:"Error",retry:"Reintentar",anonymous:"Anónimo",timeJustNow:"ahora mismo",timeMinutesAgo:"hace {{n}}m",timeHoursAgo:"hace {{n}}h",timeDaysAgo:"hace {{n}}d"},Rt={comments:"Commentaires",writeComment:"Écrire un commentaire...",reply:"Répondre",replyTo:"Répondre à",publish:"Publier",publishing:"Publication...",computing:"Calcul...",cancel:"Annuler",login:"Connexion",logout:"Déconnexion",loginRequired:"Veuillez d'abord vous connecter",loginDescription:"Choisissez une méthode pour vous connecter et publier des commentaires",extensionLogin:"Extension navigateur",extensionLoginDesc:"Connexion avec extension NIP-07 (Alby, nos2x, etc.)",bunkerLogin:"Signature distante Bunker",bunkerLoginDesc:"Utiliser NIP-46 Bunker pour la signature distante",bunkerUrlPlaceholder:"Entrez l'URL bunker://",connect:"Connecter",connecting:"Connexion...",tempAccount:"Compte temporaire",tempAccountDesc:"Créer une paire de clés temporaire",tempAccountCreated:"Compte créé avec succès !",createAccount:"Créer un compte",copyKey:"Copier la clé privée (nsec)",keyCopied:"Copié !",downloadKey:"Télécharger le fichier de clé",keyCompatibility:"Ceci est une clé privée Nostr standard. Vous pouvez l'utiliser dans n'importe quel client Nostr comme Jumble, Damus, Amethyst, etc.",startCommenting:"Commencer à commenter",importKey:"Importer une clé existante",importKeyDesc:"Connexion avec une clé privée nsec sauvegardée",importKeyPlaceholder:"Collez la clé privée nsec1...",importKeyError:"Format de clé privée invalide",like:"J'aime",liked:"Aimé",loadMore:"Charger plus",loading:"Chargement...",noComments:"Pas encore de commentaires. Soyez le premier à commenter !",error:"Erreur",retry:"Réessayer",anonymous:"Anonyme",timeJustNow:"à l'instant",timeMinutesAgo:"il y a {{n}}min",timeHoursAgo:"il y a {{n}}h",timeDaysAgo:"il y a {{n}}j"},Gt={comments:"Kommentare",writeComment:"Kommentar schreiben...",reply:"Antworten",replyTo:"Antworten auf",publish:"Veröffentlichen",publishing:"Veröffentliche...",computing:"Berechne...",cancel:"Abbrechen",login:"Anmelden",logout:"Abmelden",loginRequired:"Bitte melden Sie sich zuerst an",loginDescription:"Wählen Sie eine Methode zum Anmelden und Kommentieren",extensionLogin:"Browser-Erweiterung",extensionLoginDesc:"Mit NIP-07-Erweiterung anmelden (Alby, nos2x, etc.)",bunkerLogin:"Bunker-Fernsignatur",bunkerLoginDesc:"NIP-46 Bunker für Fernsignatur verwenden",bunkerUrlPlaceholder:"bunker:// URL eingeben",connect:"Verbinden",connecting:"Verbinde...",tempAccount:"Temporäres Konto",tempAccountDesc:"Temporäres Schlüsselpaar erstellen",tempAccountCreated:"Konto erfolgreich erstellt!",createAccount:"Konto erstellen",copyKey:"Privaten Schlüssel kopieren (nsec)",keyCopied:"Kopiert!",downloadKey:"Schlüsseldatei herunterladen",keyCompatibility:"Dies ist ein standardmäßiger Nostr-Privatschlüssel. Sie können ihn in jedem Nostr-Client wie Jumble, Damus, Amethyst und mehr verwenden.",startCommenting:"Mit dem Kommentieren beginnen",importKey:"Vorhandenen Schlüssel importieren",importKeyDesc:"Mit gespeichertem nsec-Privatschlüssel anmelden",importKeyPlaceholder:"nsec1... Privatschlüssel einfügen",importKeyError:"Ungültiges Privatschlüssel-Format",like:"Gefällt mir",liked:"Gefällt mir",loadMore:"Mehr laden",loading:"Lädt...",noComments:"Noch keine Kommentare. Seien Sie der Erste!",error:"Fehler",retry:"Erneut versuchen",anonymous:"Anonym",timeJustNow:"gerade eben",timeMinutesAgo:"vor {{n}}min",timeHoursAgo:"vor {{n}}h",timeDaysAgo:"vor {{n}}T"},dr={comments:"Comentários",writeComment:"Escreva um comentário...",reply:"Responder",replyTo:"Responder a",publish:"Publicar",publishing:"Publicando...",computing:"Calculando...",cancel:"Cancelar",login:"Entrar",logout:"Sair",loginRequired:"Por favor, faça login primeiro",loginDescription:"Escolha um método para entrar e publicar comentários",extensionLogin:"Extensão do navegador",extensionLoginDesc:"Entre com extensão NIP-07 (Alby, nos2x, etc.)",bunkerLogin:"Assinatura remota Bunker",bunkerLoginDesc:"Use NIP-46 Bunker para assinatura remota",bunkerUrlPlaceholder:"Digite a URL bunker://",connect:"Conectar",connecting:"Conectando...",tempAccount:"Conta temporária",tempAccountDesc:"Criar um par de chaves temporário",tempAccountCreated:"Conta criada com sucesso!",createAccount:"Criar conta",copyKey:"Copiar chave privada (nsec)",keyCopied:"Copiado!",downloadKey:"Baixar arquivo de chave",keyCompatibility:"Esta é uma chave privada Nostr padrão. Você pode usá-la em qualquer cliente Nostr como Jumble, Damus, Amethyst e mais.",startCommenting:"Começar a comentar",importKey:"Importar chave existente",importKeyDesc:"Entre com uma chave privada nsec salva",importKeyPlaceholder:"Cole a chave privada nsec1...",importKeyError:"Formato de chave privada inválido",like:"Curtir",liked:"Curtido",loadMore:"Carregar mais",loading:"Carregando...",noComments:"Ainda não há comentários. Seja o primeiro a comentar!",error:"Erro",retry:"Tentar novamente",anonymous:"Anônimo",timeJustNow:"agora mesmo",timeMinutesAgo:"há {{n}}min",timeHoursAgo:"há {{n}}h",timeDaysAgo:"há {{n}}d"},Ss={comments:"Комментарии",writeComment:"Написать комментарий...",reply:"Ответить",replyTo:"Ответить",publish:"Опубликовать",publishing:"Публикация...",computing:"Вычисление...",cancel:"Отмена",login:"Войти",logout:"Выйти",loginRequired:"Пожалуйста, сначала войдите",loginDescription:"Выберите способ входа для публикации комментариев",extensionLogin:"Расширение браузера",extensionLoginDesc:"Войти через NIP-07 расширение (Alby, nos2x и др.)",bunkerLogin:"Удалённая подпись Bunker",bunkerLoginDesc:"Использовать NIP-46 Bunker для удалённой подписи",bunkerUrlPlaceholder:"Введите URL bunker://",connect:"Подключить",connecting:"Подключение...",tempAccount:"Временный аккаунт",tempAccountDesc:"Создать временную пару ключей",tempAccountCreated:"Аккаунт успешно создан!",createAccount:"Создать аккаунт",copyKey:"Копировать приватный ключ (nsec)",keyCopied:"Скопировано!",downloadKey:"Скачать файл ключа",keyCompatibility:"Это стандартный приватный ключ Nostr. Вы можете использовать его в любом клиенте Nostr, таком как Jumble, Damus, Amethyst и других.",startCommenting:"Начать комментировать",importKey:"Импортировать существующий ключ",importKeyDesc:"Войти с сохранённым приватным ключом nsec",importKeyPlaceholder:"Вставьте приватный ключ nsec1...",importKeyError:"Неверный формат приватного ключа",like:"Нравится",liked:"Понравилось",loadMore:"Загрузить ещё",loading:"Загрузка...",noComments:"Пока нет комментариев. Будьте первым!",error:"Ошибка",retry:"Повторить",anonymous:"Аноним",timeJustNow:"только что",timeMinutesAgo:"{{n}} мин. назад",timeHoursAgo:"{{n}} ч. назад",timeDaysAgo:"{{n}} дн. назад"},Yt={comments:"التعليقات",writeComment:"اكتب تعليقاً...",reply:"رد",replyTo:"الرد على",publish:"نشر",publishing:"جارِ النشر...",computing:"جارِ الحساب...",cancel:"إلغاء",login:"تسجيل الدخول",logout:"تسجيل الخروج",loginRequired:"يرجى تسجيل الدخول أولاً",loginDescription:"اختر طريقة لتسجيل الدخول ونشر التعليقات",extensionLogin:"إضافة المتصفح",extensionLoginDesc:"تسجيل الدخول باستخدام إضافة NIP-07 (Alby، nos2x، إلخ)",bunkerLogin:"توقيع Bunker عن بُعد",bunkerLoginDesc:"استخدام NIP-46 Bunker للتوقيع عن بُعد",bunkerUrlPlaceholder:"أدخل رابط bunker://",connect:"اتصال",connecting:"جارِ الاتصال...",tempAccount:"حساب مؤقت",tempAccountDesc:"إنشاء زوج مفاتيح مؤقت",tempAccountCreated:"تم إنشاء الحساب بنجاح!",createAccount:"إنشاء حساب",copyKey:"نسخ المفتاح الخاص (nsec)",keyCopied:"تم النسخ!",downloadKey:"تحميل ملف المفتاح",keyCompatibility:"هذا مفتاح Nostr خاص قياسي. يمكنك استخدامه في أي عميل Nostr مثل Jumble وDamus وAmethyst وغيرها.",startCommenting:"ابدأ التعليق",importKey:"استيراد مفتاح موجود",importKeyDesc:"تسجيل الدخول بمفتاح nsec خاص محفوظ",importKeyPlaceholder:"الصق المفتاح الخاص nsec1...",importKeyError:"صيغة المفتاح الخاص غير صالحة",like:"إعجاب",liked:"أُعجبت",loadMore:"تحميل المزيد",loading:"جارِ التحميل...",noComments:"لا توجد تعليقات بعد. كن أول من يعلق!",error:"خطأ",retry:"إعادة المحاولة",anonymous:"مجهول",timeJustNow:"الآن",timeMinutesAgo:"منذ {{n}} دقيقة",timeHoursAgo:"منذ {{n}} ساعة",timeDaysAgo:"منذ {{n}} يوم"},Ns={comments:"Commenti",writeComment:"Scrivi un commento...",reply:"Rispondi",replyTo:"Rispondi a",publish:"Pubblica",publishing:"Pubblicazione...",computing:"Calcolo...",cancel:"Annulla",login:"Accedi",logout:"Esci",loginRequired:"Effettua prima l'accesso",loginDescription:"Scegli un metodo per accedere e pubblicare commenti",extensionLogin:"Estensione browser",extensionLoginDesc:"Accedi con estensione NIP-07 (Alby, nos2x, ecc.)",bunkerLogin:"Firma remota Bunker",bunkerLoginDesc:"Usa NIP-46 Bunker per la firma remota",bunkerUrlPlaceholder:"Inserisci URL bunker://",connect:"Connetti",connecting:"Connessione...",tempAccount:"Account temporaneo",tempAccountDesc:"Crea una coppia di chiavi temporanea",tempAccountCreated:"Account creato con successo!",createAccount:"Crea account",copyKey:"Copia chiave privata (nsec)",keyCopied:"Copiato!",downloadKey:"Scarica file chiave",keyCompatibility:"Questa è una chiave privata Nostr standard. Puoi usarla in qualsiasi client Nostr come Jumble, Damus, Amethyst e altri.",startCommenting:"Inizia a commentare",importKey:"Importa chiave esistente",importKeyDesc:"Accedi con una chiave privata nsec salvata",importKeyPlaceholder:"Incolla la chiave privata nsec1...",importKeyError:"Formato chiave privata non valido",like:"Mi piace",liked:"Piaciuto",loadMore:"Carica altri",loading:"Caricamento...",noComments:"Ancora nessun commento. Sii il primo a commentare!",error:"Errore",retry:"Riprova",anonymous:"Anonimo",timeJustNow:"proprio ora",timeMinutesAgo:"{{n}}min fa",timeHoursAgo:"{{n}}h fa",timeDaysAgo:"{{n}}g fa"},hr={comments:"Reacties",writeComment:"Schrijf een reactie...",reply:"Reageren",replyTo:"Reageren op",publish:"Publiceren",publishing:"Publiceren...",computing:"Berekenen...",cancel:"Annuleren",login:"Inloggen",logout:"Uitloggen",loginRequired:"Log eerst in",loginDescription:"Kies een methode om in te loggen en reacties te plaatsen",extensionLogin:"Browserextensie",extensionLoginDesc:"Inloggen met NIP-07 extensie (Alby, nos2x, etc.)",bunkerLogin:"Bunker externe ondertekening",bunkerLoginDesc:"Gebruik NIP-46 Bunker voor externe ondertekening",bunkerUrlPlaceholder:"Voer bunker:// URL in",connect:"Verbinden",connecting:"Verbinden...",tempAccount:"Tijdelijk account",tempAccountDesc:"Maak een tijdelijk sleutelpaar aan",tempAccountCreated:"Account succesvol aangemaakt!",createAccount:"Account aanmaken",copyKey:"Kopieer privésleutel (nsec)",keyCopied:"Gekopieerd!",downloadKey:"Download sleutelbestand",keyCompatibility:"Dit is een standaard Nostr privésleutel. Je kunt deze gebruiken in elke Nostr-client zoals Jumble, Damus, Amethyst en meer.",startCommenting:"Begin met reageren",importKey:"Bestaande sleutel importeren",importKeyDesc:"Log in met een opgeslagen nsec privésleutel",importKeyPlaceholder:"Plak nsec1... privésleutel",importKeyError:"Ongeldig privésleutel formaat",like:"Vind ik leuk",liked:"Leuk gevonden",loadMore:"Meer laden",loading:"Laden...",noComments:"Nog geen reacties. Wees de eerste om te reageren!",error:"Fout",retry:"Opnieuw proberen",anonymous:"Anoniem",timeJustNow:"zojuist",timeMinutesAgo:"{{n}}min geleden",timeHoursAgo:"{{n}}u geleden",timeDaysAgo:"{{n}}d geleden"},Cs={comments:"Komentarze",writeComment:"Napisz komentarz...",reply:"Odpowiedz",replyTo:"Odpowiedz do",publish:"Opublikuj",publishing:"Publikowanie...",computing:"Obliczanie...",cancel:"Anuluj",login:"Zaloguj się",logout:"Wyloguj się",loginRequired:"Najpierw się zaloguj",loginDescription:"Wybierz metodę logowania i publikowania komentarzy",extensionLogin:"Rozszerzenie przeglądarki",extensionLoginDesc:"Zaloguj się za pomocą rozszerzenia NIP-07 (Alby, nos2x, itp.)",bunkerLogin:"Zdalne podpisywanie Bunker",bunkerLoginDesc:"Użyj NIP-46 Bunker do zdalnego podpisywania",bunkerUrlPlaceholder:"Wprowadź URL bunker://",connect:"Połącz",connecting:"Łączenie...",tempAccount:"Tymczasowe konto",tempAccountDesc:"Utwórz tymczasową parę kluczy",tempAccountCreated:"Konto utworzone pomyślnie!",createAccount:"Utwórz konto",copyKey:"Kopiuj klucz prywatny (nsec)",keyCopied:"Skopiowano!",downloadKey:"Pobierz plik klucza",keyCompatibility:"To jest standardowy klucz prywatny Nostr. Możesz go używać w dowolnym kliencie Nostr, takim jak Jumble, Damus, Amethyst i innych.",startCommenting:"Zacznij komentować",importKey:"Importuj istniejący klucz",importKeyDesc:"Zaloguj się za pomocą zapisanego klucza prywatnego nsec",importKeyPlaceholder:"Wklej klucz prywatny nsec1...",importKeyError:"Nieprawidłowy format klucza prywatnego",like:"Lubię",liked:"Polubione",loadMore:"Załaduj więcej",loading:"Ładowanie...",noComments:"Brak komentarzy. Bądź pierwszy!",error:"Błąd",retry:"Ponów",anonymous:"Anonim",timeJustNow:"właśnie teraz",timeMinutesAgo:"{{n}} min temu",timeHoursAgo:"{{n}} godz. temu",timeDaysAgo:"{{n}} dni temu"},Bs={comments:"Yorumlar",writeComment:"Yorum yaz...",reply:"Yanıtla",replyTo:"Yanıtla",publish:"Yayınla",publishing:"Yayınlanıyor...",computing:"Hesaplanıyor...",cancel:"İptal",login:"Giriş yap",logout:"Çıkış yap",loginRequired:"Lütfen önce giriş yapın",loginDescription:"Giriş yapmak ve yorum yazmak için bir yöntem seçin",extensionLogin:"Tarayıcı eklentisi",extensionLoginDesc:"NIP-07 eklentisiyle giriş yapın (Alby, nos2x, vb.)",bunkerLogin:"Bunker uzaktan imzalama",bunkerLoginDesc:"Uzaktan imzalama için NIP-46 Bunker kullanın",bunkerUrlPlaceholder:"bunker:// URL'sini girin",connect:"Bağlan",connecting:"Bağlanıyor...",tempAccount:"Geçici hesap",tempAccountDesc:"Geçici anahtar çifti oluştur",tempAccountCreated:"Hesap başarıyla oluşturuldu!",createAccount:"Hesap oluştur",copyKey:"Özel anahtarı kopyala (nsec)",keyCopied:"Kopyalandı!",downloadKey:"Anahtar dosyasını indir",keyCompatibility:"Bu standart bir Nostr özel anahtarıdır. Jumble, Damus, Amethyst ve daha fazlası gibi herhangi bir Nostr istemcisinde kullanabilirsiniz.",startCommenting:"Yorum yapmaya başla",importKey:"Mevcut anahtarı içe aktar",importKeyDesc:"Kayıtlı nsec özel anahtarıyla giriş yapın",importKeyPlaceholder:"nsec1... özel anahtarını yapıştırın",importKeyError:"Geçersiz özel anahtar formatı",like:"Beğen",liked:"Beğenildi",loadMore:"Daha fazla yükle",loading:"Yükleniyor...",noComments:"Henüz yorum yok. İlk yorumu siz yapın!",error:"Hata",retry:"Tekrar dene",anonymous:"Anonim",timeJustNow:"az önce",timeMinutesAgo:"{{n}}dk önce",timeHoursAgo:"{{n}}sa önce",timeDaysAgo:"{{n}}g önce"},Ls={comments:"Bình luận",writeComment:"Viết bình luận...",reply:"Trả lời",replyTo:"Trả lời",publish:"Đăng",publishing:"Đang đăng...",computing:"Đang tính toán...",cancel:"Hủy",login:"Đăng nhập",logout:"Đăng xuất",loginRequired:"Vui lòng đăng nhập trước",loginDescription:"Chọn phương thức đăng nhập để đăng bình luận",extensionLogin:"Tiện ích trình duyệt",extensionLoginDesc:"Đăng nhập bằng tiện ích NIP-07 (Alby, nos2x, v.v.)",bunkerLogin:"Ký từ xa Bunker",bunkerLoginDesc:"Sử dụng NIP-46 Bunker để ký từ xa",bunkerUrlPlaceholder:"Nhập URL bunker://",connect:"Kết nối",connecting:"Đang kết nối...",tempAccount:"Tài khoản tạm thời",tempAccountDesc:"Tạo cặp khóa tạm thời",tempAccountCreated:"Tạo tài khoản thành công!",createAccount:"Tạo tài khoản",copyKey:"Sao chép khóa riêng (nsec)",keyCopied:"Đã sao chép!",downloadKey:"Tải file khóa",keyCompatibility:"Đây là khóa riêng Nostr tiêu chuẩn. Bạn có thể sử dụng nó trong bất kỳ ứng dụng Nostr nào như Jumble, Damus, Amethyst và nhiều hơn nữa.",startCommenting:"Bắt đầu bình luận",importKey:"Nhập khóa hiện có",importKeyDesc:"Đăng nhập bằng khóa riêng nsec đã lưu",importKeyPlaceholder:"Dán khóa riêng nsec1...",importKeyError:"Định dạng khóa riêng không hợp lệ",like:"Thích",liked:"Đã thích",loadMore:"Tải thêm",loading:"Đang tải...",noComments:"Chưa có bình luận. Hãy là người đầu tiên bình luận!",error:"Lỗi",retry:"Thử lại",anonymous:"Ẩn danh",timeJustNow:"vừa xong",timeMinutesAgo:"{{n}} phút trước",timeHoursAgo:"{{n}} giờ trước",timeDaysAgo:"{{n}} ngày trước"},Is={comments:"ความคิดเห็น",writeComment:"เขียนความคิดเห็น...",reply:"ตอบกลับ",replyTo:"ตอบกลับถึง",publish:"เผยแพร่",publishing:"กำลังเผยแพร่...",computing:"กำลังคำนวณ...",cancel:"ยกเลิก",login:"เข้าสู่ระบบ",logout:"ออกจากระบบ",loginRequired:"กรุณาเข้าสู่ระบบก่อน",loginDescription:"เลือกวิธีเข้าสู่ระบบเพื่อโพสต์ความคิดเห็น",extensionLogin:"ส่วนขยายเบราว์เซอร์",extensionLoginDesc:"เข้าสู่ระบบด้วยส่วนขยาย NIP-07 (Alby, nos2x ฯลฯ)",bunkerLogin:"ลงนามระยะไกล Bunker",bunkerLoginDesc:"ใช้ NIP-46 Bunker สำหรับการลงนามระยะไกล",bunkerUrlPlaceholder:"ใส่ URL bunker://",connect:"เชื่อมต่อ",connecting:"กำลังเชื่อมต่อ...",tempAccount:"บัญชีชั่วคราว",tempAccountDesc:"สร้างคู่คีย์ชั่วคราว",tempAccountCreated:"สร้างบัญชีสำเร็จ!",createAccount:"สร้างบัญชี",copyKey:"คัดลอกคีย์ส่วนตัว (nsec)",keyCopied:"คัดลอกแล้ว!",downloadKey:"ดาวน์โหลดไฟล์คีย์",keyCompatibility:"นี่คือคีย์ส่วนตัว Nostr มาตรฐาน คุณสามารถใช้งานได้ในไคลเอนต์ Nostr ใดก็ได้ เช่น Jumble, Damus, Amethyst และอื่นๆ",startCommenting:"เริ่มแสดงความคิดเห็น",importKey:"นำเข้าคีย์ที่มีอยู่",importKeyDesc:"เข้าสู่ระบบด้วยคีย์ส่วนตัว nsec ที่บันทึกไว้",importKeyPlaceholder:"วางคีย์ส่วนตัว nsec1...",importKeyError:"รูปแบบคีย์ส่วนตัวไม่ถูกต้อง",like:"ถูกใจ",liked:"ถูกใจแล้ว",loadMore:"โหลดเพิ่มเติม",loading:"กำลังโหลด...",noComments:"ยังไม่มีความคิดเห็น เป็นคนแรกที่แสดงความคิดเห็น!",error:"ข้อผิดพลาด",retry:"ลองอีกครั้ง",anonymous:"ไม่ระบุชื่อ",timeJustNow:"เมื่อกี้",timeMinutesAgo:"{{n}} นาทีที่แล้ว",timeHoursAgo:"{{n}} ชั่วโมงที่แล้ว",timeDaysAgo:"{{n}} วันที่แล้ว"},Rs={comments:"Komentar",writeComment:"Tulis komentar...",reply:"Balas",replyTo:"Balas ke",publish:"Publikasikan",publishing:"Mempublikasikan...",computing:"Menghitung...",cancel:"Batal",login:"Masuk",logout:"Keluar",loginRequired:"Silakan masuk terlebih dahulu",loginDescription:"Pilih metode untuk masuk dan memposting komentar",extensionLogin:"Ekstensi browser",extensionLoginDesc:"Masuk dengan ekstensi NIP-07 (Alby, nos2x, dll.)",bunkerLogin:"Penandatanganan jarak jauh Bunker",bunkerLoginDesc:"Gunakan NIP-46 Bunker untuk penandatanganan jarak jauh",bunkerUrlPlaceholder:"Masukkan URL bunker://",connect:"Hubungkan",connecting:"Menghubungkan...",tempAccount:"Akun sementara",tempAccountDesc:"Buat pasangan kunci sementara",tempAccountCreated:"Akun berhasil dibuat!",createAccount:"Buat akun",copyKey:"Salin kunci privat (nsec)",keyCopied:"Tersalin!",downloadKey:"Unduh file kunci",keyCompatibility:"Ini adalah kunci privat Nostr standar. Anda dapat menggunakannya di klien Nostr mana pun seperti Jumble, Damus, Amethyst, dan lainnya.",startCommenting:"Mulai berkomentar",importKey:"Impor kunci yang ada",importKeyDesc:"Masuk dengan kunci privat nsec yang tersimpan",importKeyPlaceholder:"Tempel kunci privat nsec1...",importKeyError:"Format kunci privat tidak valid",like:"Suka",liked:"Disukai",loadMore:"Muat lebih banyak",loading:"Memuat...",noComments:"Belum ada komentar. Jadilah yang pertama berkomentar!",error:"Kesalahan",retry:"Coba lagi",anonymous:"Anonim",timeJustNow:"baru saja",timeMinutesAgo:"{{n}} menit yang lalu",timeHoursAgo:"{{n}} jam yang lalu",timeDaysAgo:"{{n}} hari yang lalu"},$s={comments:"टिप्पणियाँ",writeComment:"टिप्पणी लिखें...",reply:"जवाब दें",replyTo:"जवाब दें",publish:"प्रकाशित करें",publishing:"प्रकाशित हो रहा है...",computing:"गणना हो रही है...",cancel:"रद्द करें",login:"लॉग इन करें",logout:"लॉग आउट करें",loginRequired:"कृपया पहले लॉग इन करें",loginDescription:"लॉग इन करने और टिप्पणी पोस्ट करने के लिए एक विधि चुनें",extensionLogin:"ब्राउज़र एक्सटेंशन",extensionLoginDesc:"NIP-07 एक्सटेंशन से लॉग इन करें (Alby, nos2x, आदि)",bunkerLogin:"Bunker रिमोट साइनिंग",bunkerLoginDesc:"रिमोट साइनिंग के लिए NIP-46 Bunker का उपयोग करें",bunkerUrlPlaceholder:"bunker:// URL दर्ज करें",connect:"कनेक्ट करें",connecting:"कनेक्ट हो रहा है...",tempAccount:"अस्थायी खाता",tempAccountDesc:"अस्थायी की पेयर बनाएं",tempAccountCreated:"खाता सफलतापूर्वक बनाया गया!",createAccount:"खाता बनाएं",copyKey:"प्राइवेट की कॉपी करें (nsec)",keyCopied:"कॉपी हो गया!",downloadKey:"की फ़ाइल डाउनलोड करें",keyCompatibility:"यह एक मानक Nostr प्राइवेट की है। आप इसे किसी भी Nostr क्लाइंट जैसे Jumble, Damus, Amethyst और अन्य में उपयोग कर सकते हैं।",startCommenting:"टिप्पणी करना शुरू करें",importKey:"मौजूदा की इम्पोर्ट करें",importKeyDesc:"सेव की गई nsec प्राइवेट की से लॉग इन करें",importKeyPlaceholder:"nsec1... प्राइवेट की पेस्ट करें",importKeyError:"अमान्य प्राइवेट की फ़ॉर्मेट",like:"पसंद करें",liked:"पसंद किया",loadMore:"और लोड करें",loading:"लोड हो रहा है...",noComments:"अभी कोई टिप्पणी नहीं। पहले टिप्पणी करने वाले बनें!",error:"त्रुटि",retry:"पुनः प्रयास करें",anonymous:"अनाम",timeJustNow:"अभी",timeMinutesAgo:"{{n}} मिनट पहले",timeHoursAgo:"{{n}} घंटे पहले",timeDaysAgo:"{{n}} दिन पहले"},Ts={comments:"Коментарі",writeComment:"Написати коментар...",reply:"Відповісти",replyTo:"Відповісти",publish:"Опублікувати",publishing:"Публікація...",computing:"Обчислення...",cancel:"Скасувати",login:"Увійти",logout:"Вийти",loginRequired:"Спочатку увійдіть",loginDescription:"Оберіть спосіб входу для публікації коментарів",extensionLogin:"Розширення браузера",extensionLoginDesc:"Увійти через розширення NIP-07 (Alby, nos2x тощо)",bunkerLogin:"Віддалений підпис Bunker",bunkerLoginDesc:"Використовувати NIP-46 Bunker для віддаленого підпису",bunkerUrlPlaceholder:"Введіть URL bunker://",connect:"Підключити",connecting:"Підключення...",tempAccount:"Тимчасовий акаунт",tempAccountDesc:"Створити тимчасову пару ключів",tempAccountCreated:"Акаунт успішно створено!",createAccount:"Створити акаунт",copyKey:"Копіювати приватний ключ (nsec)",keyCopied:"Скопійовано!",downloadKey:"Завантажити файл ключа",keyCompatibility:"Це стандартний приватний ключ Nostr. Ви можете використовувати його в будь-якому клієнті Nostr, такому як Jumble, Damus, Amethyst та інших.",startCommenting:"Почати коментувати",importKey:"Імпортувати існуючий ключ",importKeyDesc:"Увійти зі збереженим приватним ключем nsec",importKeyPlaceholder:"Вставте приватний ключ nsec1...",importKeyError:"Невірний формат приватного ключа",like:"Подобається",liked:"Сподобалось",loadMore:"Завантажити ще",loading:"Завантаження...",noComments:"Ще немає коментарів. Будьте першим!",error:"Помилка",retry:"Повторити",anonymous:"Анонім",timeJustNow:"щойно",timeMinutesAgo:"{{n}} хв. тому",timeHoursAgo:"{{n}} год. тому",timeDaysAgo:"{{n}} дн. тому"},bn={en:bt,"en-US":bt,"en-GB":bt,"en-AU":bt,"en-CA":bt,"zh-CN":on,"zh-Hans":on,"zh-TW":ur,"zh-Hant":ur,"zh-HK":ur,zh:on,ja:_s,"ja-JP":_s,ko:As,"ko-KR":As,es:gt,"es-ES":gt,"es-MX":gt,"es-AR":gt,"es-CO":gt,"es-CL":gt,fr:Rt,"fr-FR":Rt,"fr-CA":Rt,"fr-BE":Rt,"fr-CH":Rt,de:Gt,"de-DE":Gt,"de-AT":Gt,"de-CH":Gt,pt:dr,"pt-BR":dr,"pt-PT":dr,ru:Ss,"ru-RU":Ss,ar:Yt,"ar-SA":Yt,"ar-EG":Yt,"ar-AE":Yt,it:Ns,"it-IT":Ns,nl:hr,"nl-NL":hr,"nl-BE":hr,pl:Cs,"pl-PL":Cs,tr:Bs,"tr-TR":Bs,vi:Ls,"vi-VN":Ls,th:Is,"th-TH":Is,id:Rs,"id-ID":Rs,hi:$s,"hi-IN":$s,uk:Ts,"uk-UA":Ts};function vc(){if(typeof navigator>"u")return"en";const t=navigator.languages||[navigator.language];for(const e of t){if(bn[e])return e;const n=e.split("-")[0];if(bn[n])return n}return"en"}function xc(t,e){const n=t||vc(),r=bn[n]||bn.en;return e?{...r,...e}:r}const Ec=j.createContext(null);function kc({locale:t,translations:e,children:n}){const r=t||vc(),o=xc(r,e),s=i=>o[i]||i;return b.jsx(Ec.Provider,{value:{locale:r,translations:o,t:s},children:n})}function Qe(){const t=j.useContext(Ec);if(!t){const e=xc();return{locale:"en",translations:e,t:n=>e[n]||n}}return t}/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function _c(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Ac(t,e){return Array.isArray(e)?e.length===0?!0:t?e.every(n=>typeof n=="string"):e.every(n=>Number.isSafeInteger(n)):!1}function Dp(t){if(typeof t!="function")throw new Error("function expected");return!0}function Kt(t,e){if(typeof e!="string")throw new Error(`${t}: string expected`);return!0}function Sc(t){if(!Number.isSafeInteger(t))throw new Error(`invalid integer: ${t}`)}function Ur(t){if(!Array.isArray(t))throw new Error("array expected")}function Nc(t,e){if(!Ac(!0,e))throw new Error(`${t}: array of strings expected`)}function Cc(t,e){if(!Ac(!1,e))throw new Error(`${t}: array of numbers expected`)}function Kp(...t){const e=s=>s,n=(s,i)=>a=>s(i(a)),r=t.map(s=>s.encode).reduceRight(n,e),o=t.map(s=>s.decode).reduce(n,e);return{encode:r,decode:o}}function jp(t){const e=typeof t=="string"?t.split(""):t,n=e.length;Nc("alphabet",e);const r=new Map(e.map((o,s)=>[o,s]));return{encode:o=>(Ur(o),o.map(s=>{if(!Number.isSafeInteger(s)||s<0||s>=n)throw new Error(`alphabet.encode: digit index outside alphabet "${s}". Allowed: ${t}`);return e[s]})),decode:o=>(Ur(o),o.map(s=>{Kt("alphabet.decode",s);const i=r.get(s);if(i===void 0)throw new Error(`Unknown letter: "${s}". Allowed: ${t}`);return i}))}}function Hp(t=""){return Kt("join",t),{encode:e=>(Nc("join.decode",e),e.join(t)),decode:e=>(Kt("join.decode",e),e.split(t))}}const Bc=(t,e)=>e===0?t:Bc(e,t%e),wn=(t,e)=>t+(e-Bc(t,e)),sn=(()=>{let t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function Or(t,e,n,r){if(Ur(t),e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(wn(e,n)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${n} carryBits=${wn(e,n)}`);let o=0,s=0;const i=sn[e],a=sn[n]-1,c=[];for(const l of t){if(Sc(l),l>=i)throw new Error(`convertRadix2: invalid data word=${l} from=${e}`);if(o=o<<e|l,s+e>32)throw new Error(`convertRadix2: carry overflow pos=${s} from=${e}`);for(s+=e;s>=n;s-=n)c.push((o>>s-n&a)>>>0);const d=sn[s];if(d===void 0)throw new Error("invalid carry");o&=d-1}if(o=o<<n-s&a,!r&&s>=e)throw new Error("Excess padding");if(!r&&o>0)throw new Error(`Non-zero padding: ${o}`);return r&&s>0&&c.push(o>>>0),c}function zp(t,e=!1){if(Sc(t),t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(wn(8,t)>32||wn(t,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!_c(n))throw new Error("radix2.encode input should be Uint8Array");return Or(Array.from(n),8,t,!e)},decode:n=>(Cc("radix2.decode",n),Uint8Array.from(Or(n,t,8,e)))}}function Ps(t){return Dp(t),function(...e){try{return t.apply(null,e)}catch{}}}const Mr=Kp(jp("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),Hp("")),Us=[996825010,642813549,513874426,1027748829,705979059];function $t(t){const e=t>>25;let n=(t&33554431)<<5;for(let r=0;r<Us.length;r++)(e>>r&1)===1&&(n^=Us[r]);return n}function Os(t,e,n=1){const r=t.length;let o=1;for(let s=0;s<r;s++){const i=t.charCodeAt(s);if(i<33||i>126)throw new Error(`Invalid prefix (${t})`);o=$t(o)^i>>5}o=$t(o);for(let s=0;s<r;s++)o=$t(o)^t.charCodeAt(s)&31;for(let s of e)o=$t(o)^s;for(let s=0;s<6;s++)o=$t(o);return o^=n,Mr.encode(Or([o%sn[30]],30,5,!1))}function qp(t){const e=t==="bech32"?1:734539939,n=zp(5),r=n.decode,o=n.encode,s=Ps(r);function i(u,m,f=90){Kt("bech32.encode prefix",u),_c(m)&&(m=Array.from(m)),Cc("bech32.encode",m);const p=u.length;if(p===0)throw new TypeError(`Invalid prefix length ${p}`);const h=p+7+m.length;if(f!==!1&&h>f)throw new TypeError(`Length ${h} exceeds limit ${f}`);const y=u.toLowerCase(),v=Os(y,m,e);return`${y}1${Mr.encode(m)}${v}`}function a(u,m=90){Kt("bech32.decode input",u);const f=u.length;if(f<8||m!==!1&&f>m)throw new TypeError(`invalid string length: ${f} (${u}). Expected (8..${m})`);const p=u.toLowerCase();if(u!==p&&u!==u.toUpperCase())throw new Error("String must be lowercase or uppercase");const h=p.lastIndexOf("1");if(h===0||h===-1)throw new Error('Letter "1" must be present between prefix and data only');const y=p.slice(0,h),v=p.slice(h+1);if(v.length<6)throw new Error("Data must be at least 6 characters long");const E=Mr.decode(v).slice(0,-6),S=Os(y,E,e);if(!v.endsWith(S))throw new Error(`Invalid checksum in ${u}: expected "${S}"`);return{prefix:y,words:E}}const c=Ps(a);function l(u){const{prefix:m,words:f}=a(u,!1);return{prefix:m,words:f,bytes:r(f)}}function d(u,m){return i(u,o(m))}return{encode:i,decode:a,encodeFromBytes:d,decodeToBytes:l,decodeUnsafe:c,fromWords:r,fromWordsUnsafe:s,toWords:o}}const vn=qp("bech32"),Lc=5e3;function Ms(t){var o,s,i,a,c,l,d;let{prefix:e,words:n}=vn.decode(t,Lc),r=new Uint8Array(vn.fromWords(n));switch(e){case"nprofile":{let u=fr(r);if(!((o=u[0])!=null&&o[0]))throw new Error("missing TLV 0 for nprofile");if(u[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");return{type:"nprofile",data:{pubkey:ie(u[0][0]),relays:u[1]?u[1].map(m=>Jt.decode(m)):[]}}}case"nevent":{let u=fr(r);if(!((s=u[0])!=null&&s[0]))throw new Error("missing TLV 0 for nevent");if(u[0][0].length!==32)throw new Error("TLV 0 should be 32 bytes");if(u[2]&&u[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(u[3]&&u[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"nevent",data:{id:ie(u[0][0]),relays:u[1]?u[1].map(m=>Jt.decode(m)):[],author:(i=u[2])!=null&&i[0]?ie(u[2][0]):void 0,kind:(a=u[3])!=null&&a[0]?parseInt(ie(u[3][0]),16):void 0}}}case"naddr":{let u=fr(r);if(!((c=u[0])!=null&&c[0]))throw new Error("missing TLV 0 for naddr");if(!((l=u[2])!=null&&l[0]))throw new Error("missing TLV 2 for naddr");if(u[2][0].length!==32)throw new Error("TLV 2 should be 32 bytes");if(!((d=u[3])!=null&&d[0]))throw new Error("missing TLV 3 for naddr");if(u[3][0].length!==4)throw new Error("TLV 3 should be 4 bytes");return{type:"naddr",data:{identifier:Jt.decode(u[0][0]),pubkey:ie(u[2][0]),kind:parseInt(ie(u[3][0]),16),relays:u[1]?u[1].map(m=>Jt.decode(m)):[]}}}case"nsec":return{type:e,data:r};case"npub":case"note":return{type:e,data:ie(r)};default:throw new Error(`unknown prefix ${e}`)}}function fr(t){let e={},n=t;for(;n.length>0;){let r=n[0],o=n[1],s=n.slice(2,2+o);if(n=n.slice(2+o),s.length<o)throw new Error(`not enough data to read on TLV ${r}`);e[r]=e[r]||[],e[r].push(s)}return e}function Ds(t){return Fp("npub",st(t))}function Vp(t,e){let n=vn.toWords(e);return vn.encode(t,n,Lc)}function Fp(t,e){return Vp(t,e)}let Ks=0;function xn(t){let e,n;if(t.startsWith("npub1")){let{data:r}=Ms(t);n=r,e=t}else if(t.startsWith("nprofile")){let{data:r}=Ms(t);n=r.pubkey,e=Ds(n)}else n=t,e=Ds(t);return{pubkey:n,npub:e,shortName:e.substring(0,8)+"…"+e.substring(59),metadata:{},lastUpdated:0}}const an=Io("@nostr/gadgets/metadata","cache");async function Wp(t){return typeof t=="string"?Xt.load({pubkey:t}):t.refreshStyle===null?(await hc(t.pubkey,an),Xt._cacheMap.delete(t.pubkey),xn(t.pubkey)):(t.refreshStyle&&Xt.clear(t),Xt.load(t))}const Xt=new cc(async t=>new Promise(async e=>{const n=[];let r=Math.round(Date.now()/1e3),o=await dc(t.map(i=>i.pubkey),an).then(i=>i.map((a,c)=>{const l=t[c];if(typeof l.refreshStyle=="object"){let d=xn(l.pubkey);return js(d,l.refreshStyle),lc(l.pubkey,d,an),d}else{if(a)return l.refreshStyle===!0||a.lastAttempt<r-3600*24*2?(l.refreshStyle!==!1&&n.push(l),a.lastAttempt=r,a):(a.lastAttempt<r-3600&&!a.metadata.name&&!a.metadata.picture&&!a.metadata.about&&(l.refreshStyle!==!1&&n.push(l),a.lastAttempt=Math.round(Date.now()/1e3)),a);{l.refreshStyle!==!1&&n.push(l);let d=xn(l.pubkey);return d.lastAttempt=r,d}}}));if(n.length===0){e(o);return}const s={};await Promise.all(n.map(async({pubkey:i,relays:a=[]})=>{const c=new Set(a.slice(0,3));try{const{items:l}=await Ro(i);let d=0;for(let u=0;u<l.length&&!(l[u].write&&(c.add(l[u].url),d++,d>=2));u++);}catch(l){console.error("Failed to load relay list for",i,l)}do c.add(Tr[Ks%Tr.length]),Ks++;while(c.size<2);for(let l of c)s[l]?s[l].push(i):s[l]=[i]}));try{const i=Object.entries(s).map(([c,l])=>({url:c,filter:{kinds:[0],authors:l}}));let a=Vt.subscribeMap(i,{label:`metadata(${t.length})`,onevent(c){for(let l=0;l<t.length;l++)if(t[l].pubkey===c.pubkey){const d=o[l];if(d.lastUpdated>c.created_at)return;js(d,c);return}},oneose(){e(o),a.close();let c=[];for(let l=0;l<o.length;l++){let d=o[l];d.pubkey&&c.push([d.pubkey,d])}uc(c,an)}})}catch(i){for(let a=0;a<o.length;a++)o[a]=i;e(o)}}),{cacheKeyFn:t=>t.pubkey});function js(t,e){var r,o;let n={};try{n=JSON.parse(e.content)}catch{}t.metadata=n,t.shortName=n.name||n.display_name||((o=(r=n.nip05)==null?void 0:r.split("@"))==null?void 0:o[0])||t.shortName,t.lastUpdated=e.created_at,n.picture&&(t.image=n.picture)}function Oo(t){const[e,n]=j.useState(()=>xn(t));return j.useEffect(()=>{Wp(t).then(n)},[t]),{profile:e}}const Hs=["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4caf50","#8bc34a","#cddc39","#ffc107","#ff9800","#ff5722","#795548"];function Ic(t){let e=0;for(let n=0;n<t.length;n++)e=t.charCodeAt(n)+((e<<5)-e),e=e&e;return Hs[Math.abs(e)%Hs.length]}function Rc(t,e=40){const n=Ic(t),r=t.slice(0,2).toUpperCase();return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${e}" viewBox="0 0 ${e} ${e}">
67
67
  <rect width="${e}" height="${e}" fill="${n}" rx="${e/5}"/>
68
68
  <text x="50%" y="50%" fill="white" font-family="system-ui, sans-serif" font-size="${e*.4}" font-weight="600" text-anchor="middle" dominant-baseline="central">${r}</text>
69
- </svg>`}function Dr(t,e=40){const n=Ic(t,e);return`data:image/svg+xml,${encodeURIComponent(n)}`}function Dn({pubkey:t,size:e=32,className:n=""}){const{profile:r}=Oo(t),o=r.image||Dr(t,e),i=`https://jumble.social/users/${vt.npubEncode(t)}`;return b.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`nc-avatar-link ${n}`,children:b.jsx("img",{src:o,alt:"",width:e,height:e,className:"nc-avatar",style:{height:"fit-content"},onError:a=>{const c=a.target;c.src=Dr(t,e)}})})}function jt({pubkey:t,className:e=""}){const{profile:n}=Oo(t),o=`https://jumble.social/users/${vt.npubEncode(t)}`;return b.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:`nc-username ${e}`,title:t,children:n.shortName})}function Rc({url:t,relays:e,mention:n,pow:r,parentEvent:o,onClearParent:s,onPublished:i,onLoginRequired:a,onError:c,className:l=""}){const{signer:d,signerInfo:u,isLoggedIn:m}=Ct(),{t:f}=Qe(),[p,h]=j.useState(""),[y,v]=j.useState(!1),E=async M=>{if(M.preventDefault(),!!p.trim()){if(!m||!d){a();return}v(!0);try{const O=await yc(d,{url:t,content:p.trim(),parentEvent:o,relays:e,mention:n,pow:r});h(""),s==null||s(),i==null||i(O)}catch(O){c==null||c(O instanceof Error?O:new Error("Failed to publish"))}finally{v(!1)}}},S=()=>{m||a()};return b.jsxs("form",{onSubmit:E,className:`nc-editor ${l}`,children:[o&&b.jsxs("div",{className:"nc-editor__reply-to",children:[b.jsx("span",{className:"nc-editor__reply-to-label",children:f("replyTo")}),b.jsx(jt,{pubkey:o.pubkey,className:"nc-editor__reply-to-author"}),b.jsx("span",{className:"nc-editor__reply-to-content",children:o.content}),b.jsx("button",{type:"button",onClick:s,className:"nc-editor__cancel-reply",children:f("cancel")})]}),b.jsxs("div",{className:"nc-editor__main",children:[m&&u&&b.jsx(Dn,{pubkey:u.pubkey,size:40}),b.jsxs("div",{className:"nc-editor__input-wrapper",children:[b.jsx("textarea",{value:p,onInput:M=>h(M.target.value),onFocus:S,placeholder:f("writeComment"),className:"nc-editor__textarea",rows:3,disabled:y}),b.jsx("div",{className:"nc-editor__actions",children:b.jsx("button",{type:"submit",disabled:!p.trim()||y||!m,className:"nc-editor__submit",children:f(y?r?"computing":"publishing":"publish")})})]})]})]})}function Wp(t,e,n){const r=new Date(t*1e3),s=new Date().getTime()-r.getTime(),i=Math.floor(s/6e4),a=Math.floor(s/36e5),c=Math.floor(s/864e5);return i<1?e("timeJustNow"):i<60?e("timeMinutesAgo").replace("{{n}}",String(i)):a<24?e("timeHoursAgo").replace("{{n}}",String(a)):c<30?e("timeDaysAgo").replace("{{n}}",String(c)):r.toLocaleDateString(n,{year:"numeric",month:"short",day:"numeric"})}function Mo({comment:t,relays:e,onReply:n,onLoginRequired:r,currentPubkey:o,className:s="",isChild:i=!1}){const{event:a,children:c,replyTo:l}=t,{t:d,locale:u}=Qe(),m=!i&&c.length>0;return b.jsxs("div",{className:`nc-comment ${s}`,children:[b.jsxs("div",{className:"nc-comment__main",children:[b.jsx(Dn,{pubkey:a.pubkey,size:i?28:40}),b.jsxs("div",{className:"nc-comment__content",children:[b.jsx("div",{className:"nc-comment__header",children:b.jsx(jt,{pubkey:a.pubkey,className:"nc-comment__author"})}),l&&b.jsxs("div",{className:"nc-comment__reply-preview",children:[b.jsx(jt,{pubkey:l.pubkey,className:"nc-comment__reply-preview-author"}),b.jsx("span",{className:"nc-comment__reply-preview-text",children:l.content.replace(/\n/g," ")})]}),b.jsx("p",{className:"nc-comment__text",children:a.content}),b.jsxs("div",{className:"nc-comment__actions",children:[b.jsx("span",{className:"nc-comment__time",children:Wp(a.created_at,d,u)}),b.jsx("button",{type:"button",className:"nc-comment__reply-btn",onClick:()=>n(a),children:d("reply")})]})]}),m&&b.jsx("div",{className:"nc-comment__vline"})]}),m&&b.jsx("div",{className:"nc-comment__children",children:c.map((f,p)=>b.jsxs("div",{className:`nc-comment__child-wrapper ${p<c.length-1?"nc-comment__child-wrapper--continue":""}`,children:[b.jsx("div",{className:"nc-comment__connector"}),p<c.length-1&&b.jsx("div",{className:"nc-comment__connector-line"}),b.jsx(Mo,{comment:f,relays:e,onReply:n,onLoginRequired:r,currentPubkey:o,isChild:!0})]},f.event.id))})]})}function $c({comments:t,loading:e,loadingMore:n,hasMore:r,error:o,relays:s,onReply:i,onLoginRequired:a,onLoadMore:c,onRetry:l,currentPubkey:d,className:u=""}){const{t:m}=Qe();return e?b.jsx("div",{className:`nc-list nc-list--loading ${u}`,children:b.jsxs("div",{className:"nc-loading",children:[b.jsx("div",{className:"nc-loading__spinner"}),b.jsx("span",{children:m("loading")})]})}):o?b.jsx("div",{className:`nc-list nc-list--error ${u}`,children:b.jsxs("div",{className:"nc-error",children:[b.jsxs("span",{children:[m("error"),": ",o]}),b.jsx("button",{type:"button",onClick:l,className:"nc-error__retry",children:m("retry")})]})}):t.length===0?b.jsx("div",{className:`nc-list nc-list--empty ${u}`,children:b.jsx("p",{className:"nc-empty",children:m("noComments")})}):b.jsxs("div",{className:`nc-list ${u}`,children:[t.map(f=>b.jsx(Mo,{comment:f,relays:s,onReply:i,onLoginRequired:a,currentPubkey:d},f.event.id)),r&&b.jsx("button",{type:"button",onClick:c,disabled:n,className:"nc-load-more",children:m(n?"loading":"loadMore")})]})}/**
69
+ </svg>`}function Dr(t,e=40){const n=Rc(t,e);return`data:image/svg+xml,${encodeURIComponent(n)}`}function Dn({pubkey:t,size:e=32,className:n=""}){const{profile:r}=Oo(t),o=r.image||Dr(t,e),i=`https://jumble.social/users/${vt.npubEncode(t)}`;return b.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`nc-avatar-link ${n}`,children:b.jsx("img",{src:o,alt:"",width:e,height:e,className:"nc-avatar",style:{height:"fit-content"},onError:a=>{const c=a.target;c.src=Dr(t,e)}})})}function jt({pubkey:t,className:e=""}){const{profile:n}=Oo(t),o=`https://jumble.social/users/${vt.npubEncode(t)}`;return b.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:`nc-username ${e}`,title:t,children:n.shortName})}function $c({url:t,relays:e,mention:n,pow:r,parentEvent:o,onClearParent:s,onPublished:i,onLoginRequired:a,onError:c,className:l=""}){const{signer:d,signerInfo:u,isLoggedIn:m}=Ct(),{t:f}=Qe(),[p,h]=j.useState(""),[y,v]=j.useState(!1),E=async O=>{if(O.preventDefault(),!!p.trim()){if(!m||!d){a();return}v(!0);try{const M=await bc(d,{url:t,content:p.trim(),parentEvent:o,relays:e,mention:n,pow:r});h(""),s==null||s(),i==null||i(M)}catch(M){c==null||c(M instanceof Error?M:new Error("Failed to publish"))}finally{v(!1)}}},S=()=>{m||a()};return b.jsxs("form",{onSubmit:E,className:`nc-editor ${l}`,children:[o&&b.jsxs("div",{className:"nc-editor__reply-to",children:[b.jsx("span",{className:"nc-editor__reply-to-label",children:f("replyTo")}),b.jsx(jt,{pubkey:o.pubkey,className:"nc-editor__reply-to-author"}),b.jsx("span",{className:"nc-editor__reply-to-content",children:o.content}),b.jsx("button",{type:"button",onClick:s,className:"nc-editor__cancel-reply",children:f("cancel")})]}),b.jsxs("div",{className:"nc-editor__main",children:[m&&u&&b.jsx(Dn,{pubkey:u.pubkey,size:40}),b.jsxs("div",{className:"nc-editor__input-wrapper",children:[b.jsx("textarea",{value:p,onInput:O=>h(O.target.value),onFocus:S,placeholder:f("writeComment"),className:"nc-editor__textarea",rows:3,disabled:y}),b.jsx("div",{className:"nc-editor__actions",children:b.jsx("button",{type:"submit",disabled:!p.trim()||y||!m,className:"nc-editor__submit",children:f(y?r?"computing":"publishing":"publish")})})]})]})]})}function Zp(t,e,n){const r=new Date(t*1e3),s=new Date().getTime()-r.getTime(),i=Math.floor(s/6e4),a=Math.floor(s/36e5),c=Math.floor(s/864e5);return i<1?e("timeJustNow"):i<60?e("timeMinutesAgo").replace("{{n}}",String(i)):a<24?e("timeHoursAgo").replace("{{n}}",String(a)):c<30?e("timeDaysAgo").replace("{{n}}",String(c)):r.toLocaleDateString(n,{year:"numeric",month:"short",day:"numeric"})}function Mo({comment:t,relays:e,onReply:n,onLoginRequired:r,currentPubkey:o,className:s="",isChild:i=!1}){const{event:a,children:c,replyTo:l}=t,{t:d,locale:u}=Qe(),m=!i&&c.length>0;return b.jsxs("div",{className:`nc-comment ${s}`,children:[b.jsxs("div",{className:"nc-comment__main",children:[b.jsx(Dn,{pubkey:a.pubkey,size:i?28:40}),b.jsxs("div",{className:"nc-comment__content",children:[b.jsx("div",{className:"nc-comment__header",children:b.jsx(jt,{pubkey:a.pubkey,className:"nc-comment__author"})}),l&&b.jsxs("div",{className:"nc-comment__reply-preview",children:[b.jsx(jt,{pubkey:l.pubkey,className:"nc-comment__reply-preview-author"}),b.jsx("span",{className:"nc-comment__reply-preview-text",children:l.content.replace(/\n/g," ")})]}),b.jsx("p",{className:"nc-comment__text",children:a.content}),b.jsxs("div",{className:"nc-comment__actions",children:[b.jsx("span",{className:"nc-comment__time",children:Zp(a.created_at,d,u)}),b.jsx("button",{type:"button",className:"nc-comment__reply-btn",onClick:()=>n(a),children:d("reply")})]})]}),m&&b.jsx("div",{className:"nc-comment__vline"})]}),m&&b.jsx("div",{className:"nc-comment__children",children:c.map((f,p)=>b.jsxs("div",{className:`nc-comment__child-wrapper ${p<c.length-1?"nc-comment__child-wrapper--continue":""}`,children:[b.jsx("div",{className:"nc-comment__connector"}),p<c.length-1&&b.jsx("div",{className:"nc-comment__connector-line"}),b.jsx(Mo,{comment:f,relays:e,onReply:n,onLoginRequired:r,currentPubkey:o,isChild:!0})]},f.event.id))})]})}function Tc({comments:t,loading:e,loadingMore:n,hasMore:r,error:o,relays:s,onReply:i,onLoginRequired:a,onLoadMore:c,onRetry:l,currentPubkey:d,className:u=""}){const{t:m}=Qe();return e?b.jsx("div",{className:`nc-list nc-list--loading ${u}`,children:b.jsxs("div",{className:"nc-loading",children:[b.jsx("div",{className:"nc-loading__spinner"}),b.jsx("span",{children:m("loading")})]})}):o?b.jsx("div",{className:`nc-list nc-list--error ${u}`,children:b.jsxs("div",{className:"nc-error",children:[b.jsxs("span",{children:[m("error"),": ",o]}),b.jsx("button",{type:"button",onClick:l,className:"nc-error__retry",children:m("retry")})]})}):t.length===0?b.jsx("div",{className:`nc-list nc-list--empty ${u}`,children:b.jsx("p",{className:"nc-empty",children:m("noComments")})}):b.jsxs("div",{className:`nc-list ${u}`,children:[t.map(f=>b.jsx(Mo,{comment:f,relays:s,onReply:i,onLoginRequired:a,currentPubkey:d},f.event.id)),r&&b.jsx("button",{type:"button",onClick:c,disabled:n,className:"nc-load-more",children:m(n?"loading":"loadMore")})]})}/**
70
70
  * @license lucide-react v0.563.0 - ISC
71
71
  *
72
72
  * This source code is licensed under the ISC license.
73
73
  * See the LICENSE file in the root directory of this source tree.
74
- */const Tc=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();/**
74
+ */const Pc=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();/**
75
75
  * @license lucide-react v0.563.0 - ISC
76
76
  *
77
77
  * This source code is licensed under the ISC license.
78
78
  * See the LICENSE file in the root directory of this source tree.
79
- */const Zp=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/**
79
+ */const Jp=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/**
80
80
  * @license lucide-react v0.563.0 - ISC
81
81
  *
82
82
  * This source code is licensed under the ISC license.
83
83
  * See the LICENSE file in the root directory of this source tree.
84
- */const Jp=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());/**
84
+ */const Gp=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());/**
85
85
  * @license lucide-react v0.563.0 - ISC
86
86
  *
87
87
  * This source code is licensed under the ISC license.
88
88
  * See the LICENSE file in the root directory of this source tree.
89
- */const zs=t=>{const e=Jp(t);return e.charAt(0).toUpperCase()+e.slice(1)};/**
89
+ */const zs=t=>{const e=Gp(t);return e.charAt(0).toUpperCase()+e.slice(1)};/**
90
90
  * @license lucide-react v0.563.0 - ISC
91
91
  *
92
92
  * This source code is licensed under the ISC license.
93
93
  * See the LICENSE file in the root directory of this source tree.
94
- */var Gp={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
94
+ */var Yp={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
95
95
  * @license lucide-react v0.563.0 - ISC
96
96
  *
97
97
  * This source code is licensed under the ISC license.
98
98
  * See the LICENSE file in the root directory of this source tree.
99
- */const Yp=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};/**
99
+ */const Xp=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};/**
100
100
  * @license lucide-react v0.563.0 - ISC
101
101
  *
102
102
  * This source code is licensed under the ISC license.
103
103
  * See the LICENSE file in the root directory of this source tree.
104
- */const Xp=j.forwardRef(({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:o="",children:s,iconNode:i,...a},c)=>j.createElement("svg",{ref:c,...Gp,width:e,height:e,stroke:t,strokeWidth:r?Number(n)*24/Number(e):n,className:Tc("lucide",o),...!s&&!Yp(a)&&{"aria-hidden":"true"},...a},[...i.map(([l,d])=>j.createElement(l,d)),...Array.isArray(s)?s:[s]]));/**
104
+ */const Qp=j.forwardRef(({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:o="",children:s,iconNode:i,...a},c)=>j.createElement("svg",{ref:c,...Yp,width:e,height:e,stroke:t,strokeWidth:r?Number(n)*24/Number(e):n,className:Pc("lucide",o),...!s&&!Xp(a)&&{"aria-hidden":"true"},...a},[...i.map(([l,d])=>j.createElement(l,d)),...Array.isArray(s)?s:[s]]));/**
105
105
  * @license lucide-react v0.563.0 - ISC
106
106
  *
107
107
  * This source code is licensed under the ISC license.
108
108
  * See the LICENSE file in the root directory of this source tree.
109
- */const De=(t,e)=>{const n=j.forwardRef(({className:r,...o},s)=>j.createElement(Xp,{ref:s,iconNode:e,className:Tc(`lucide-${Zp(zs(t))}`,`lucide-${t}`,r),...o}));return n.displayName=zs(t),n};/**
109
+ */const De=(t,e)=>{const n=j.forwardRef(({className:r,...o},s)=>j.createElement(Qp,{ref:s,iconNode:e,className:Pc(`lucide-${Jp(zs(t))}`,`lucide-${t}`,r),...o}));return n.displayName=zs(t),n};/**
110
110
  * @license lucide-react v0.563.0 - ISC
111
111
  *
112
112
  * This source code is licensed under the ISC license.
113
113
  * See the LICENSE file in the root directory of this source tree.
114
- */const Qp=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Qt=De("check",Qp);/**
114
+ */const eg=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Qt=De("check",eg);/**
115
115
  * @license lucide-react v0.563.0 - ISC
116
116
  *
117
117
  * This source code is licensed under the ISC license.
118
118
  * See the LICENSE file in the root directory of this source tree.
119
- */const eg=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],tg=De("chevron-left",eg);/**
119
+ */const tg=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],ng=De("chevron-left",tg);/**
120
120
  * @license lucide-react v0.563.0 - ISC
121
121
  *
122
122
  * This source code is licensed under the ISC license.
123
123
  * See the LICENSE file in the root directory of this source tree.
124
- */const ng=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],qs=De("copy",ng);/**
124
+ */const rg=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],qs=De("copy",rg);/**
125
125
  * @license lucide-react v0.563.0 - ISC
126
126
  *
127
127
  * This source code is licensed under the ISC license.
128
128
  * See the LICENSE file in the root directory of this source tree.
129
- */const rg=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],Vs=De("download",rg);/**
129
+ */const og=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],Vs=De("download",og);/**
130
130
  * @license lucide-react v0.563.0 - ISC
131
131
  *
132
132
  * This source code is licensed under the ISC license.
133
133
  * See the LICENSE file in the root directory of this source tree.
134
- */const og=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],sg=De("key",og);/**
134
+ */const sg=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],ig=De("key",sg);/**
135
135
  * @license lucide-react v0.563.0 - ISC
136
136
  *
137
137
  * This source code is licensed under the ISC license.
138
138
  * See the LICENSE file in the root directory of this source tree.
139
- */const ig=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],Fs=De("lock",ig);/**
139
+ */const ag=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],Fs=De("lock",ag);/**
140
140
  * @license lucide-react v0.563.0 - ISC
141
141
  *
142
142
  * This source code is licensed under the ISC license.
143
143
  * See the LICENSE file in the root directory of this source tree.
144
- */const ag=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],cg=De("plus",ag);/**
144
+ */const cg=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],lg=De("plus",cg);/**
145
145
  * @license lucide-react v0.563.0 - ISC
146
146
  *
147
147
  * This source code is licensed under the ISC license.
148
148
  * See the LICENSE file in the root directory of this source tree.
149
- */const lg=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Ws=De("upload",lg);/**
149
+ */const ug=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Ws=De("upload",ug);/**
150
150
  * @license lucide-react v0.563.0 - ISC
151
151
  *
152
152
  * This source code is licensed under the ISC license.
153
153
  * See the LICENSE file in the root directory of this source tree.
154
- */const ug=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],dg=De("x",ug);function hg({onSuccess:t}){const{loginWithNip07:e,loading:n,error:r,isNip07Available:o}=Ct(),{t:s}=Qe(),i=async()=>{await e(),t()};return o?b.jsxs("button",{type:"button",onClick:i,disabled:n,className:"nc-login-option",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(Fs,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:s("extensionLogin")}),b.jsx("p",{children:s("extensionLoginDesc")}),r&&b.jsx("p",{className:"nc-login-option__error",children:r})]})]}):b.jsxs("div",{className:"nc-login-option nc-login-option--disabled",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(Fs,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:s("extensionLogin")}),b.jsx("p",{children:s("extensionLoginDesc")}),b.jsx("p",{className:"nc-login-option__hint",children:"No extension detected"})]})]})}function fg({onSuccess:t}){const{loginWithBunker:e,loading:n,error:r}=Ct(),{t:o}=Qe(),[s,i]=j.useState(""),a=async c=>{c.preventDefault(),s.trim()&&(await e(s.trim()),r||t())};return b.jsxs("div",{className:"nc-login-option nc-login-option--bunker",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(sg,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:o("bunkerLogin")}),b.jsx("p",{children:o("bunkerLoginDesc")}),b.jsxs("form",{onSubmit:a,className:"nc-bunker-form",children:[b.jsx("input",{type:"text",value:s,onInput:c=>i(c.target.value),placeholder:o("bunkerUrlPlaceholder"),className:"nc-bunker-form__input"}),b.jsx("button",{type:"submit",disabled:n||!s.trim(),className:"nc-bunker-form__submit",children:o(n?"connecting":"connect")})]}),r&&b.jsx("p",{className:"nc-login-option__error",children:r})]})]})}function Pc({isOpen:t,onClose:e,enabledSigners:n=["nip07","bunker","temp"],className:r=""}){const{isLoggedIn:o,signerInfo:s,logout:i,loginWithNsec:a,loading:c,getTempSigner:l}=Ct(),{t:d}=Qe(),[u,m]=j.useState(!1),[f,p]=j.useState("list"),[h,y]=j.useState(null),[v,E]=j.useState(!1),[S,M]=j.useState(!1),[O,_]=j.useState(""),[N,L]=j.useState(null);if(j.useEffect(()=>{t||(p("list"),y(null),E(!1),M(!1),_(""),L(null))},[t]),j.useEffect(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[t]),j.useEffect(()=>{const z=F=>{F.key==="Escape"&&(f!=="list"?P():e())};return t&&window.addEventListener("keydown",z),()=>window.removeEventListener("keydown",z)},[t,f,e]),!t)return null;const K=()=>{e()},P=()=>{p("list"),y(null),E(!1),M(!1),_(""),L(null)},$=async()=>{const z=l();z&&(await z.copyNsec(),m(!0),setTimeout(()=>m(!1),3e3))},U=()=>{const z=l();z&&z.downloadKeyFile()},D=async()=>{h&&(await h.copyNsec(),E(!0),setTimeout(()=>E(!1),3e3))},k=()=>{h&&(h.downloadKeyFile(),M(!0))},w=async()=>{if(h){const z=h.getNsec();await a(z),K()}},x=async z=>{if(z.preventDefault(),!!O.trim()){L(null);try{await a(O),K()}catch{L(d("importKeyError"))}}},A=(s==null?void 0:s.type)==="temp",I=A?l():null,C=(I==null?void 0:I.getNsec())||"",R=()=>d(o?"logout":f==="create"?"createAccount":f==="import"?"importKey":"login"),B=()=>b.jsx("button",{type:"button",onClick:P,className:"nc-modal__back","aria-label":"Back",children:b.jsx(tg,{size:20})}),T=()=>{if(!h)return null;const z=h.getNsec();return b.jsxs("div",{className:"nc-temp-view nc-temp-view--created",children:[b.jsxs("div",{className:"nc-temp-view__header",children:[b.jsx("div",{className:"nc-temp-view__icon nc-temp-view__icon--success",children:b.jsx(Qt,{size:24})}),b.jsx("h4",{className:"nc-temp-view__title",children:d("tempAccountCreated")})]}),b.jsxs("div",{className:"nc-temp-view__key-section",children:[b.jsxs("div",{className:"nc-temp-view__key-box",children:[b.jsx("code",{className:"nc-temp-view__key-code",children:z}),b.jsxs("div",{className:"nc-temp-view__key-actions",children:[b.jsx("button",{type:"button",onClick:D,className:`nc-temp-view__key-btn ${v?"nc-temp-view__key-btn--success":""}`,title:d("copyKey"),children:v?b.jsx(Qt,{size:16}):b.jsx(qs,{size:16})}),b.jsx("button",{type:"button",onClick:k,className:`nc-temp-view__key-btn ${S?"nc-temp-view__key-btn--success":""}`,title:d("downloadKey"),children:S?b.jsx(Qt,{size:16}):b.jsx(Vs,{size:16})})]})]}),b.jsx("p",{className:"nc-temp-view__key-hint",children:d("keyCompatibility")})]}),b.jsx("button",{type:"button",onClick:w,className:"nc-temp-view__submit",children:d("startCommenting")})]})},H=()=>b.jsxs("div",{className:"nc-temp-view",children:[b.jsx("div",{className:"nc-temp-view__icon",children:b.jsx(Ws,{size:32})}),b.jsx("h4",{className:"nc-temp-view__title",children:d("importKey")}),b.jsx("p",{className:"nc-temp-view__desc",children:d("importKeyDesc")}),b.jsxs("form",{onSubmit:x,className:"nc-temp-view__form",children:[b.jsx("input",{type:"password",value:O,onInput:z=>{_(z.target.value),L(null)},placeholder:d("importKeyPlaceholder"),className:"nc-temp-view__input",autoComplete:"off"}),N&&b.jsx("p",{className:"nc-temp-view__error",children:N}),b.jsx("button",{type:"submit",disabled:c||!O.trim(),className:"nc-temp-view__submit",children:d("login")})]})]});return b.jsx("div",{className:`nc-modal-overlay ${r}`,onClick:e,children:b.jsxs("div",{className:"nc-modal",onClick:z=>z.stopPropagation(),children:[b.jsxs("div",{className:"nc-modal__header",children:[f!=="list"&&!o&&B(),b.jsx("h3",{children:R()}),b.jsx("button",{type:"button",onClick:e,className:"nc-modal__close","aria-label":"Close",children:b.jsx(dg,{size:20})})]}),b.jsx("div",{className:"nc-modal__body",children:o&&s?b.jsxs("div",{className:"nc-logged-in",children:[b.jsxs("div",{className:"nc-logged-in__user",children:[b.jsx(Dn,{pubkey:s.pubkey,size:48}),b.jsxs("div",{className:"nc-logged-in__info",children:[b.jsx(jt,{pubkey:s.pubkey,className:"nc-logged-in__name"}),b.jsxs("span",{className:"nc-logged-in__type",children:[s.type==="nip07"&&d("extensionLogin"),s.type==="bunker"&&d("bunkerLogin"),s.type==="temp"&&d("tempAccount")]})]})]}),A&&b.jsxs("div",{className:"nc-logged-in__temp-backup",children:[b.jsx("div",{className:"nc-temp-nsec",children:b.jsx("code",{className:"nc-temp-nsec__code",children:C})}),b.jsx("p",{className:"nc-login-option__compatibility",children:d("keyCompatibility")}),b.jsxs("div",{className:"nc-temp-actions",children:[b.jsxs("button",{type:"button",onClick:$,className:`nc-temp-actions__btn ${u?"nc-temp-actions__btn--success":""}`,children:[u?b.jsx(Qt,{size:16}):b.jsx(qs,{size:16}),d(u?"keyCopied":"copyKey")]}),b.jsxs("button",{type:"button",onClick:U,className:"nc-temp-actions__btn",children:[b.jsx(Vs,{size:16}),d("downloadKey")]})]})]}),b.jsx("button",{type:"button",onClick:()=>{i(),e()},className:"nc-logged-in__logout",children:d("logout")})]}):f==="create"?T():f==="import"?H():b.jsxs(b.Fragment,{children:[b.jsx("p",{className:"nc-modal__description",children:d("loginDescription")}),b.jsxs("div",{className:"nc-login-options",children:[n.includes("nip07")&&b.jsx(hg,{onSuccess:K}),n.includes("bunker")&&b.jsx(fg,{onSuccess:K}),n.includes("temp")&&b.jsxs(b.Fragment,{children:[b.jsxs("button",{type:"button",onClick:()=>{const z=new _t;y(z),p("create")},className:"nc-login-option",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(cg,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:d("createAccount")}),b.jsx("p",{children:d("tempAccountDesc")})]})]}),b.jsxs("button",{type:"button",onClick:()=>p("import"),className:"nc-login-option",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(Ws,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:d("importKey")}),b.jsx("p",{children:d("importKeyDesc")})]})]})]})]})]})})]})})}new TextDecoder("utf-8");new TextEncoder;function mg(t){let e=0;for(let n=0;n<64;n+=8){const r=parseInt(t.substring(n,n+8),16);if(r===0)e+=32;else{e+=Math.clz32(r);break}}return e}function Uc(t){const{url:e,relays:n,mention:r,pageSize:o=50,pow:s=18}=t,[i,a]=j.useState([]),[c,l]=j.useState(!0),[d,u]=j.useState(!1),[m,f]=j.useState(null),[p,h]=j.useState(),y=JSON.stringify(n),v=j.useCallback(async()=>{l(!0),f(null),a([]);const _=[];let N=!1;return pc({url:e,relays:await Pr(n,r),limit:o,onEvent:K=>{N?a(P=>P.some($=>$.id===K.id)?P:[K,...P]):_.push(K)},onEose:()=>{N=!0;const P=_.sort(($,U)=>U.created_at-$.created_at).slice(0,o);a(P),h(P.length>=o?P[P.length-1].created_at-1:void 0),l(!1)}})},[e,o,y,r]),E=j.useCallback(async()=>{if(!(c||d||p===void 0)){u(!0);try{const _=await gc({url:e,relays:await Pr(n,r),limit:o,until:p});if(_.length===0){h(void 0);return}a(N=>{const L=_.filter(K=>!N.some(P=>P.id===K.id));return[...N,...L]}),h(_[_.length-1].created_at-1)}catch(_){f(_ instanceof Error?_.message:"Failed to load more")}finally{u(!1)}}},[e,o,c,d,p,y,r]);j.useEffect(()=>{const _=v();return()=>{_.then(N=>N())}},[v]);const S=j.useCallback(_=>{a(N=>N.some(L=>L.id===_.id)?N:[_,...N])},[]),{comments:M,commentCount:O}=j.useMemo(()=>{const _=s&&s>0?i.filter(P=>mg(P.id)>=s):i,N=bc(_);let L=0;const K=P=>{P.forEach($=>{L++,K($.children)})};return K(N),{comments:N,commentCount:L}},[i,s]);return{comments:M,commentCount:O,events:i,loading:c,loadingMore:d,error:m,hasMore:p!==void 0,reload:v,loadMore:E,addEvent:S}}const pg=':where(.nostr-comments){--nc-bg: #ffffff;--nc-text: #1f2937;--nc-primary: #319cfc;--nc-error: #dc2626;--nc-success: #16a34a;--nc-bg-secondary: color-mix(in srgb, var(--nc-text) 4%, var(--nc-bg));--nc-bg-hover: color-mix(in srgb, var(--nc-text) 6%, var(--nc-bg));--nc-border: color-mix(in srgb, var(--nc-text) 18%, var(--nc-bg));--nc-text-secondary: color-mix(in srgb, var(--nc-text) 60%, var(--nc-bg));--nc-text-muted: color-mix(in srgb, var(--nc-text) 40%, var(--nc-bg));--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, black);--nc-primary-light: color-mix(in srgb, var(--nc-primary) 8%, var(--nc-bg));--nc-error-light: color-mix(in srgb, var(--nc-error) 6%, var(--nc-bg));--nc-success-light: color-mix(in srgb, var(--nc-success) 12%, var(--nc-bg));--nc-space-xs: 3px;--nc-space-sm: 6px;--nc-space-md: 10px;--nc-space-lg: 14px;--nc-space-xl: 20px;--nc-radius-sm: 6px;--nc-radius-md: 8px;--nc-radius-lg: 10px;--nc-radius-xl: 16px;--nc-radius-full: 9999px;--nc-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;--nc-font-size-xs: 11px;--nc-font-size-sm: 12px;--nc-font-size-md: 13px;--nc-font-size-lg: 15px;--nc-avatar-radius: 50%;--nc-shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--nc-shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--nc-shadow-lg: 0 12px 32px rgba(0, 0, 0, .12);--nc-transition: .2s ease-out}:where(.nostr-comments[data-theme=dark]){--nc-bg: #0d1117;--nc-text: #e6edf3;--nc-primary: #58a6ff;--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, white);--nc-error: #f85149;--nc-success: #3fb950;--nc-border: #30363d;--nc-bg-secondary: #161b22;--nc-bg-hover: #21262d;--nc-primary-light: rgba(88, 166, 255, .15);--nc-error-light: rgba(248, 81, 73, .15);--nc-success-light: rgba(63, 185, 80, .15)}@media(prefers-color-scheme:dark){:where(.nostr-comments[data-theme=auto]){--nc-bg: #0d1117;--nc-text: #e6edf3;--nc-primary: #58a6ff;--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, white);--nc-error: #f85149;--nc-success: #3fb950;--nc-border: #30363d;--nc-bg-secondary: #161b22;--nc-bg-hover: #21262d;--nc-primary-light: rgba(88, 166, 255, .15);--nc-error-light: rgba(248, 81, 73, .15);--nc-success-light: rgba(63, 185, 80, .15)}}.nostr-comments:not([data-headless=true]){font-family:var(--nc-font-family);font-size:var(--nc-font-size-md);color:var(--nc-text);line-height:1.5}.nostr-comments:not([data-headless=true]) *{box-sizing:border-box}.nostr-comments:not([data-headless=true]) .nc-header{margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-title{font-size:var(--nc-font-size-lg);font-weight:600;margin:0;display:flex;align-items:center;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-count{font-weight:400;color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-editor{margin-bottom:var(--nc-space-xl)}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to{display:flex;align-items:center;gap:var(--nc-space-sm);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary-light);border-radius:var(--nc-radius-md);margin-bottom:var(--nc-space-md);font-size:var(--nc-font-size-sm);color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-label{font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-author{color:var(--nc-primary);font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-author:after{content:":"}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-content{color:var(--nc-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nostr-comments:not([data-headless=true]) .nc-editor__cancel-reply{margin-left:auto;background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs) var(--nc-space-sm);border-radius:var(--nc-radius-sm);transition:background var(--nc-transition);flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__cancel-reply:hover{color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-editor__main{display:flex;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-editor__input-wrapper{flex:1}.nostr-comments:not([data-headless=true]) .nc-editor__textarea{width:100%;padding:var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);background:color-mix(in srgb,var(--nc-bg) 60%,transparent);color:var(--nc-text);font-family:inherit;font-size:var(--nc-font-size-md);resize:vertical;min-height:96px;transition:border-color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-editor__textarea:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-editor__textarea::placeholder{color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-editor__actions{display:flex;justify-content:flex-end;margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-editor__submit{padding:var(--nc-space-sm) var(--nc-space-xl);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);font-weight:500;cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-editor__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-editor__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-list{display:flex;flex-direction:column}.nostr-comments:not([data-headless=true]) .nc-loading,.nostr-comments:not([data-headless=true]) .nc-empty,.nostr-comments:not([data-headless=true]) .nc-error{text-align:center;padding:var(--nc-space-xl);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-loading{display:flex;align-items:center;justify-content:center;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-loading__spinner{width:16px;height:16px;border:1.5px solid var(--nc-border);border-top-color:var(--nc-primary);border-radius:50%;animation:nc-spin .8s linear infinite}@keyframes nc-spin{to{transform:rotate(360deg)}}.nostr-comments:not([data-headless=true]) .nc-error__retry{margin-top:var(--nc-space-md);padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);cursor:pointer;color:var(--nc-text);transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-error__retry:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-comment{padding-top:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-comment:first-child{padding-top:0}.nostr-comments:not([data-headless=true]) .nc-comment__main{display:flex;align-items:flex-start;gap:var(--nc-space-md);position:relative}.nostr-comments:not([data-headless=true]) .nc-comment__vline{position:absolute;left:20px;top:48px;bottom:0;border-left:1.5px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-comment__content{flex:1;min-width:0;padding-top:2px}.nostr-comments:not([data-headless=true]) .nc-comment__header{margin-bottom:var(--nc-space-xs);display:flex}.nostr-comments:not([data-headless=true]) .nc-comment__author{font-weight:500;color:var(--nc-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nostr-comments:not([data-headless=true]) .nc-comment__text{margin:0;color:var(--nc-text);white-space:pre-wrap;word-wrap:break-word}.nostr-comments:not([data-headless=true]) .nc-comment__actions{display:flex;align-items:center;gap:var(--nc-space-md);margin-top:var(--nc-space-xs);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-comment__time{color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-btn{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:0;font-size:var(--nc-font-size-sm);transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-btn:hover{color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-comment__child-wrapper{position:relative;padding-left:50px}.nostr-comments:not([data-headless=true]) .nc-comment__connector{position:absolute;left:20px;top:0;width:26px;height:32px;border-left:1.5px solid var(--nc-border);border-bottom:1.5px solid var(--nc-border);border-bottom-left-radius:var(--nc-radius-xl)}.nostr-comments:not([data-headless=true]) .nc-comment__connector-line{position:absolute;left:20px;top:0;bottom:0;border-left:1.5px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview{display:flex;align-items:center;gap:var(--nc-space-xs);padding:var(--nc-space-xs) var(--nc-space-sm);margin-bottom:var(--nc-space-xs);background:var(--nc-bg-secondary);border-radius:var(--nc-radius-sm);border-left:2px solid var(--nc-primary);font-size:var(--nc-font-size-sm);color:var(--nc-text-muted);overflow:hidden;width:fit-content;max-width:100%}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-author{color:var(--nc-primary);font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-author:after{content:":"}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-load-more{display:block;width:100%;padding:var(--nc-space-md);margin-top:var(--nc-space-lg);background:transparent;border:none;color:var(--nc-text-muted);font-size:var(--nc-font-size-sm);cursor:pointer;transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-load-more:hover:not(:disabled){color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-load-more:disabled{cursor:wait}.nostr-comments:not([data-headless=true]) .nc-avatar-link{flex-shrink:0;text-decoration:none;margin-top:4px}.nostr-comments:not([data-headless=true]) .nc-avatar-link:hover{opacity:.8}.nostr-comments:not([data-headless=true]) .nc-avatar{flex-shrink:0;border-radius:var(--nc-avatar-radius, 50%);object-fit:cover;aspect-ratio:1 / 1}.nostr-comments:not([data-headless=true]) .nc-username{color:inherit;text-decoration:none}.nostr-comments:not([data-headless=true]) .nc-username:hover{text-decoration:underline}.nostr-comments:not([data-headless=true]) .nc-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-modal{background:var(--nc-bg);border-radius:var(--nc-radius-xl);width:100%;max-width:400px;max-height:90vh;overflow-y:auto;box-shadow:var(--nc-shadow-lg)}.nostr-comments:not([data-headless=true]) .nc-modal__header{display:flex;align-items:center;padding:var(--nc-space-lg);border-bottom:1px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-modal__header h3{margin:0;font-size:var(--nc-font-size-lg);font-weight:600;flex:1}.nostr-comments:not([data-headless=true]) .nc-modal__back{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs);border-radius:50%;display:flex;transition:background var(--nc-transition);margin-right:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-modal__back:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-modal__close{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs);border-radius:50%;display:flex;margin-left:auto;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-modal__close:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-modal__body{padding:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-modal__description{margin:0 0 var(--nc-space-lg);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-login-options{display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-login-option{display:flex;gap:var(--nc-space-md);padding:var(--nc-space-lg);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);text-align:left;cursor:pointer;transition:border-color var(--nc-transition),background var(--nc-transition);width:100%}.nostr-comments:not([data-headless=true]) .nc-login-option:hover:not(:disabled):not(.nc-login-option--disabled){border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-login-option--disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-login-option--bunker{cursor:default;flex-direction:column}.nostr-comments:not([data-headless=true]) .nc-login-option--bunker .nc-login-option__icon{display:none}.nostr-comments:not([data-headless=true]) .nc-login-option__icon{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--nc-primary-light);color:var(--nc-primary);border-radius:50%}.nostr-comments:not([data-headless=true]) .nc-login-option__icon--success{background:var(--nc-success-light);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-login-option__content h4{margin:0 0 var(--nc-space-xs);font-size:var(--nc-font-size-md);font-weight:500;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-login-option__content p{margin:0;font-size:var(--nc-font-size-sm);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-login-option__hint{margin-top:var(--nc-space-sm)!important;color:var(--nc-text-muted)!important;font-style:italic}.nostr-comments:not([data-headless=true]) .nc-login-option__error{margin-top:var(--nc-space-sm)!important;color:var(--nc-error)!important}.nostr-comments:not([data-headless=true]) .nc-login-option__warning{margin-top:var(--nc-space-sm)!important;padding:var(--nc-space-sm);background:var(--nc-error-light);border-radius:var(--nc-radius-sm);color:var(--nc-error)!important;font-size:var(--nc-font-size-sm)!important}.nostr-comments:not([data-headless=true]) .nc-bunker-form{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__input{flex:1;padding:var(--nc-space-sm) var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);background:var(--nc-bg);color:var(--nc-text);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit{padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);cursor:pointer;white-space:nowrap;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-temp-nsec{margin-top:var(--nc-space-md);padding:var(--nc-space-md);background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);overflow:hidden}.nostr-comments:not([data-headless=true]) .nc-temp-nsec__code{display:block;font-family:monospace;font-size:var(--nc-font-size-xs);color:var(--nc-text);word-break:break-all;-webkit-user-select:all;user-select:all}.nostr-comments:not([data-headless=true]) .nc-login-option__compatibility{margin-top:var(--nc-space-sm)!important;padding:var(--nc-space-sm);background:var(--nc-primary-light);border-radius:var(--nc-radius-sm);color:var(--nc-primary)!important;font-size:var(--nc-font-size-sm)!important}.nostr-comments:not([data-headless=true]) .nc-temp-actions{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--nc-space-xs);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);color:var(--nc-text);cursor:pointer;font-size:var(--nc-font-size-sm);transition:background var(--nc-transition),border-color var(--nc-transition),color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn--success{background:var(--nc-success-light);border-color:var(--nc-success);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn--success:hover{background:var(--nc-success-light)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue{width:100%;margin-top:var(--nc-space-md);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary);border:none;border-radius:var(--nc-radius-md);color:#fff;cursor:pointer;font-weight:500;transition:background var(--nc-transition),opacity var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue:hover{background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue--muted{opacity:.6}.nostr-comments:not([data-headless=true]) .nc-import-form{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-import-form__input{flex:1;padding:var(--nc-space-sm) var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);background:var(--nc-bg);color:var(--nc-text);font-family:monospace;font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-import-form__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit{padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-sm);cursor:pointer;white-space:nowrap;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-import-form__back{margin-top:var(--nc-space-md);padding:var(--nc-space-sm);background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;font-size:var(--nc-font-size-sm);transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-import-form__back:hover{color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-temp-view{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--nc-space-xl) 0}.nostr-comments:not([data-headless=true]) .nc-temp-view__icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--nc-primary-light);color:var(--nc-primary);border-radius:50%;margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__icon--success{width:36px;height:36px;background:var(--nc-success-light);color:var(--nc-success);margin-bottom:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__title{margin:0 0 var(--nc-space-sm);font-size:var(--nc-font-size-lg);font-weight:600;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-temp-view__desc{margin:0 0 var(--nc-space-xl);color:var(--nc-text-secondary);max-width:320px}.nostr-comments:not([data-headless=true]) .nc-temp-view--created{padding:var(--nc-space-lg) 0}.nostr-comments:not([data-headless=true]) .nc-temp-view__header{display:flex;align-items:center;gap:var(--nc-space-md);margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__header .nc-temp-view__title{margin:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-section{width:100%;margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-box{display:flex;align-items:center;gap:var(--nc-space-sm);padding:var(--nc-space-md);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-code{flex:1;font-family:monospace;font-size:var(--nc-font-size-xs);color:var(--nc-text);word-break:break-all;text-align:left;-webkit-user-select:all;user-select:all}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-actions{display:flex;gap:var(--nc-space-xs);flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:50%;color:var(--nc-text-secondary);cursor:pointer;transition:all var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn:hover{border-color:var(--nc-primary);color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn--success{background:var(--nc-success-light);border-color:var(--nc-success);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-hint{margin:var(--nc-space-sm) 0 0;font-size:var(--nc-font-size-sm);color:var(--nc-text-muted);text-align:left}.nostr-comments:not([data-headless=true]) .nc-temp-view__form{width:100%;max-width:320px;display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-temp-view__input{width:100%;padding:var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);background:var(--nc-bg);color:var(--nc-text);font-family:monospace;font-size:var(--nc-font-size-sm);text-align:center}.nostr-comments:not([data-headless=true]) .nc-temp-view__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-temp-view__input::placeholder{font-family:var(--nc-font-family)}.nostr-comments:not([data-headless=true]) .nc-temp-view__error{margin:0;color:var(--nc-error);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit{width:100%;padding:var(--nc-space-md);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);font-weight:500;font-size:var(--nc-font-size-md);cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-logged-in{display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-logged-in__user{display:flex;align-items:center;gap:var(--nc-space-md);padding:var(--nc-space-md);background:var(--nc-bg-secondary);border-radius:var(--nc-radius-md)}.nostr-comments:not([data-headless=true]) .nc-logged-in__info{display:flex;flex-direction:column;gap:var(--nc-space-xs)}.nostr-comments:not([data-headless=true]) .nc-logged-in__name{font-weight:500;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-logged-in__type{font-size:var(--nc-font-size-sm);color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-logged-in__temp-backup{display:flex;flex-direction:column;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-logged-in__logout{margin-top:var(--nc-space-sm);padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-error-light);border:1px solid var(--nc-error);border-radius:var(--nc-radius-md);color:var(--nc-error);cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-logged-in__logout:hover{background:var(--nc-error);color:#fff}',Zs="nostr-comments-styles";function gg(){if(document.getElementById(Zs)||document.querySelector('style[data-vite-dev-id*="base.css"]'))return;const e=document.createElement("style");e.id=Zs,e.textContent=pg,document.head.appendChild(e)}function yg({url:t,mention:e,relays:n,pageSize:r=50,enabledSigners:o=["nip07","bunker","temp"],pow:s=18,classNames:i={},onCommentPublished:a,onError:c}){const{t:l}=Qe(),{signerInfo:d}=Ct(),[u,m]=j.useState(!1),[f,p]=j.useState(null),{comments:h,commentCount:y,loading:v,loadingMore:E,error:S,hasMore:M,reload:O,loadMore:_,addEvent:N}=Uc({url:t,relays:n,mention:e,pageSize:r,pow:s}),L=$=>{N($),a==null||a($)},K=$=>{c==null||c($)},P=$=>{p($);const U=document.querySelector(".nc-editor");U&&U.scrollIntoView({behavior:"smooth",block:"center"})};return b.jsxs("div",{className:`nc-root ${i.root||""}`,children:[b.jsx("div",{className:"nc-header",children:b.jsxs("h3",{className:"nc-title",children:[l("comments"),y>0&&b.jsxs("span",{className:"nc-count",children:["(",y,")"]})]})}),b.jsx(Rc,{url:t,relays:n,mention:e,pow:s,parentEvent:f,onClearParent:()=>p(null),onPublished:L,onLoginRequired:()=>m(!0),onError:K,className:i.editor}),b.jsx($c,{comments:h,loading:v,loadingMore:E,hasMore:M,error:S,relays:n,onReply:P,onLoginRequired:()=>m(!0),onLoadMore:_,onRetry:O,currentPubkey:d==null?void 0:d.pubkey,className:i.list}),b.jsx(Pc,{isOpen:u,onClose:()=>m(!1),enabledSigners:o,className:i.loginModal})]})}function bg({locale:t,translations:e,theme:n="auto",headless:r=!1,...o}){return j.useEffect(()=>{r||gg()},[r]),b.jsx(Ec,{locale:t,translations:e,children:b.jsx("div",{className:"nostr-comments","data-theme":n,"data-headless":r?"true":void 0,children:b.jsx(yg,{...o})})})}const Do=7;function wg(t){const{eventIds:e,relays:n,onEvent:r,onEose:o}=t;return e.length===0?(o==null||o(),()=>{}):Po(n,{kinds:[Do],"#e":e},r,o)}async function vg(t){const{eventIds:e,relays:n}=t;return e.length===0?[]:To(n,{kinds:[Do],"#e":e})}function Oc(t,e="+"){return{kind:Do,content:e,tags:[["e",t.id],["p",t.pubkey]],created_at:Math.floor(Date.now()/1e3)}}async function xg(t,e,n,r="+"){const o=Oc(n,r),s=await t.signEvent(o);return await Uo(e,s),s}function Eg(t,e){return t.filter(n=>{const r=n.tags.find(o=>o[0]==="e");return r&&r[1]===e&&(n.content==="+"||n.content==="")}).length}function kg(t,e,n){return t.some(r=>{const o=r.tags.find(s=>s[0]==="e");return o&&o[1]===e&&r.pubkey===n&&(r.content==="+"||r.content==="")})}exports.Avatar=Dn;exports.BunkerSigner=Tn;exports.CommentEditor=Rc;exports.CommentItem=Mo;exports.CommentList=$c;exports.I18nProvider=Ec;exports.LoginModal=Pc;exports.Nip07Signer=en;exports.NostrComments=bg;exports.TempSigner=_t;exports.Username=jt;exports.buildCommentTree=bc;exports.buildReactionEvent=Oc;exports.buildWebComment=fc;exports.countLikes=Eg;exports.en=bt;exports.fetchComments=gc;exports.fetchReactions=vg;exports.generateAvatarSvg=Ic;exports.getAvatarDataUrl=Dr;exports.getColorFromPubkey=Lc;exports.getDefaultRelays=hc;exports.getParentId=Pt;exports.getRootUrl=Tp;exports.hasLiked=kg;exports.isLoggedIn=um;exports.isReply=$p;exports.isValidPubkey=$o;exports.publishComment=yc;exports.publishEvent=Uo;exports.publishReaction=xg;exports.queryEvents=To;exports.subscribeComments=pc;exports.subscribeEvents=Po;exports.subscribeReactions=wg;exports.useComments=Uc;exports.useI18n=Qe;exports.useProfile=Oo;exports.useSigner=Ct;exports.zhCN=on;
154
+ */const dg=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],hg=De("x",dg);function fg({onSuccess:t}){const{loginWithNip07:e,loading:n,error:r,isNip07Available:o}=Ct(),{t:s}=Qe(),i=async()=>{await e(),t()};return o?b.jsxs("button",{type:"button",onClick:i,disabled:n,className:"nc-login-option",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(Fs,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:s("extensionLogin")}),b.jsx("p",{children:s("extensionLoginDesc")}),r&&b.jsx("p",{className:"nc-login-option__error",children:r})]})]}):b.jsxs("div",{className:"nc-login-option nc-login-option--disabled",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(Fs,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:s("extensionLogin")}),b.jsx("p",{children:s("extensionLoginDesc")}),b.jsx("p",{className:"nc-login-option__hint",children:"No extension detected"})]})]})}function mg({onSuccess:t}){const{loginWithBunker:e,loading:n,error:r}=Ct(),{t:o}=Qe(),[s,i]=j.useState(""),a=async c=>{c.preventDefault(),s.trim()&&(await e(s.trim()),r||t())};return b.jsxs("div",{className:"nc-login-option nc-login-option--bunker",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(ig,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:o("bunkerLogin")}),b.jsx("p",{children:o("bunkerLoginDesc")}),b.jsxs("form",{onSubmit:a,className:"nc-bunker-form",children:[b.jsx("input",{type:"text",value:s,onInput:c=>i(c.target.value),placeholder:o("bunkerUrlPlaceholder"),className:"nc-bunker-form__input"}),b.jsx("button",{type:"submit",disabled:n||!s.trim(),className:"nc-bunker-form__submit",children:o(n?"connecting":"connect")})]}),r&&b.jsx("p",{className:"nc-login-option__error",children:r})]})]})}function Uc({isOpen:t,onClose:e,enabledSigners:n=["nip07","bunker","temp"],className:r=""}){const{isLoggedIn:o,signerInfo:s,logout:i,loginWithNsec:a,loading:c,getTempSigner:l}=Ct(),{t:d}=Qe(),[u,m]=j.useState(!1),[f,p]=j.useState("list"),[h,y]=j.useState(null),[v,E]=j.useState(!1),[S,O]=j.useState(!1),[M,_]=j.useState(""),[N,L]=j.useState(null);if(j.useEffect(()=>{t||(p("list"),y(null),E(!1),O(!1),_(""),L(null))},[t]),j.useEffect(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[t]),j.useEffect(()=>{const z=F=>{F.key==="Escape"&&(f!=="list"?T():e())};return t&&window.addEventListener("keydown",z),()=>window.removeEventListener("keydown",z)},[t,f,e]),!t)return null;const K=()=>{e()},T=()=>{p("list"),y(null),E(!1),O(!1),_(""),L(null)},P=async()=>{const z=l();z&&(await z.copyNsec(),m(!0),setTimeout(()=>m(!1),3e3))},D=()=>{const z=l();z&&z.downloadKeyFile()},U=async()=>{h&&(await h.copyNsec(),E(!0),setTimeout(()=>E(!1),3e3))},k=()=>{h&&(h.downloadKeyFile(),O(!0))},w=async()=>{if(h){const z=h.getNsec();await a(z),K()}},x=async z=>{if(z.preventDefault(),!!M.trim()){L(null);try{await a(M),K()}catch{L(d("importKeyError"))}}},A=(s==null?void 0:s.type)==="temp",I=A?l():null,C=(I==null?void 0:I.getNsec())||"",R=()=>d(o?"logout":f==="create"?"createAccount":f==="import"?"importKey":"login"),B=()=>b.jsx("button",{type:"button",onClick:T,className:"nc-modal__back","aria-label":"Back",children:b.jsx(ng,{size:20})}),$=()=>{if(!h)return null;const z=h.getNsec();return b.jsxs("div",{className:"nc-temp-view nc-temp-view--created",children:[b.jsxs("div",{className:"nc-temp-view__header",children:[b.jsx("div",{className:"nc-temp-view__icon nc-temp-view__icon--success",children:b.jsx(Qt,{size:24})}),b.jsx("h4",{className:"nc-temp-view__title",children:d("tempAccountCreated")})]}),b.jsxs("div",{className:"nc-temp-view__key-section",children:[b.jsxs("div",{className:"nc-temp-view__key-box",children:[b.jsx("code",{className:"nc-temp-view__key-code",children:z}),b.jsxs("div",{className:"nc-temp-view__key-actions",children:[b.jsx("button",{type:"button",onClick:U,className:`nc-temp-view__key-btn ${v?"nc-temp-view__key-btn--success":""}`,title:d("copyKey"),children:v?b.jsx(Qt,{size:16}):b.jsx(qs,{size:16})}),b.jsx("button",{type:"button",onClick:k,className:`nc-temp-view__key-btn ${S?"nc-temp-view__key-btn--success":""}`,title:d("downloadKey"),children:S?b.jsx(Qt,{size:16}):b.jsx(Vs,{size:16})})]})]}),b.jsx("p",{className:"nc-temp-view__key-hint",children:d("keyCompatibility")})]}),b.jsx("button",{type:"button",onClick:w,className:"nc-temp-view__submit",children:d("startCommenting")})]})},H=()=>b.jsxs("div",{className:"nc-temp-view",children:[b.jsx("div",{className:"nc-temp-view__icon",children:b.jsx(Ws,{size:32})}),b.jsx("h4",{className:"nc-temp-view__title",children:d("importKey")}),b.jsx("p",{className:"nc-temp-view__desc",children:d("importKeyDesc")}),b.jsxs("form",{onSubmit:x,className:"nc-temp-view__form",children:[b.jsx("input",{type:"password",value:M,onInput:z=>{_(z.target.value),L(null)},placeholder:d("importKeyPlaceholder"),className:"nc-temp-view__input",autoComplete:"off"}),N&&b.jsx("p",{className:"nc-temp-view__error",children:N}),b.jsx("button",{type:"submit",disabled:c||!M.trim(),className:"nc-temp-view__submit",children:d("login")})]})]});return b.jsx("div",{className:`nc-modal-overlay ${r}`,onClick:e,children:b.jsxs("div",{className:"nc-modal",onClick:z=>z.stopPropagation(),children:[b.jsxs("div",{className:"nc-modal__header",children:[f!=="list"&&!o&&B(),b.jsx("h3",{children:R()}),b.jsx("button",{type:"button",onClick:e,className:"nc-modal__close","aria-label":"Close",children:b.jsx(hg,{size:20})})]}),b.jsx("div",{className:"nc-modal__body",children:o&&s?b.jsxs("div",{className:"nc-logged-in",children:[b.jsxs("div",{className:"nc-logged-in__user",children:[b.jsx(Dn,{pubkey:s.pubkey,size:48}),b.jsxs("div",{className:"nc-logged-in__info",children:[b.jsx(jt,{pubkey:s.pubkey,className:"nc-logged-in__name"}),b.jsxs("span",{className:"nc-logged-in__type",children:[s.type==="nip07"&&d("extensionLogin"),s.type==="bunker"&&d("bunkerLogin"),s.type==="temp"&&d("tempAccount")]})]})]}),A&&b.jsxs("div",{className:"nc-logged-in__temp-backup",children:[b.jsx("div",{className:"nc-temp-nsec",children:b.jsx("code",{className:"nc-temp-nsec__code",children:C})}),b.jsx("p",{className:"nc-login-option__compatibility",children:d("keyCompatibility")}),b.jsxs("div",{className:"nc-temp-actions",children:[b.jsxs("button",{type:"button",onClick:P,className:`nc-temp-actions__btn ${u?"nc-temp-actions__btn--success":""}`,children:[u?b.jsx(Qt,{size:16}):b.jsx(qs,{size:16}),d(u?"keyCopied":"copyKey")]}),b.jsxs("button",{type:"button",onClick:D,className:"nc-temp-actions__btn",children:[b.jsx(Vs,{size:16}),d("downloadKey")]})]})]}),b.jsx("button",{type:"button",onClick:()=>{i(),e()},className:"nc-logged-in__logout",children:d("logout")})]}):f==="create"?$():f==="import"?H():b.jsxs(b.Fragment,{children:[b.jsx("p",{className:"nc-modal__description",children:d("loginDescription")}),b.jsxs("div",{className:"nc-login-options",children:[n.includes("nip07")&&b.jsx(fg,{onSuccess:K}),n.includes("bunker")&&b.jsx(mg,{onSuccess:K}),n.includes("temp")&&b.jsxs(b.Fragment,{children:[b.jsxs("button",{type:"button",onClick:()=>{const z=new _t;y(z),p("create")},className:"nc-login-option",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(lg,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:d("createAccount")}),b.jsx("p",{children:d("tempAccountDesc")})]})]}),b.jsxs("button",{type:"button",onClick:()=>p("import"),className:"nc-login-option",children:[b.jsx("div",{className:"nc-login-option__icon",children:b.jsx(Ws,{size:24})}),b.jsxs("div",{className:"nc-login-option__content",children:[b.jsx("h4",{children:d("importKey")}),b.jsx("p",{children:d("importKeyDesc")})]})]})]})]})]})})]})})}new TextDecoder("utf-8");new TextEncoder;function pg(t){let e=0;for(let n=0;n<64;n+=8){const r=parseInt(t.substring(n,n+8),16);if(r===0)e+=32;else{e+=Math.clz32(r);break}}return e}function Oc(t){const{url:e,relays:n,mention:r,pageSize:o=50,pow:s=18}=t,[i,a]=j.useState([]),[c,l]=j.useState(!0),[d,u]=j.useState(!1),[m,f]=j.useState(null),[p,h]=j.useState(),y=JSON.stringify(n),v=j.useCallback(async()=>{l(!0),f(null),a([]);const _=[];let N=!1;return gc({url:e,relays:await Pr(n,r),limit:o,onEvent:K=>{N?a(T=>T.some(P=>P.id===K.id)?T:[K,...T]):_.push(K)},onEose:()=>{N=!0;const T=_.sort((P,D)=>D.created_at-P.created_at).slice(0,o);a(T),h(T.length>=o?T[T.length-1].created_at-1:void 0),l(!1)}})},[e,o,y,r]),E=j.useCallback(async()=>{if(!(c||d||p===void 0)){u(!0);try{const _=await yc({url:e,relays:await Pr(n,r),limit:o,until:p});if(_.length===0){h(void 0);return}a(N=>{const L=_.filter(K=>!N.some(T=>T.id===K.id));return[...N,...L]}),h(_[_.length-1].created_at-1)}catch(_){f(_ instanceof Error?_.message:"Failed to load more")}finally{u(!1)}}},[e,o,c,d,p,y,r]);j.useEffect(()=>{const _=v();return()=>{_.then(N=>N())}},[v]);const S=j.useCallback(_=>{a(N=>N.some(L=>L.id===_.id)?N:[_,...N])},[]),{comments:O,commentCount:M}=j.useMemo(()=>{const _=s&&s>0?i.filter(T=>pg(T.id)>=s):i,N=wc(_);let L=0;const K=T=>{T.forEach(P=>{L++,K(P.children)})};return K(N),{comments:N,commentCount:L}},[i,s]);return{comments:O,commentCount:M,events:i,loading:c,loadingMore:d,error:m,hasMore:p!==void 0,reload:v,loadMore:E,addEvent:S}}const gg=':where(.nostr-comments){--nc-bg: #ffffff;--nc-text: #1f2937;--nc-primary: #319cfc;--nc-error: #dc2626;--nc-success: #16a34a;--nc-bg-secondary: color-mix(in srgb, var(--nc-text) 4%, var(--nc-bg));--nc-bg-hover: color-mix(in srgb, var(--nc-text) 6%, var(--nc-bg));--nc-border: color-mix(in srgb, var(--nc-text) 18%, var(--nc-bg));--nc-text-secondary: color-mix(in srgb, var(--nc-text) 60%, var(--nc-bg));--nc-text-muted: color-mix(in srgb, var(--nc-text) 40%, var(--nc-bg));--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, black);--nc-primary-light: color-mix(in srgb, var(--nc-primary) 8%, var(--nc-bg));--nc-error-light: color-mix(in srgb, var(--nc-error) 6%, var(--nc-bg));--nc-success-light: color-mix(in srgb, var(--nc-success) 12%, var(--nc-bg));--nc-space-xs: 3px;--nc-space-sm: 6px;--nc-space-md: 10px;--nc-space-lg: 14px;--nc-space-xl: 20px;--nc-radius-sm: 6px;--nc-radius-md: 8px;--nc-radius-lg: 10px;--nc-radius-xl: 16px;--nc-radius-full: 9999px;--nc-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;--nc-font-size-xs: 11px;--nc-font-size-sm: 12px;--nc-font-size-md: 13px;--nc-font-size-lg: 15px;--nc-avatar-radius: 50%;--nc-shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--nc-shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--nc-shadow-lg: 0 12px 32px rgba(0, 0, 0, .12);--nc-transition: .2s ease-out}:where(.nostr-comments[data-theme=dark]){--nc-bg: #0d1117;--nc-text: #e6edf3;--nc-primary: #58a6ff;--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, white);--nc-error: #f85149;--nc-success: #3fb950;--nc-border: #30363d;--nc-bg-secondary: #161b22;--nc-bg-hover: #21262d;--nc-primary-light: rgba(88, 166, 255, .15);--nc-error-light: rgba(248, 81, 73, .15);--nc-success-light: rgba(63, 185, 80, .15)}@media(prefers-color-scheme:dark){:where(.nostr-comments[data-theme=auto]){--nc-bg: #0d1117;--nc-text: #e6edf3;--nc-primary: #58a6ff;--nc-primary-hover: color-mix(in srgb, var(--nc-primary) 85%, white);--nc-error: #f85149;--nc-success: #3fb950;--nc-border: #30363d;--nc-bg-secondary: #161b22;--nc-bg-hover: #21262d;--nc-primary-light: rgba(88, 166, 255, .15);--nc-error-light: rgba(248, 81, 73, .15);--nc-success-light: rgba(63, 185, 80, .15)}}.nostr-comments:not([data-headless=true]){font-family:var(--nc-font-family);font-size:var(--nc-font-size-md);color:var(--nc-text);line-height:1.5}.nostr-comments:not([data-headless=true]) *{box-sizing:border-box}.nostr-comments:not([data-headless=true]) .nc-header{margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-title{font-size:var(--nc-font-size-lg);font-weight:600;margin:0;display:flex;align-items:center;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-count{font-weight:400;color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-editor{margin-bottom:var(--nc-space-xl)}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to{display:flex;align-items:center;gap:var(--nc-space-sm);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary-light);border-radius:var(--nc-radius-md);margin-bottom:var(--nc-space-md);font-size:var(--nc-font-size-sm);color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-label{font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-author{color:var(--nc-primary);font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-author:after{content:":"}.nostr-comments:not([data-headless=true]) .nc-editor__reply-to-content{color:var(--nc-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nostr-comments:not([data-headless=true]) .nc-editor__cancel-reply{margin-left:auto;background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs) var(--nc-space-sm);border-radius:var(--nc-radius-sm);transition:background var(--nc-transition);flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-editor__cancel-reply:hover{color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-editor__main{display:flex;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-editor__input-wrapper{flex:1}.nostr-comments:not([data-headless=true]) .nc-editor__textarea{width:100%;padding:var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);background:color-mix(in srgb,var(--nc-bg) 60%,transparent);color:var(--nc-text);font-family:inherit;font-size:var(--nc-font-size-md);resize:vertical;min-height:96px;transition:border-color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-editor__textarea:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-editor__textarea::placeholder{color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-editor__actions{display:flex;justify-content:flex-end;margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-editor__submit{padding:var(--nc-space-sm) var(--nc-space-xl);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);font-weight:500;cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-editor__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-editor__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-list{display:flex;flex-direction:column}.nostr-comments:not([data-headless=true]) .nc-loading,.nostr-comments:not([data-headless=true]) .nc-empty,.nostr-comments:not([data-headless=true]) .nc-error{text-align:center;padding:var(--nc-space-xl);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-loading{display:flex;align-items:center;justify-content:center;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-loading__spinner{width:16px;height:16px;border:1.5px solid var(--nc-border);border-top-color:var(--nc-primary);border-radius:50%;animation:nc-spin .8s linear infinite}@keyframes nc-spin{to{transform:rotate(360deg)}}.nostr-comments:not([data-headless=true]) .nc-error__retry{margin-top:var(--nc-space-md);padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);cursor:pointer;color:var(--nc-text);transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-error__retry:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-comment{padding-top:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-comment:first-child{padding-top:0}.nostr-comments:not([data-headless=true]) .nc-comment__main{display:flex;align-items:flex-start;gap:var(--nc-space-md);position:relative}.nostr-comments:not([data-headless=true]) .nc-comment__vline{position:absolute;left:20px;top:48px;bottom:0;border-left:1.5px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-comment__content{flex:1;min-width:0;padding-top:2px}.nostr-comments:not([data-headless=true]) .nc-comment__header{margin-bottom:var(--nc-space-xs);display:flex}.nostr-comments:not([data-headless=true]) .nc-comment__author{font-weight:500;color:var(--nc-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nostr-comments:not([data-headless=true]) .nc-comment__text{margin:0;color:var(--nc-text);white-space:pre-wrap;word-wrap:break-word}.nostr-comments:not([data-headless=true]) .nc-comment__actions{display:flex;align-items:center;gap:var(--nc-space-md);margin-top:var(--nc-space-xs);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-comment__time{color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-btn{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:0;font-size:var(--nc-font-size-sm);transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-btn:hover{color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-comment__child-wrapper{position:relative;padding-left:50px}.nostr-comments:not([data-headless=true]) .nc-comment__connector{position:absolute;left:20px;top:0;width:26px;height:32px;border-left:1.5px solid var(--nc-border);border-bottom:1.5px solid var(--nc-border);border-bottom-left-radius:var(--nc-radius-xl)}.nostr-comments:not([data-headless=true]) .nc-comment__connector-line{position:absolute;left:20px;top:0;bottom:0;border-left:1.5px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview{display:flex;align-items:center;gap:var(--nc-space-xs);padding:var(--nc-space-xs) var(--nc-space-sm);margin-bottom:var(--nc-space-xs);background:var(--nc-bg-secondary);border-radius:var(--nc-radius-sm);border-left:2px solid var(--nc-primary);font-size:var(--nc-font-size-sm);color:var(--nc-text-muted);overflow:hidden;width:fit-content;max-width:100%}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-author{color:var(--nc-primary);font-weight:500;flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-author:after{content:":"}.nostr-comments:not([data-headless=true]) .nc-comment__reply-preview-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-load-more{display:block;width:100%;padding:var(--nc-space-md);margin-top:var(--nc-space-lg);background:transparent;border:none;color:var(--nc-text-muted);font-size:var(--nc-font-size-sm);cursor:pointer;transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-load-more:hover:not(:disabled){color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-load-more:disabled{cursor:wait}.nostr-comments:not([data-headless=true]) .nc-avatar-link{flex-shrink:0;text-decoration:none;margin-top:4px}.nostr-comments:not([data-headless=true]) .nc-avatar-link:hover{opacity:.8}.nostr-comments:not([data-headless=true]) .nc-avatar{flex-shrink:0;border-radius:var(--nc-avatar-radius, 50%);object-fit:cover;aspect-ratio:1 / 1}.nostr-comments:not([data-headless=true]) .nc-username{color:inherit;text-decoration:none}.nostr-comments:not([data-headless=true]) .nc-username:hover{text-decoration:underline}.nostr-comments:not([data-headless=true]) .nc-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-modal{background:var(--nc-bg);border-radius:var(--nc-radius-xl);width:100%;max-width:400px;max-height:90vh;overflow-y:auto;box-shadow:var(--nc-shadow-lg)}.nostr-comments:not([data-headless=true]) .nc-modal__header{display:flex;align-items:center;padding:var(--nc-space-lg);border-bottom:1px solid var(--nc-border)}.nostr-comments:not([data-headless=true]) .nc-modal__header h3{margin:0;font-size:var(--nc-font-size-lg);font-weight:600;flex:1}.nostr-comments:not([data-headless=true]) .nc-modal__back{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs);border-radius:50%;display:flex;transition:background var(--nc-transition);margin-right:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-modal__back:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-modal__close{background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;padding:var(--nc-space-xs);border-radius:50%;display:flex;margin-left:auto;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-modal__close:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-modal__body{padding:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-modal__description{margin:0 0 var(--nc-space-lg);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-login-options{display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-login-option{display:flex;gap:var(--nc-space-md);padding:var(--nc-space-lg);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);text-align:left;cursor:pointer;transition:border-color var(--nc-transition),background var(--nc-transition);width:100%}.nostr-comments:not([data-headless=true]) .nc-login-option:hover:not(:disabled):not(.nc-login-option--disabled){border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-login-option--disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-login-option--bunker{cursor:default;flex-direction:column}.nostr-comments:not([data-headless=true]) .nc-login-option--bunker .nc-login-option__icon{display:none}.nostr-comments:not([data-headless=true]) .nc-login-option__icon{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--nc-primary-light);color:var(--nc-primary);border-radius:50%}.nostr-comments:not([data-headless=true]) .nc-login-option__icon--success{background:var(--nc-success-light);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-login-option__content h4{margin:0 0 var(--nc-space-xs);font-size:var(--nc-font-size-md);font-weight:500;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-login-option__content p{margin:0;font-size:var(--nc-font-size-sm);color:var(--nc-text-secondary)}.nostr-comments:not([data-headless=true]) .nc-login-option__hint{margin-top:var(--nc-space-sm)!important;color:var(--nc-text-muted)!important;font-style:italic}.nostr-comments:not([data-headless=true]) .nc-login-option__error{margin-top:var(--nc-space-sm)!important;color:var(--nc-error)!important}.nostr-comments:not([data-headless=true]) .nc-login-option__warning{margin-top:var(--nc-space-sm)!important;padding:var(--nc-space-sm);background:var(--nc-error-light);border-radius:var(--nc-radius-sm);color:var(--nc-error)!important;font-size:var(--nc-font-size-sm)!important}.nostr-comments:not([data-headless=true]) .nc-bunker-form{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__input{flex:1;padding:var(--nc-space-sm) var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);background:var(--nc-bg);color:var(--nc-text);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit{padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);cursor:pointer;white-space:nowrap;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-bunker-form__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-temp-nsec{margin-top:var(--nc-space-md);padding:var(--nc-space-md);background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);overflow:hidden}.nostr-comments:not([data-headless=true]) .nc-temp-nsec__code{display:block;font-family:monospace;font-size:var(--nc-font-size-xs);color:var(--nc-text);word-break:break-all;-webkit-user-select:all;user-select:all}.nostr-comments:not([data-headless=true]) .nc-login-option__compatibility{margin-top:var(--nc-space-sm)!important;padding:var(--nc-space-sm);background:var(--nc-primary-light);border-radius:var(--nc-radius-sm);color:var(--nc-primary)!important;font-size:var(--nc-font-size-sm)!important}.nostr-comments:not([data-headless=true]) .nc-temp-actions{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--nc-space-xs);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);color:var(--nc-text);cursor:pointer;font-size:var(--nc-font-size-sm);transition:background var(--nc-transition),border-color var(--nc-transition),color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn:hover{background:var(--nc-bg-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn--success{background:var(--nc-success-light);border-color:var(--nc-success);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__btn--success:hover{background:var(--nc-success-light)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue{width:100%;margin-top:var(--nc-space-md);padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary);border:none;border-radius:var(--nc-radius-md);color:#fff;cursor:pointer;font-weight:500;transition:background var(--nc-transition),opacity var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue:hover{background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-actions__continue--muted{opacity:.6}.nostr-comments:not([data-headless=true]) .nc-import-form{display:flex;gap:var(--nc-space-sm);margin-top:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-import-form__input{flex:1;padding:var(--nc-space-sm) var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-sm);background:var(--nc-bg);color:var(--nc-text);font-family:monospace;font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-import-form__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit{padding:var(--nc-space-sm) var(--nc-space-md);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-sm);cursor:pointer;white-space:nowrap;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-import-form__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-import-form__back{margin-top:var(--nc-space-md);padding:var(--nc-space-sm);background:none;border:none;color:var(--nc-text-secondary);cursor:pointer;font-size:var(--nc-font-size-sm);transition:color var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-import-form__back:hover{color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-temp-view{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--nc-space-xl) 0}.nostr-comments:not([data-headless=true]) .nc-temp-view__icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--nc-primary-light);color:var(--nc-primary);border-radius:50%;margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__icon--success{width:36px;height:36px;background:var(--nc-success-light);color:var(--nc-success);margin-bottom:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__title{margin:0 0 var(--nc-space-sm);font-size:var(--nc-font-size-lg);font-weight:600;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-temp-view__desc{margin:0 0 var(--nc-space-xl);color:var(--nc-text-secondary);max-width:320px}.nostr-comments:not([data-headless=true]) .nc-temp-view--created{padding:var(--nc-space-lg) 0}.nostr-comments:not([data-headless=true]) .nc-temp-view__header{display:flex;align-items:center;gap:var(--nc-space-md);margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__header .nc-temp-view__title{margin:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-section{width:100%;margin-bottom:var(--nc-space-lg)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-box{display:flex;align-items:center;gap:var(--nc-space-sm);padding:var(--nc-space-md);background:var(--nc-bg-secondary);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-code{flex:1;font-family:monospace;font-size:var(--nc-font-size-xs);color:var(--nc-text);word-break:break-all;text-align:left;-webkit-user-select:all;user-select:all}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-actions{display:flex;gap:var(--nc-space-xs);flex-shrink:0}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--nc-bg);border:1px solid var(--nc-border);border-radius:50%;color:var(--nc-text-secondary);cursor:pointer;transition:all var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn:hover{border-color:var(--nc-primary);color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-btn--success{background:var(--nc-success-light);border-color:var(--nc-success);color:var(--nc-success)}.nostr-comments:not([data-headless=true]) .nc-temp-view__key-hint{margin:var(--nc-space-sm) 0 0;font-size:var(--nc-font-size-sm);color:var(--nc-text-muted);text-align:left}.nostr-comments:not([data-headless=true]) .nc-temp-view__form{width:100%;max-width:320px;display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-temp-view__input{width:100%;padding:var(--nc-space-md);border:1px solid var(--nc-border);border-radius:var(--nc-radius-md);background:var(--nc-bg);color:var(--nc-text);font-family:monospace;font-size:var(--nc-font-size-sm);text-align:center}.nostr-comments:not([data-headless=true]) .nc-temp-view__input:focus{outline:none;border-color:var(--nc-primary)}.nostr-comments:not([data-headless=true]) .nc-temp-view__input::placeholder{font-family:var(--nc-font-family)}.nostr-comments:not([data-headless=true]) .nc-temp-view__error{margin:0;color:var(--nc-error);font-size:var(--nc-font-size-sm)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit{width:100%;padding:var(--nc-space-md);background:var(--nc-primary);color:#fff;border:none;border-radius:var(--nc-radius-md);font-weight:500;font-size:var(--nc-font-size-md);cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit:hover:not(:disabled){background:var(--nc-primary-hover)}.nostr-comments:not([data-headless=true]) .nc-temp-view__submit:disabled{opacity:.6;cursor:not-allowed}.nostr-comments:not([data-headless=true]) .nc-logged-in{display:flex;flex-direction:column;gap:var(--nc-space-md)}.nostr-comments:not([data-headless=true]) .nc-logged-in__user{display:flex;align-items:center;gap:var(--nc-space-md);padding:var(--nc-space-md);background:var(--nc-bg-secondary);border-radius:var(--nc-radius-md)}.nostr-comments:not([data-headless=true]) .nc-logged-in__info{display:flex;flex-direction:column;gap:var(--nc-space-xs)}.nostr-comments:not([data-headless=true]) .nc-logged-in__name{font-weight:500;color:var(--nc-text)}.nostr-comments:not([data-headless=true]) .nc-logged-in__type{font-size:var(--nc-font-size-sm);color:var(--nc-text-muted)}.nostr-comments:not([data-headless=true]) .nc-logged-in__temp-backup{display:flex;flex-direction:column;gap:var(--nc-space-sm)}.nostr-comments:not([data-headless=true]) .nc-logged-in__logout{margin-top:var(--nc-space-sm);padding:var(--nc-space-sm) var(--nc-space-lg);background:var(--nc-error-light);border:1px solid var(--nc-error);border-radius:var(--nc-radius-md);color:var(--nc-error);cursor:pointer;transition:background var(--nc-transition)}.nostr-comments:not([data-headless=true]) .nc-logged-in__logout:hover{background:var(--nc-error);color:#fff}',Zs="nostr-comments-styles";function yg(){if(document.getElementById(Zs)||document.querySelector('style[data-vite-dev-id*="base.css"]'))return;const e=document.createElement("style");e.id=Zs,e.textContent=gg,document.head.appendChild(e)}function bg({url:t,mention:e,relays:n,pageSize:r=50,signer:o,enabledSigners:s=["nip07","bunker","temp"],pow:i=18,classNames:a={},onCommentPublished:c,onError:l}){const{t:d}=Qe(),{signerInfo:u}=Ct(),[m,f]=j.useState(!1),[p,h]=j.useState(!1),[y,v]=j.useState(null),E=async()=>{o&&!p?await Oa(o)||(h(!0),f(!0)):f(!0)},{comments:S,commentCount:O,loading:M,loadingMore:_,error:N,hasMore:L,reload:K,loadMore:T,addEvent:P}=Oc({url:t,relays:n,mention:e,pageSize:r,pow:i}),D=w=>{P(w),c==null||c(w)},U=w=>{l==null||l(w)},k=w=>{v(w);const x=document.querySelector(".nc-editor");x&&x.scrollIntoView({behavior:"smooth",block:"center"})};return b.jsxs("div",{className:`nc-root ${a.root||""}`,children:[b.jsx("div",{className:"nc-header",children:b.jsxs("h3",{className:"nc-title",children:[d("comments"),O>0&&b.jsxs("span",{className:"nc-count",children:["(",O,")"]})]})}),b.jsx($c,{url:t,relays:n,mention:e,pow:i,parentEvent:y,onClearParent:()=>v(null),onPublished:D,onLoginRequired:E,onError:U,className:a.editor}),b.jsx(Tc,{comments:S,loading:M,loadingMore:_,hasMore:L,error:N,relays:n,onReply:k,onLoginRequired:E,onLoadMore:T,onRetry:K,currentPubkey:u==null?void 0:u.pubkey,className:a.list}),(!o||p)&&b.jsx(Uc,{isOpen:m,onClose:()=>f(!1),enabledSigners:s,className:a.loginModal})]})}function wg({locale:t,translations:e,theme:n="auto",headless:r=!1,...o}){return j.useEffect(()=>{r||yg()},[r]),b.jsx(kc,{locale:t,translations:e,children:b.jsx("div",{className:"nostr-comments","data-theme":n,"data-headless":r?"true":void 0,children:b.jsx(bg,{...o})})})}const Do=7;function vg(t){const{eventIds:e,relays:n,onEvent:r,onEose:o}=t;return e.length===0?(o==null||o(),()=>{}):Po(n,{kinds:[Do],"#e":e},r,o)}async function xg(t){const{eventIds:e,relays:n}=t;return e.length===0?[]:To(n,{kinds:[Do],"#e":e})}function Mc(t,e="+"){return{kind:Do,content:e,tags:[["e",t.id],["p",t.pubkey]],created_at:Math.floor(Date.now()/1e3)}}async function Eg(t,e,n,r="+"){const o=Mc(n,r),s=await t.signEvent(o);return await Uo(e,s),s}function kg(t,e){return t.filter(n=>{const r=n.tags.find(o=>o[0]==="e");return r&&r[1]===e&&(n.content==="+"||n.content==="")}).length}function _g(t,e,n){return t.some(r=>{const o=r.tags.find(s=>s[0]==="e");return o&&o[1]===e&&r.pubkey===n&&(r.content==="+"||r.content==="")})}exports.Avatar=Dn;exports.BunkerSigner=Tn;exports.CommentEditor=$c;exports.CommentItem=Mo;exports.CommentList=Tc;exports.I18nProvider=kc;exports.LoginModal=Uc;exports.Nip07Signer=en;exports.NostrComments=wg;exports.TempSigner=_t;exports.Username=jt;exports.buildCommentTree=wc;exports.buildReactionEvent=Mc;exports.buildWebComment=mc;exports.countLikes=kg;exports.en=bt;exports.fetchComments=yc;exports.fetchReactions=xg;exports.generateAvatarSvg=Rc;exports.getAvatarDataUrl=Dr;exports.getColorFromPubkey=Ic;exports.getDefaultRelays=fc;exports.getParentId=Pt;exports.getRootUrl=Pp;exports.hasLiked=_g;exports.isLoggedIn=dm;exports.isReply=Tp;exports.isValidPubkey=$o;exports.publishComment=bc;exports.publishEvent=Uo;exports.publishReaction=Eg;exports.queryEvents=To;exports.setExternalSigner=Oa;exports.subscribeComments=gc;exports.subscribeEvents=Po;exports.subscribeReactions=vg;exports.useComments=Oc;exports.useI18n=Qe;exports.useProfile=Oo;exports.useSigner=Ct;exports.zhCN=on;