javascript:(()=>{var d=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var p=d(()=>{var s=window.location.toString().match(/https:\/\/www\.dndbeyond\.com\/characters\/(\d+)/);if(!s)return;var r="https://character-service.dndbeyond.com/character/v5/character",i="https://character-service.dndbeyond.com/character/v5/game-data",l=s[1],h=(a,e)=>{let t=document.createElement("a");t.setAttribute("href","data:application/json;charset=utf-8,"+encodeURIComponent(e)),t.setAttribute("download",a),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)};(async()=>{let a=await fetch(`${r}/${l}`),{data:e}=await a.json();for(let{level:t,subclassDefinition:c}of e.classes){if(!c)continue;let o=await fetch(`${i}/always-prepared-spells?classLevel=${t}&classId=${c.id}&campaign=${e.campaign?e.campaign.id:void 0}`),{data:n}=await o.json();n.length!==0&&e.classSpells.push({entityTypeId:0,characterClassId:c.id,spells:n})}h(`${e.name}.json`,JSON.stringify(e))})().catch(console.error)});p();})();