diff --git a/.gitignore b/.gitignore index 57fdb95..760f22c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ /parcel-bundle-reports /isolate-*.log + +/diffcompare diff --git a/diffCompare.ts b/diffCompare.ts new file mode 100644 index 0000000..ff28c04 --- /dev/null +++ b/diffCompare.ts @@ -0,0 +1,33 @@ +import * as prettier from "prettier"; +import { readdir, readFile, writeFile } from "node:fs/promises"; + +// Assumes the old build is in docs/ and the new build is in diff/ +async function readdirRelativeNames(path: string) { + return (await readdir(path)).map(item => path + "/" + item); +} + +const extensionsToParsers: { extension: string, parser: prettier.BuiltInParserName }[] = [ + { extension: "html", parser: "html" }, + { extension: "js", parser: "typescript" }, + { extension: "css", parser: "css" }, +]; + +async function doFile(extension: string, parser: prettier.BuiltInParserName, names: string[], outName: string) { + names = names.filter(s => s.endsWith("." + extension)); + if (names.length !== 1) { + throw new Error(`Couldn't find extension ${extension}`); + } + const content = await readFile(names[0], "utf-8"); + const pretty = await prettier.format(content, { parser }); + await writeFile(`./diffcompare/${outName}.${extension}`, pretty, "utf-8"); +} + +(async () => { + const oldFiles = await readdirRelativeNames("./docs"); + const newFiles = await readdirRelativeNames("./build"); + + for (const { extension, parser } of extensionsToParsers) { + await doFile(extension, parser, oldFiles, "old"); + await doFile(extension, parser, newFiles, "new"); + } +})(); diff --git a/docs/index.18de7e71.js b/docs/index.18de7e71.js new file mode 100644 index 0000000..73ae6bf --- /dev/null +++ b/docs/index.18de7e71.js @@ -0,0 +1,10 @@ +let e;function a(e){return e&&e.__esModule?e.default:e}const l=/^on([a-z]+?)(capture)?$/i,t=/^children|value|checked$/;function n(e,a,n,r,o,i){let s;if(!(n===r||t.test(a))){if("ref"===a){n?.(null),B(i,()=>r?.(e));return}if(s=a.match(l)){let[,a,l]=s;a=a.toLowerCase();let t=!!l;n&&e.removeEventListener(a,n,t),r&&e.addEventListener(a,r,t);return}if(!o&&a in e){e[a]=r;return}null==r?e.removeAttribute(a):e.setAttribute(a,r)}}function r(e,a,l){if(a in l){let t=l[a];void 0!==t&&t!==e[a]&&(e[a]=t??"")}}function o(e){return"string"==typeof e?.type}function i(e){return"function"==typeof e?.type}const{isArray:s}=Array;function c(e){return s(e)}function m(e){return null==e||"object"!=typeof e}const u="http://www.w3.org/2000/svg",{min:g,max:d}=Math;class h{cleanup(){}remove(){let e=new Range;return e.setStartBefore(this.start()),e.setEndAfter(this.end()),e.extractContents()}unmount(){this.cleanup(),this.remove()}moveTo(e){let a=this.start().parentElement;a.insertBefore(this.remove(),e)}}class p extends h{vNode;static guard=i;parentLayer;layerRNode;depth;alive=!0;pending=!0;cleanupQueue;opc;context;start(){return this.layerRNode.start()}end(){return this.layerRNode.end()}constructor(e,a,l,t){let n;super(),this.vNode=e,this.parentLayer=t,this.depth=(t?.depth??-1)+1;let{type:r,props:o}=e,i=r(o,this);"function"==typeof i?(this.opc=i,n=i(o,this)):(this.opc=r,n=i),this.layerRNode=new f(void 0,a,l),this.finishLayerUpdate(n)}runLayerUpdate(e){this.alive&&(this.pending||e)&&this.finishLayerUpdate((0,this.opc)(this.vNode.props,this))}finishLayerUpdate(e){this.pending=!1,this.layerRNode=A(this.layerRNode,e,this)}scheduleLayerUpdate(){this.alive&&!this.pending&&(this.pending=!0,L(this))}cleanup(){this.alive=!1;let{cleanupQueue:e}=this;if(e)for(let a=e.length-1;a>=0;a--)(0,e[a])();this.layerRNode.cleanup()}update(e){if(this.vNode.type!==e.type)return!1;let a=this.vNode.props;return this.vNode=e,a!==e.props&&this.runLayerUpdate(!0),!0}}function y(e){return null==e||"boolean"==typeof e?"":String(e)}class f extends h{vNode;static guard=m;text;start(){return this.text}end(){return this.text}constructor(e,a,l){super(),this.vNode=e;let t=new Text(y(e));a.insertBefore(t,l),this.text=t}update(e){return this.text.nodeValue=y(e),this.vNode=e,!0}}const b=[class extends h{vNode;static guard=o;children;element;svg;start(){return this.element}end(){return this.element}constructor(e,a,l,t){super(),this.vNode=e;let{type:o}=e,i="svg"===o||a.namespaceURI===u&&"foreignObject"!==a.tagName,s=i?document.createElementNS(u,o):document.createElement(o);this.svg=i,this.element=s;let{props:c}=e;for(let e in c)n(s,e,void 0,c[e],this.svg,t.depth+1);let{children:m}=c;void 0!==m&&(this.children=k(m,s,null,t)),r(s,"value",c),r(s,"checked",c),a.insertBefore(s,l)}cleanup(){this.children?.cleanup(),this.vNode.props.ref?.(null)}update(e,a){if(this.vNode.type!==e.type)return!1;let l=this.vNode.props,t=e.props,{element:o,svg:i}=this,s=a.depth+1;for(let e in l)e in t||n(o,e,l[e],void 0,i,s);for(let e in t)n(o,e,l[e],t[e],i,s);this.vNode=e;let{children:c}=t;return this.children&&void 0!==c?this.children=A(this.children,c,a):this.children?(this.children.unmount(),this.children=void 0):void 0!==c&&(this.children=k(c,o,null,a)),r(o,"value",t),r(o,"checked",t),!0}},p,class extends h{vNode;static guard=c;children=[];start(){return this.children[0].start()}end(){return this.children.at(-1).end()}constructor(e,a,l,t){super(),this.vNode=e;let{children:n}=this,r=d(e.length,1);for(let o=0;oe.depth-a.depth,v=(e,a)=>a.depth-e.depth;let T=[];function S(){for(;T.length;){let a=T;for(let l of(T=[],a.sort(w),e=[],a))l.runLayerUpdate(!1);for(;e.length;){let a=e;for(let{cb:l}of(e=[],a.sort(v),a))l()}e=void 0}}const M=({rootNode:e})=>e();async function L(e){T.push(e),await 0,S()}function B(a,l){e?.push({depth:a,cb:l})??l()}function H(e,a){e.alive?(e.cleanupQueue??=[]).push(a):a()}function x(e){e.scheduleLayerUpdate()}const P={},G=Symbol("vdomk.Fragment");function C(e,a,...l){let t=a?.key,{length:n}=l;if(e===G){if(void 0===t)return n>1?l:n?l[0]:a?.children;let e=n?l:[a?.children];return e.key=t,e}return n&&(a={...a,children:n>1?l:l[0]}),{type:e,key:t,props:a??P}}var D,R={};R='';var E={};E='';var N={};N='';var I={};I='';var j={};j='';var W={};W='';var z={};z='';var F={};F='';var V={};V='';var O={};O='';var K={};K='';var Q={};Q='';var U={};U='';var Z={};Z='';const q=e=>URL.createObjectURL(new Blob([e],{type:"image/svg+xml"})),$=q(a(R)),J=q(a(E)),Y=q(a(N)),_=q(a(I)),X=q(a(j)),ee=q(a(W)),ea=q(a(z)),el=q(a(F)),et=q(a(V)),en=q(a(O)),er=q(a(K)),eo=q(a(Q)),ei=q(a(U)),es=q(a(Z));let ec=0;const em=[];em.push({fullName:"Essentials",cost:1,text:"Attack\nItem",limited:!1,sortOrder:ec++}),em.push({fullName:"Second Board",cost:30,text:"Second Board",limited:!1,sortOrder:ec++});{let e="",a=1,l=l=>{e=l,a=1},t=(l,...t)=>{em.push({fullName:e+" "+a,cost:l,text:t.join("\n"),limited:!1,grants:{group:e,what:t},sortOrder:ec++}),a++};l("White Magick"),t(15,"Cure","Blindna"),t(20,"Vox","Poisona"),t(25,"Protect","Shell"),t(30,"Cura","Raise"),t(40,"Dispel","Stona"),t(50,"Curaga","Regen"),t(60,"Cleanse","Esuna"),t(70,"Confuse","Faith"),t(80,"Bravery","Curaja"),t(90,"Dispelga","Arise"),t(100,"Holy","Esunaga"),t(110,"Protectga","Shellga"),t(155,"Renew"),l("Black Magick"),t(15,"Fire","Thunder"),t(20,"Blizzard","Blind"),t(25,"Aqua","Silence"),t(30,"Aero","Sleep"),t(40,"Fira","Poison"),t(50,"Thundara","Blizzara"),t(60,"Bio","Blindga"),t(70,"Aeroga","Silencega"),t(90,"Firaga","Thundaga"),t(90,"Blizzaga","Sleepga"),t(100,"Shock","Toxify"),t(120,"Scourge","Flare"),t(165,"Scathe"),l("Time Magick"),t(20,"Slow","Immobilize"),t(30,"Reflect","Disable"),t(40,"Vanish","Balance"),t(50,"Gravity","Haste"),t(60,"Stop","Bleed"),t(70,"Break","Doom"),t(80,"Float","Berserk"),t(90,"Vanishga","Warp"),t(100,"Reflectga","Slowga"),t(125,"Graviga","Hastega"),l("Green Magick"),t(40,"Decoy","Oil"),t(50,"Drain","Reverse"),t(90,"Bubble","Syphon"),l("Arcane Magick"),t(40,"Dark","Darkra"),t(50,"Death","Darkga"),t(110,"Ardor")}{let e=(e,a,l)=>{em.push({fullName:a,cost:e,text:l,limited:!1,grants:{group:"Technicks",what:[a]},sortOrder:ec++})};e(35,"1000 Needles","Deal 1,000 damage to one foe."),e(40,"Achilles","Render one foe vulnerable to an additional element."),e(30,"Bonecrusher","Consume HP to reduce the HP of one foe to 0."),e(50,"Wither","Lower one foe's strength."),e(50,"Expose","Lower one foe's defense."),e(50,"Shear","Lower one foe's magick resist."),e(50,"Addle","Lower one foe's magick power."),e(30,"Charge","Restore user's MP. If the technick fails, MP is reduced to 0."),e(30,"Charm","Cause one foe to confuse friend with foe."),e(35,"Souleater","Consume HP to deal damage to one foe."),e(20,"First Aid","Restore HP to one HP Critical ally."),e(30,"Gil Toss","Throw gil, damaging all foes in range."),e(50,"Horology","Deal damage based on a factor of time to all foes in range."),e(25,"Libra","Reveal more detailed target information."),e(30,"Infuse","Fully consume user's MP, changing one ally's HP to 10 times that amount."),e(40,"Numerology","Deal damage that increases with successive hits."),e(30,"Poach","Capture HP Critical foes to obtain loot."),e(70,"Shades of Black","Cast a random black magick on one foe."),e(40,"Revive","Fully consume user's HP, reviving and fully restoring HP of one KO'd ally."),e(40,"Sight Unseeing","Unleash an attack only available when blind."),e(40,"Stamp","Inflict one foe with any status effects on the user."),e(20,"Steal","Steal from one foe."),e(50,"Traveler","Deal damage based on total steps taken to all foes in range."),e(80,"Telekinesis","Deal ranged damage with melee weapons.")}{let e=(e,a,...l)=>{let t=1;for(let n of l)em.push({fullName:e+" "+t,cost:n,text:a,limited:!1,grants:{group:e,what:1},sortOrder:ec++}),t++};e("Battle Lore","Increase physical attack damage.",30,30,30,30,50,50,50,50,70,70,70,70,100,100,100,100),e("Magick Lore","Increase Magick potency.",30,30,30,30,50,50,50,50,70,70,70,70,100,100,100,100),e("Gambit Slot","Adds an additional gambit slot",15,20,25,30,35,40,45,50,70,100)}{let e=(e,a)=>{em.push({fullName:`+${e} HP`,cost:a,text:`Increase max HP by ${e}.`,limited:!1,grants:{group:"HP",what:e},sortOrder:ec++})};e(30,20),e(70,30),e(110,40),e(150,50),e(190,60),e(230,70),e(270,80),e(310,90),e(350,100),e(390,115),e(435,130),e(500,220)}{let e=1;for(let a of[50,75,100,125])em.push({fullName:"Quickening "+e,cost:a,text:"Unleash a devastating attack.",limited:!0,grants:{group:"Quickening",what:1},image:es,sortOrder:ec++}),e++}{let e=(e,a,l,t)=>{em.push({fullName:a,cost:e,text:`Summon ${a} ${l}`,limited:!0,grants:{group:"Esper",what:[a]},image:t,sortOrder:ec++})};e(20,"Belias","the Gigas",$),e(30,"Mateus","the Corrupt",eo),e(35,"Adrammelech","the Wroth",en),e(30,"Zalera","the Death Seraph",Y),e(50,"C\xfachulainn","the Impure",el),e(65,"Zeromus","The Condemner",_),e(65,"Exodus","the Judge-Sal",ea),e(50,"Shemhazai","the Whisperer",et),e(50,"Hashmal","Bringer of Order",X),e(100,"Famfrit","the Darkening Cloud",er),e(100,"Chaos","Walker of the Wheel",J),e(115,"Ultima","High Seraph",ee),e(200,"Zodiark","Keeper of Precepts",ei)}{let e=(e,a,l)=>{em.push({fullName:a,cost:e,text:l,limited:!1,grants:{group:"Passive",what:[a]},sortOrder:ec++})};e(70,"Focus","Increases strength when HP is full."),e(70,"Serenity","Increases magick when HP is full."),e(65,"Adrenaline","Increases strength when HP Critical."),e(65,"Spellbreaker","Increases magick power when HP Critical."),e(70,"Last Stand","Increases defense when HP Critical."),e(90,"Brawler","Increases attack power when fighting empty-handed."),e(25,"Shield Block 1","Increases chance to block with a shield."),e(45,"Shield Block 2","Increases chance to block with a shield."),e(75,"Shield Block 3","Increases chance to block with a shield."),e(30,"Inquisitor","Gain MP after dealing damage."),e(30,"Warmage","Gain MP after dealing magick damage."),e(30,"Headsman","Gain MP after defeating a foe."),e(30,"Martyr","Gain MP after taking damage."),e(30,"Swiftness 1","Reduces action time by 10%."),e(50,"Swiftness 2","Reduces action time by 10%."),e(80,"Swiftness 3","Reduces action time by 10%."),e(30,"Channeling 1","Reduces MP cost of Spells"),e(50,"Channeling 2","Reduces MP cost of Spells"),e(80,"Channeling 3","Reduces MP cost of Spells"),e(30,"Spellbound","Increases duration of status effects."),e(20,"Potion Lore 1","Potions restore more HP."),e(35,"Potion Lore 2","Potions restore more HP."),e(70,"Potion Lore 3","Potions restore more HP."),e(20,"Ether Lore 1","Ethers restore more MP."),e(35,"Ether Lore 2","Ethers restore more MP."),e(70,"Ether Lore 3","Ethers restore more MP."),e(20,"Remedy Lore 1","Sleep, Sap, Immobilize, and Disable"),e(30,"Remedy Lore 2","Petrify, Confuse, and Oil"),e(70,"Remedy Lore 3","Stop, Doom, and Disease."),e(30,"Phoenix Lore 1","Phoenix Down restores more HP."),e(50,"Phoenix Lore 2","Phoenix Down restores more HP."),e(90,"Phoenix Lore 3","Phoenix Down restores more HP.")}{let e=(e,a,l,...t)=>{em.push({fullName:l,cost:e,text:t.join("\n"),limited:!1,grants:{group:a,what:t},sortOrder:ec++})};e(5,"Accessories","Accessories 1","Orrachea Armlet"),e(20,"Accessories","Accessories 2","Bangle","Firefly"),e(25,"Accessories","Accessories 3","Diamond Armlet","Argyle Armlet"),e(35,"Accessories","Accessories 4","Battle Harness","Steel Gorget"),e(35,"Accessories","Accessories 5","Tourmaline Ring","Embroidered Tippet"),e(35,"Accessories","Accessories 6","Golden Amulet","Leather Gorget"),e(40,"Accessories","Accessories 7","Rose Corsage","Turtleshell Choker"),e(45,"Accessories","Accessories 8","Thief's Cuffs","Gauntlets"),e(30,"Accessories","Accessories 9","Amber Armlet","Black Belt"),e(40,"Accessories","Accessories 10","Jade Collar","Nishijin Belt"),e(45,"Accessories","Accessories 11","Pheasant Netsuke","Blazer Gloves"),e(60,"Accessories","Accessories 12","Gillie Boots","Steel Poleyns"),e(60,"Accessories","Accessories 13","Berserker Bracers","Magick Gloves"),e(70,"Accessories","Accessories 14","Sage's Ring","Agate Ring"),e(70,"Accessories","Accessories 15","Ruby Ring","Bowline Sash"),e(70,"Accessories","Accessories 16","Cameo Belt","Cat-ear Hood"),e(80,"Accessories","Accessories 17","Bubble Belt","Fuzzy Miter"),e(80,"Accessories","Accessories 18","Sash","Power Armlet"),e(100,"Accessories","Accessories 19","Indigo Pendant","Winged Boots"),e(115,"Accessories","Accessories 20","Opal Ring","Hermes Sandals"),e(130,"Accessories","Accessories 21","Quasimodo Boots","Nihopalaoa"),e(160,"Accessories","Accessories 22","Germinas Boots","Ring of Renewal"),e(215,"Accessories","Ribbon","Ribbon"),e(15,"Shields","Shields 1","Leather Shield","Buckler"),e(20,"Shields","Shields 2","Bronze Shield","Round Shield"),e(25,"Shields","Shields 3","Golden Shield","Ice Shield","Flame Shield"),e(30,"Shields","Shields 4","Diamond Shield","Platinum Shield","Dragon Shield"),e(35,"Shields","Shields 5","Crystal Shield","Kaiser Shield"),e(40,"Shields","Shields 6","Aegis Shield","Demon Shield"),e(65,"Shields","Shields 7","Venetian Shield"),e(90,"Shields","Shell Shield","Shell Shield"),e(100,"Shields","Ensanguined Shield","Ensanguined Shield"),e(235,"Shields","Zodiac Escutcheon","Zodiac Escutcheon"),e(10,"Light Armor","Light Armor 1","Leather Cap","Leather Clothing"),e(15,"Light Armor","Light Armor 2","Headgear","Headguard","Chromed Leathers","Leather Breastplate"),e(20,"Light Armor","Light Armor 3","Leather Headgear","Horned Hat","Bronze Chestplate","Ringmail"),e(25,"Light Armor","Light Armor 4","Balaclava","Soldier's Cap","Windbreaker","Heavy Coat"),e(30,"Light Armor","Light Armor 5","Green Beret","Red Cap","Survival Vest","Brigandine"),e(40,"Light Armor","Light Armor 6","Headband","Pirate Hat","Jujitsu Gi","Viking Coat"),e(50,"Light Armor","Light Armor 7","Goggle Mask","Adamant Hat","Metal Jerkin","Adamant Vest"),e(60,"Light Armor","Light Armor 8","Officer's Hat","Chakra Band","Barrel Coat","Power Vest"),e(70,"Light Armor","Light Armor 9","Thief's Cap","Gigas Hat","Ninja Gear","Gigas Chestplate"),e(75,"Light Armor","Light Armor 10","Chaperon","Minerva Bustier"),e(80,"Light Armor","Light Armor 11","Crown of Laurels","Rubber Suit"),e(90,"Light Armor","Light Armor 12","Renewing Morion","Mirage Vest"),e(110,"Light Armor","Light Armor 13","Dueling Mask","Brave Suit"),e(25,"Heavy Armor","Heavy Armor 1","Leather Helm","Bronze Helm","Leather Armor","Bronze Armor"),e(30,"Heavy Armor","Heavy Armor 2","Sallet","Iron Helm","Scale Armor","Iron Armor"),e(35,"Heavy Armor","Heavy Armor 3","Barbut","Winged Helm","Linen Cuirass","Chainmail"),e(40,"Heavy Armor","Heavy Armor 4","Golden Helm","Burgonet","Golden Armor","Shielded Armor"),e(50,"Heavy Armor","Heavy Armor 5","Close Helmet","Bone Helm","Demon Mail","Bone Mail"),e(55,"Heavy Armor","Heavy Armor 6","Diamond Helm","Diamond Armor"),e(60,"Heavy Armor","Heavy Armor 7","Steel Mask","Mirror Mail"),e(65,"Heavy Armor","Heavy Armor 8","Platinum Helm","Platinum Armor"),e(70,"Heavy Armor","Heavy Armor 9","Giant's Helmet","Carabineer Mail"),e(80,"Heavy Armor","Heavy Armor 10","Dragon Helm","Dragon Mail"),e(90,"Heavy Armor","Heavy Armor 11","Magepower Shishak","Maximillian"),e(110,"Heavy Armor","Heavy Armor 12","Grand Helm","Grand Armor"),e(10,"Mystic Armor","Mystic Armor 1","Cotton Cap","Magick Curch","Cotton Shirt","Light Woven Shirt"),e(15,"Mystic Armor","Mystic Armor 2","Pointy Hat","Topkapi Hat","Silken Shirt","Kilimweave Shirt"),e(20,"Mystic Armor","Mystic Armor 3","Calot Hat","Wizard's Hat","Shepherd's Bolero","Wizard's Robes"),e(25,"Mystic Armor","Mystic Armor 4","Lambent Hat","Feathered Cap","Chanter's Djellaba","Traveler's Vestment"),e(30,"Mystic Armor","Mystic Armor 5","Mage's Hat","Lamia's Tiara","Mage's Habit","Enchanter's Habit"),e(40,"Mystic Armor","Mystic Armor 6","Sorcerer's Hat","Black Cowl","Sorcerer's Habit","Black Garb"),e(50,"Mystic Armor","Mystic Armor 7","Astrakhan Hat","Gaia Hat","Carmagnole","Maduin Gear"),e(60,"Mystic Armor","Mystic Armor 8","Hypnocrown","Gold Hairpin","Jade Gown","Gaia Gear"),e(70,"Mystic Armor","Mystic Armor 9","Celebrant's Miter","Cleric's Robes"),e(75,"Mystic Armor","Mystic Armor 10","Black Mask","Black Robes"),e(80,"Mystic Armor","Mystic Armor 11","White Mask","White Robes"),e(90,"Mystic Armor","Mystic Armor 12","Golden Skullcap","Glimmering Robes"),e(110,"Mystic Armor","Mystic Armor 13","Circlet","Lordly Robes"),e(190,"Genji Armor","Genji Armor","Genji Shield","Genji Helm","Genji Armor","Genji Gloves"),e(15,"Swords","Swords 1","Broadsword"),e(25,"Swords","Swords 2","Longsword","Iron Sword"),e(35,"Swords","Swords 3","Zwill Blade","Ancient Sword"),e(50,"Swords","Swords 4","Lohengrin","Flametongue"),e(55,"Swords","Swords 5","Demonsbane","Icebrand"),e(60,"Swords","Swords 6","Platinum Sword","Bastard Sword"),e(70,"Swords","Swords 7","Diamond Sword","Runeblade"),e(80,"Swords","Swords 8","Deathbringer","Stoneblade"),e(90,"Swords","Swords 9","Durandal","Simha"),e(50,"Swords","Blood Sword","Blood Sword"),e(80,"Swords","Karkata","Karkata"),e(20,"Bows","Bows 1","Shortbow"),e(30,"Bows","Bows 2","Silver Bow","Aevis Killer"),e(35,"Bows","Bows 3","Longbow","Killer Bow"),e(45,"Bows","Bows 4","Elfin Bow","Loxley Bow"),e(60,"Bows","Bows 5","Giant Stonebow","Burning Bow"),e(70,"Bows","Bows 6","Traitor's Bow","Yoichi Bow"),e(90,"Bows","Bows 7","Perseus Bow","Artemis Bow"),e(130,"Bows","Sagittarius","Sagittarius"),e(200,"Bows","Dhanusha","Dhanusha"),e(20,"Spears","Spears 1","Javelin","Spear"),e(25,"Spears","Spears 2","Partisan","Heavy Lance"),e(35,"Spears","Spears 3","Storm Spear","Obelisk"),e(60,"Spears","Spears 4","Halberd","Trident"),e(40,"Spears","Spears 5","Holy Lance","Gungnir"),e(70,"Spears","Dragon Whisker","Dragon Whisker"),e(100,"Spears","Vrsabha","Vrsabha"),e(240,"Spears","Zodiac Spear","Zodiac Spear"),e(20,"Axes & Hammers","Axes & Hammers 1","Handaxe"),e(25,"Axes & Hammers","Axes & Hammers 2","Iron Hammer","Broadaxe"),e(35,"Axes & Hammers","Axes & Hammers 3","War Hammer","Slasher"),e(50,"Axes & Hammers","Axes & Hammers 4","Sledgehammer","Hammerhead"),e(60,"Axes & Hammers","Axes & Hammers 5","Francisca","Morning Star"),e(65,"Axes & Hammers","Axes & Hammers 6","Greataxe","Golden Axe"),e(85,"Axes & Hammers","Axes & Hammers 7","Scorpion Tail"),e(175,"Axes & Hammers","Vrscika","Vrscika"),e(35,"Katana","Katana 1","Kotetsu","Osafune"),e(50,"Katana","Katana 2","Kogarasumaru","Magoroku"),e(70,"Katana","Katana 3","Murasame","Kiku-ichimonji"),e(90,"Katana","Katana 4","Yakei","Ame-no-Murakumo"),e(100,"Katana","Katana 5","Muramasa"),e(130,"Katana","Masamune","Masamune"),e(200,"Katana","Kumbha","Kumbha"),e(50,"Greatswords","Greatswords 1","Claymore"),e(70,"Greatswords","Greatswords 2","Defender","Save the Queen"),e(80,"Greatswords","Greatswords 3","Ultima Blade"),e(100,"Greatswords","Greatswords 4","Ragnarok"),e(135,"Greatswords","Excalibur","Excalibur"),e(150,"Greatswords","Excalipur","Excalipur"),e(225,"Greatswords","Tournesol","Tournesol"),e(20,"Rods","Rods 1","Rod","Serpent Rod"),e(30,"Rods","Rods 2","Healing Rod","Gaia Rod"),e(40,"Rods","Rods 3","Power Rod","Empyrean Rod"),e(50,"Rods","Rods 4","Holy Rod"),e(130,"Rods","Rod of Faith","Rod of Faith"),e(15,"Staves","Staves 1","Oak Staff"),e(25,"Staves","Staves 2","Cherry Staff","Wizard's Staff"),e(30,"Staves","Staves 3","Flame Staff","Storm Staff"),e(40,"Staves","Staves 4","Glacial Staff","Golden Staff"),e(65,"Staves","Staves 5","Judicer's Staff","Cloud Staff"),e(115,"Staves","Staff of the Magi","Staff of the Magi"),e(30,"Maces","Maces 1","Mace","Bronze Mace"),e(40,"Maces","Maces 2","Bhuj","Miter"),e(60,"Maces","Maces 3","Thorned Mace","Chaos Mace"),e(65,"Maces","Maces 4","Doom Mace","Zeus Mace"),e(50,"Maces","Maces 5","Grand Mace","Bone of Byblos"),e(40,"Measures","Measures 1","Gilt Measure"),e(50,"Measures","Measures 2","Arc Scale","Multiscale"),e(70,"Measures","Measures 3","Cross Scale","Caliper"),e(100,"Measures","Measures 4","Euclid's Sextant"),e(15,"Daggers","Daggers 1","Dagger"),e(20,"Daggers","Daggers 2","Mage Masher","Assassin's Dagger"),e(35,"Daggers","Daggers 3","Chopper","Main Gauche"),e(45,"Daggers","Daggers 4","Gladius","Avenger"),e(60,"Daggers","Daggers 5","Orichalcum Dirk","Platinum Dagger"),e(80,"Daggers","Daggers 6","Zwill Crossblade"),e(220,"Daggers","Shikari Nagasa & Mina","Shikari Nagasa","Mina"),e(30,"Guns","Guns 1","Altair"),e(50,"Guns","Guns 2","Capella","Vega"),e(60,"Guns","Guns 3","Sirius","Betelgeuse"),e(70,"Guns","Guns 4","Ras Algethi","Aldebaran"),e(90,"Guns","Guns 5","Spica","Antares"),e(100,"Guns","Guns 6","Arcturus","Fomalhaut"),e(190,"Guns","Mithuna","Mithuna"),e(20,"Poles","Poles 1","Oaken Pole"),e(30,"Poles","Poles 2","Battle Bamboo","Cypress Pole"),e(35,"Poles","Poles 3","Musk Stick","Iron Pole"),e(40,"Poles","Poles 4","Six-fluted Pole","Gokuu Pole"),e(50,"Poles","Poles 5","Zephyr Pole","Ivory Pole"),e(60,"Poles","Poles 6","Sweep","Eight-fluted Pole"),e(90,"Poles","Whale Whisker","Whale Whisker"),e(180,"Poles","Kanya","Kanya"),e(25,"Crossbows","Crossbows 1","Bowgun","Crossbow"),e(40,"Crossbows","Crossbows 2","Paramina Crossbow","Recurve Crossbow"),e(60,"Crossbows","Crossbows 3","Hunting Crossbow","Penetrator Crossbow"),e(115,"Crossbows","Crossbows 4","Gastrophetes","Tula"),e(35,"Hand-bombs","Hand-bombs 1","Hornito"),e(55,"Hand-bombs","Hand-bombs 2","Fumarole","Tumulus"),e(75,"Hand-bombs","Hand-bombs 3","Caldera","Volcano"),e(105,"Hand-bombs","Hand-bombs 4","Makara"),e(100,"Ninja Swords","Ninja Swords 1","Ashura","Sakura-saezuri","Kagenui","Orochi"),e(120,"Ninja Swords","Ninja Swords 2","Iga Blade"),e(120,"Ninja Swords","Ninja Swords 3","Koga Blade"),e(180,"Ninja Swords","Yagyu Darkblade & Mesa","Yagyu Darkblade","Mesa")}const eu=new Map;for(const e of em){if(eu.has(e.fullName))throw Error("Duplicate license name "+e.fullName);eu.set(e.fullName,e)}function eg(e){let a=eu.get(e);if(!a)throw Error("Internal error: Unknown license "+e);return a}const ed=[];{let e;for(let a of em)a.grants&&(e&&e.name===a.grants.group||(e={name:a.grants.group,contents:[]},ed.push(e)),e.contents.push(a))}const eh=ed.find(e=>"Quickening"===e.name).contents,ep=ed.find(e=>"Esper"===e.name).contents,ey=[...ep,...eh],ef=[{name:"Vaan",innateLicenses:["Essentials","Steal","Daggers 1","Light Armor 1"].map(eg)},{name:"Balthier",innateLicenses:["Essentials","Steal","First Aid","Guns 1","Light Armor 2"].map(eg)},{name:"Fran",innateLicenses:["Essentials","White Magick 1","Black Magick 1","Steal","Bows 1","Light Armor 2"].map(eg)},{name:"Basch",innateLicenses:["Essentials","Libra","Swords 2","Shields 1","Heavy Armor 1"].map(eg)},{name:"Ashe",innateLicenses:["Essentials","White Magick 1","Swords 2","Shields 1","Heavy Armor 1","Accessories 2"].map(eg)},{name:"Penelo",innateLicenses:["Essentials","White Magick 1","First Aid","Daggers 1","Mystic Armor 1"].map(eg)}],eb=[{name:"White Mage",image:$,imageAlt:"Aries",text:"Mages who wield healing and support magicks.",rawBoardData:[[null,null,null,null,null,"Libra",null,null,null,null,null,"+230 HP"],[null,null,null,null,null,"C\xfachulainn",null,null,null,null,null,"Shemhazai",null,"Quickening 4"],[null,null,"Accessories 22","Accessories 20","Accessories 18","Accessories 16","Accessories 14",null,"+190 HP",null,"Accessories 13","Accessories 15","Accessories 17","Battle Lore 1","Ribbon"],["+270 HP","Zeromus","Mystic Armor 13","Magick Lore 13","Stamp","Inquisitor","Accessories 12",null,"Quickening 2",null,"Accessories 11","Spellbreaker","Accessories 19","Accessories 21","Rod of Faith","Chaos","+310 HP"],[null,null,"Mystic Armor 12","Serenity","Ether Lore 2","Magick Lore 5","Accessories 10","Accessories 8","Accessories 6","Accessories 7","Accessories 9","Magick Lore 6","Headsman","Magick Lore 9","+110 HP",null,"Greatswords 2"],[null,null,"Mystic Armor 11","Mystic Armor 10","Mystic Armor 9","Mystic Armor 8","Mystic Armor 7","Mystic Armor 6","Accessories 5","Charge","Rods 3","Channeling 2","Rods 4","Channeling 3","Battle Lore 2"],[null,null,"Magick Lore 14","Swiftness 2","Magick Lore 10",null,null,"Mystic Armor 5","Accessories 4","Ether Lore 1","Second Board",null,"Battle Lore 4","Magick Lore 11","Magick Lore 15","Ultima"],[null,"Zodiark","White Magick 13","Magick Lore 12","+70 HP",null,"Mateus","Mystic Armor 4","Accessories 3","Rods 2","Belias",null,"Warmage","Swiftness 1","Achilles"],[null,"Greatswords 1",null,null,"Famfrit",null,null,"Mystic Armor 3","Accessories 2","Battle Lore 3",null,null,"Exodus"],[null,null,null,"Numerology","Daggers 5",null,null,"Mystic Armor 2","Accessories 1","Rods 1",null,null,"Battle Lore 6"],[null,null,null,null,null,null,null,"Mystic Armor 1","Essentials","Gambit Slot 1"],[null,null,null,null,null,null,null,"Gambit Slot 2","White Magick 1","Magick Lore 1"],[null,null,null,null,"+150 HP","Quickening 1","Gambit Slot 4","Martyr","White Magick 2","Gambit Slot 3","Magick Lore 2"],[null,null,null,null,null,null,"Magick Lore 3","+30 HP","White Magick 3","Channeling 1","Gambit Slot 5"],[null,null,null,"Battle Lore 7","Adrammelech","Magick Lore 7","Gambit Slot 7","Magick Lore 4","White Magick 4","Magick Lore 8","Green Magick 3","Gambit Slot 6"],[null,null,null,"Souleater",null,"Gambit Slot 10","Gambit Slot 9","Green Magick 1","White Magick 5","Green Magick 2","Gambit Slot 8","Spellbound","Zalera"],[null,null,null,null,null,"White Magick 12","White Magick 10","White Magick 8","White Magick 6","White Magick 7","White Magick 9","White Magick 11"],[null,null,null,null,null,null,null,"Hashmal",null,null,"Quickening 3"],[null,null,null,null,null,null,null,null,null,null,"Battle Lore 5"]]},{name:"Uhlan",image:J,imageAlt:"Taurus",text:"Warriors who wield spears to pierce enemy armor.",rawBoardData:[[null,null,"Zeromus",null,null,null,null,null,null,"Quickening 4"],[null,null,"Heavy Armor 12","Poach","Phoenix Lore 2",null,"Black Magick 6",null,"Adrenaline","Accessories 21","Ribbon"],[null,null,"Heavy Armor 11","Heavy Armor 10","Swiftness 1",null,"Black Magick 5","Quickening 3","Swiftness 2","Accessories 19","Accessories 22","Zodiark"],[null,null,null,"Heavy Armor 9","Shades of Black",null,null,null,"+350 HP","Accessories 17"],[null,null,null,"Heavy Armor 8","Headsman","Shemhazai",null,null,"+310 HP","Accessories 15","Ultima","Expose"],[null,null,null,"Heavy Armor 7","Infuse",null,null,"Exodus","+270 HP","Accessories 13"],["Battle Lore 13","Adrammelech",null,"Heavy Armor 6","Phoenix Lore 1",null,null,null,"+230 HP","Accessories 11"],[null,"Charm","Heavy Armor 4","Heavy Armor 5","+30 HP","+70 HP","+110 HP","+150 HP","+190 HP","Focus","Accessories 12","Accessories 14"],["Quickening 1","Remedy Lore 1","Heavy Armor 3","Accessories 4","Accessories 5","Accessories 6","Accessories 7","Accessories 8","Accessories 9","Accessories 10","Remedy Lore 2","Accessories 16","Chaos","Black Magick 7"],[null,"Battle Lore 4","Heavy Armor 2","Accessories 3",null,"Belias","Second Board",null,null,"Last Stand","Battle Lore 6","Accessories 18",null,"Black Magick 8"],[null,"Martyr","Heavy Armor 1","Accessories 2",null,null,null,null,null,"Battle Lore 1","Battle Lore 8","Accessories 20"],[null,"Spears 1","Essentials","Accessories 1",null,null,null,"Bonecrusher","Hashmal","Achilles","Battle Lore 12","Magick Lore 1"],[null,"Spears 2","Battle Lore 3","Gambit Slot 1",null,null,null,null,null,"Battle Lore 10","Battle Lore 9","Magick Lore 2","Famfrit","Potion Lore 3"],[null,"Spears 3","First Aid","Gambit Slot 2","Gambit Slot 3","Gambit Slot 4","Quickening 2","Gambit Slot 8","Gambit Slot 9","Gambit Slot 10","Battle Lore 11","Magick Lore 4"],[null,"Spears 5","Spears 4","Inquisitor","Potion Lore 1","Gambit Slot 5","Gambit Slot 6","Gambit Slot 7","Battle Lore 2","Battle Lore 7","Battle Lore 15","Magick Lore 3"],[null,null,"Dragon Whisker","Vrsabha","Zodiac Spear","Revive","Zalera","Potion Lore 2","Battle Lore 5","Spellbound","Souleater"],[null,"Magick Lore 7","Mateus",null,null,null,null,null,null,null,"C\xfachulainn","Wither"],[null,null,"Magick Lore 8"]]},{name:"Machinist",image:Y,imageAlt:"Gemini",text:"Warriors who snipe their foes with deadly precision.",rawBoardData:[[null,"Green Magick 1",null,"Quickening 2",null,null,null,null,null,null,null,null,null,"+350 HP","Chaos"],[null,"Exodus","Gambit Slot 10","Gambit Slot 7",null,"Belias","Second Board",null,null,null,null,null,null,null,"Battle Lore 4","Mithuna"],[null,null,"Gambit Slot 9","Gambit Slot 5","Gambit Slot 4","Gambit Slot 3","Gambit Slot 2",null,null,"Adrammelech",null,"Poach","Magick Lore 1","Magick Lore 2","Battle Lore 3","Battle Lore 2"],[null,null,"Gambit Slot 8","Gambit Slot 6","Martyr","Accessories 2","Accessories 1","Light Armor 1","Light Armor 2","Light Armor 3","Potion Lore 1","Light Armor 4","Light Armor 5","Guns 5","Magick Lore 4","Guns 6"],[null,null,null,"Mateus",null,"Accessories 3","Essentials","Guns 1","Guns 2","Inquisitor","Guns 3","Guns 4","Headsman"],[null,null,null,null,null,"Accessories 4","Gambit Slot 1",null,null,"Quickening 1",null,"Potion Lore 2","Light Armor 6"],[null,null,null,null,null,"Accessories 5","Measures 1",null,null,null,null,"Achilles","Light Armor 7","Quickening 3"],[null,null,null,null,"Zalera","Accessories 6","Libra",null,null,null,null,"Ether Lore 1","Light Armor 8"],[null,null,null,null,null,"Accessories 7","Measures 2",null,null,null,null,"Gil Toss","Last Stand",null,"Time Magick 9","Time Magick 10"],[null,null,null,null,null,"Accessories 8","Steal","Hashmal",null,null,null,"Potion Lore 3","Light Armor 9","Famfrit","Time Magick 8"],[null,null,null,null,null,"Accessories 9","Measures 3",null,null,null,null,"Numerology","Light Armor 10"],["Hand-bombs 4",null,null,null,"Phoenix Lore 1","Accessories 10","Charm","Remedy Lore 1","Traveler","Remedy Lore 2","Horology","Remedy Lore 3","Light Armor 11","Swiftness 1",null,null,"Zodiark","+390 HP"],["Zeromus","+310 HP","+190 HP","+150 HP","+30 HP","Accessories 11","Accessories 12","Accessories 13","Accessories 14","Accessories 15","Accessories 16","Accessories 17","Light Armor 12","Light Armor 13","Swiftness 2","Stamp","Swiftness 3"],[null,"+270 HP","+230 HP","+110 HP","+70 HP","Spellbound","Measures 4",null,null,"C\xfachulainn",null,"Accessories 18","Accessories 19","Accessories 20","Accessories 21","Accessories 22","Ribbon"],[null,null,null,null,null,"Shemhazai",null,null,null,"Magick Lore 3",null,null,null,"Ultima",null,"Quickening 4"],[null,null,null,null,null,"Hand-bombs 3",null,null,null,null,null,null,null,"Magick Lore 8","Magick Lore 7","Magick Lore 6"]]},{name:"Red Battlemage",image:_,imageAlt:"Cancer",text:"Battlemages equally skilled with maces and magicks.",rawBoardData:[[null,null,null,"Steal",null,"White Magick 2"],[null,null,null,"Hashmal",null,"Quickening 1",null,"Mateus",null,null,"White Magick 7",null,"+230 HP",null,"Heavy Armor 9","Heavy Armor 10"],[null,null,"Accessories 16","Accessories 11","Gambit Slot 6","Gambit Slot 4","Gambit Slot 3","Time Magick 2",null,null,"Shemhazai",null,"Quickening 2",null,"Heavy Armor 8"],[null,null,"Accessories 14","Accessories 10","Gambit Slot 5","Martyr","Gambit Slot 2","White Magick 3","Black Magick 3","Green Magick 2","Black Magick 4","Black Magick 5","Black Magick 6","Time Magick 3","Exodus"],[null,null,"Accessories 22","Accessories 13","Second Board","Belias","Gambit Slot 1","Green Magick 1","White Magick 4","Arcane Magick 2","White Magick 5","Green Magick 3","White Magick 6","Arcane Magick 3"],["Channeling 3","Zeromus","Ribbon","Accessories 20",null,null,"Arcane Magick 1","Time Magick 1",null,null,null,"C\xfachulainn"],[null,null,"Accessories 21","Accessories 19",null,null,"Essentials","Mystic Armor 1",null,null,null,"Black Magick 9","Black Magick 10",null,"Battle Lore 4","Battle Lore 2"],[null,null,"Accessories 18","Accessories 12",null,null,"Accessories 1","Maces 1",null,null,null,null,null,null,"Famfrit"],[null,null,"Accessories 15","Accessories 8","Accessories 6","Accessories 4","Accessories 2","Mystic Armor 2","Mystic Armor 3","Mystic Armor 4","Shields 2","Gambit Slot 7","Shields 3","Gambit Slot 8","Gambit Slot 9","Gambit Slot 10"],[null,"Zalera","Accessories 17","Accessories 9","Accessories 7","Accessories 5","Accessories 3","Charge","Shields 1","Maces 2","Warmage","Mystic Armor 5","Mystic Armor 6","Mystic Armor 7","Mystic Armor 8","Shields 4"],[null,null,null,null,"Adrammelech",null,null,null,null,null,"Battle Lore 3","+110 HP",null,null,"Mystic Armor 9","Shields 5"],[null,null,null,null,null,null,"Greatswords 4",null,null,null,"Maces 3","Ether Lore 1",null,null,"Mystic Armor 10","Shields 6",null,"Greatswords 2"],[null,null,null,"+435 HP",null,null,"Zodiark",null,null,null,"Inquisitor","Spellbreaker",null,null,"Mystic Armor 11","Shields 7","Ultima","Greatswords 1"],[null,null,null,"Quickening 4","Ensanguined Shield","Magick Lore 11","Magick Lore 10","Magick Lore 6","Magick Lore 7","Magick Lore 2","Maces 4","Channeling 1",null,null,"Mystic Armor 12","Shell Shield"],[null,null,null,null,"Zodiac Escutcheon","Magick Lore 12","Magick Lore 9","Magick Lore 5","Magick Lore 8","Magick Lore 3","Magick Lore 1","+190 HP","Swiftness 1","Serenity","Mystic Armor 13","Souleater"],[null,null,null,null,null,null,null,null,"Quickening 3",null,"Magick Lore 4","Maces 5","Channeling 2","Headsman","+270 HP","Spellbound"],[null,null,null,null,null,null,null,null,null,null,null,null,null,"Chaos"],[null,null,null,null,null,null,null,null,null,null,null,null,null,"Greatswords 3"]]},{name:"Knight",image:X,imageAlt:"Leo",text:"Stalwart warriors who wield swords and shield.",rawBoardData:[[null,null,null,null,null,null,null,null,null,null,"Potion Lore 2"],[null,null,"Souleater","Adrenaline","Headsman",null,"Quickening 2",null,null,null,"Shemhazai"],[null,null,"+270 HP","Heavy Armor 4","Shield Block 1","Heavy Armor 5","Battle Lore 3","Heavy Armor 6","Battle Lore 4","Heavy Armor 7","Battle Lore 2","Heavy Armor 8"],["White Magick 7",null,"Gambit Slot 6","Martyr","Swords 3","Shields 3","Swords 4","Shields 4","Swords 5","Shields 5","Swords 6","Battle Lore 1"],["White Magick 6","Mateus","Gambit Slot 5","Heavy Armor 3","Shields 2",null,null,null,null,null,"Shields 6","Heavy Armor 9","Quickening 3"],[null,null,"Gambit Slot 4","+230 HP","Swords 2","Belias","Potion Lore 1",null,null,null,"Swords 7","Battle Lore 5"],[null,null,"Gambit Slot 3","Heavy Armor 2","Shields 1","Second Board",null,null,"Battle Lore 9","C\xfachulainn","Shields 7","Greatswords 1"],[null,null,"Gambit Slot 2","Inquisitor","Swords 1",null,null,null,null,null,"Swords 8","Heavy Armor 10","Exodus","+350 HP"],["+190 HP","+110 HP","+70 HP","Heavy Armor 1","Essentials","Accessories 1","Accessories 2",null,null,null,"Shield Block 2","Greatswords 2"],["Gambit Slot 7","Last Stand","+30 HP","Gambit Slot 1","First Aid","Accessories 3","Accessories 4",null,null,null,"Swords 9","Battle Lore 6",null,"Famfrit"],["Gambit Slot 8","+150 HP",null,null,null,"Accessories 5","Accessories 6","Quickening 1",null,null,"+310 HP","Greatswords 3","Heavy Armor 11","Greatswords 4","Heavy Armor 12"],["Gambit Slot 9","Infuse",null,null,null,"Accessories 7","Accessories 8",null,null,"Zeromus","Spellbound","Battle Lore 7","Shell Shield","Battle Lore 10","Excalibur",null,"Battle Lore 11"],["Gambit Slot 10","Focus",null,"Zalera",null,"Accessories 9","Accessories 10",null,null,null,"Shield Block 3","Sight Unseeing","Battle Lore 8","Battle Lore 12","Genji Armor","Ultima","Telekinesis"],["Blood Sword","Accessories 21","Accessories 19","Accessories 17","Accessories 13","Accessories 11","Accessories 12","Adrammelech",null,null,"Karkata","Ensanguined Shield","Swiftness 1","Zodiac Escutcheon","Tournesol"],["Ribbon","Accessories 22","Accessories 20","Accessories 18","Accessories 16","Accessories 14","Accessories 15",null,null,null,null,"Chaos","Quickening 4","Zodiark"],[null,"Hashmal",null,null,null,null,null,null,null,null,null,"+390 HP","Revive","Excalipur"],[null,"White Magick 8","White Magick 9"]]},{name:"Monk",image:ee,imageAlt:"Virgo",text:"Warriors who temper their bodies into deadly weapons.",rawBoardData:[[null,null,null,"C\xfachulainn",null,null,null,null,"Belias","Second Board"],[null,null,"Brawler","Battle Lore 1",null,"Inquisitor","Martyr",null,"First Aid","Libra"],[null,null,"Battle Lore 5","Light Armor 4","Light Armor 3","Light Armor 2","Light Armor 1","Gambit Slot 1","Gambit Slot 2","Gambit Slot 3","Quickening 1"],["Traveler","Zalera","Battle Lore 2","Light Armor 5","Battle Lore 3","+30 HP","Essentials","Accessories 1","Accessories 2","Gambit Slot 4"],[null,null,"Battle Lore 4","Light Armor 6",null,"+70 HP","Poles 1",null,"Accessories 3","Gambit Slot 5",null,"Adrammelech",null,null,"Phoenix Lore 2"],["White Magick 9","Quickening 2","Numerology","Light Armor 7",null,"+110 HP","Poles 2",null,"Accessories 4","Potion Lore 1","Gambit Slot 6","Focus","Gambit Slot 7","Gambit Slot 8","Quickening 4"],[null,null,"Battle Lore 6","Light Armor 8",null,"+150 HP","Poles 3",null,"Accessories 5","Phoenix Lore 1","Last Stand","Spellbound","+310 HP","Gambit Slot 9","Zeromus","Sight Unseeing"],["White Magick 4","Hashmal","Headsman","Light Armor 9",null,"+190 HP","Poles 4",null,"Accessories 6","Accessories 7",null,null,"+350 HP","Gambit Slot 10"],[null,null,"Battle Lore 7","Light Armor 10",null,"Potion Lore 2","Poles 5",null,"Accessories 8","Accessories 9",null,"Quickening 3","+390 HP","Swiftness 1","Chaos","White Magick 11"],["Potion Lore 3","Shemhazai","Battle Lore 8","Light Armor 11",null,"+230 HP","Poles 6",null,"Accessories 10","Accessories 11","Mateus",null,"+500 HP","Battle Lore 9",null,"White Magick 12"],[null,null,"Battle Lore 10","Light Armor 12",null,"Revive","Bonecrusher",null,"Accessories 12","Accessories 13",null,null,"Accessories 22","Battle Lore 11"],[null,null,"Battle Lore 12","Light Armor 13",null,"+270 HP","Whale Whisker",null,"Achilles","Accessories 14","Accessories 15","Accessories 17","Accessories 19","Ribbon","Battle Lore 13","Ultima","Swiftness 2"],[null,null,"Wither","+435 HP",null,"Expose","Kanya",null,"Adrenaline","Shades of Black","Accessories 16","Accessories 18","Accessories 20","Accessories 21","Battle Lore 14",null,"Swiftness 3"],[null,null,null,null,null,"Exodus",null,null,null,"Famfrit",null,null,"Battle Lore 15","Battle Lore 16"],[null,null,null,null,null,"Souleater",null,null,null,"White Magick 10",null,"White Magick 13","Zodiark"]]},{name:"Time Battlemage",image:ea,imageAlt:"Libra",text:"Battlemages who wield crossbows and bend time to their will.",rawBoardData:[[null,null,null,null,null,"Channeling 3",null,"+150 HP",null,"White Magick 4"],[null,null,null,null,null,"Hashmal",null,"Quickening 2",null,"Adrammelech"],[null,null,null,"Gambit Slot 8","Channeling 1","Magick Lore 7","Warmage","Magick Lore 8","Charge","Magick Lore 3","Magick Lore 4","Poach","Spellbreaker"],[null,"Battle Lore 12","Exodus","Gambit Slot 9","Headsman","Heavy Armor 6","Time Magick 6","Swiftness 1","Heavy Armor 5","Time Magick 5","Heavy Armor 4","Ether Lore 2","Gambit Slot 7"],[null,null,null,"Gambit Slot 10","Magick Lore 6","Time Magick 7",null,"Zalera",null,null,"Magick Lore 2","Time Magick 4","Gambit Slot 6","Mateus","+230 HP"],[null,null,null,"+190 HP","Remedy Lore 2","Heavy Armor 7",null,"Ether Lore 3",null,"Second Board","Heavy Armor 3","Time Magick 3","Gambit Slot 5"],[null,null,"Quickening 3","Horology","Last Stand","Heavy Armor 8",null,null,null,"Belias","Heavy Armor 2","Time Magick 2","Gambit Slot 4","Quickening 1"],[null,null,null,"Spellbound","Magick Lore 5","Time Magick 8",null,null,null,null,"Magick Lore 1","Time Magick 1","Gambit Slot 2"],["Battle Lore 9","Famfrit",null,"Ether Lore 1","Serenity","Heavy Armor 9","Zeromus","Addle","Shear",null,"Heavy Armor 1","Essentials","Gambit Slot 1"],[null,"Magick Lore 9","Heavy Armor 12","Stamp","Time Magick 9","Heavy Armor 10",null,null,null,null,"Martyr","Accessories 1","Accessories 2","Inquisitor","Remedy Lore 1"],[null,"Swiftness 3","Time Magick 10","Heavy Armor 11","Channeling 2","Swiftness 2",null,"+270 HP",null,null,"Gambit Slot 3","Crossbows 1","Accessories 3","Accessories 4","Crossbows 2"],[null,null,null,null,null,null,null,"Chaos",null,null,null,null,null,"Accessories 5"],[null,null,"Accessories 20","Accessories 18","Accessories 16","Accessories 14","Accessories 13","Accessories 12","Accessories 11","Accessories 10","Accessories 9","Accessories 8","Accessories 7","Accessories 6"],[null,"Accessories 22","Accessories 21","Accessories 19","Accessories 17","Accessories 15","Crossbows 4","Battle Lore 7","Battle Lore 6","Battle Lore 5","Battle Lore 1","Battle Lore 2","Battle Lore 4","Battle Lore 3","+110 HP"],[null,"Ribbon","Battle Lore 10","Battle Lore 8","Green Magick 3",null,"Ultima",null,null,"C\xfachulainn",null,"Green Magick 2","Crossbows 3","Green Magick 1","Numerology","Shemhazai"],[null,null,"Zodiark",null,"Quickening 4",null,"Swords 7"],[null,null,"Swords 9",null,null,null,"Swords 8"]]},{name:"Foebreaker",image:el,imageAlt:"Scorpio",text:"Warriors who use mighty weapons to tear their foes asunder.",rawBoardData:[[null,null,null,"Shades of Black",null,"Swiftness 2"],[null,null,null,"C\xfachulainn",null,"Hashmal","Quickening 2",null,null,"Quickening 1"],[null,null,"Shell Shield","Last Stand",null,"Shear","Martyr",null,"Gambit Slot 3","Gambit Slot 4"],[null,"Shemhazai","Gambit Slot 9","Gambit Slot 8","Gambit Slot 7","Gambit Slot 6","Gambit Slot 5","Infuse","Gambit Slot 1","Gambit Slot 2"],[null,null,"Heavy Armor 6","Heavy Armor 5","Heavy Armor 4","Heavy Armor 3","Heavy Armor 2","Heavy Armor 1","Essentials","Accessories 1"],["+390 HP","Quickening 3","Heavy Armor 7","Axes & Hammers 6","Axes & Hammers 5","Axes & Hammers 4","Axes & Hammers 3","Axes & Hammers 2","Axes & Hammers 1","Accessories 2"],[null,null,"Heavy Armor 8","Axes & Hammers 7",null,"Inquisitor","Shields 1",null,"+30 HP","Accessories 3","Belias","Horology"],[null,null,"Heavy Armor 9","Vrscika",null,"Shield Block 1","Shields 2",null,"Battle Lore 3","Accessories 4","Second Board",null,null,null,"Swiftness 3"],[null,null,"Heavy Armor 10","Gambit Slot 10",null,"Adrenaline","Shields 3",null,"+70 HP","Accessories 5",null,null,null,null,"Ultima"],["Magick Lore 1","Exodus","Heavy Armor 11","Sight Unseeing",null,"Shield Block 2","Shields 4",null,"Battle Lore 4","Accessories 6",null,null,"Accessories 17","Accessories 18","Accessories 19","Zodiark"],["Magick Lore 2",null,"Heavy Armor 12","Spellbound",null,"Headsman","Shields 5",null,"+110 HP","Accessories 7","Mateus",null,"Accessories 16","Battle Lore 9","Accessories 22"],["Magick Lore 4",null,"Genji Armor","Expose",null,"Shield Block 3","Shields 6",null,"Battle Lore 2","Accessories 8",null,null,"Accessories 15","Battle Lore 12","Accessories 21"],["Magick Lore 3","Zeromus","Swiftness 1","Ensanguined Shield",null,"Focus","Shields 7",null,"+150 HP","Accessories 9",null,null,"Accessories 14","Battle Lore 10","Accessories 20"],[null,null,"Addle","Wither",null,"Hand-bombs 2","Hand-bombs 1",null,"Battle Lore 1","Accessories 10","Accessories 11","Accessories 12","Accessories 13","+310 HP","+350 HP"],[null,null,"Ribbon","Zodiac Escutcheon",null,"Hand-bombs 4","Hand-bombs 3",null,"+190 HP","Battle Lore 5","+230 HP","Battle Lore 6","+270 HP","Battle Lore 7","Battle Lore 8","Chaos"],[null,null,null,"Quickening 4",null,null,"Adrammelech",null,null,"Zalera",null,null,null,null,"Famfrit"],[null,null,null,"Battle Lore 15",null,null,"Battle Lore 11",null,null,"Traveler",null,null,null,null,"Magick Lore 8"]]},{name:"Archer",image:et,imageAlt:"Sagittarius",text:"Warriors who rain death on their foes from afar.",rawBoardData:[[null,null,null,null,null,null,"Quickening 4",null,null,"Hashmal"],[null,null,null,null,null,null,"+230 HP","Revive","Gambit Slot 10","Gambit Slot 9","Gambit Slot 8"],[null,null,"+435 HP","+390 HP","Famfrit","+310 HP","+270 HP","Focus","Traveler","+110 HP","Gambit Slot 7","Gambit Slot 6"],[null,null,null,null,null,null,"Ribbon","+190 HP","+150 HP","Charm","+70 HP","Gambit Slot 5","Zalera"],[null,null,null,null,null,null,null,null,null,null,"+30 HP","Gambit Slot 4"],[null,null,null,null,null,"Battle Lore 4","Accessories 19",null,null,"Mateus","Poach","Gambit Slot 3","Quickening 1","White Magick 4"],[null,null,null,null,null,"Accessories 21","Accessories 13","Zeromus",null,null,"Libra","Gambit Slot 2"],[null,null,"Quickening 3",null,null,"Accessories 16","Accessories 9",null,null,null,"First Aid","Gambit Slot 1",null,null,null,null,"Exodus"],["Infuse","Ultima","Remedy Lore 3","Shear","Accessories 15","Accessories 11","Accessories 7","Accessories 5","Accessories 3","Accessories 1","Essentials","Bows 1","Martyr","Headsman","Remedy Lore 1","Phoenix Lore 1","Spellbound","Potion Lore 2"],["1000 Needles","Zodiark","Phoenix Lore 3","Addle","Accessories 17","Accessories 12","Accessories 8","Accessories 6","Accessories 4","Accessories 2","Light Armor 1","Bows 2","Inquisitor","Swiftness 1","Potion Lore 1","Remedy Lore 2","Battle Lore 3","Potion Lore 3"],[null,null,null,null,null,"Shades of Black","Accessories 10",null,null,null,"Light Armor 2","Steal",null,null,"C\xfachulainn"],[null,null,null,"Magick Lore 2","Chaos","Accessories 18","Accessories 14",null,null,"Belias","Light Armor 3","Bows 3"],[null,"Magick Lore 8","Magick Lore 3","Magick Lore 4",null,"Accessories 22","Accessories 20","Quickening 2",null,"Second Board","Light Armor 4","Last Stand"],[null,"Magick Lore 7",null,null,null,null,null,null,null,null,"Light Armor 5","Bows 4","Adrammelech"],[null,null,null,null,null,null,"Light Armor 10","Light Armor 9","Light Armor 8","Light Armor 7","Light Armor 6","Gil Toss"],[null,null,null,null,null,"Light Armor 12","Light Armor 11","Swiftness 3","Bows 7","Achilles","Bows 5","Magick Lore 1"],[null,null,null,null,null,"Light Armor 13","Dhanusha","Sagittarius","Phoenix Lore 2","Bows 6","Swiftness 2"],[null,null,null,null,null,null,null,null,"Shemhazai"],[null,null,null,null,null,null,"Heavy Armor 12","Heavy Armor 11","Heavy Armor 10"]]},{name:"Black Mage",image:en,imageAlt:"Capricorn",text:"Mages who channel elemental forces into deadly magicks.",rawBoardData:[[null,null,null,null,null,null,null,null,"+70 HP"],[null,null,null,null,"Zodiark",null,"Hand-bombs 3",null,"Quickening 1"],[null,null,null,"Mystic Armor 13","Mystic Armor 12",null,"Mateus","Magick Lore 4","Gambit Slot 5","Adrammelech","Hand-bombs 2"],[null,"+390 HP","Quickening 4","Mystic Armor 11","Staves 5",null,null,"Channeling 1","Gambit Slot 4"],[null,null,null,"Magick Lore 11","Mystic Armor 10",null,null,"Magick Lore 2","Gambit Slot 2"],[null,null,null,"Magick Lore 10","Mystic Armor 9",null,null,"Magick Lore 1","Gambit Slot 1","Gambit Slot 3","Gambit Slot 6","Martyr"],[null,null,null,"Magick Lore 9","Staves 4","Quickening 3",null,"Mystic Armor 1","Essentials","Accessories 1","Accessories 2","Accessories 4"],[null,null,null,"Magick Lore 5","Mystic Armor 8",null,"Second Board","Mystic Armor 2","Black Magick 1",null,"Accessories 3","Gambit Slot 7",null,"Poach"],[null,null,null,"Black Magick 13","Mystic Armor 7",null,"Belias","Staves 1","Black Magick 2",null,"Ether Lore 1","Accessories 5","Zalera","Steal"],[null,null,null,"Black Magick 12","Staves 3",null,null,"Mystic Armor 3","Black Magick 3",null,"Accessories 6","Magick Lore 3",null,null,"Hand-bombs 4"],[null,null,null,"Black Magick 11","Mystic Armor 6","Mystic Armor 5","Staves 2","Mystic Armor 4","Black Magick 4",null,"Warmage","Accessories 7",null,null,"Hashmal"],[null,null,null,"Black Magick 10","Black Magick 9","Black Magick 8","Black Magick 7","Black Magick 6","Black Magick 5",null,"Accessories 8","Inquisitor","Magick Lore 8","Green Magick 1","Channeling 2","+270 HP"],[null,null,null,null,null,null,null,null,null,null,"Charge","Accessories 9","Ether Lore 2","Spellbreaker","Magick Lore 7","Magick Lore 6"],["Telekinesis","Ultima","Magick Lore 14","Magick Lore 15","Ribbon","Channeling 3","Accessories 19","Gambit Slot 9","Accessories 15","Remedy Lore 1","Accessories 10","+150 HP",null,null,"Remedy Lore 2","Headsman","Shemhazai","Heavy Armor 7"],[null,null,"Magick Lore 16","Magick Lore 13","Magick Lore 12","Accessories 21","Green Magick 2","Accessories 17","Charm","Accessories 12","Serenity","Accessories 11",null,null,"Ether Lore 3","Green Magick 3"],[null,null,null,"Chaos",null,"Famfrit",null,null,"Zeromus",null,"Accessories 13","Gambit Slot 8","Accessories 16","Gambit Slot 10","Accessories 20","Staff of the Magi"],[null,null,null,null,"+230 HP","+190 HP",null,null,"Heavy Armor 9",null,"Spellbound","Accessories 14","Swiftness 1","Accessories 18","Swiftness 2","Accessories 22"],[null,null,null,null,"+310 HP",null,null,null,null,null,"Quickening 2",null,"C\xfachulainn",null,"Exodus"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Heavy Armor 8"]]},{name:"Bushi",image:er,imageAlt:"Aquarius",text:"Swordmasters who devote themselves body and soul to their lords.",rawBoardData:[[null,null,null,null,null,null,null,null,null,null,"Karkata",null,"Masamune","Kumbha"],[null,null,null,null,null,null,null,null,"Souleater",null,"Blood Sword","Zalera","Magick Lore 7","Serenity",null,"Battle Lore 7"],[null,null,null,null,null,null,null,null,"Adrammelech",null,null,null,"Magick Lore 8","Katana 5","Quickening 3","+390 HP"],[null,null,null,null,null,null,null,"Magick Lore 2","+230 HP","Magick Lore 4","+270 HP","Spellbreaker","Magick Lore 3","+310 HP"],[null,null,null,null,null,null,"Second Board","+190 HP","Inquisitor","Katana 2","Swiftness 2","Katana 3","Headsman","Katana 4",null,null,"Gambit Slot 9","Gambit Slot 10"],[null,null,null,null,null,"Libra","Belias","Magick Lore 1","Swiftness 1",null,"Mateus",null,"Hashmal",null,null,null,"Gambit Slot 8","Sight Unseeing"],[null,null,null,null,null,null,null,"+150 HP","Katana 1",null,null,null,null,null,null,null,"Gambit Slot 7","1000 Needles"],[null,null,null,"Shield Block 1",null,null,null,"+70 HP","Essentials","Accessories 1","Accessories 2","Last Stand","Gambit Slot 1","Gambit Slot 3","Gambit Slot 4","Gambit Slot 5","Gambit Slot 6","Gil Toss"],[null,null,null,"Shemhazai",null,null,null,"+110 HP","Mystic Armor 1",null,null,"Accessories 3","Gambit Slot 2","Infuse","Bonecrusher","Remedy Lore 2","Shades of Black","Spellbound"],[null,null,"Magick Lore 5","Magick Lore 6","Mystic Armor 9","Mystic Armor 7","Mystic Armor 5","Mystic Armor 3","Mystic Armor 2",null,null,"Accessories 4","Remedy Lore 1",null,"Quickening 2"],[null,null,"Magick Lore 9","Mystic Armor 11","Mystic Armor 10","Mystic Armor 8","Mystic Armor 6","Mystic Armor 4","Martyr","Quickening 1",null,"Accessories 5","Accessories 6",null,"+350 HP"],["+500 HP","Exodus","Magick Lore 10","Mystic Armor 12",null,null,null,null,null,null,null,"Accessories 7","Accessories 8",null,"Battle Lore 8"],[null,null,"Magick Lore 11","Mystic Armor 13","C\xfachulainn","Stamp","Ultima",null,null,"Famfrit",null,"Accessories 9","Accessories 10"],[null,null,"Magick Lore 12","Genji Armor",null,null,"Ribbon","Accessories 21","Accessories 19","Accessories 17","Accessories 14","Accessories 11","Accessories 13"],[null,null,"Zeromus",null,null,null,"Battle Lore 3","Accessories 22","Accessories 20","Accessories 18","Accessories 16","Accessories 15","Accessories 12"],[null,"Magick Lore 13","Magick Lore 15",null,"+435 HP","Quickening 4","Battle Lore 2","Battle Lore 4"],[null,null,null,null,null,null,"Battle Lore 5","Battle Lore 1","Chaos","Brawler"],[null,null,null,"Heavy Armor 10","Heavy Armor 9","Zodiark","Swiftness 3","Battle Lore 6"],[null,null,null,"Heavy Armor 11"]]},{name:"Shikari",image:eo,imageAlt:"Pisces",text:"Warriors who fight nimbly across hill and dale.",rawBoardData:[[null,null,null,"Shades of Black",null,null,null,null,null,null,null,null,null,"Phoenix Lore 1","Phoenix Lore 2"],[null,null,null,"Adrammelech",null,null,null,null,null,null,null,null,null,"Ultima"],[null,null,"Gambit Slot 10","Gambit Slot 8","Remedy Lore 2","Gambit Slot 7",null,null,null,null,null,"Light Armor 10","Daggers 6","Light Armor 12","Shikari Nagasa & Mina","Chaos"],[null,"Quickening 2","Gambit Slot 9","Swiftness 1","Gambit Slot 6","Gambit Slot 5","Mateus","Gil Toss",null,"White Magick 12","C\xfachulainn","Daggers 5","Light Armor 11","Shields 7","Light Armor 13"],[null,"Ninja Swords 2",null,"Second Board","Gambit Slot 4","Gambit Slot 3",null,null,null,null,null,"Light Armor 9","Shields 6"],[null,null,null,"Belias","Gambit Slot 2","Gambit Slot 1",null,null,null,null,null,"Daggers 4","Light Armor 8","Exodus","Stamp"],["Ninja Swords 1",null,null,null,"First Aid","Daggers 1","Light Armor 2","Daggers 2","Shields 2","Light Armor 5","Shields 3","Light Armor 7","Shields 5"],["Quickening 1","Adrenaline","Last Stand","+30 HP","Martyr","Essentials","Light Armor 1","Light Armor 3","Light Armor 4","Daggers 3","Light Armor 6","Shields 4","Shield Block 2","Accessories 19","Accessories 22","Telekinesis"],[null,"Spellbound","+230 HP","+110 HP","Libra","Accessories 1",null,null,null,null,null,"Shield Block 1","Focus","Accessories 18","Accessories 21","Ribbon"],[null,"+310 HP","Headsman","+190 HP","+70 HP","Accessories 2","Accessories 3","Accessories 6","Accessories 8","Accessories 10","Accessories 12","Accessories 14","Accessories 16","Accessories 17","Accessories 20","+390 HP"],[null,null,"Hashmal",null,"+150 HP","Accessories 4","Accessories 5","Accessories 7","Accessories 9","Accessories 11","Accessories 13","Accessories 15","+350 HP"],[null,null,"Bonecrusher",null,"Battle Lore 3","Inquisitor",null,null,null,null,null,"Potion Lore 1","Traveler","Famfrit"],[null,null,null,null,"Battle Lore 4","+270 HP","Zalera","+435 HP",null,null,"Zeromus","Potion Lore 2","Magick Lore 1"],[null,null,"Remedy Lore 3","Battle Lore 1","Battle Lore 2","Remedy Lore 1",null,null,null,null,null,"Swiftness 3","Magick Lore 2","Magick Lore 4","Magick Lore 8","Zodiark"],["Ninja Swords 3","Quickening 3","Revive","Swiftness 2","Battle Lore 5","Battle Lore 6",null,null,null,null,null,"1000 Needles","Potion Lore 3","Magick Lore 3","Brawler"],[null,null,null,"Shemhazai",null,null,null,null,null,null,null,null,null,"Quickening 4"],[null,null,"Guns 6","Guns 5",null,null,null,null,null,null,null,null,null,"Yagyu Darkblade & Mesa"]]}],ek=eb.map(function(e){let a={name:e.name,text:e.text,image:e.image,imageAlt:e.imageAlt,rows:e.rawBoardData.map(e=>e.map(e=>e?{value:eg(e),adjacent:[]}:void 0)),lookup:new Map};for(let e=0;ea.rows[e]&&a.rows[e][l]&&n.adjacent.push(a.rows[e][l]);l(e-1,t),l(e+1,t),l(e,t-1),l(e,t+1),a.lookup.set(n.value,n)}}}return a});class eA{compare;nodes;constructor(e){this.compare=e,this.nodes=[]}size(){return this.nodes.length}insert(e){let a=this.nodes.length;for(this.nodes.push(e);a>0;){let e=a-1>>1;if(!this.compare(this.nodes[a],this.nodes[e]))return;let l=this.nodes[a];this.nodes[a]=this.nodes[e],this.nodes[e]=l,a=e}}remove(){if(this.nodes.length<2)return this.nodes.pop();let e=this.nodes[0],a=this.nodes.pop();this.nodes[0]=a;let l=0;for(;;){let t=2*l+1,n=t+1,r=l;if(te.slice()),this.selected=e.selected.map(e=>new Set(e)),this.blockedEspers=new Set(e.blockedEspers),this.quickeningCount=e.quickeningCount.slice()):(this.jobs=ef.map(e=>[]),this.selected=ef.map(e=>new Set),this.blockedEspers=new Set,this.quickeningCount=ef.map(e=>0),this.verify())}verify(){this.blockedEspers.clear();for(let e=0;e<6;e++){let a=this.selected[e];for(let l of ep)if(a.has(l))for(let a=e+1;a<6;a++)this.selected[a].delete(l);for(let l of(4===eh.filter(e=>a.has(e)).length&&a.delete(eh[3]),ef[e].innateLicenses))a.add(l);let l=new Set,t=[...ef[e].innateLicenses];for(;t.length;){let n=t.pop();if(!l.has(n)&&a.has(n))for(let a of(l.add(n),this.jobs[e])){let e=a.lookup.get(n);e&&t.push(...e.adjacent.map(e=>e.value))}}for(let e of ep)l.has(e)&&this.blockedEspers.add(e);this.quickeningCount[e]=eh.filter(e=>l.has(e)).length,this.selected[e]=l}}getJob(e,a){return this.jobs[e][a]}unemployed(e){return 0===this.jobs[e].length}allUnemployed(){return!this.jobs.find(e=>e.length>0)}getLpCount(e){let a=0;for(let l of this.selected[e])ef[e].innateLicenses.includes(l)||(a+=l.cost);return a}findPath(e,a){let l=new eA(function(e,a){return e.length{for(let n of a.keys())for(let r of this.jobs[e]){let e=r.lookup.get(n);if(e)for(let{value:n}of e.adjacent)!a.has(n)&&l(n)&&a.set(n,t)}};return l(e=>!e.limited,1),l(a=>!this.isBlocked(e,a),2),a}encode(){let e="";for(let a=0;a<6;a++)e+=function(e,a){let l=eS.get(e[0]).get(e[1]),t=eT[l],n=[l],r=1,o=0;for(let e of t.licenses)a.has(e)&&(o|=r),256==(r<<=1)&&(n.push(o),o=0,r=1);for(1!==r&&n.push(o);n.length>1&&0===n[n.length-1];)n.pop();return btoa(String.fromCharCode(...n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}(this.jobs[a],this.selected[a]),5!==a&&(e+=".");return e}static decode(e){let a=e.split("."),l=a.map(eM),t=new ev;for(let e=0;e<6;e++){let a=l[e];a&&(t.jobs[e]=a.jobs,t.selected[e]=a.licenses)}return t.verify(),t}}const{urlLookup:eT,urlReverseLookup:eS}=function(){let e=ek.slice();e.unshift(void 0);let a=[];for(let l of e)for(let t of e){if(l&&l===t)continue;let e={job1:l,job2:t,licenses:[]};if(l)for(let a of l.rows)for(let l of a)l&&e.licenses.push(l.value);if(t)for(let a of t.rows)for(let t of a)!t||l&&l.lookup.has(t.value)||e.licenses.push(t.value);a.push(e)}let l=new Map;for(let e=0;ee),licenses:t}}function eL(e){let a=e,l=new Set;return{useStore(e){let t=()=>x(e);return l.add(t),H(e,()=>{l.delete(t)}),()=>a},dispatch(e){for(let t of(a=e(a),l))t()}}}const eB=e=>a=>a.boardIndex&&!e.getJob(a.characterIndex,a.boardIndex)?{...a,party:e,boardIndex:0,plannedParty:void 0}:{...a,party:e,plannedParty:void 0},eH=(e,a)=>l=>(a&&!l.party.getJob(e,0)&&(a=0),{...l,characterIndex:e,boardIndex:a}),ex=()=>e=>e.qeActive?{...e,qeActive:!1}:{...e,qeActive:!0,dpsActive:!1},eP=()=>e=>e.dpsActive?{...e,dpsActive:!1}:{...e,dpsActive:!0,qeActive:!1},eG=e=>a=>({...a,plannedParty:e}),{useStore:eC,dispatch:eD}=eL(function(){let e=window.location.search&&ev.decode(window.location.search.slice(1));return{party:e||new ev,characterIndex:0,boardIndex:0,qeActive:!1,dpsActive:!1,plannedParty:void 0}}());var eR=(e,a)=>{let l;let t=eC(a);return e=>{let n=t(),r=n.party===l?.from?l:void 0;return r?C("button",{class:"action button","aria-label":r.label,onClick:()=>eD(eB(r.to))},r.children):C("button",{class:"action button","aria-label":e.label,disabled:e.disabled,onClick:async()=>{let t=n.party,r=e.getNextParty();eD(eB(r));let o={from:r,to:t,label:`Undo ${e.label}`,children:C("i",null,"Undo ",e.children)};l=o,x(a),await new Promise(e=>setTimeout(e,5e3)),l===o&&(l=void 0,x(a))}},e.children)}},eE=(e,a)=>{let l=eC(a);return()=>{let e=l();function a(a,l){let t=e.party.getJob(a,l),n=e.characterIndex===a&&e.boardIndex===l;if(t)return C("button",{class:"job","aria-pressed":n,onClick:e=>{e.stopPropagation(),eD(eH(a,l))}},C("span",{class:"name"},t.name));{let t=1===l&&!e.party.getJob(a,0);return C("button",{disabled:t,class:"job nojob","aria-pressed":n,onClick:e=>{e.stopPropagation(),eD(eH(a,l))}},C("span",{class:"name"},"No Job"))}}return C("div",{class:"character-panel"},C("div",{class:"actions"},function(){let a,l;let t=e.characterIndex,n=e.party.getJob(t,e.boardIndex);return n?(a=`Unlearn ${n.name} from ${ef[t].name}`,l=!1):(a=`Unlearn current job from ${ef[t].name}`,l=!0),C(eR,{label:a,disabled:l,getNextParty:()=>e.party.removeJob(t,n)},"Reset Job")}(),function(){let a=e.characterIndex,l=e.party.unemployed(a),t=`Unlearn all jobs from ${ef[a].name}`;return C(eR,{label:t,disabled:l,getNextParty:()=>e.party.removeAllJobs(a)},"Reset Character")}(),function(){let a=e.party.allUnemployed();return C(eR,{label:"Unlearn all jobs from all characters",disabled:a,getNextParty:()=>new ev},"Reset All")}(),C("button",{class:"action button","aria-label":"Manage Quickenings and Espers for all characters at once.",onClick:()=>eD(ex()),"aria-pressed":e.qeActive},e.qeActive?"Hide Mist Planner":"Show Mist Planner"),C("button",{class:"action button","aria-label":"Simulate character damage output",onClick:()=>eD(eP()),"aria-pressed":e.dpsActive},e.dpsActive?"Hide DPS Simulator":"Show DPS Simulator")),C("div",{class:"character-select"},ef.map((l,t)=>C("div",{class:"character button","aria-pressed":e.characterIndex===t,onClick:()=>(function(a){e.characterIndex===a?eD(eH(a,1^e.boardIndex)):eD(eH(a,0))})(t)},C("span",{class:"name"},l.name),C("br",null),a(t,0),C("br",null),a(t,1),C("br",null),C("span",null,e.party.getLpCount(t)," LP")))),C("div",{class:"stats"},function(){let a=e.party.color(e.characterIndex),l=e.plannedParty&&e.plannedParty.color(e.characterIndex);return ed.map(t=>(function(a,l,t){let n=[];if("number"==typeof a.contents[0].grants.what){let r=[],o=[],i=[],s=[];for(let e of a.contents)switch(l.get(e)){case D.OBTAINED:r.push(e);break;case D.CERTAIN:o.push(e);break;case D.POSSIBLE:i.push(e);break;default:t&&t.has(e)&&s.push(e)}let c=(a,l)=>{let t=a.map(a=>({c:e.characterIndex,l:a})),n=l?e.party.deleteAndAdd([],t):e.party.deleteAndAdd(t,[]);eD(eB(n))},m=e=>e.reduce((e,a)=>e+a.grants.what,0);r.length&&n.push(C("p",{class:"l obtained",onClick:()=>c(r,!1)},"+",m(r))),o.length&&n.push(C("p",{class:"l certain",onClick:()=>c(o,!0)},"+",m(o))),i.length&&n.push(C("p",{class:"l possible",onClick:()=>c(i,!0)},"+",m(i))),s.length&&n.push(C("p",{class:"l planned"},"+",m(s)))}else for(let r of a.contents){let a;let o=!1;switch(l.get(r)){case D.OBTAINED:a="l obtained",o=!0;break;case D.CERTAIN:a="l certain";break;case D.POSSIBLE:a="l possible";break;default:if(!(t&&t.has(r)))continue;a="l planned"}let i=()=>{o?eD(eB(e.party.delete(e.characterIndex,r))):eD(eB(e.party.add(e.characterIndex,r)))};n.push(C("p",{class:a,"aria-label":r.text,onClick:i},r.fullName))}return n.length?C("div",{class:"group"},C("h3",{class:"name"},a.name),n):null})(t,a,l))}()))}};const eN=C("a",{href:"https://github.com/nattthebear/ff12characterplanner",target:"_blank",rel:"noopener noreferrer",class:"github-corner","aria-label":"View source on Github"},C("svg",{width:"80",height:"80",viewBox:"0 0 250 250","aria-hidden":!0},C("g",null,C("path",{d:"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"}),C("path",{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor",class:"octo-arm"}),C("path",{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor",class:"octo-body"}))));function eI(){return eN}var ej=(e,a)=>{let l;let t=eC(a),n=t(),r=null,o=e=>{r=e};function i(e){let a=r,t=l;t&&a&&(a.scrollLeft=t.x-e.screenX,a.scrollTop=t.y-e.screenY)}function s(){l=void 0}function c(e){let a=r,t=e.target;a&&(t.classList.contains("empty")||"TABLE"===t.nodeName)&&(l={x:a.scrollLeft+e.screenX,y:a.scrollTop+e.screenY},e.preventDefault())}return document.addEventListener("mousemove",i,{passive:!0}),document.addEventListener("mouseup",s,{passive:!0}),H(a,()=>{document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",s)}),()=>{n=t();let e=n.party.getJob(n.characterIndex,n.boardIndex);if(e)return function(e){let a=n.party.color(n.characterIndex);return C("div",{class:"license-board-holder",ref:o,onMouseDown:c},C("table",{class:"license-board"},C("tbody",null,e.rows.map(e=>C("tr",null,e.map(e=>(function(e,a){let l;if(!e)return C("td",{class:"empty"});let t=e.value,r=!1;switch(a.get(t)){case D.OBTAINED:l="l obtained",r=!0;break;case D.CERTAIN:l="l certain";break;case D.POSSIBLE:l="l possible";break;default:l="l blocked"}return C("td",{class:l,onClick:()=>{r?eD(eB(n.party.delete(n.characterIndex,t))):eD(eB(n.party.add(n.characterIndex,t)))},"aria-label":t.text},C("div",{class:"name"},t.fullName),C("div",{class:"cost"},t.cost),t.image&&C("img",{class:"mist",src:t.image,"aria-role":"none"}))})(e,a)))))))}(e);{let e=n.party.getJob(n.characterIndex,1^n.boardIndex);return C("div",{class:"select-job"},ek.map(a=>C("button",{onClick:()=>eD(eB(n.party.addJob(n.characterIndex,a))),class:"job button",disabled:a===e,"aria-label":a.text,onMouseOver:()=>eD(eG(n.party.addJob(n.characterIndex,a))),onMouseOut:()=>eD(eG(void 0))},C("img",{class:"zodiac",src:a.image,alt:a.imageAlt}),a.name)),C(eI,null))}}};function eW(e,a){return e.sortOrder-a.sortOrder}var ez=(e,a)=>{let l;let t=eC(a),{party:n}=t();function r(e){return C(G,null,C("div",null,C("div",{class:"license-name","aria-label":e.text},e.fullName)),ef.map((a,t)=>(function(e,a){let t,r,o;if(n.unemployed(a))return C("div",{class:"l unreachable",onClick:()=>{eD(eH(a,0)),eD(ex())}},"Choose a job first.");let i=l[a];{let l=new Set;for(let a of i.get(e))l.add(a);for(let t of ey)if(t!==e&&n.has(a,t))for(let e of i.get(t))l.delete(e);o=[...l]}return n.has(a,e)?(t="l obtained",r=()=>{let l=ey.filter(l=>l!==e&&n.has(a,l)),t=n.deleteAndAdd([{c:a,l:e}],l.map(e=>({c:a,l:e})));eD(eB(t))}):n.isBlocked(a,e)?t="l blocked":(t="l possible",r=()=>{let l=n.add(a,e);eD(eB(l))}),o.sort(eW),C("div",{class:t,onClick:r},o.map(e=>C("div",{"aria-label":e.text},e.fullName)))})(e,t)))}function o(e){return e?C("div",{class:"job","aria-label":e.text},e.name):C("div",{class:"job nojob"},"No Job")}return()=>({party:n}=t(),l=ef.map((e,a)=>n.getCovered(a)),C("div",{class:"qe-board"},C("div",null),ef.map((e,a)=>C("div",null,C("div",{class:"character-name"},e.name),o(n.getJob(a,0)),o(n.getJob(a,1)))),ey.map(r)))};const eF=["fire","ice","lightning","water","wind","earth","dark","holy"],eV={fireDamage:1,iceDamage:2,lightningDamage:4,waterDamage:8,windDamage:16,earthDamage:32,darkDamage:64,holyDamage:128,agateRing:256,animationType:512,brawler:1024,berserk:2048,haste:4096,bravery:8192,faith:16384,focus:32768,adrenaline:65536,serenity:131072,spellbreaker:262144,genjiGloves:524288,cameoBelt:1048576},eO={attack:1,str:2,mag:4,vit:8,spd:16,fireBonus:32,iceBonus:64,lightningBonus:128,waterBonus:256,windBonus:512,earthBonus:1024,darkBonus:2048,holyBonus:4096},eK=Object.keys(eO).length;class eQ{constructor(e,a){for(let l in Object.assign(this,e),this.mutateProfile=function(e,a){let l="";for(let t in e){if("name"===t||"l"===t||"animationType"===t&&a)continue;let n=e[t];if("boolean"==typeof n&&n)l+=`ret.${t} = true; +`;else if("number"==typeof n)l+=`ret.${t} += ${n}; +`;else if("string"==typeof n)l+=`ret.${t} = ${JSON.stringify(n)}; +`;else throw Error(`Unexpected type on Profile[${t}]: ${typeof n}`)}return Function("ret",l)}(e,a),this.tooltip=function(e,a){let l=[];function t(a,t){let n=e[a];"number"==typeof n&&n>0?l.push(`${n} ${t}`):!0===n&&l.push(t)}for(let n of(!a&&e.animationType&&l.push({unarmed:"Unarmed",dagger:"Dagger",ninja:"Ninja Sword",katana:"Katana",sword:"Sword",bigsword:"Greatsword",hammer:"Hammer/Axe",pole:"Pole",spear:"Spear",mace:"Mace",bow:"Bow",gun:"Gun",xbow:"Crossbow",measure:"Measure",rod:"Rod",staff:"Staff",handbomb:"Handbomb"}[e.animationType]),"gun"===e.damageType&&"gun"!==e.animationType&&l.push("Pierce"),t("attack","Att"),t("chargeTime","CT"),t("combo","Cb"),t("str","Str"),t("mag","Mag"),t("vit","Vit"),t("spd","Spd"),t("brawler","Brawler"),t("berserk","Berserk"),t("haste","Haste"),t("bravery","Bravery"),t("faith","Faith"),t("focus","Focus"),t("adrenaline","Adrenaline"),t("serenity","Serenity"),t("spellbreaker","Spellbreaker"),t("genjiGloves","Combo+"),t("cameoBelt","Ignore Evasion"),t("agateRing","Ignore Weather"),eF))t(`${n}Damage`,n[0].toUpperCase()+n.slice(1)+" Damage");for(let e of eF)t(`${e}Bonus`,e[0].toUpperCase()+e.slice(1)+" Bonus");return l.join(",")}(e,a),e){let e;null==(e=eV[l])||a&&"animationType"===l||(this.hazardUniqueMask|=e),null!=(e=eO[l])&&(this.sharedMask|=e)}for(let a in eO)this.sharedValues.push(+(e[a]??0))}name;l;mutateProfile;tooltip;hazardUniqueMask=0;sharedMask=0;sharedValues=[];ability;damageType;animationType;attack;combo;chargeTime;str;mag;vit;spd;brawler;berserk;haste;bravery;faith;focus;adrenaline;serenity;spellbreaker;genjiGloves;cameoBelt;agateRing;swiftness1;swiftness2;swiftness3;fireDamage;iceDamage;lightningDamage;waterDamage;windDamage;earthDamage;darkDamage;holyDamage;fireBonus;iceBonus;lightningBonus;waterBonus;windBonus;earthBonus;darkBonus;holyBonus}const eU=(e,a)=>e.map(e=>new eQ(e,!!a)),eZ=eU([{name:"Unarmed",damageType:"unarmed",animationType:"unarmed",attack:12,chargeTime:26,combo:5},{name:"Mythril Sword",damageType:"sword",animationType:"sword",attack:14,chargeTime:30,combo:5},{name:"Broadsword",l:eg("Swords 1"),damageType:"sword",animationType:"sword",attack:14,chargeTime:32,combo:5},{name:"Longsword",l:eg("Swords 2"),damageType:"sword",animationType:"sword",attack:20,chargeTime:32,combo:5},{name:"Iron Sword",l:eg("Swords 2"),damageType:"sword",animationType:"sword",attack:25,chargeTime:32,combo:5},{name:"Mythril Blade",damageType:"sword",animationType:"sword",attack:23,chargeTime:30,combo:5},{name:"Zwill Blade",l:eg("Swords 3"),damageType:"sword",animationType:"sword",attack:30,chargeTime:32,combo:5},{name:"Ancient Sword",l:eg("Swords 3"),damageType:"sword",animationType:"sword",attack:35,chargeTime:32,combo:5},{name:"Blood Sword",l:eg("Blood Sword"),damageType:"sword",animationType:"sword",attack:38,chargeTime:32,combo:5},{name:"Lohengrin",l:eg("Swords 4"),damageType:"sword",animationType:"sword",attack:40,chargeTime:32,combo:5},{name:"Flametongue",l:eg("Swords 4"),damageType:"sword",animationType:"sword",attack:45,chargeTime:32,combo:5,fireDamage:!0},{name:"Demonsbane",l:eg("Swords 5"),damageType:"sword",animationType:"sword",attack:51,chargeTime:32,combo:5},{name:"Icebrand",l:eg("Swords 5"),damageType:"sword",animationType:"sword",attack:55,chargeTime:32,combo:5,iceDamage:!0},{name:"Platinum Sword",l:eg("Swords 6"),damageType:"sword",animationType:"sword",attack:61,chargeTime:32,combo:5},{name:"Bastard Sword",l:eg("Swords 6"),damageType:"sword",animationType:"sword",attack:67,chargeTime:32,combo:5},{name:"Diamond Sword",l:eg("Swords 7"),damageType:"sword",animationType:"sword",attack:73,chargeTime:32,combo:5},{name:"Runeblade",l:eg("Swords 7"),damageType:"sword",animationType:"sword",attack:78,chargeTime:32,combo:5},{name:"Deathbringer",l:eg("Swords 8"),damageType:"sword",animationType:"sword",attack:83,chargeTime:32,combo:5},{name:"Stoneblade",l:eg("Swords 8"),damageType:"sword",animationType:"sword",attack:95,chargeTime:32,combo:5},{name:"Durandal",l:eg("Swords 9"),damageType:"sword",animationType:"sword",attack:99,chargeTime:32,combo:5},{name:"Great Trango",damageType:"sword",animationType:"sword",attack:153,chargeTime:25,combo:30},{name:"Karkata",l:eg("Karkata"),damageType:"sword",animationType:"sword",attack:92,chargeTime:32,combo:7},{name:"Simha",l:eg("Swords 9"),damageType:"sword",animationType:"sword",attack:103,chargeTime:32,combo:10},{name:"Dagger",l:eg("Daggers 1"),damageType:"dagger",animationType:"dagger",attack:14,chargeTime:21,combo:12},{name:"Mage Masher",l:eg("Daggers 2"),damageType:"dagger",animationType:"dagger",attack:18,chargeTime:21,combo:12},{name:"Assassin's Dagger",l:eg("Daggers 2"),damageType:"dagger",animationType:"dagger",attack:31,chargeTime:21,combo:12},{name:"Chopper",l:eg("Daggers 3"),damageType:"dagger",animationType:"dagger",attack:40,chargeTime:21,combo:12},{name:"Main Gauche",l:eg("Daggers 3"),damageType:"dagger",animationType:"dagger",attack:46,chargeTime:21,combo:5},{name:"Gladius",l:eg("Daggers 4"),damageType:"dagger",animationType:"dagger",attack:56,chargeTime:21,combo:12,windDamage:!0},{name:"Avenger",l:eg("Daggers 4"),damageType:"dagger",animationType:"dagger",attack:66,chargeTime:21,combo:12},{name:"Orichalcum Dirk",l:eg("Daggers 5"),damageType:"dagger",animationType:"dagger",attack:79,chargeTime:21,combo:12},{name:"Platinum Dagger",l:eg("Daggers 5"),damageType:"dagger",animationType:"dagger",attack:83,chargeTime:21,combo:12},{name:"Zwill Crossblade",l:eg("Daggers 6"),damageType:"dagger",animationType:"dagger",attack:87,chargeTime:21,combo:12,windDamage:!0},{name:"Shikari Nagasa",l:eg("Shikari Nagasa & Mina"),damageType:"dagger",animationType:"dagger",attack:90,chargeTime:21,combo:12},{name:"Mina",l:eg("Shikari Nagasa & Mina"),damageType:"dagger",animationType:"dagger",attack:104,chargeTime:21,combo:15},{name:"Handaxe",l:eg("Axes & Hammers 1"),damageType:"hammer",animationType:"hammer",attack:17,chargeTime:29,combo:6},{name:"Broadaxe",l:eg("Axes & Hammers 2"),damageType:"hammer",animationType:"hammer",attack:36,chargeTime:29,combo:6},{name:"Slasher",l:eg("Axes & Hammers 3"),damageType:"hammer",animationType:"hammer",attack:54,chargeTime:29,combo:6},{name:"Hammerhead",l:eg("Axes & Hammers 4"),damageType:"hammer",animationType:"hammer",attack:81,chargeTime:29,combo:6},{name:"Francisca",l:eg("Axes & Hammers 5"),damageType:"hammer",animationType:"hammer",attack:88,chargeTime:29,combo:6},{name:"Greataxe",l:eg("Axes & Hammers 6"),damageType:"hammer",animationType:"hammer",attack:110,chargeTime:29,combo:6},{name:"Golden Axe",l:eg("Axes & Hammers 6"),damageType:"hammer",animationType:"hammer",attack:120,chargeTime:29,combo:6},{name:"Iron Hammer",l:eg("Axes & Hammers 2"),damageType:"hammer",animationType:"hammer",attack:24,chargeTime:32,combo:8},{name:"War Hammer",l:eg("Axes & Hammers 3"),damageType:"hammer",animationType:"hammer",attack:42,chargeTime:32,combo:8},{name:"Sledgehammer",l:eg("Axes & Hammers 4"),damageType:"hammer",animationType:"hammer",attack:66,chargeTime:32,combo:8},{name:"Morning Star",l:eg("Axes & Hammers 5"),damageType:"hammer",animationType:"hammer",attack:100,chargeTime:32,combo:8},{name:"Scorpion Tail",l:eg("Axes & Hammers 7"),damageType:"hammer",animationType:"hammer",attack:124,chargeTime:32,combo:8},{name:"Vrscika",l:eg("Vrscika"),damageType:"hammer",animationType:"hammer",attack:133,chargeTime:32,combo:20},{name:"Mace",l:eg("Maces 1"),damageType:"mace",animationType:"mace",attack:17,chargeTime:30,combo:5},{name:"Bronze Mace",l:eg("Maces 1"),damageType:"mace",animationType:"mace",attack:24,chargeTime:30,combo:5},{name:"Bhuj",l:eg("Maces 2"),damageType:"mace",animationType:"mace",attack:34,chargeTime:30,combo:5},{name:"Miter",l:eg("Maces 2"),damageType:"mace",animationType:"mace",attack:42,chargeTime:30,combo:5,waterDamage:!0},{name:"Thorned Mace",l:eg("Maces 3"),damageType:"mace",animationType:"mace",attack:53,chargeTime:30,combo:5},{name:"Chaos Mace",l:eg("Maces 3"),damageType:"mace",animationType:"mace",attack:69,chargeTime:30,combo:5},{name:"Doom Mace",l:eg("Maces 4"),damageType:"mace",animationType:"mace",attack:75,chargeTime:30,combo:5},{name:"Zeus Mace",l:eg("Maces 4"),damageType:"mace",animationType:"mace",attack:81,chargeTime:30,combo:5,darkBonus:!0},{name:"Grand Mace",l:eg("Maces 5"),damageType:"mace",animationType:"mace",attack:88,chargeTime:30,combo:5},{name:"Bonebreaker",damageType:"gun",animationType:"mace",attack:10,chargeTime:30,combo:10},{name:"Bone of Byblos",l:eg("Maces 5"),damageType:"mace",animationType:"mace",attack:100,chargeTime:30,combo:5},{name:"Gilt Measure",l:eg("Measures 1"),damageType:"gun",animationType:"measure",attack:5,chargeTime:32,combo:0},{name:"Arc Scale",l:eg("Measures 2"),damageType:"gun",animationType:"measure",attack:10,chargeTime:32,combo:0},{name:"Multiscale",l:eg("Measures 2"),damageType:"gun",animationType:"measure",attack:13,chargeTime:32,combo:0,fireDamage:!0},{name:"Cross Scale",l:eg("Measures 3"),damageType:"gun",animationType:"measure",attack:16,chargeTime:32,combo:0,lightningDamage:!0},{name:"Caliper",l:eg("Measures 3"),damageType:"gun",animationType:"measure",attack:19,chargeTime:32,combo:0,windDamage:!0},{name:"Euclid's Sextant",l:eg("Measures 4"),damageType:"gun",animationType:"measure",attack:24,chargeTime:32,combo:0,holyDamage:!0},{name:"Claymore",l:eg("Greatswords 1"),damageType:"sword",animationType:"bigsword",attack:83,chargeTime:35,combo:8},{name:"Defender",l:eg("Greatswords 2"),damageType:"sword",animationType:"bigsword",attack:90,chargeTime:35,combo:5},{name:"Save the Queen",l:eg("Greatswords 2"),damageType:"sword",animationType:"bigsword",attack:92,chargeTime:35,combo:8},{name:"Ultima Blade",l:eg("Greatswords 3"),damageType:"sword",animationType:"bigsword",attack:109,chargeTime:35,combo:8},{name:"Ragnarok",l:eg("Greatswords 4"),damageType:"sword",animationType:"bigsword",attack:117,chargeTime:35,combo:8},{name:"Excalibur",l:eg("Excalibur"),damageType:"sword",animationType:"bigsword",attack:127,chargeTime:35,combo:8,holyDamage:!0},{name:"Tournesol",l:eg("Tournesol"),damageType:"sword",animationType:"bigsword",attack:138,chargeTime:35,combo:10},{name:"Wyrmhero Blade",damageType:"sword",animationType:"bigsword",attack:131,chargeTime:99,combo:80,holyDamage:!0,bravery:!0,faith:!0},{name:"Excalipur",l:eg("Excalipur"),damageType:"gun",animationType:"bigsword",attack:1,chargeTime:20,combo:20},{name:"Treaty-Blade",damageType:"sword",animationType:"bigsword",attack:67,chargeTime:30,combo:25},{name:"Sword of Kings",damageType:"sword",animationType:"bigsword",attack:53,chargeTime:30,combo:20},{name:"Kumbha",l:eg("Kumbha"),damageType:"katana",animationType:"sword",attack:117,chargeTime:31,combo:35},{name:"Kotetsu",l:eg("Katana 1"),damageType:"katana",animationType:"katana",attack:16,chargeTime:41,combo:20},{name:"Osafune",l:eg("Katana 1"),damageType:"katana",animationType:"katana",attack:26,chargeTime:31,combo:20},{name:"Kogarasumaru",l:eg("Katana 2"),damageType:"katana",animationType:"katana",attack:40,chargeTime:31,combo:20},{name:"Magoroku",l:eg("Katana 2"),damageType:"katana",animationType:"katana",attack:50,chargeTime:31,combo:20},{name:"Murasame",l:eg("Katana 3"),damageType:"katana",animationType:"katana",attack:62,chargeTime:31,combo:20,waterDamage:!0},{name:"Kiku-ichimonji",l:eg("Katana 3"),damageType:"katana",animationType:"katana",attack:71,chargeTime:31,combo:20},{name:"Yakei",l:eg("Katana 4"),damageType:"katana",animationType:"katana",attack:83,chargeTime:31,combo:20},{name:"Ame-no-Murakumo",l:eg("Katana 4"),damageType:"katana",animationType:"katana",attack:96,chargeTime:31,combo:20,windDamage:!0},{name:"Muramasa",l:eg("Katana 4"),damageType:"katana",animationType:"katana",attack:104,chargeTime:31,combo:20},{name:"Masamune",l:eg("Masamune"),damageType:"katana",animationType:"katana",attack:111,chargeTime:31,combo:30},{name:"Ashura",l:eg("Ninja Swords 1"),damageType:"dagger",animationType:"ninja",attack:72,chargeTime:22,combo:12},{name:"Sakura-saezuri",l:eg("Ninja Swords 1"),damageType:"dagger",animationType:"ninja",attack:77,chargeTime:22,combo:15},{name:"Kagenui",l:eg("Ninja Swords 1"),damageType:"dagger",animationType:"ninja",attack:81,chargeTime:22,combo:18},{name:"Koga Blade",l:eg("Ninja Swords 3"),damageType:"dagger",animationType:"ninja",attack:87,chargeTime:22,combo:22,earthDamage:!0},{name:"Iga Blade",l:eg("Ninja Swords 2"),damageType:"dagger",animationType:"ninja",attack:87,chargeTime:22,combo:22,waterDamage:!0},{name:"Orochi",l:eg("Ninja Swords 1"),damageType:"dagger",animationType:"ninja",attack:94,chargeTime:22,combo:25},{name:"Yagyu Darkblade",l:eg("Yagyu Darkblade & Mesa"),damageType:"dagger",animationType:"ninja",attack:98,chargeTime:24,combo:28,darkDamage:!0},{name:"Mesa",l:eg("Yagyu Darkblade & Mesa"),damageType:"dagger",animationType:"ninja",attack:102,chargeTime:22,combo:32},{name:"Javelin",l:eg("Spears 1"),damageType:"sword",animationType:"spear",attack:16,chargeTime:28,combo:4},{name:"Spear",l:eg("Spears 1"),damageType:"sword",animationType:"spear",attack:26,chargeTime:28,combo:4},{name:"Partisan",l:eg("Spears 2"),damageType:"sword",animationType:"spear",attack:34,chargeTime:28,combo:4},{name:"Heavy Lance",l:eg("Spears 2"),damageType:"sword",animationType:"spear",attack:42,chargeTime:28,combo:4},{name:"Storm Spear",l:eg("Spears 3"),damageType:"sword",animationType:"spear",attack:53,chargeTime:28,combo:4,lightningDamage:!0},{name:"Obelisk",l:eg("Spears 3"),damageType:"sword",animationType:"spear",attack:68,chargeTime:28,combo:4},{name:"Halberd",l:eg("Spears 4"),damageType:"sword",animationType:"spear",attack:75,chargeTime:28,combo:4},{name:"Trident",l:eg("Spears 4"),damageType:"sword",animationType:"spear",attack:85,chargeTime:28,combo:4,iceDamage:!0},{name:"Holy Lance",l:eg("Spears 5"),damageType:"sword",animationType:"spear",attack:91,chargeTime:28,combo:4,holyDamage:!0},{name:"Gungnir",l:eg("Spears 5"),damageType:"sword",animationType:"spear",attack:95,chargeTime:28,combo:4,fireDamage:!0},{name:"Dragon Whisker",l:eg("Dragon Whisker"),damageType:"sword",animationType:"spear",attack:100,chargeTime:28,combo:4},{name:"Vrsabha",l:eg("Vrsabha"),damageType:"sword",animationType:"spear",attack:108,chargeTime:28,combo:10},{name:"Zodiac Spear",l:eg("Zodiac Spear"),damageType:"sword",animationType:"spear",attack:141,chargeTime:28,combo:4},{name:"Oaken Pole",l:eg("Poles 1"),damageType:"pole",animationType:"pole",attack:15,chargeTime:25,combo:15},{name:"Cypress Pole",l:eg("Poles 2"),damageType:"pole",animationType:"pole",attack:22,chargeTime:25,combo:15,earthDamage:!0},{name:"Battle Bamboo",l:eg("Poles 2"),damageType:"pole",animationType:"pole",attack:34,chargeTime:25,combo:15},{name:"Musk Stick",l:eg("Poles 3"),damageType:"pole",animationType:"pole",attack:39,chargeTime:25,combo:15},{name:"Iron Pole",l:eg("Poles 3"),damageType:"pole",animationType:"pole",attack:46,chargeTime:25,combo:15},{name:"Six-fluted Pole",l:eg("Poles 4"),damageType:"pole",animationType:"pole",attack:59,chargeTime:25,combo:15,waterBonus:!0},{name:"Gokuu Pole",l:eg("Poles 4"),damageType:"pole",animationType:"pole",attack:72,chargeTime:25,combo:15},{name:"Zephyr Pole",l:eg("Poles 5"),damageType:"pole",animationType:"pole",attack:77,chargeTime:25,combo:15,windDamage:!0},{name:"Ivory Pole",l:eg("Poles 5"),damageType:"pole",animationType:"pole",attack:83,chargeTime:25,combo:15},{name:"Sweep",l:eg("Poles 6"),damageType:"pole",animationType:"pole",attack:88,chargeTime:25,combo:15},{name:"Eight-fluted Pole",l:eg("Poles 6"),damageType:"pole",animationType:"pole",attack:91,chargeTime:25,combo:15},{name:"Whale Whisker",l:eg("Whale Whisker"),damageType:"pole",animationType:"pole",attack:108,chargeTime:25,combo:15},{name:"Kanya",l:eg("Kanya"),damageType:"pole",animationType:"pole",attack:112,chargeTime:25,combo:35},{name:"Rod",l:eg("Rods 1"),damageType:"sword",animationType:"rod",attack:16,chargeTime:33,mag:2},{name:"Serpent Rod",l:eg("Rods 1"),damageType:"sword",animationType:"rod",attack:25,chargeTime:33,mag:2,iceDamage:!0},{name:"Healing Rod",l:eg("Rods 2"),damageType:"gun",animationType:"rod",attack:7,chargeTime:33,mag:2},{name:"Gaia Rod",l:eg("Rods 2"),damageType:"sword",animationType:"rod",attack:43,chargeTime:33,mag:2,earthDamage:!0},{name:"Power Rod",l:eg("Rods 3"),damageType:"sword",animationType:"rod",attack:56,chargeTime:33,mag:3},{name:"Empyrean Rod",l:eg("Rods 3"),damageType:"sword",animationType:"rod",attack:60,chargeTime:33,mag:2},{name:"Holy Rod",l:eg("Rods 4"),damageType:"sword",animationType:"rod",attack:63,chargeTime:33,mag:4,holyDamage:!0,holyBonus:!0},{name:"Rod of Faith",l:eg("Rod of Faith"),damageType:"gun",animationType:"rod",attack:21,chargeTime:33,mag:6},{name:"Oak Staff",l:eg("Staves 1"),damageType:"katana",animationType:"staff",attack:15,chargeTime:34,mag:2},{name:"Cherry Staff",l:eg("Staves 2"),damageType:"katana",animationType:"staff",attack:20,chargeTime:34,mag:3,windBonus:!0},{name:"Wizard's Staff",l:eg("Staves 2"),damageType:"katana",animationType:"staff",attack:26,chargeTime:34,mag:4},{name:"Flame Staff",l:eg("Staves 3"),damageType:"katana",animationType:"staff",attack:34,chargeTime:34,mag:4,fireBonus:!0},{name:"Storm Staff",l:eg("Staves 3"),damageType:"katana",animationType:"staff",attack:36,chargeTime:34,mag:4,lightningBonus:!0},{name:"Glacial Staff",l:eg("Staves 4"),damageType:"katana",animationType:"staff",attack:38,chargeTime:34,mag:5,iceBonus:!0},{name:"Golden Staff",l:eg("Staves 4"),damageType:"katana",animationType:"staff",attack:42,chargeTime:34,mag:6},{name:"Judicer's Staff",l:eg("Staves 5"),damageType:"katana",animationType:"staff",attack:48,chargeTime:34,mag:7},{name:"Cloud Staff",l:eg("Staves 5"),damageType:"katana",animationType:"staff",attack:49,chargeTime:34,mag:7,lightningBonus:!0,windBonus:!0,waterBonus:!0},{name:"Staff of the Magi",l:eg("Staff of the Magi"),damageType:"katana",animationType:"staff",attack:53,chargeTime:34,mag:8,iceBonus:!0,windBonus:!0,holyBonus:!0},{name:"Shortbow",l:eg("Bows 1"),damageType:"dagger",animationType:"bow",attack:15,chargeTime:36,combo:5},{name:"Silver Bow",l:eg("Bows 2"),damageType:"dagger",animationType:"bow",attack:19,chargeTime:36,combo:5},{name:"Aevis Killer",l:eg("Bows 2"),damageType:"dagger",animationType:"bow",attack:25,chargeTime:36,combo:5},{name:"Killer Bow",l:eg("Bows 3"),damageType:"dagger",animationType:"bow",attack:36,chargeTime:36,combo:5},{name:"Longbow",l:eg("Bows 3"),damageType:"dagger",animationType:"bow",attack:48,chargeTime:36,combo:0},{name:"Elfin Bow",l:eg("Bows 4"),damageType:"dagger",animationType:"bow",attack:54,chargeTime:36,combo:5},{name:"Loxley Bow",l:eg("Bows 4"),damageType:"dagger",animationType:"bow",attack:60,chargeTime:36,combo:5},{name:"Giant Stonebow",l:eg("Bows 5"),damageType:"dagger",animationType:"bow",attack:73,chargeTime:36,combo:5},{name:"Burning Bow",l:eg("Bows 5"),damageType:"dagger",animationType:"bow",attack:77,chargeTime:36,combo:5,fireBonus:!0},{name:"Traitor's Bow",l:eg("Bows 6"),damageType:"dagger",animationType:"bow",attack:82,chargeTime:36,combo:5},{name:"Yoichi Bow",l:eg("Bows 6"),damageType:"dagger",animationType:"bow",attack:89,chargeTime:36,combo:5},{name:"Perseus Bow",l:eg("Bows 7"),damageType:"dagger",animationType:"bow",attack:92,chargeTime:36,combo:5},{name:"Artemis Bow",l:eg("Bows 7"),damageType:"dagger",animationType:"bow",attack:94,chargeTime:36,combo:5},{name:"Sagittarius",l:eg("Sagittarius"),damageType:"dagger",animationType:"bow",attack:97,chargeTime:36,combo:5},{name:"Dhanusha",l:eg("Dhanusha"),damageType:"dagger",animationType:"bow",attack:109,chargeTime:36,combo:20},{name:"Seitengrat",damageType:"dagger",animationType:"bow",attack:224,chargeTime:10,combo:25},{name:"Bowgun",l:eg("Crossbows 1"),damageType:"sword",animationType:"xbow",attack:21,chargeTime:24,combo:7},{name:"Crossbow",l:eg("Crossbows 1"),damageType:"sword",animationType:"xbow",attack:31,chargeTime:24,combo:7},{name:"Paramina Crossbow",l:eg("Crossbows 2"),damageType:"sword",animationType:"xbow",attack:42,chargeTime:24,combo:7},{name:"Recurve Crossbow",l:eg("Crossbows 2"),damageType:"sword",animationType:"xbow",attack:57,chargeTime:24,combo:7},{name:"Hunting Crossbow",l:eg("Crossbows 3"),damageType:"sword",animationType:"xbow",attack:70,chargeTime:24,combo:7},{name:"Penetrator Crossbow",l:eg("Crossbows 3"),damageType:"sword",animationType:"xbow",attack:79,chargeTime:24,combo:7},{name:"Gastrophetes",l:eg("Crossbows 4"),damageType:"sword",animationType:"xbow",attack:84,chargeTime:24,combo:7},{name:"Tula",l:eg("Crossbows 4"),damageType:"sword",animationType:"xbow",attack:91,chargeTime:24,combo:7},{name:"Altair",l:eg("Guns 1"),damageType:"gun",animationType:"gun",attack:6,chargeTime:50,combo:5},{name:"Capella",l:eg("Guns 2"),damageType:"gun",animationType:"gun",attack:8,chargeTime:50,combo:5},{name:"Vega",l:eg("Guns 2"),damageType:"gun",animationType:"gun",attack:13,chargeTime:50,combo:5},{name:"Sirius",l:eg("Guns 3"),damageType:"gun",animationType:"gun",attack:17,chargeTime:50,combo:5},{name:"Betelgeuse",l:eg("Guns 3"),damageType:"gun",animationType:"gun",attack:22,chargeTime:50,combo:5},{name:"Ras Algethi",l:eg("Guns 4"),damageType:"gun",animationType:"gun",attack:29,chargeTime:50,combo:5},{name:"Aldebaran",l:eg("Guns 4"),damageType:"gun",animationType:"gun",attack:33,chargeTime:50,combo:5},{name:"Spica",l:eg("Guns 5"),damageType:"gun",animationType:"gun",attack:38,chargeTime:50,combo:5},{name:"Antares",l:eg("Guns 5"),damageType:"gun",animationType:"gun",attack:41,chargeTime:50,combo:5},{name:"Arcturus",l:eg("Guns 6"),damageType:"gun",animationType:"gun",attack:45,chargeTime:50,combo:5},{name:"Fomalhaut",l:eg("Guns 6"),damageType:"gun",animationType:"gun",attack:52,chargeTime:50,combo:5},{name:"Mithuna",l:eg("Mithuna"),damageType:"gun",animationType:"gun",attack:66,chargeTime:50,combo:10},{name:"Hornito",l:eg("Hand-bombs 1"),damageType:"hammer",animationType:"handbomb",attack:66,chargeTime:33},{name:"Fumarole",l:eg("Hand-bombs 2"),damageType:"hammer",animationType:"handbomb",attack:71,chargeTime:33,waterBonus:!0},{name:"Tumulus",l:eg("Hand-bombs 2"),damageType:"hammer",animationType:"handbomb",attack:76,chargeTime:33},{name:"Caldera",l:eg("Hand-bombs 3"),damageType:"hammer",animationType:"handbomb",attack:83,chargeTime:33},{name:"Volcano",l:eg("Hand-bombs 3"),damageType:"hammer",animationType:"handbomb",attack:90,chargeTime:33},{name:"Makara",l:eg("Hand-bombs 4"),damageType:"hammer",animationType:"handbomb",attack:96,chargeTime:33}]),eq=eU([{name:"Leather Cap",l:eg("Light Armor 1")},{name:"Headgear",l:eg("Light Armor 2")},{name:"Headguard",l:eg("Light Armor 2")},{name:"Leather Headgear",l:eg("Light Armor 3")},{name:"Horned Hat",l:eg("Light Armor 3")},{name:"Balaclava",l:eg("Light Armor 4"),str:1},{name:"Soldier's Cap",l:eg("Light Armor 4")},{name:"Green Beret",l:eg("Light Armor 5"),spd:3},{name:"Red Cap",l:eg("Light Armor 5"),vit:3},{name:"Headband",l:eg("Light Armor 6"),str:2},{name:"Pirate Hat",l:eg("Light Armor 6")},{name:"Goggle Mask",l:eg("Light Armor 7")},{name:"Adamant Hat",l:eg("Light Armor 7")},{name:"Officer's Hat",l:eg("Light Armor 8"),spd:3},{name:"Chakra Band",l:eg("Light Armor 8"),str:2},{name:"Thief's Cap",l:eg("Light Armor 9"),spd:4},{name:"Gigas Hat",l:eg("Light Armor 9"),mag:2},{name:"Chaperon",l:eg("Light Armor 10")},{name:"Crown of Laurels",l:eg("Light Armor 11")},{name:"Renewing Morion",l:eg("Light Armor 12"),vit:4},{name:"Dueling Mask",l:eg("Light Armor 13"),str:2},{name:"Leather Helm",l:eg("Heavy Armor 1"),str:2},{name:"Bronze Helm",l:eg("Heavy Armor 1"),str:2},{name:"Sallet",l:eg("Heavy Armor 2"),str:3},{name:"Iron Helm",l:eg("Heavy Armor 2"),str:3},{name:"Barbut",l:eg("Heavy Armor 3"),str:4},{name:"Winged Helm",l:eg("Heavy Armor 3"),str:5,spd:3},{name:"Golden Helm",l:eg("Heavy Armor 4"),str:5},{name:"Burgonet",l:eg("Heavy Armor 4"),str:4},{name:"Close Helmet",l:eg("Heavy Armor 5"),str:5},{name:"Bone Helm",l:eg("Heavy Armor 5"),str:6},{name:"Diamond Helm",l:eg("Heavy Armor 6"),str:7,vit:3},{name:"Steel Mask",l:eg("Heavy Armor 7"),str:7,spd:4},{name:"Platinum Helm",l:eg("Heavy Armor 8"),str:8},{name:"Giant's Helmet",l:eg("Heavy Armor 9"),str:8},{name:"Dragon Helm",l:eg("Heavy Armor 10"),str:9},{name:"Genji Helm",l:eg("Genji Armor"),str:9,mag:4},{name:"Magepower Shishak",l:eg("Heavy Armor 11"),str:11,mag:5},{name:"Grand Helm",l:eg("Heavy Armor 12"),str:12,vit:10},{name:"Cotton Cap",l:eg("Mystic Armor 1"),mag:2},{name:"Magick Curch",l:eg("Mystic Armor 1"),mag:2},{name:"Pointy Hat",l:eg("Mystic Armor 2"),mag:2},{name:"Topkapi Hat",l:eg("Mystic Armor 2"),mag:3},{name:"Calot Hat",l:eg("Mystic Armor 3"),mag:3},{name:"Wizard's Hat",l:eg("Mystic Armor 3"),mag:4},{name:"Lambent Hat",l:eg("Mystic Armor 4"),mag:4,spd:3},{name:"Feathered Cap",l:eg("Mystic Armor 4"),mag:5},{name:"Mage's Hat",l:eg("Mystic Armor 5"),mag:5},{name:"Lamia's Tiara",l:eg("Mystic Armor 5"),mag:4,vit:7},{name:"Sorcerer's Hat",l:eg("Mystic Armor 6"),mag:6},{name:"Black Cowl",l:eg("Mystic Armor 6"),mag:5,spd:4},{name:"Astrakhan Hat",l:eg("Mystic Armor 7"),mag:6},{name:"Gaia Hat",l:eg("Mystic Armor 7"),mag:7},{name:"Hypnocrown",l:eg("Mystic Armor 8"),str:2,mag:7},{name:"Gold Hairpin",l:eg("Mystic Armor 8"),mag:7,vit:8},{name:"Celebrant's Miter",l:eg("Mystic Armor 9"),mag:6,spd:5},{name:"Black Mask",l:eg("Mystic Armor 10"),mag:8},{name:"White Mask",l:eg("Mystic Armor 11"),mag:8},{name:"Golden Skullcap",l:eg("Mystic Armor 12"),mag:10,spd:3},{name:"Circlet",l:eg("Mystic Armor 13"),str:2,mag:10}]),e$=eU([{name:"Leather Clothing",l:eg("Light Armor 1")},{name:"Chromed Leathers",l:eg("Light Armor 2")},{name:"Leather Breastplate",l:eg("Light Armor 2")},{name:"Bronze Chestplate",l:eg("Light Armor 3")},{name:"Ringmail",l:eg("Light Armor 3"),str:1},{name:"Windbreaker",l:eg("Light Armor 4")},{name:"Heavy Coat",l:eg("Light Armor 4")},{name:"Survival Vest",l:eg("Light Armor 5"),vit:5},{name:"Brigandine",l:eg("Light Armor 5")},{name:"Jujitsu Gi",l:eg("Light Armor 6"),str:2},{name:"Viking Coat",l:eg("Light Armor 6")},{name:"Metal Jerkin",l:eg("Light Armor 7")},{name:"Adamant Vest",l:eg("Light Armor 7")},{name:"Barrel Coat",l:eg("Light Armor 8")},{name:"Power Vest",l:eg("Light Armor 8"),str:2},{name:"Ninja Gear",l:eg("Light Armor 9"),spd:4},{name:"Gigas Chestplate",l:eg("Light Armor 9"),mag:2},{name:"Minerva Bustier",l:eg("Light Armor 10")},{name:"Rubber Suit",l:eg("Light Armor 11")},{name:"Mirage Vest",l:eg("Light Armor 12"),vit:10,spd:10},{name:"Brave Suit",l:eg("Light Armor 13"),bravery:!0},{name:"Leather Armor",l:eg("Heavy Armor 1"),str:2},{name:"Bronze Armor",l:eg("Heavy Armor 1"),str:2},{name:"Scale Armor",l:eg("Heavy Armor 2"),str:3,spd:3},{name:"Iron Armor",l:eg("Heavy Armor 2"),str:3},{name:"Linen Cuirass",l:eg("Heavy Armor 3"),str:4},{name:"Chainmail",l:eg("Heavy Armor 3"),str:3},{name:"Golden Armor",l:eg("Heavy Armor 4"),str:4},{name:"Shielded Armor",l:eg("Heavy Armor 4"),str:5},{name:"Demon Mail",l:eg("Heavy Armor 5"),str:5,vit:3},{name:"Bone Mail",l:eg("Heavy Armor 5"),str:6},{name:"Diamond Armor",l:eg("Heavy Armor 6"),str:7,vit:5},{name:"Mirror Mail",l:eg("Heavy Armor 7"),str:6},{name:"Platinum Armor",l:eg("Heavy Armor 8"),str:7},{name:"Carabineer Mail",l:eg("Heavy Armor 9"),str:8,mag:2},{name:"Dragon Mail",l:eg("Heavy Armor 10"),str:8},{name:"Genji Armor",l:eg("Genji Armor"),str:9,mag:3},{name:"Maximillian",l:eg("Heavy Armor 11"),str:9,spd:6},{name:"Grand Armor",l:eg("Heavy Armor 12"),str:12},{name:"Cotton Shirt",l:eg("Mystic Armor 1"),mag:1},{name:"Light Woven Shirt",l:eg("Mystic Armor 1"),mag:2},{name:"Silken Shirt",l:eg("Mystic Armor 2"),mag:2},{name:"Kilimweave Shirt",l:eg("Mystic Armor 2"),mag:3},{name:"Shepherd's Bolero",l:eg("Mystic Armor 3"),mag:3},{name:"Wizard's Robes",l:eg("Mystic Armor 3"),mag:4},{name:"Chanter's Djellaba",l:eg("Mystic Armor 4"),mag:4,vit:5},{name:"Traveler's Vestment",l:eg("Mystic Armor 4"),mag:5},{name:"Mage's Habit",l:eg("Mystic Armor 5"),mag:6},{name:"Enchanter's Habit",l:eg("Mystic Armor 5"),mag:7,vit:10},{name:"Sorcerer's Habit",l:eg("Mystic Armor 6"),mag:8},{name:"Black Garb",l:eg("Mystic Armor 6"),mag:6,spd:3},{name:"Carmagnole",l:eg("Mystic Armor 7"),mag:7},{name:"Maduin Gear",l:eg("Mystic Armor 7"),str:1,mag:8},{name:"Jade Gown",l:eg("Mystic Armor 8"),mag:8},{name:"Gaia Gear",l:eg("Mystic Armor 8"),mag:8},{name:"Cleric's Robes",l:eg("Mystic Armor 9"),mag:9},{name:"White Robes",l:eg("Mystic Armor 11"),mag:10,spd:4,holyBonus:!0},{name:"Black Robes",l:eg("Mystic Armor 10"),mag:12,darkBonus:!0},{name:"Glimmering Robes",l:eg("Mystic Armor 12"),mag:12,vit:10},{name:"Lordly Robes",l:eg("Mystic Armor 13"),str:5,mag:15}]),eJ=eU([{name:"Bangle",l:eg("Accessories 2")},{name:"Berserker Bracers",l:eg("Accessories 13"),berserk:!0},{name:"Ruby Ring",l:eg("Accessories 15")},{name:"Bubble Belt",l:eg("Accessories 17")},{name:"Winged Boots",l:eg("Accessories 19"),spd:5},{name:"Hermes Sandals",l:eg("Accessories 20"),str:5,haste:!0},{name:"Ring of Renewal",l:eg("Accessories 22")},{name:"Orrachea Armlet",l:eg("Accessories 1")},{name:"Blazer Gloves",l:eg("Accessories 11"),focus:!0},{name:"Steel Gorget",l:eg("Accessories 4"),adrenaline:!0},{name:"Magick Gloves",l:eg("Accessories 13"),serenity:!0},{name:"Leather Gorget",l:eg("Accessories 6"),spellbreaker:!0},{name:"Amber Armlet",l:eg("Accessories 9"),spd:2,brawler:!0},{name:"Sage's Ring",l:eg("Accessories 14")},{name:"Agate Ring",l:eg("Accessories 14"),vit:20,agateRing:!0},{name:"Opal Ring",l:eg("Accessories 20"),mag:5},{name:"Battle Harness",l:eg("Accessories 4"),str:2},{name:"Gauntlets",l:eg("Accessories 8"),vit:5},{name:"Jade Collar",l:eg("Accessories 10"),spd:3},{name:"Cameo Belt",l:eg("Accessories 16"),mag:3,cameoBelt:!0},{name:"Indigo Pendant",l:eg("Accessories 19"),spd:7},{name:"Genji Gloves",l:eg("Genji Armor"),mag:3,genjiGloves:!0},{name:"Argyle Armlet",l:eg("Accessories 3"),str:1},{name:"Tourmaline Ring",l:eg("Accessories 5")},{name:"Rose Corsage",l:eg("Accessories 7"),mag:1},{name:"Black Belt",l:eg("Accessories 9"),vit:7},{name:"Nishijin Belt",l:eg("Accessories 10"),mag:3},{name:"Gillie Boots",l:eg("Accessories 12"),str:1,spd:10},{name:"Bowline Sash",l:eg("Accessories 15"),mag:2},{name:"Fuzzy Miter",l:eg("Accessories 17"),str:2},{name:"Sash",l:eg("Accessories 18"),spd:20},{name:"Power Armlet",l:eg("Accessories 18"),str:3},{name:"Germinas Boots",l:eg("Accessories 22"),vit:20,spd:50},{name:"Quasimodo Boots",l:eg("Accessories 21")},{name:"Ribbon",l:eg("Ribbon")},{name:"Steel Poleyns",l:eg("Accessories 12")},{name:"Diamond Armlet",l:eg("Accessories 3")},{name:"Thief's Cuffs",l:eg("Accessories 8"),spd:1},{name:"Pheasant Netsuke",l:eg("Accessories 11")},{name:"Nihopalaoa",l:eg("Accessories 21")},{name:"Embroidered Tippet",l:eg("Accessories 5")},{name:"Firefly",l:eg("Accessories 2"),str:1,mag:1},{name:"Golden Amulet",l:eg("Accessories 6")},{name:"Cat-ear Hood",l:eg("Accessories 16"),spd:3},{name:"Turtleshell Choker",l:eg("Accessories 7"),mag:2,spd:3},{name:"Manufacted Nethicite"},{name:"Goddess's Magicite"},{name:"Dawn Shard"}]);function eY(e,a){let l={...e};return a.weapon.mutateProfile(l),a.ammo?.mutateProfile(l),a.helm?.mutateProfile(l),a.armor?.mutateProfile(l),a.accessory?.mutateProfile(l),l.str>99&&(l.str=99),l.mag>99&&(l.mag=99),l.vit>99&&(l.vit=99),l.spd>99&&(l.spd=99),l}function e_(e){let[a,...l]=e;return{initialSwing:a/30,comboSwing:l.length?l.reduce((e,a)=>e+a)/l.length/30:0}}const eX=function(e,a){let l={};for(let t in e)l[t]=a(e[t]);return l}({unarmed:[[36,15,23],[36,15,23],[36,15,32],[36,20,20],[36,18,18],[36,26,28]],sword:[[36,15,16],[36,15,15],[36,18,19],[36,15,15],[36,18,18],[36,20,20]],bigsword:[[36,15,15],[36,15,18],[36,19,19],[36,15,15],[36,18,20],[36,20,20]],dagger:[[36,18,23],[36,15,15],[36,23,23],[36,15,23],[36,15,15,18],[36,20,23]],ninja:[[36,15,22],[36,15,15],[36,19,19],[36,15,15],[36,15,20],[36,15,15]],katana:[[36,17,18],[36,15,15],[36,18,19],[36,15,15],[36,20,20],[36,18,25]],hammer:[[36,22,23],[36,18,18],[36,20,21],[36,15,15],[36,15,18,18],[36,26,26]],mace:[[36,15,15],[36,23,23],[36,21,23],[36,15,15],[36,18,20,30],[36,23,23]],pole:[[36,19,19],[36,19,25],[36,16,17],[36,18,18],[36,23,28],[36,20,22]],spear:[[36,18,22],[36,18,18],[36,17,20],[36,15,20],[36,17,20],[36,23,28]],bow:[[42],[48],[48],[42],[42],[42]],xbow:[[42],[48],[42],[42],[42],[48]],gun:[[42],[48],[42],[42],[42],[48]],measure:[[36],[36],[36],[36],[36],[36]],rod:[[36,18],[36,18],[36,18],[36,18],[36,18],[36,18]],handbomb:[[42],[42],[42],[42],[42],[42]],staff:[[36,18],[36,18],[36,18],[36,18],[36,18],[36,18]]},e=>e.map(e_));function e1(e,a,l,t){let n=e*a,r=e*l;return n>=t?(n+r)/2-t:r<=t?0:(1-(t-n)/(r-n))*(r-t)/2}function e0(e,a,l){e??=a.chargeTime;let t=1/(1.022342422396204*a.spd+5.268190606448866)+.1,n=1;a.swiftness1&&(n-=.12),a.swiftness2&&(n-=.12),a.swiftness3&&(n-=.12);let r=1/(.8+l.battleSpeed/5),o=1;return"attack"===a.ability.alg&&a.berserk&&(o/=2),a.haste&&(o/=1.5),(e*t+.25)*n*r*o}function e2(e,a,l,t){let n=a??l;return n.fireDamage&&(l.fireBonus&&(e*=1.5),e*=t.fireReaction),n.iceDamage&&(l.iceBonus&&(e*=1.5),e*=t.iceReaction),n.lightningDamage&&(l.lightningBonus&&(e*=1.5),e*=t.lightningReaction),n.waterDamage&&(l.waterBonus&&(e*=1.5),e*=t.waterReaction),n.windDamage&&(l.windBonus&&(e*=1.5),e*=t.windReaction),n.earthDamage&&(l.earthBonus&&(e*=1.5),e*=t.earthReaction),n.darkDamage&&(l.darkBonus&&(e*=1.5),e*=t.darkReaction),n.holyDamage&&(l.holyBonus&&(e*=1.5),e*=t.holyReaction),t.oil&&n.fireDamage&&(e*=3),!l.agateRing&&("sand"===t.terrain?n.earthDamage&&(e*=1.2):"water"===t.terrain?n.lightningDamage||n.waterDamage?e*=1.2:n.earthDamage&&(e*=.5):"snow"===t.terrain&&n.iceDamage&&(e*=1.2),("windy"===t.weather||"windy and rainy"===t.weather)&&(n.fireDamage||n.windDamage?e*=1.2:n.waterDamage&&(e*=.5)),("rainy"===t.weather||"windy and rainy"===t.weather)&&(n.lightningDamage?e*=1.2:n.fireDamage&&(e*=.5)),"foggy"===t.weather&&n.waterDamage&&(e*=1.2)),e}function e3(e,{hazardUniqueMask:a,sharedMask:l},t){let n=[],r=[],o=0,i=1023&a,s=2096128&a,c=8191&l;for(let a of e)a.hazardUniqueMask&i?r.push(a):a.hazardUniqueMask&s?(n.unshift(a),o++):a.sharedMask&c&&n.push(a);for(;ol)continue e}n.splice(o--,1);break}return n.push(...r),n.length||n.push(t?void 0:e[0]),n}const e5=eU([{name:"Onion Arrows",animationType:"bow",attack:1},{name:"Parallel Arrows",animationType:"bow",attack:2},{name:"Fiery Arrows",animationType:"bow",attack:1,fireDamage:!0},{name:"Bamboo Arrows",animationType:"bow",attack:2},{name:"Lightning Arrows",animationType:"bow",attack:2,lightningDamage:!0},{name:"Assassin's Arrows",animationType:"bow",attack:3},{name:"Icecloud Arrows",animationType:"bow",attack:4,iceDamage:!0},{name:"Artemis Arrows",animationType:"bow",attack:5,earthDamage:!0},{name:"Onion Bolts",animationType:"xbow",attack:1},{name:"Long Bolts",animationType:"xbow",attack:1},{name:"Stone Bolts",animationType:"xbow",attack:1},{name:"Lead Bolts",animationType:"xbow",attack:2},{name:"Black Bolts",animationType:"xbow",attack:2},{name:"Time Bolts",animationType:"xbow",attack:2},{name:"Sapping Bolts",animationType:"xbow",attack:3},{name:"Grand Bolts",animationType:"xbow",attack:4},{name:"Onion Shot",animationType:"gun",attack:1},{name:"Silent Shot",animationType:"gun",attack:1},{name:"Aqua Shot",animationType:"gun",attack:3,waterDamage:!0},{name:"Wyrmfire Shot",animationType:"gun",attack:3,fireDamage:!0},{name:"Mud Shot",animationType:"gun",attack:2,earthDamage:!0},{name:"Windslicer Shot",animationType:"gun",attack:4,windDamage:!0},{name:"Dark Shot",animationType:"gun",attack:4,darkDamage:!0},{name:"Stone Shot",animationType:"gun",attack:3},{name:"Onion Bombs",animationType:"handbomb",attack:1},{name:"Poison Bombs",animationType:"handbomb",attack:2},{name:"Stun Bombs",animationType:"handbomb",attack:2},{name:"Oil Bombs",animationType:"handbomb",attack:3},{name:"Chaos Bombs",animationType:"handbomb",attack:4},{name:"Stink Bombs",animationType:"handbomb",attack:2},{name:"Water Bombs",animationType:"handbomb",attack:5,waterDamage:!0},{name:"Castellanos",animationType:"handbomb",attack:6}],!0);function e4(e,a,l){let t,n;let r={weapon:l.weapons[0],ammo:void 0,armor:void 0,helm:void 0,accessory:void 0},o=function(e,a){let l,t,n,r;let{ability:o}=e;return"attack"===o.alg?function(e,a){let l=255,t=6161;switch(e.combo>0&&(l|=524288),(a.parry||a.block>0||("windy"===a.weather||"windy and rainy"===a.weather)&&("bow"===e.animationType||"xbow"===e.animationType))&&(l|=1048576),("other"!==a.weather||"other"!==a.terrain)&&(l|=256),a.berserk||(l|=2048),a.haste||(l|=4096),a.bravery||(l|=8192),e.focus||100!==a.percentHp||(l|=32768),!e.adrenaline&&a.percentHp<20&&(l|=65536),e.damageType){case"unarmed":t|=2,e.brawler||(l|=1024);break;case"sword":case"pole":case"dagger":t|=2;break;case"hammer":t|=2,t|=8;break;case"mace":t|=4;break;case"katana":t|=2,t|=4}return{hazardUniqueMask:l,sharedMask:t}}(e,a):"magick"===o.alg?(l=0,t=20,o.fireDamage&&(t|=32),o.iceDamage&&(t|=64),o.lightningDamage&&(t|=128),o.waterDamage&&(t|=256),o.windDamage&&(t|=512),o.earthDamage&&(t|=1024),o.darkDamage&&(t|=2048),o.holyDamage&&(t|=4096),("other"!==a.weather||"other"!==a.terrain)&&(l|=256),a.haste||(l|=4096),a.faith||(l|=16384),e.serenity||100!==a.percentHp||(l|=131072),!e.spellbreaker&&a.percentHp<20&&(l|=262144),{hazardUniqueMask:l,sharedMask:t}):(n=0,r=16,"Telekinesis"===o.name?(r|=1,n|=512):"Souleater"===o.name&&(r|=1,r|=2),a.haste||(n|=4096),{hazardUniqueMask:n,sharedMask:r})}(eY(e,r),a),i=e3(l.weapons,o,!1),s=e3(l.armors,o,!0),c=e3(l.helms,o,!0),m=e3(l.accessories,o,!0);for(let l of i){r.weapon=l;let i=e3(e5.filter(e=>e.animationType===l.animationType),o,!1);for(let l of i)for(let o of(r.ammo=l,s))for(let l of(r.armor=o,c))for(let o of(r.helm=l,m)){r.accessory=o;let l=eY(e,r),i=function(e,a){let{ability:l}=e;return"attack"===l.alg?function(e,a){let l;switch(e.damageType){case"unarmed":{let t=e.brawler?(e.str+a.level)/2:11;l=e1(t,1,1.125,a.def)*e.str*(a.level+e.str)/256;break}case"sword":l=e1(e.attack,1,1.125,a.def)*(1+e.str*(a.level+e.str)/256);break;case"pole":l=e1(e.attack,1,1.125,a.mdef)*(1+e.str*(a.level+e.str)/256);break;case"mace":l=e1(e.attack,1,1.125,a.def)*(1+e.mag*(a.level+e.mag)/256);break;case"katana":l=e1(e.attack,1,1.125,a.def)*(1+e.str*(a.level+e.mag)/256);break;case"hammer":l=e1(e.attack,0,1.111,a.def)*(1+e.str*(a.level+e.str)/128);break;case"dagger":l=e1(e.attack,1,1.125,a.def)*(1+e.str*(a.level+e.spd)/218);break;case"gun":{let a=1.0625*e.attack;l=a*a;break}default:throw Error()}let t=l;"gun"===e.damageType&&a.resistGun&&(t/=8),t=e2(t,void 0,e,a),e.berserk&&(t*=1.5),e.bravery&&(t*=1.3),e.focus&&100===a.percentHp&&(t*=1.5),e.adrenaline&&a.percentHp<20&&(t*=2);let n=t;"gun"===e.damageType||e.cameoBelt||(a.block&&(n*=(100-a.block)/100),a.parry&&(n*=.75),("windy"===a.weather||"windy and rainy"===a.weather)&&("bow"===e.animationType?n*=.8:"xbow"===e.animationType&&(n*=.5)));let r=n,o=eX[e.animationType][a.character],i=o.initialSwing;if(e.combo>0){let l=Math.min(1,e.combo*(e.genjiGloves?1.8:.7)/100);if(0===o.comboSwing||"gun"===e.damageType)r*=1+l;else{let e;let t=o.comboSwing;i+=(e=a.percentHp>25?1.873:a.percentHp>12?2.752:a.percentHp>6?4.509:8.028)*t*l,r*=1+e*l}}let s=e0(void 0,e,a),c=s+i,m=r/c;return{dps:m,baseDmg:l,modifiedDamage:t,nonAvoidedDamage:n,comboDamage:r,chargeTime:s,animationTime:i}}(e,a):"magick"===l.alg?function(e,a,l){let t="heal"===e.special,n=e1(e.att,1,1.125,t?0:l.mdef)*(2+a.mag*(l.level+a.mag)/256),r=n;r=e2(r,e,a,l),(l.undead&&"drain"===e.special||!l.undead&&t)&&(r=0),a.faith&&(r*=t?1.5:1.3),a.serenity&&100===l.percentHp&&(r*=1.5),a.spellbreaker&&l.percentHp<20&&(r*=t?1.5:2);let o=r,i=o,s=e.at/30;if(null!=e.aoe){let a=e.aoe/30,t=l.targetCount-1;s+=t*a,i*=l.targetCount}let c=e0(e.ct,a,l),m=c+s,u=i/m;return{dps:u,baseDmg:n,modifiedDamage:r,nonAvoidedDamage:o,comboDamage:i,chargeTime:c,animationTime:s}}(l,e,a):function(e,a,l){let t=0;switch(e.name){case"1000 Needles":t=1e3;break;case"Souleater":t=l.undead?0:1.4*e1(a.attack,1,1.125,0)*(1+a.str*(l.level+a.str)/256);break;case"Gil Toss":t=Math.min(1e4,l.partyMaxHp*l.percentHp/100);break;case"Horology":t=l.minuteOnesDigit*l.minuteOnesDigit*l.level/2;break;case"Telekinesis":t=(a.attack*l.targetLevel-1)/2}let n=t,r=n,o=l.level-l.targetLevel;o>0&&(o*=3);let i=Math.max(0,Math.min(e.chn+o,100));if(r*=i/100,"Telekinesis"===e.name)switch(a.animationType){case"bow":case"gun":case"xbow":case"handbomb":r=0}let s=r,c=e.at/30;if(null!=e.aoe){let a=e.aoe/30,t=l.targetCount-1;c+=t*a,"Gil Toss"===e.name?t>0&&(c-=20/30):s*=l.targetCount}let m=e0(e.ct,a,l),u=m+c,g=s/u;return{dps:g,baseDmg:t,modifiedDamage:n,nonAvoidedDamage:r,comboDamage:s,chargeTime:m,animationTime:c}}(l,e,a)}(l,a);(!t||i.dps>t.dps)&&(t=i,n={...r})}}return{ability:e.ability,doll:n,dps:t}}const e6={str:[23,24,23,25,21,20],mag:[22,18,20,20,24,21],vit:[24,24,26,20,23,23],spd:[24,24,23,23,23,24]},e8={str:[72,67,63,69,68,65],mag:[67,59,63,56,70,72],vit:[48,45,47,36,44,48],spd:[18,19,18,16,17,16]},e7={name:"Attack",text:"Attack with weapon in hand.",alg:"attack"},e9=[{name:"Cure",text:"Restore a small amount of HP to one ally.",l:eg("White Magick 1"),alg:"magick",ct:23,at:111,att:20,special:"heal"},{name:"Cura",text:"Restore HP to all allies in range.",l:eg("White Magick 4"),alg:"magick",ct:23,at:117,aoe:30,att:46,special:"heal"},{name:"Curaga",text:"Restore a large amount of HP to one ally.",l:eg("White Magick 6"),alg:"magick",ct:23,at:144,att:86,special:"heal"},{name:"Curaja",text:"Restore a large amount of HP to all allies in range.",l:eg("White Magick 9"),alg:"magick",ct:23,at:114,aoe:30,att:120,special:"heal"},{name:"Holy",text:"Deal heavy holy damage to one target.",l:eg("White Magick 11"),alg:"magick",ct:23,at:227,att:157,holyDamage:!0},{name:"Fire",text:"Deal fire damage to one foe.",l:eg("Black Magick 1"),alg:"magick",ct:23,at:75,att:22,fireDamage:!0},{name:"Fira",text:"Deal fire damage to all foes in range.",l:eg("Black Magick 5"),alg:"magick",ct:23,at:75,aoe:30,att:67,fireDamage:!0},{name:"Firaga",text:"Deal heavy fire damage to all foes in range.",l:eg("Black Magick 9"),alg:"magick",ct:23,at:75,aoe:30,att:120,fireDamage:!0},{name:"Thunder",text:"Deal lightning damage to one foe.",l:eg("Black Magick 1"),alg:"magick",ct:23,at:75,att:23,lightningDamage:!0},{name:"Thundara",text:"Deal lightning damage to all foes in range.",l:eg("Black Magick 6"),alg:"magick",ct:23,at:84,aoe:114,att:68,lightningDamage:!0},{name:"Thundaga",text:"Deal heavy lightning damage to all foes in range.",l:eg("Black Magick 9"),alg:"magick",ct:23,at:96,aoe:48,att:122,lightningDamage:!0},{name:"Blizzard",text:"Deal ice damage to one foe.",l:eg("Black Magick 2"),alg:"magick",ct:23,at:102,att:25,iceDamage:!0},{name:"Blizzara",text:"Deal ice damage to all foes in range.",l:eg("Black Magick 6"),alg:"magick",ct:23,at:102,aoe:30,att:70,iceDamage:!0},{name:"Blizzaga",text:"Deal heavy ice damage to all foes in range.",l:eg("Black Magick 10"),alg:"magick",ct:23,at:105,aoe:75,att:125,iceDamage:!0},{name:"Aero",text:"Deal wind damage to all foes in range.",l:eg("Black Magick 4"),alg:"magick",ct:23,at:90,aoe:24,att:51,windDamage:!0},{name:"Aeroga",text:"Deal heavy wind damage to all foes in range.",l:eg("Black Magick 8"),alg:"magick",ct:23,at:108,aoe:36,att:103,windDamage:!0},{name:"Aqua",text:"Deal water damage to one foe.",l:eg("Black Magick 3"),alg:"magick",ct:23,at:153,att:37,waterDamage:!0},{name:"Bio",text:"Inflict Sap and deal damage to all foes in range.",l:eg("Black Magick 7"),alg:"magick",ct:23,at:106,aoe:30,att:67},{name:"Shock",text:"Deal heavy damage to one foe.",l:eg("Black Magick 11"),alg:"magick",ct:23,at:123,att:133},{name:"Scourge",text:"Inflict Sap and deal heavy damage to all foes in range.",l:eg("Black Magick 12"),alg:"magick",ct:23,at:117,aoe:45,att:142},{name:"Flare",text:"Deal massive damage to one foe.",l:eg("Black Magick 12"),alg:"magick",ct:23,at:305,att:163},{name:"Scathe",text:"Deal massive damage to all foes in range.",l:eg("Black Magick 13"),alg:"magick",ct:23,at:218,aoe:0,att:190},{name:"Drain",text:"Transfer HP from one foe to the caster.",l:eg("Green Magick 2"),alg:"magick",ct:23,at:129,att:62,special:"drain"},{name:"Dark",text:"Deal moderate dark damage to all foes in range.",l:eg("Arcane Magick 1"),alg:"magick",ct:23,at:96,aoe:30,att:46,darkDamage:!0},{name:"Darkra",text:"Deal dark damage to all foes in range.",l:eg("Arcane Magick 1"),alg:"magick",ct:23,at:99,aoe:30,att:91,darkDamage:!0},{name:"Darkga",text:"Deal heavy dark damage to all foes in range.",l:eg("Arcane Magick 2"),alg:"magick",ct:23,at:110,aoe:30,att:130,darkDamage:!0},{name:"Ardor",text:"Deal massive fire damage to all foes in range.",l:eg("Arcane Magick 3"),alg:"magick",ct:23,at:141,aoe:19,att:173,fireDamage:!0}],ae=[{name:"1000 Needles",text:"Deal 1,000 damage to one foe.",l:eg("1000 Needles"),alg:"technick",ct:25,chn:100,at:114},{name:"Souleater",text:"Consume HP to deal damage to one foe.",l:eg("Souleater"),alg:"technick",ct:30,chn:200,at:126},{name:"Gil Toss",text:"Throw gil, damaging all foes in range.",l:eg("Gil Toss"),alg:"technick",ct:30,chn:200,at:75,aoe:20},{name:"Horology",text:"Deal damage based on a factor of time to all foes in range.",l:eg("Horology"),alg:"technick",ct:30,chn:90,at:105,aoe:30},{name:"Telekinesis",text:"Deal ranged damage with melee weapons.",l:eg("Telekinesis"),alg:"technick",ct:30,chn:80,at:36}],aa=ed.find(e=>"Battle Lore"===e.name).contents,al=ed.find(e=>"Magick Lore"===e.name).contents;function at(e){return C("div",{"aria-label":e.tooltip,class:"control"},C("label",null,e.label,C("input",{class:`d-${e.max.toString().length}`,type:"number",value:e.value,min:e.min,max:e.max,onChange:a=>{if(a.currentTarget.validity.valid){let l=a.currentTarget.valueAsNumber;l==l&&e.changeValue(l)}}})))}function an(e){return C("div",{"aria-label":e.tooltip,class:"control"},C("label",null,C("input",{type:"checkbox",checked:e.value,onChange:()=>e.changeValue(!e.value)}),e.label))}function ar(e,a){let l=e.map(({value:e,label:a})=>C("option",{value:e},a)),t=a?Number:String;return function(e){return C("div",{"aria-label":e.tooltip,class:"control"},C("label",null,e.label,C("select",{value:e.value,onChange:a=>e.changeValue(t(a.currentTarget.value))},l)))}}const ao=ar([{value:0,label:"Immune"},{value:.5,label:"Strong"},{value:1,label:"Normal"},{value:2,label:"Weak"}],!0),ai=ar([{value:"other",label:"None"},{value:"windy",label:"Wind"},{value:"rainy",label:"Rain"},{value:"foggy",label:"Fog"},{value:"windy and rainy",label:"Downpour"}],!1),as=ar([{value:"other",label:"None"},{value:"sand",label:"Sand"},{value:"water",label:"Water"},{value:"snow",label:"Snow"}],!1),{useStore:ac,dispatch:am}=eL({character:-1,def:30,mdef:30,targetCount:1,percentHp:1,fireReaction:1,iceReaction:1,lightningReaction:1,waterReaction:1,windReaction:1,earthReaction:1,darkReaction:1,holyReaction:1,level:70,targetLevel:60,minuteOnesDigit:6,partyMaxHp:25e3,resistGun:!1,battleSpeed:6,berserk:!0,haste:!0,bravery:!0,faith:!0,parry:!1,block:0,terrain:"other",weather:"other",oil:!1,undead:!1,allowCertainLicenses:!0,allowCheaterGear:!0}),au=(e,a)=>am(l=>({...l,[e]:a}));var ag=(e,a)=>{let l=ac(a);return e=>{let a=l();return C("div",{class:"dps-optimizer"},C("div",{class:"controls"},C(at,{min:0,max:250,label:"Def",tooltip:"Target's physical defense",value:a.def,changeValue:e=>au("def",e)}),C(at,{min:0,max:250,label:"MDef",tooltip:"Target's magical defense",value:a.mdef,changeValue:e=>au("mdef",e)}),C(at,{min:1,max:10,label:"Aoe",tooltip:"Number of targets",value:a.targetCount,changeValue:e=>au("targetCount",e)}),C(at,{min:1,max:100,label:"HP%",tooltip:"Character's HP percentage",value:a.percentHp,changeValue:e=>au("percentHp",e)}),C(at,{min:1,max:99,label:"C. Lvl",tooltip:"Character's level",value:a.level,changeValue:e=>au("level",e)}),C(at,{min:1,max:99,label:"T. Lvl",tooltip:"Target's level",value:a.targetLevel,changeValue:e=>au("targetLevel",e)}),C(at,{min:0,max:9,label:"Time",tooltip:"Ones digit of game clock minutes",value:a.minuteOnesDigit,changeValue:e=>au("minuteOnesDigit",e)}),C(at,{min:100,max:5e4,label:"Party HP",tooltip:"Combined Max HP of entire active party",value:a.partyMaxHp,changeValue:e=>au("partyMaxHp",e)}),C(at,{min:0,max:40,label:"Block",tooltip:"Target's block (EVA)",value:a.block,changeValue:e=>au("block",e)}),C(ai,{label:"Weather",tooltip:"What is the current weather?",value:a.weather,changeValue:e=>au("weather",e)}),C(as,{label:"Terrain",tooltip:"What is the current terrain?",value:a.terrain,changeValue:e=>au("terrain",e)}),C("br",null),C(an,{label:"Resist G&M",tooltip:"Does the target resist guns and measures?",value:a.resistGun,changeValue:e=>au("resistGun",e)}),C(an,{label:"Berserk",tooltip:"Is the berserk buff available?",value:a.berserk,changeValue:e=>au("berserk",e)}),C(an,{label:"Haste",tooltip:"Is the haste buff available?",value:a.haste,changeValue:e=>au("haste",e)}),C(an,{label:"Bravery",tooltip:"Is the bravery buff available?",value:a.bravery,changeValue:e=>au("bravery",e)}),C(an,{label:"Faith",tooltip:"Is the faith buff available?",value:a.faith,changeValue:e=>au("faith",e)}),C(an,{label:"Oil",tooltip:"Is the target oiled?",value:a.oil,changeValue:e=>au("oil",e)}),C(an,{label:"Parry",tooltip:"Can the target parry attacks?",value:a.parry,changeValue:e=>au("parry",e)}),C(an,{label:"Undead",tooltip:"Is the target undead?",value:a.undead,changeValue:e=>au("undead",e)}),C(an,{label:"All Licenses",tooltip:"Allow grey-shaded licenses",value:a.allowCertainLicenses,changeValue:e=>au("allowCertainLicenses",e)}),C(an,{label:"Secret Gear",tooltip:"Allow secret items",value:a.allowCheaterGear,changeValue:e=>au("allowCheaterGear",e)}),C("br",null),eF.map(e=>C(ao,{label:e[0].toUpperCase()+e.slice(1),tooltip:`How much ${e} damage does the target take?`,value:a[`${e}Reaction`],changeValue:a=>au(`${e}Reaction`,a)}))),C(ay,{party:e.party,env:a}))}};function ad(e){let{value:a}=e;return C("td",{"aria-label":a?.tooltip},a?.name)}function ah(e){let{value:a}=e;return C("td",{"aria-label":a.text},a.name)}function ap(e){let{value:a}=e,l=`Base Damage: ${Math.round(a.baseDmg)} +Modified Damage: ${Math.round(a.modifiedDamage)} +Not Avoided Damage: ${Math.round(a.nonAvoidedDamage)} +Comboed Damage: ${Math.round(a.comboDamage)} +Charge Time: ${a.chargeTime.toFixed(2)}s +Animation Time: ${a.animationTime.toFixed(2)}s`;return C("td",{class:"r","aria-label":l},Math.round(a.dps))}const ay=(e,a)=>{let l={results:void 0,for:void 0,nodes:C("tr",null,C("td",null,"Working..."))},t=()=>l.for&&l.for.env===e.env&&l.for.party===e.party;async function n(){let t=[[],[],[],[],[],[]],{party:n,env:r}=e,o=performance.now(),i=!1;for(let a=0;a<6;a++){let l=t[a],s={...r,character:a};for(let a of function*(e,a){let l=a.color(e.character);function t(e){return n(eg(e))}function n(a){let t=l.get(a);return t===D.OBTAINED||e.allowCertainLicenses&&t===D.CERTAIN}function r(e){return!e.l||n(e.l)}let o=eZ.filter(a=>r(a)&&(e.allowCheaterGear||a.attack<=150)),i={weapons:o,armors:e$.filter(r),helms:eq.filter(r),accessories:eJ.filter(r)},s=e9.filter(r),c=ae.filter(r),m={ability:e7,damageType:"unarmed",animationType:"unarmed",attack:0,combo:0,chargeTime:0,...function(e,a){function l(e,l){return Math.floor(a*l/128)+e}return{str:l(e6.str[e],e8.str[e]),mag:l(e6.mag[e],e8.mag[e]),vit:l(e6.vit[e],e8.vit[e]),spd:l(e6.spd[e],e8.spd[e])}}(e.character,e.level),brawler:t("Brawler"),berserk:e.berserk,haste:e.haste,bravery:e.bravery,faith:e.faith,focus:t("Focus"),adrenaline:t("Adrenaline"),serenity:t("Serenity"),spellbreaker:t("Spellbreaker"),genjiGloves:!1,cameoBelt:!1,agateRing:!1,swiftness1:t("Swiftness 1"),swiftness2:t("Swiftness 2"),swiftness3:t("Swiftness 3"),fireDamage:!1,iceDamage:!1,lightningDamage:!1,waterDamage:!1,windDamage:!1,earthDamage:!1,darkDamage:!1,holyDamage:!1,fireBonus:!1,iceBonus:!1,lightningBonus:!1,waterBonus:!1,windBonus:!1,earthBonus:!1,darkBonus:!1,holyBonus:!1};for(let a of(m.str+=aa.filter(n).length,m.mag+=al.filter(n).length,s))m.ability=a,yield e4(m,e,i);for(let a of c)m.ability=a,yield e4(m,e,i);for(let a of(m.ability=e7,i.weapons=[],o))i.weapons[0]=a,yield e4(m,e,i)}(s,n)){if(performance.now()-o>120&&(await new Promise(e=>setTimeout(e,0)),i=!0,o=performance.now(),n!==e.party||r!==e.env))return;l.push(a)}l.sort((e,a)=>a.dps.dps-e.dps.dps)}l={results:t,for:{party:n,env:r},nodes:t.map((e,a)=>C(af,{name:ef[a].name,results:e}))},i&&x(a)}return a=>(e=a,t()||n(),C("div",{class:t()?"results":"results busy"},C("table",null,C("tbody",null,l.nodes))))};function af(e){return C(G,null,C("tr",{class:"sticky"},C("th",{colSpan:9999},e.name)),C("tr",{class:"sticky second-row"},C("th",{class:"r"},"DPS"),C("th",null,"Ability"),C("th",null,"Weapon"),C("th",null,"Ammo"),C("th",null,"Helm"),C("th",null,"Armor"),C("th",null,"Accessory")),e.results.map(({ability:e,doll:a,dps:l})=>C("tr",{class:"data-row"},C(ap,{value:l}),C(ah,{value:e}),C(ad,{value:a.weapon}),C(ad,{value:a.ammo}),C(ad,{value:a.helm}),C(ad,{value:a.armor}),C(ad,{value:a.accessory}))))}function ab(e){return e.split("-")[1]}function ak(e){return"y"===e?"height":"width"}function aA(e){return e.split("-")[0]}function aw(e){return["top","bottom"].includes(aA(e))?"x":"y"}function av(e,a,l){let t,{reference:n,floating:r}=e,o=n.x+n.width/2-r.width/2,i=n.y+n.height/2-r.height/2,s=aw(a),c=ak(s),m=n[c]/2-r[c]/2,u=aA(a),g="x"===s;switch(u){case"top":t={x:o,y:n.y-r.height};break;case"bottom":t={x:o,y:n.y+n.height};break;case"right":t={x:n.x+n.width,y:i};break;case"left":t={x:n.x-r.width,y:i};break;default:t={x:n.x,y:n.y}}switch(ab(a)){case"start":t[s]-=m*(l&&g?-1:1);break;case"end":t[s]+=m*(l&&g?-1:1)}return t}const aT=async(e,a,l)=>{let{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o}=l,i=r.filter(Boolean),s=await (null==o.isRTL?void 0:o.isRTL(a)),c=await o.getElementRects({reference:e,floating:a,strategy:n}),{x:m,y:u}=av(c,t,s),g=t,d={},h=0;for(let l=0;lax[e])}const aG={start:"end",end:"start"};function aC(e){return e.replace(/start|end/g,e=>aG[e])}const aD=Math.min,aR=Math.max,aE=Math.round,aN=e=>({x:e,y:e});function aI(e){return az(e)?(e.nodeName||"").toLowerCase():"#document"}function aj(e){var a;return(null==e||null==(a=e.ownerDocument)?void 0:a.defaultView)||window}function aW(e){var a;return null==(a=(az(e)?e.ownerDocument:e.document)||window.document)?void 0:a.documentElement}function az(e){return e instanceof Node||e instanceof aj(e).Node}function aF(e){return e instanceof Element||e instanceof aj(e).Element}function aV(e){return e instanceof HTMLElement||e instanceof aj(e).HTMLElement}function aO(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof aj(e).ShadowRoot)}function aK(e){let{overflow:a,overflowX:l,overflowY:t,display:n}=aq(e);return/auto|scroll|overlay|hidden|clip/.test(a+t+l)&&!["inline","contents"].includes(n)}function aQ(e){let a=aU(),l=aq(e);return"none"!==l.transform||"none"!==l.perspective||!!l.containerType&&"normal"!==l.containerType||!a&&!!l.backdropFilter&&"none"!==l.backdropFilter||!a&&!!l.filter&&"none"!==l.filter||["transform","perspective","filter"].some(e=>(l.willChange||"").includes(e))||["paint","layout","strict","content"].some(e=>(l.contain||"").includes(e))}function aU(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function aZ(e){return["html","body","#document"].includes(aI(e))}function aq(e){return aj(e).getComputedStyle(e)}function a$(e){return aF(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function aJ(e){if("html"===aI(e))return e;let a=e.assignedSlot||e.parentNode||aO(e)&&e.host||aW(e);return aO(a)?a.host:a}function aY(e){let a=aq(e),l=parseFloat(a.width)||0,t=parseFloat(a.height)||0,n=aV(e),r=n?e.offsetWidth:l,o=n?e.offsetHeight:t,i=aE(l)!==r||aE(t)!==o;return i&&(l=r,t=o),{width:l,height:t,$:i}}function a_(e){return aF(e)?e:e.contextElement}function aX(e){let a=a_(e);if(!aV(a))return aN(1);let l=a.getBoundingClientRect(),{width:t,height:n,$:r}=aY(a),o=(r?aE(l.width):l.width)/t,i=(r?aE(l.height):l.height)/n;return o&&Number.isFinite(o)||(o=1),i&&Number.isFinite(i)||(i=1),{x:o,y:i}}const a1=aN(0);function a0(e){let a=aj(e);return aU()&&a.visualViewport?{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}:a1}function a2(e,a,l,t){var n;void 0===a&&(a=!1),void 0===l&&(l=!1);let r=e.getBoundingClientRect(),o=a_(e),i=aN(1);a&&(t?aF(t)&&(i=aX(t)):i=aX(e));let s=(void 0===(n=l)&&(n=!1),t&&(!n||t===aj(o))&&n)?a0(o):aN(0),c=(r.left+s.x)/i.x,m=(r.top+s.y)/i.y,u=r.width/i.x,g=r.height/i.y;if(o){let e=aj(o),a=t&&aF(t)?aj(t):t,l=e,n=l.frameElement;for(;n&&t&&a!==l;){let e=aX(n),a=n.getBoundingClientRect(),t=aq(n),r=a.left+(n.clientLeft+parseFloat(t.paddingLeft))*e.x,o=a.top+(n.clientTop+parseFloat(t.paddingTop))*e.y;c*=e.x,m*=e.y,u*=e.x,g*=e.y,c+=r,m+=o,n=(l=aj(n)).frameElement}}return aM({width:u,height:g,x:c,y:m})}const a3=[":popover-open",":modal"];function a5(e){return a3.some(a=>{try{return e.matches(a)}catch(e){return!1}})}function a4(e){return a2(aW(e)).left+a$(e).scrollLeft}function a6(e,a,l){let t;if("viewport"===a)t=function(e,a){let l=aj(e),t=aW(e),n=l.visualViewport,r=t.clientWidth,o=t.clientHeight,i=0,s=0;if(n){r=n.width,o=n.height;let e=aU();(!e||e&&"fixed"===a)&&(i=n.offsetLeft,s=n.offsetTop)}return{width:r,height:o,x:i,y:s}}(e,l);else if("document"===a)t=function(e){let a=aW(e),l=a$(e),t=e.ownerDocument.body,n=aR(a.scrollWidth,a.clientWidth,t.scrollWidth,t.clientWidth),r=aR(a.scrollHeight,a.clientHeight,t.scrollHeight,t.clientHeight),o=-l.scrollLeft+a4(e),i=-l.scrollTop;return"rtl"===aq(t).direction&&(o+=aR(a.clientWidth,t.clientWidth)-n),{width:n,height:r,x:o,y:i}}(aW(e));else if(aF(a))t=function(e,a){let l=a2(e,!0,"fixed"===a),t=l.top+e.clientTop,n=l.left+e.clientLeft,r=aV(e)?aX(e):aN(1),o=e.clientWidth*r.x,i=e.clientHeight*r.y,s=n*r.x,c=t*r.y;return{width:o,height:i,x:s,y:c}}(a,l);else{let l=a0(e);t={...a,x:a.x-l.x,y:a.y-l.y}}return aM(t)}function a8(e,a){return aV(e)&&"fixed"!==aq(e).position?a?a(e):e.offsetParent:null}function a7(e,a){let l=aj(e);if(!aV(e)||a5(e))return l;let t=a8(e,a);for(;t&&["table","td","th"].includes(aI(t))&&"static"===aq(t).position;)t=a8(t,a);return t&&("html"===aI(t)||"body"===aI(t)&&"static"===aq(t).position&&!aQ(t))?l:t||function(e){let a=aJ(e);for(;aV(a)&&!aZ(a);){if(aQ(a))return a;a=aJ(a)}return null}(e)||l}const a9=async function(e){let a=this.getOffsetParent||a7,l=this.getDimensions;return{reference:function(e,a,l){let t=aV(a),n=aW(a),r="fixed"===l,o=a2(e,!0,r,a),i={scrollLeft:0,scrollTop:0},s=aN(0);if(t||!t&&!r){if(("body"!==aI(a)||aK(n))&&(i=a$(a)),t){let e=a2(a,!0,r,a);s.x=e.x+a.clientLeft,s.y=e.y+a.clientTop}else n&&(s.x=a4(n))}let c=o.left+i.scrollLeft-s.x,m=o.top+i.scrollTop-s.y;return{x:c,y:m,width:o.width,height:o.height}}(e.reference,await a(e.floating),e.strategy),floating:{x:0,y:0,...await l(e.floating)}}},le={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:a,rect:l,offsetParent:t,strategy:n}=e,r="fixed"===n,o=aW(t),i=!!a&&a5(a.floating);if(t===o||i&&r)return l;let s={scrollLeft:0,scrollTop:0},c=aN(1),m=aN(0),u=aV(t);if((u||!u&&!r)&&(("body"!==aI(t)||aK(o))&&(s=a$(t)),aV(t))){let e=a2(t);c=aX(t),m.x=e.x+t.clientLeft,m.y=e.y+t.clientTop}return{width:l.width*c.x,height:l.height*c.y,x:l.x*c.x-s.scrollLeft*c.x+m.x,y:l.y*c.y-s.scrollTop*c.y+m.y}},getDocumentElement:aW,getClippingRect:function(e){let{element:a,boundary:l,rootBoundary:t,strategy:n}=e,r="clippingAncestors"===l?function(e,a){let l=a.get(e);if(l)return l;let t=(function e(a,l,t){var n;void 0===l&&(l=[]),void 0===t&&(t=!0);let r=function e(a){let l=aJ(a);return aZ(l)?a.ownerDocument?a.ownerDocument.body:a.body:aV(l)&&aK(l)?l:e(l)}(a),o=r===(null==(n=a.ownerDocument)?void 0:n.body),i=aj(r);return o?l.concat(i,i.visualViewport||[],aK(r)?r:[],i.frameElement&&t?e(i.frameElement):[]):l.concat(r,e(r,[],t))})(e,[],!1).filter(e=>aF(e)&&"body"!==aI(e)),n=null,r="fixed"===aq(e).position,o=r?aJ(e):e;for(;aF(o)&&!aZ(o);){let a=aq(o),l=aQ(o);l||"fixed"!==a.position||(n=null);let i=r?!l&&!n:!l&&"static"===a.position&&!!n&&["absolute","fixed"].includes(n.position)||aK(o)&&!l&&function e(a,l){let t=aJ(a);return!(t===l||!aF(t)||aZ(t))&&("fixed"===aq(t).position||e(t,l))}(e,o);i?t=t.filter(e=>e!==o):n=a,o=aJ(o)}return a.set(e,t),t}(a,this._c):[].concat(l),o=[...r,t],i=o[0],s=o.reduce((e,l)=>{let t=a6(a,l,n);return e.top=aR(t.top,e.top),e.right=aD(t.right,e.right),e.bottom=aD(t.bottom,e.bottom),e.left=aR(t.left,e.left),e},a6(a,i,n));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:a7,getElementRects:a9,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:a,height:l}=aY(e);return{width:a,height:l}},getScale:aX,isElement:aF,isRTL:function(e){return"rtl"===aq(e).direction}},la=(e,a,l)=>{let t=new Map,n={platform:le,...l},r={...n.platform,_c:t};return aT(e,a,{...n,platform:r})};Array.prototype.at||Object.defineProperty(Array.prototype,"at",{configurable:!0,enumerable:!1,value:function(e){let{length:a}=this;if(e<0&&(e+=a),e>=0&&et}},e,(void 0)??null,void 0);t=a,n.scheduleLayerUpdate(),S()}(document.body,C(G,null,C((e,a)=>{let l;let t=eC(a);return()=>{let{party:e,qeActive:a,dpsActive:n}=t();return e!==l&&(requestIdleCallback(()=>{let a=window.location.href.split("?")[0],l=e.encode();window.history.replaceState(null,"",a+("AA.AA.AA.AA.AA.AA"===l?"":"?"+l))}),l=e),C("div",{class:"character-planner"},C(eE,null),a?C(ez,null):n?C(ag,{party:e}):C(ej,null))}},null),C((e,a)=>{let l=null,t=e=>l=e,n=null,r=null;function o(e){for(r=e.target;r&&null==(n=r.getAttribute("aria-label"));)r=r.parentElement;x(a)}async function i(){if(r&&l){var e,a;let t=await la(r,l,{middleware:[(void 0===e&&(e={}),{name:"flip",options:e,async fn(a){var l,t,n,r;let{placement:o,middlewareData:i,rects:s,initialPlacement:c,platform:m,elements:u}=a,{mainAxis:g=!0,crossAxis:d=!0,fallbackPlacements:h,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:y="none",flipAlignment:f=!0,...b}=aS(e,a),k=aA(o),A=aA(c)===c,w=await (null==m.isRTL?void 0:m.isRTL(u.floating)),v=h||(A||!f?[aP(c)]:function(e){let a=aP(e);return[aC(e),a,aC(a)]}(c));h||"none"===y||v.push(...function(e,a,l,t){let n=ab(e),r=function(e,a,l){let t=["left","right"],n=["right","left"];switch(e){case"top":case"bottom":if(l)return a?n:t;return a?t:n;case"left":case"right":return a?["top","bottom"]:["bottom","top"];default:return[]}}(aA(e),"start"===l,t);return n&&(r=r.map(e=>e+"-"+n),a&&(r=r.concat(r.map(aC)))),r}(c,f,y,w));let T=[c,...v],S=await aL(a,b),M=[],L=(null==(l=i.flip)?void 0:l.overflows)||[];if(g&&M.push(S[k]),d){let{main:e,cross:a}=function(e,a,l){void 0===l&&(l=!1);let t=ab(e),n=aw(e),r=ak(n),o="x"===n?t===(l?"end":"start")?"right":"left":"start"===t?"bottom":"top";return a.reference[r]>a.floating[r]&&(o=aP(o)),{main:o,cross:aP(o)}}(o,s,w);M.push(S[e],S[a])}if(L=[...L,{placement:o,overflows:M}],!M.every(e=>e<=0)){let e=((null==(t=i.flip)?void 0:t.index)||0)+1,a=T[e];if(a)return{data:{index:e,overflows:L},reset:{placement:a}};let l=null==(n=L.filter(e=>e.overflows[0]<=0).sort((e,a)=>e.overflows[1]-a.overflows[1])[0])?void 0:n.placement;if(!l)switch(p){case"bestFit":{let e=null==(r=L.map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,a)=>e+a,0)]).sort((e,a)=>e[1]-a[1])[0])?void 0:r[0];e&&(l=e);break}case"initialPlacement":l=c}if(o!==l)return{reset:{placement:l}}}return{}}}),(void 0===a&&(a={}),{name:"shift",options:a,async fn(e){let{x:l,y:t,placement:n}=e,{mainAxis:r=!0,crossAxis:o=!1,limiter:i={fn:e=>{let{x:a,y:l}=e;return{x:a,y:l}}},...s}=aS(a,e),c={x:l,y:t},m=await aL(e,s),u=aw(aA(n)),g="x"===u?"y":"x",d=c[u],h=c[g];if(r){let e=d+m["y"===u?"top":"left"],a=d-m["y"===u?"bottom":"right"];d=aH(e,aB(d,a))}if(o){let e=h+m["y"===g?"top":"left"],a=h-m["y"===g?"bottom":"right"];h=aH(e,aB(h,a))}let p=i.fn({...e,[u]:d,[g]:h});return{...p,data:{x:p.x-l,y:p.y-t}}}})],strategy:"fixed"});l.style.transform=`translate(${Math.round(t.x)}px,${Math.round(t.y)}px)`}}return document.addEventListener("mouseover",o,{passive:!0}),document.documentElement.addEventListener("mouseleave",o,{passive:!0}),document.addEventListener("scroll",i,{passive:!0,capture:!0}),()=>(B(a.depth,i),C("div",{ref:t,class:n?"tooltip":"tooltip hidden"},n))},null))); +//# sourceMappingURL=index.18de7e71.js.map diff --git a/docs/index.378c7830.js b/docs/index.378c7830.js deleted file mode 100644 index f92b4a4..0000000 --- a/docs/index.378c7830.js +++ /dev/null @@ -1,10 +0,0 @@ -let e;function a(e){return e&&e.__esModule?e.default:e}const l=/^on([a-z]+?)(capture)?$/i,t=/^children|value|checked$/;function n(e,a,n,r,o,i){let s;if(!(n===r||t.test(a))){if("ref"===a){n?.(null),B(i,()=>r?.(e));return}if(s=a.match(l)){let[,a,l]=s;a=a.toLowerCase();let t=!!l;n&&e.removeEventListener(a,n,t),r&&e.addEventListener(a,r,t);return}if(!o&&a in e){e[a]=r;return}null==r?e.removeAttribute(a):e.setAttribute(a,r)}}function r(e,a,l){if(a in l){let t=l[a];void 0!==t&&t!==e[a]&&(e[a]=t??"")}}function o(e){return"string"==typeof e?.type}function i(e){return"function"==typeof e?.type}const{isArray:s}=Array;function c(e){return s(e)}function m(e){return null==e||"object"!=typeof e}const u="http://www.w3.org/2000/svg",{min:g,max:d}=Math;class h{cleanup(){}remove(){let e=new Range;return e.setStartBefore(this.start()),e.setEndAfter(this.end()),e.extractContents()}unmount(){this.cleanup(),this.remove()}moveTo(e){let a=this.start().parentElement;a.insertBefore(this.remove(),e)}}class p extends h{vNode;static guard=i;parentLayer;layerRNode;depth;alive=!0;pending=!0;cleanupQueue;opc;context;start(){return this.layerRNode.start()}end(){return this.layerRNode.end()}constructor(e,a,l,t){let n;super(),this.vNode=e,this.parentLayer=t,this.depth=(t?.depth??-1)+1;let{type:r,props:o}=e,i=r(o,this);"function"==typeof i?(this.opc=i,n=i(o,this)):(this.opc=r,n=i),this.layerRNode=new f(void 0,a,l),this.finishLayerUpdate(n)}runLayerUpdate(e){this.alive&&(this.pending||e)&&this.finishLayerUpdate((0,this.opc)(this.vNode.props,this))}finishLayerUpdate(e){this.pending=!1,this.layerRNode=A(this.layerRNode,e,this)}scheduleLayerUpdate(){this.alive&&!this.pending&&(this.pending=!0,L(this))}cleanup(){this.alive=!1;let{cleanupQueue:e}=this;if(e)for(let a=e.length-1;a>=0;a--)(0,e[a])();this.layerRNode.cleanup()}update(e){if(this.vNode.type!==e.type)return!1;let a=this.vNode.props;return this.vNode=e,a!==e.props&&this.runLayerUpdate(!0),!0}}function y(e){return null==e||"boolean"==typeof e?"":String(e)}class f extends h{vNode;static guard=m;text;start(){return this.text}end(){return this.text}constructor(e,a,l){super(),this.vNode=e;let t=new Text(y(e));a.insertBefore(t,l),this.text=t}update(e){return this.text.nodeValue=y(e),this.vNode=e,!0}}const b=[class extends h{vNode;static guard=o;children;element;svg;start(){return this.element}end(){return this.element}constructor(e,a,l,t){super(),this.vNode=e;let{type:o}=e,i="svg"===o||a.namespaceURI===u&&"foreignObject"!==a.tagName,s=i?document.createElementNS(u,o):document.createElement(o);this.svg=i,this.element=s;let{props:c}=e;for(let e in c)n(s,e,void 0,c[e],this.svg,t.depth+1);let{children:m}=c;void 0!==m&&(this.children=k(m,s,null,t)),r(s,"value",c),r(s,"checked",c),a.insertBefore(s,l)}cleanup(){this.children?.cleanup(),this.vNode.props.ref?.(null)}update(e,a){if(this.vNode.type!==e.type)return!1;let l=this.vNode.props,t=e.props,{element:o,svg:i}=this,s=a.depth+1;for(let e in l)e in t||n(o,e,l[e],void 0,i,s);for(let e in t)n(o,e,l[e],t[e],i,s);this.vNode=e;let{children:c}=t;return this.children&&void 0!==c?this.children=A(this.children,c,a):this.children?(this.children.unmount(),this.children=void 0):void 0!==c&&(this.children=k(c,o,null,a)),r(o,"value",t),r(o,"checked",t),!0}},p,class extends h{vNode;static guard=c;children=[];start(){return this.children[0].start()}end(){return this.children.at(-1).end()}constructor(e,a,l,t){super(),this.vNode=e;let{children:n}=this,r=d(e.length,1);for(let o=0;oe.depth-a.depth,v=(e,a)=>a.depth-e.depth;let T=[];function S(){for(;T.length;){let a=T;for(let l of(T=[],a.sort(w),e=[],a))l.runLayerUpdate(!1);for(;e.length;){let a=e;for(let{cb:l}of(e=[],a.sort(v),a))l()}e=void 0}}const M=({rootNode:e})=>e();async function L(e){T.push(e),await 0,S()}function B(a,l){e?.push({depth:a,cb:l})??l()}function H(e,a){e.alive?(e.cleanupQueue??=[]).push(a):a()}function x(e){e.scheduleLayerUpdate()}const P={},G=Symbol("vdomk.Fragment");function C(e,a,...l){let t=a?.key,{length:n}=l;if(e===G){if(void 0===t)return n>1?l:n?l[0]:a?.children;let e=n?l:[a?.children];return e.key=t,e}return n&&(a={...a,children:n>1?l:l[0]}),{type:e,key:t,props:a??P}}var D,R,E={};E='';var N={};N='';var I={};I='';var j={};j='';var W={};W='';var z={};z='';var F={};F='';var V={};V='';var O={};O='';var K={};K='';var Q={};Q='';var U={};U='';var Z={};Z='';var q={};q='';const $=e=>URL.createObjectURL(new Blob([e],{type:"image/svg+xml"})),J=$(a(E)),Y=$(a(N)),_=$(a(I)),X=$(a(j)),ee=$(a(W)),ea=$(a(z)),el=$(a(F)),et=$(a(V)),en=$(a(O)),er=$(a(K)),eo=$(a(Q)),ei=$(a(U)),es=$(a(Z)),ec=$(a(q));let em=0;const eu=[];eu.push({fullName:"Essentials",cost:1,text:"Attack\nItem",limited:!1,sortOrder:em++}),eu.push({fullName:"Second Board",cost:30,text:"Second Board",limited:!1,sortOrder:em++});{let e="",a=1,l=l=>{e=l,a=1},t=(l,...t)=>{eu.push({fullName:e+" "+a,cost:l,text:t.join("\n"),limited:!1,grants:{group:e,what:t},sortOrder:em++}),a++};l("White Magick"),t(15,"Cure","Blindna"),t(20,"Vox","Poisona"),t(25,"Protect","Shell"),t(30,"Cura","Raise"),t(40,"Dispel","Stona"),t(50,"Curaga","Regen"),t(60,"Cleanse","Esuna"),t(70,"Confuse","Faith"),t(80,"Bravery","Curaja"),t(90,"Dispelga","Arise"),t(100,"Holy","Esunaga"),t(110,"Protectga","Shellga"),t(155,"Renew"),l("Black Magick"),t(15,"Fire","Thunder"),t(20,"Blizzard","Blind"),t(25,"Aqua","Silence"),t(30,"Aero","Sleep"),t(40,"Fira","Poison"),t(50,"Thundara","Blizzara"),t(60,"Bio","Blindga"),t(70,"Aeroga","Silencega"),t(90,"Firaga","Thundaga"),t(90,"Blizzaga","Sleepga"),t(100,"Shock","Toxify"),t(120,"Scourge","Flare"),t(165,"Scathe"),l("Time Magick"),t(20,"Slow","Immobilize"),t(30,"Reflect","Disable"),t(40,"Vanish","Balance"),t(50,"Gravity","Haste"),t(60,"Stop","Bleed"),t(70,"Break","Doom"),t(80,"Float","Berserk"),t(90,"Vanishga","Warp"),t(100,"Reflectga","Slowga"),t(125,"Graviga","Hastega"),l("Green Magick"),t(40,"Decoy","Oil"),t(50,"Drain","Reverse"),t(90,"Bubble","Syphon"),l("Arcane Magick"),t(40,"Dark","Darkra"),t(50,"Death","Darkga"),t(110,"Ardor")}{let e=(e,a,l)=>{eu.push({fullName:a,cost:e,text:l,limited:!1,grants:{group:"Technicks",what:[a]},sortOrder:em++})};e(35,"1000 Needles","Deal 1,000 damage to one foe."),e(40,"Achilles","Render one foe vulnerable to an additional element."),e(30,"Bonecrusher","Consume HP to reduce the HP of one foe to 0."),e(50,"Wither","Lower one foe's strength."),e(50,"Expose","Lower one foe's defense."),e(50,"Shear","Lower one foe's magick resist."),e(50,"Addle","Lower one foe's magick power."),e(30,"Charge","Restore user's MP. If the technick fails, MP is reduced to 0."),e(30,"Charm","Cause one foe to confuse friend with foe."),e(35,"Souleater","Consume HP to deal damage to one foe."),e(20,"First Aid","Restore HP to one HP Critical ally."),e(30,"Gil Toss","Throw gil, damaging all foes in range."),e(50,"Horology","Deal damage based on a factor of time to all foes in range."),e(25,"Libra","Reveal more detailed target information."),e(30,"Infuse","Fully consume user's MP, changing one ally's HP to 10 times that amount."),e(40,"Numerology","Deal damage that increases with successive hits."),e(30,"Poach","Capture HP Critical foes to obtain loot."),e(70,"Shades of Black","Cast a random black magick on one foe."),e(40,"Revive","Fully consume user's HP, reviving and fully restoring HP of one KO'd ally."),e(40,"Sight Unseeing","Unleash an attack only available when blind."),e(40,"Stamp","Inflict one foe with any status effects on the user."),e(20,"Steal","Steal from one foe."),e(50,"Traveler","Deal damage based on total steps taken to all foes in range."),e(80,"Telekinesis","Deal ranged damage with melee weapons.")}{let e=(e,a,...l)=>{let t=1;for(let n of l)eu.push({fullName:e+" "+t,cost:n,text:a,limited:!1,grants:{group:e,what:1},sortOrder:em++}),t++};e("Battle Lore","Increase physical attack damage.",30,30,30,30,50,50,50,50,70,70,70,70,100,100,100,100),e("Magick Lore","Increase Magick potency.",30,30,30,30,50,50,50,50,70,70,70,70,100,100,100,100),e("Gambit Slot","Adds an additional gambit slot",15,20,25,30,35,40,45,50,70,100)}{let e=(e,a)=>{eu.push({fullName:`+${e} HP`,cost:a,text:`Increase max HP by ${e}.`,limited:!1,grants:{group:"HP",what:e},sortOrder:em++})};e(30,20),e(70,30),e(110,40),e(150,50),e(190,60),e(230,70),e(270,80),e(310,90),e(350,100),e(390,115),e(435,130),e(500,220)}{let e=1;for(let a of[50,75,100,125])eu.push({fullName:"Quickening "+e,cost:a,text:"Unleash a devastating attack.",limited:!0,grants:{group:"Quickening",what:1},image:ec,sortOrder:em++}),e++}{let e=(e,a,l,t)=>{eu.push({fullName:a,cost:e,text:`Summon ${a} ${l}`,limited:!0,grants:{group:"Esper",what:[a]},image:t,sortOrder:em++})};e(20,"Belias","the Gigas",J),e(30,"Mateus","the Corrupt",ei),e(35,"Adrammelech","the Wroth",er),e(30,"Zalera","the Death Seraph",_),e(50,"C\xfachulainn","the Impure",et),e(65,"Zeromus","The Condemner",X),e(65,"Exodus","the Judge-Sal",el),e(50,"Shemhazai","the Whisperer",en),e(50,"Hashmal","Bringer of Order",ee),e(100,"Famfrit","the Darkening Cloud",eo),e(100,"Chaos","Walker of the Wheel",Y),e(115,"Ultima","High Seraph",ea),e(200,"Zodiark","Keeper of Precepts",es)}{let e=(e,a,l)=>{eu.push({fullName:a,cost:e,text:l,limited:!1,grants:{group:"Passive",what:[a]},sortOrder:em++})};e(70,"Focus","Increases strength when HP is full."),e(70,"Serenity","Increases magick when HP is full."),e(65,"Adrenaline","Increases strength when HP Critical."),e(65,"Spellbreaker","Increases magick power when HP Critical."),e(70,"Last Stand","Increases defense when HP Critical."),e(90,"Brawler","Increases attack power when fighting empty-handed."),e(25,"Shield Block 1","Increases chance to block with a shield."),e(45,"Shield Block 2","Increases chance to block with a shield."),e(75,"Shield Block 3","Increases chance to block with a shield."),e(30,"Inquisitor","Gain MP after dealing damage."),e(30,"Warmage","Gain MP after dealing magick damage."),e(30,"Headsman","Gain MP after defeating a foe."),e(30,"Martyr","Gain MP after taking damage."),e(30,"Swiftness 1","Reduces action time by 10%."),e(50,"Swiftness 2","Reduces action time by 10%."),e(80,"Swiftness 3","Reduces action time by 10%."),e(30,"Channeling 1","Reduces MP cost of Spells"),e(50,"Channeling 2","Reduces MP cost of Spells"),e(80,"Channeling 3","Reduces MP cost of Spells"),e(30,"Spellbound","Increases duration of status effects."),e(20,"Potion Lore 1","Potions restore more HP."),e(35,"Potion Lore 2","Potions restore more HP."),e(70,"Potion Lore 3","Potions restore more HP."),e(20,"Ether Lore 1","Ethers restore more MP."),e(35,"Ether Lore 2","Ethers restore more MP."),e(70,"Ether Lore 3","Ethers restore more MP."),e(20,"Remedy Lore 1","Sleep, Sap, Immobilize, and Disable"),e(30,"Remedy Lore 2","Petrify, Confuse, and Oil"),e(70,"Remedy Lore 3","Stop, Doom, and Disease."),e(30,"Phoenix Lore 1","Phoenix Down restores more HP."),e(50,"Phoenix Lore 2","Phoenix Down restores more HP."),e(90,"Phoenix Lore 3","Phoenix Down restores more HP.")}{let e=(e,a,l,...t)=>{eu.push({fullName:l,cost:e,text:t.join("\n"),limited:!1,grants:{group:a,what:t},sortOrder:em++})};e(5,"Accessories","Accessories 1","Orrachea Armlet"),e(20,"Accessories","Accessories 2","Bangle","Firefly"),e(25,"Accessories","Accessories 3","Diamond Armlet","Argyle Armlet"),e(35,"Accessories","Accessories 4","Battle Harness","Steel Gorget"),e(35,"Accessories","Accessories 5","Tourmaline Ring","Embroidered Tippet"),e(35,"Accessories","Accessories 6","Golden Amulet","Leather Gorget"),e(40,"Accessories","Accessories 7","Rose Corsage","Turtleshell Choker"),e(45,"Accessories","Accessories 8","Thief's Cuffs","Gauntlets"),e(30,"Accessories","Accessories 9","Amber Armlet","Black Belt"),e(40,"Accessories","Accessories 10","Jade Collar","Nishijin Belt"),e(45,"Accessories","Accessories 11","Pheasant Netsuke","Blazer Gloves"),e(60,"Accessories","Accessories 12","Gillie Boots","Steel Poleyns"),e(60,"Accessories","Accessories 13","Berserker Bracers","Magick Gloves"),e(70,"Accessories","Accessories 14","Sage's Ring","Agate Ring"),e(70,"Accessories","Accessories 15","Ruby Ring","Bowline Sash"),e(70,"Accessories","Accessories 16","Cameo Belt","Cat-ear Hood"),e(80,"Accessories","Accessories 17","Bubble Belt","Fuzzy Miter"),e(80,"Accessories","Accessories 18","Sash","Power Armlet"),e(100,"Accessories","Accessories 19","Indigo Pendant","Winged Boots"),e(115,"Accessories","Accessories 20","Opal Ring","Hermes Sandals"),e(130,"Accessories","Accessories 21","Quasimodo Boots","Nihopalaoa"),e(160,"Accessories","Accessories 22","Germinas Boots","Ring of Renewal"),e(215,"Accessories","Ribbon","Ribbon"),e(15,"Shields","Shields 1","Leather Shield","Buckler"),e(20,"Shields","Shields 2","Bronze Shield","Round Shield"),e(25,"Shields","Shields 3","Golden Shield","Ice Shield","Flame Shield"),e(30,"Shields","Shields 4","Diamond Shield","Platinum Shield","Dragon Shield"),e(35,"Shields","Shields 5","Crystal Shield","Kaiser Shield"),e(40,"Shields","Shields 6","Aegis Shield","Demon Shield"),e(65,"Shields","Shields 7","Venetian Shield"),e(90,"Shields","Shell Shield","Shell Shield"),e(100,"Shields","Ensanguined Shield","Ensanguined Shield"),e(235,"Shields","Zodiac Escutcheon","Zodiac Escutcheon"),e(10,"Light Armor","Light Armor 1","Leather Cap","Leather Clothing"),e(15,"Light Armor","Light Armor 2","Headgear","Headguard","Chromed Leathers","Leather Breastplate"),e(20,"Light Armor","Light Armor 3","Leather Headgear","Horned Hat","Bronze Chestplate","Ringmail"),e(25,"Light Armor","Light Armor 4","Balaclava","Soldier's Cap","Windbreaker","Heavy Coat"),e(30,"Light Armor","Light Armor 5","Green Beret","Red Cap","Survival Vest","Brigandine"),e(40,"Light Armor","Light Armor 6","Headband","Pirate Hat","Jujitsu Gi","Viking Coat"),e(50,"Light Armor","Light Armor 7","Goggle Mask","Adamant Hat","Metal Jerkin","Adamant Vest"),e(60,"Light Armor","Light Armor 8","Officer's Hat","Chakra Band","Barrel Coat","Power Vest"),e(70,"Light Armor","Light Armor 9","Thief's Cap","Gigas Hat","Ninja Gear","Gigas Chestplate"),e(75,"Light Armor","Light Armor 10","Chaperon","Minerva Bustier"),e(80,"Light Armor","Light Armor 11","Crown of Laurels","Rubber Suit"),e(90,"Light Armor","Light Armor 12","Renewing Morion","Mirage Vest"),e(110,"Light Armor","Light Armor 13","Dueling Mask","Brave Suit"),e(25,"Heavy Armor","Heavy Armor 1","Leather Helm","Bronze Helm","Leather Armor","Bronze Armor"),e(30,"Heavy Armor","Heavy Armor 2","Sallet","Iron Helm","Scale Armor","Iron Armor"),e(35,"Heavy Armor","Heavy Armor 3","Barbut","Winged Helm","Linen Cuirass","Chainmail"),e(40,"Heavy Armor","Heavy Armor 4","Golden Helm","Burgonet","Golden Armor","Shielded Armor"),e(50,"Heavy Armor","Heavy Armor 5","Close Helmet","Bone Helm","Demon Mail","Bone Mail"),e(55,"Heavy Armor","Heavy Armor 6","Diamond Helm","Diamond Armor"),e(60,"Heavy Armor","Heavy Armor 7","Steel Mask","Mirror Mail"),e(65,"Heavy Armor","Heavy Armor 8","Platinum Helm","Platinum Armor"),e(70,"Heavy Armor","Heavy Armor 9","Giant's Helmet","Carabineer Mail"),e(80,"Heavy Armor","Heavy Armor 10","Dragon Helm","Dragon Mail"),e(90,"Heavy Armor","Heavy Armor 11","Magepower Shishak","Maximillian"),e(110,"Heavy Armor","Heavy Armor 12","Grand Helm","Grand Armor"),e(10,"Mystic Armor","Mystic Armor 1","Cotton Cap","Magick Curch","Cotton Shirt","Light Woven Shirt"),e(15,"Mystic Armor","Mystic Armor 2","Pointy Hat","Topkapi Hat","Silken Shirt","Kilimweave Shirt"),e(20,"Mystic Armor","Mystic Armor 3","Calot Hat","Wizard's Hat","Shepherd's Bolero","Wizard's Robes"),e(25,"Mystic Armor","Mystic Armor 4","Lambent Hat","Feathered Cap","Chanter's Djellaba","Traveler's Vestment"),e(30,"Mystic Armor","Mystic Armor 5","Mage's Hat","Lamia's Tiara","Mage's Habit","Enchanter's Habit"),e(40,"Mystic Armor","Mystic Armor 6","Sorcerer's Hat","Black Cowl","Sorcerer's Habit","Black Garb"),e(50,"Mystic Armor","Mystic Armor 7","Astrakhan Hat","Gaia Hat","Carmagnole","Maduin Gear"),e(60,"Mystic Armor","Mystic Armor 8","Hypnocrown","Gold Hairpin","Jade Gown","Gaia Gear"),e(70,"Mystic Armor","Mystic Armor 9","Celebrant's Miter","Cleric's Robes"),e(75,"Mystic Armor","Mystic Armor 10","Black Mask","Black Robes"),e(80,"Mystic Armor","Mystic Armor 11","White Mask","White Robes"),e(90,"Mystic Armor","Mystic Armor 12","Golden Skullcap","Glimmering Robes"),e(110,"Mystic Armor","Mystic Armor 13","Circlet","Lordly Robes"),e(190,"Genji Armor","Genji Armor","Genji Shield","Genji Helm","Genji Armor","Genji Gloves"),e(15,"Swords","Swords 1","Broadsword"),e(25,"Swords","Swords 2","Longsword","Iron Sword"),e(35,"Swords","Swords 3","Zwill Blade","Ancient Sword"),e(50,"Swords","Swords 4","Lohengrin","Flametongue"),e(55,"Swords","Swords 5","Demonsbane","Icebrand"),e(60,"Swords","Swords 6","Platinum Sword","Bastard Sword"),e(70,"Swords","Swords 7","Diamond Sword","Runeblade"),e(80,"Swords","Swords 8","Deathbringer","Stoneblade"),e(90,"Swords","Swords 9","Durandal","Simha"),e(50,"Swords","Blood Sword","Blood Sword"),e(80,"Swords","Karkata","Karkata"),e(20,"Bows","Bows 1","Shortbow"),e(30,"Bows","Bows 2","Silver Bow","Aevis Killer"),e(35,"Bows","Bows 3","Longbow","Killer Bow"),e(45,"Bows","Bows 4","Elfin Bow","Loxley Bow"),e(60,"Bows","Bows 5","Giant Stonebow","Burning Bow"),e(70,"Bows","Bows 6","Traitor's Bow","Yoichi Bow"),e(90,"Bows","Bows 7","Perseus Bow","Artemis Bow"),e(130,"Bows","Sagittarius","Sagittarius"),e(200,"Bows","Dhanusha","Dhanusha"),e(20,"Spears","Spears 1","Javelin","Spear"),e(25,"Spears","Spears 2","Partisan","Heavy Lance"),e(35,"Spears","Spears 3","Storm Spear","Obelisk"),e(60,"Spears","Spears 4","Halberd","Trident"),e(40,"Spears","Spears 5","Holy Lance","Gungnir"),e(70,"Spears","Dragon Whisker","Dragon Whisker"),e(100,"Spears","Vrsabha","Vrsabha"),e(240,"Spears","Zodiac Spear","Zodiac Spear"),e(20,"Axes & Hammers","Axes & Hammers 1","Handaxe"),e(25,"Axes & Hammers","Axes & Hammers 2","Iron Hammer","Broadaxe"),e(35,"Axes & Hammers","Axes & Hammers 3","War Hammer","Slasher"),e(50,"Axes & Hammers","Axes & Hammers 4","Sledgehammer","Hammerhead"),e(60,"Axes & Hammers","Axes & Hammers 5","Francisca","Morning Star"),e(65,"Axes & Hammers","Axes & Hammers 6","Greataxe","Golden Axe"),e(85,"Axes & Hammers","Axes & Hammers 7","Scorpion Tail"),e(175,"Axes & Hammers","Vrscika","Vrscika"),e(35,"Katana","Katana 1","Kotetsu","Osafune"),e(50,"Katana","Katana 2","Kogarasumaru","Magoroku"),e(70,"Katana","Katana 3","Murasame","Kiku-ichimonji"),e(90,"Katana","Katana 4","Yakei","Ame-no-Murakumo"),e(100,"Katana","Katana 5","Muramasa"),e(130,"Katana","Masamune","Masamune"),e(200,"Katana","Kumbha","Kumbha"),e(50,"Greatswords","Greatswords 1","Claymore"),e(70,"Greatswords","Greatswords 2","Defender","Save the Queen"),e(80,"Greatswords","Greatswords 3","Ultima Blade"),e(100,"Greatswords","Greatswords 4","Ragnarok"),e(135,"Greatswords","Excalibur","Excalibur"),e(150,"Greatswords","Excalipur","Excalipur"),e(225,"Greatswords","Tournesol","Tournesol"),e(20,"Rods","Rods 1","Rod","Serpent Rod"),e(30,"Rods","Rods 2","Healing Rod","Gaia Rod"),e(40,"Rods","Rods 3","Power Rod","Empyrean Rod"),e(50,"Rods","Rods 4","Holy Rod"),e(130,"Rods","Rod of Faith","Rod of Faith"),e(15,"Staves","Staves 1","Oak Staff"),e(25,"Staves","Staves 2","Cherry Staff","Wizard's Staff"),e(30,"Staves","Staves 3","Flame Staff","Storm Staff"),e(40,"Staves","Staves 4","Glacial Staff","Golden Staff"),e(65,"Staves","Staves 5","Judicer's Staff","Cloud Staff"),e(115,"Staves","Staff of the Magi","Staff of the Magi"),e(30,"Maces","Maces 1","Mace","Bronze Mace"),e(40,"Maces","Maces 2","Bhuj","Miter"),e(60,"Maces","Maces 3","Thorned Mace","Chaos Mace"),e(65,"Maces","Maces 4","Doom Mace","Zeus Mace"),e(50,"Maces","Maces 5","Grand Mace","Bone of Byblos"),e(40,"Measures","Measures 1","Gilt Measure"),e(50,"Measures","Measures 2","Arc Scale","Multiscale"),e(70,"Measures","Measures 3","Cross Scale","Caliper"),e(100,"Measures","Measures 4","Euclid's Sextant"),e(15,"Daggers","Daggers 1","Dagger"),e(20,"Daggers","Daggers 2","Mage Masher","Assassin's Dagger"),e(35,"Daggers","Daggers 3","Chopper","Main Gauche"),e(45,"Daggers","Daggers 4","Gladius","Avenger"),e(60,"Daggers","Daggers 5","Orichalcum Dirk","Platinum Dagger"),e(80,"Daggers","Daggers 6","Zwill Crossblade"),e(220,"Daggers","Shikari Nagasa & Mina","Shikari Nagasa","Mina"),e(30,"Guns","Guns 1","Altair"),e(50,"Guns","Guns 2","Capella","Vega"),e(60,"Guns","Guns 3","Sirius","Betelgeuse"),e(70,"Guns","Guns 4","Ras Algethi","Aldebaran"),e(90,"Guns","Guns 5","Spica","Antares"),e(100,"Guns","Guns 6","Arcturus","Fomalhaut"),e(190,"Guns","Mithuna","Mithuna"),e(20,"Poles","Poles 1","Oaken Pole"),e(30,"Poles","Poles 2","Battle Bamboo","Cypress Pole"),e(35,"Poles","Poles 3","Musk Stick","Iron Pole"),e(40,"Poles","Poles 4","Six-fluted Pole","Gokuu Pole"),e(50,"Poles","Poles 5","Zephyr Pole","Ivory Pole"),e(60,"Poles","Poles 6","Sweep","Eight-fluted Pole"),e(90,"Poles","Whale Whisker","Whale Whisker"),e(180,"Poles","Kanya","Kanya"),e(25,"Crossbows","Crossbows 1","Bowgun","Crossbow"),e(40,"Crossbows","Crossbows 2","Paramina Crossbow","Recurve Crossbow"),e(60,"Crossbows","Crossbows 3","Hunting Crossbow","Penetrator Crossbow"),e(115,"Crossbows","Crossbows 4","Gastrophetes","Tula"),e(35,"Hand-bombs","Hand-bombs 1","Hornito"),e(55,"Hand-bombs","Hand-bombs 2","Fumarole","Tumulus"),e(75,"Hand-bombs","Hand-bombs 3","Caldera","Volcano"),e(105,"Hand-bombs","Hand-bombs 4","Makara"),e(100,"Ninja Swords","Ninja Swords 1","Ashura","Sakura-saezuri","Kagenui","Orochi"),e(120,"Ninja Swords","Ninja Swords 2","Iga Blade"),e(120,"Ninja Swords","Ninja Swords 3","Koga Blade"),e(180,"Ninja Swords","Yagyu Darkblade & Mesa","Yagyu Darkblade","Mesa")}const eg=new Map;for(const e of eu){if(eg.has(e.fullName))throw Error("Duplicate license name "+e.fullName);eg.set(e.fullName,e)}function ed(e){let a=eg.get(e);if(!a)throw Error("Internal error: Unknown license "+e);return a}const eh=[];{let e;for(let a of eu)a.grants&&(e&&e.name===a.grants.group||(e={name:a.grants.group,contents:[]},eh.push(e)),e.contents.push(a))}const ep=eh.find(e=>"Quickening"===e.name).contents,ey=eh.find(e=>"Esper"===e.name).contents,ef=[...ey,...ep],eb=[{name:"Vaan",innateLicenses:["Essentials","Steal","Daggers 1","Light Armor 1"].map(ed)},{name:"Balthier",innateLicenses:["Essentials","Steal","First Aid","Guns 1","Light Armor 2"].map(ed)},{name:"Fran",innateLicenses:["Essentials","White Magick 1","Black Magick 1","Steal","Bows 1","Light Armor 2"].map(ed)},{name:"Basch",innateLicenses:["Essentials","Libra","Swords 2","Shields 1","Heavy Armor 1"].map(ed)},{name:"Ashe",innateLicenses:["Essentials","White Magick 1","Swords 2","Shields 1","Heavy Armor 1","Accessories 2"].map(ed)},{name:"Penelo",innateLicenses:["Essentials","White Magick 1","First Aid","Daggers 1","Mystic Armor 1"].map(ed)}],ek=[{name:"White Mage",image:J,imageAlt:"Aries",text:"Mages who wield healing and support magicks.",rawBoardData:[[null,null,null,null,null,"Libra",null,null,null,null,null,"+230 HP"],[null,null,null,null,null,"C\xfachulainn",null,null,null,null,null,"Shemhazai",null,"Quickening 4"],[null,null,"Accessories 22","Accessories 20","Accessories 18","Accessories 16","Accessories 14",null,"+190 HP",null,"Accessories 13","Accessories 15","Accessories 17","Battle Lore 1","Ribbon"],["+270 HP","Zeromus","Mystic Armor 13","Magick Lore 13","Stamp","Inquisitor","Accessories 12",null,"Quickening 2",null,"Accessories 11","Spellbreaker","Accessories 19","Accessories 21","Rod of Faith","Chaos","+310 HP"],[null,null,"Mystic Armor 12","Serenity","Ether Lore 2","Magick Lore 5","Accessories 10","Accessories 8","Accessories 6","Accessories 7","Accessories 9","Magick Lore 6","Headsman","Magick Lore 9","+110 HP",null,"Greatswords 2"],[null,null,"Mystic Armor 11","Mystic Armor 10","Mystic Armor 9","Mystic Armor 8","Mystic Armor 7","Mystic Armor 6","Accessories 5","Charge","Rods 3","Channeling 2","Rods 4","Channeling 3","Battle Lore 2"],[null,null,"Magick Lore 14","Swiftness 2","Magick Lore 10",null,null,"Mystic Armor 5","Accessories 4","Ether Lore 1","Second Board",null,"Battle Lore 4","Magick Lore 11","Magick Lore 15","Ultima"],[null,"Zodiark","White Magick 13","Magick Lore 12","+70 HP",null,"Mateus","Mystic Armor 4","Accessories 3","Rods 2","Belias",null,"Warmage","Swiftness 1","Achilles"],[null,"Greatswords 1",null,null,"Famfrit",null,null,"Mystic Armor 3","Accessories 2","Battle Lore 3",null,null,"Exodus"],[null,null,null,"Numerology","Daggers 5",null,null,"Mystic Armor 2","Accessories 1","Rods 1",null,null,"Battle Lore 6"],[null,null,null,null,null,null,null,"Mystic Armor 1","Essentials","Gambit Slot 1"],[null,null,null,null,null,null,null,"Gambit Slot 2","White Magick 1","Magick Lore 1"],[null,null,null,null,"+150 HP","Quickening 1","Gambit Slot 4","Martyr","White Magick 2","Gambit Slot 3","Magick Lore 2"],[null,null,null,null,null,null,"Magick Lore 3","+30 HP","White Magick 3","Channeling 1","Gambit Slot 5"],[null,null,null,"Battle Lore 7","Adrammelech","Magick Lore 7","Gambit Slot 7","Magick Lore 4","White Magick 4","Magick Lore 8","Green Magick 3","Gambit Slot 6"],[null,null,null,"Souleater",null,"Gambit Slot 10","Gambit Slot 9","Green Magick 1","White Magick 5","Green Magick 2","Gambit Slot 8","Spellbound","Zalera"],[null,null,null,null,null,"White Magick 12","White Magick 10","White Magick 8","White Magick 6","White Magick 7","White Magick 9","White Magick 11"],[null,null,null,null,null,null,null,"Hashmal",null,null,"Quickening 3"],[null,null,null,null,null,null,null,null,null,null,"Battle Lore 5"]]},{name:"Uhlan",image:Y,imageAlt:"Taurus",text:"Warriors who wield spears to pierce enemy armor.",rawBoardData:[[null,null,"Zeromus",null,null,null,null,null,null,"Quickening 4"],[null,null,"Heavy Armor 12","Poach","Phoenix Lore 2",null,"Black Magick 6",null,"Adrenaline","Accessories 21","Ribbon"],[null,null,"Heavy Armor 11","Heavy Armor 10","Swiftness 1",null,"Black Magick 5","Quickening 3","Swiftness 2","Accessories 19","Accessories 22","Zodiark"],[null,null,null,"Heavy Armor 9","Shades of Black",null,null,null,"+350 HP","Accessories 17"],[null,null,null,"Heavy Armor 8","Headsman","Shemhazai",null,null,"+310 HP","Accessories 15","Ultima","Expose"],[null,null,null,"Heavy Armor 7","Infuse",null,null,"Exodus","+270 HP","Accessories 13"],["Battle Lore 13","Adrammelech",null,"Heavy Armor 6","Phoenix Lore 1",null,null,null,"+230 HP","Accessories 11"],[null,"Charm","Heavy Armor 4","Heavy Armor 5","+30 HP","+70 HP","+110 HP","+150 HP","+190 HP","Focus","Accessories 12","Accessories 14"],["Quickening 1","Remedy Lore 1","Heavy Armor 3","Accessories 4","Accessories 5","Accessories 6","Accessories 7","Accessories 8","Accessories 9","Accessories 10","Remedy Lore 2","Accessories 16","Chaos","Black Magick 7"],[null,"Battle Lore 4","Heavy Armor 2","Accessories 3",null,"Belias","Second Board",null,null,"Last Stand","Battle Lore 6","Accessories 18",null,"Black Magick 8"],[null,"Martyr","Heavy Armor 1","Accessories 2",null,null,null,null,null,"Battle Lore 1","Battle Lore 8","Accessories 20"],[null,"Spears 1","Essentials","Accessories 1",null,null,null,"Bonecrusher","Hashmal","Achilles","Battle Lore 12","Magick Lore 1"],[null,"Spears 2","Battle Lore 3","Gambit Slot 1",null,null,null,null,null,"Battle Lore 10","Battle Lore 9","Magick Lore 2","Famfrit","Potion Lore 3"],[null,"Spears 3","First Aid","Gambit Slot 2","Gambit Slot 3","Gambit Slot 4","Quickening 2","Gambit Slot 8","Gambit Slot 9","Gambit Slot 10","Battle Lore 11","Magick Lore 4"],[null,"Spears 5","Spears 4","Inquisitor","Potion Lore 1","Gambit Slot 5","Gambit Slot 6","Gambit Slot 7","Battle Lore 2","Battle Lore 7","Battle Lore 15","Magick Lore 3"],[null,null,"Dragon Whisker","Vrsabha","Zodiac Spear","Revive","Zalera","Potion Lore 2","Battle Lore 5","Spellbound","Souleater"],[null,"Magick Lore 7","Mateus",null,null,null,null,null,null,null,"C\xfachulainn","Wither"],[null,null,"Magick Lore 8"]]},{name:"Machinist",image:_,imageAlt:"Gemini",text:"Warriors who snipe their foes with deadly precision.",rawBoardData:[[null,"Green Magick 1",null,"Quickening 2",null,null,null,null,null,null,null,null,null,"+350 HP","Chaos"],[null,"Exodus","Gambit Slot 10","Gambit Slot 7",null,"Belias","Second Board",null,null,null,null,null,null,null,"Battle Lore 4","Mithuna"],[null,null,"Gambit Slot 9","Gambit Slot 5","Gambit Slot 4","Gambit Slot 3","Gambit Slot 2",null,null,"Adrammelech",null,"Poach","Magick Lore 1","Magick Lore 2","Battle Lore 3","Battle Lore 2"],[null,null,"Gambit Slot 8","Gambit Slot 6","Martyr","Accessories 2","Accessories 1","Light Armor 1","Light Armor 2","Light Armor 3","Potion Lore 1","Light Armor 4","Light Armor 5","Guns 5","Magick Lore 4","Guns 6"],[null,null,null,"Mateus",null,"Accessories 3","Essentials","Guns 1","Guns 2","Inquisitor","Guns 3","Guns 4","Headsman"],[null,null,null,null,null,"Accessories 4","Gambit Slot 1",null,null,"Quickening 1",null,"Potion Lore 2","Light Armor 6"],[null,null,null,null,null,"Accessories 5","Measures 1",null,null,null,null,"Achilles","Light Armor 7","Quickening 3"],[null,null,null,null,"Zalera","Accessories 6","Libra",null,null,null,null,"Ether Lore 1","Light Armor 8"],[null,null,null,null,null,"Accessories 7","Measures 2",null,null,null,null,"Gil Toss","Last Stand",null,"Time Magick 9","Time Magick 10"],[null,null,null,null,null,"Accessories 8","Steal","Hashmal",null,null,null,"Potion Lore 3","Light Armor 9","Famfrit","Time Magick 8"],[null,null,null,null,null,"Accessories 9","Measures 3",null,null,null,null,"Numerology","Light Armor 10"],["Hand-bombs 4",null,null,null,"Phoenix Lore 1","Accessories 10","Charm","Remedy Lore 1","Traveler","Remedy Lore 2","Horology","Remedy Lore 3","Light Armor 11","Swiftness 1",null,null,"Zodiark","+390 HP"],["Zeromus","+310 HP","+190 HP","+150 HP","+30 HP","Accessories 11","Accessories 12","Accessories 13","Accessories 14","Accessories 15","Accessories 16","Accessories 17","Light Armor 12","Light Armor 13","Swiftness 2","Stamp","Swiftness 3"],[null,"+270 HP","+230 HP","+110 HP","+70 HP","Spellbound","Measures 4",null,null,"C\xfachulainn",null,"Accessories 18","Accessories 19","Accessories 20","Accessories 21","Accessories 22","Ribbon"],[null,null,null,null,null,"Shemhazai",null,null,null,"Magick Lore 3",null,null,null,"Ultima",null,"Quickening 4"],[null,null,null,null,null,"Hand-bombs 3",null,null,null,null,null,null,null,"Magick Lore 8","Magick Lore 7","Magick Lore 6"]]},{name:"Red Battlemage",image:X,imageAlt:"Cancer",text:"Battlemages equally skilled with maces and magicks.",rawBoardData:[[null,null,null,"Steal",null,"White Magick 2"],[null,null,null,"Hashmal",null,"Quickening 1",null,"Mateus",null,null,"White Magick 7",null,"+230 HP",null,"Heavy Armor 9","Heavy Armor 10"],[null,null,"Accessories 16","Accessories 11","Gambit Slot 6","Gambit Slot 4","Gambit Slot 3","Time Magick 2",null,null,"Shemhazai",null,"Quickening 2",null,"Heavy Armor 8"],[null,null,"Accessories 14","Accessories 10","Gambit Slot 5","Martyr","Gambit Slot 2","White Magick 3","Black Magick 3","Green Magick 2","Black Magick 4","Black Magick 5","Black Magick 6","Time Magick 3","Exodus"],[null,null,"Accessories 22","Accessories 13","Second Board","Belias","Gambit Slot 1","Green Magick 1","White Magick 4","Arcane Magick 2","White Magick 5","Green Magick 3","White Magick 6","Arcane Magick 3"],["Channeling 3","Zeromus","Ribbon","Accessories 20",null,null,"Arcane Magick 1","Time Magick 1",null,null,null,"C\xfachulainn"],[null,null,"Accessories 21","Accessories 19",null,null,"Essentials","Mystic Armor 1",null,null,null,"Black Magick 9","Black Magick 10",null,"Battle Lore 4","Battle Lore 2"],[null,null,"Accessories 18","Accessories 12",null,null,"Accessories 1","Maces 1",null,null,null,null,null,null,"Famfrit"],[null,null,"Accessories 15","Accessories 8","Accessories 6","Accessories 4","Accessories 2","Mystic Armor 2","Mystic Armor 3","Mystic Armor 4","Shields 2","Gambit Slot 7","Shields 3","Gambit Slot 8","Gambit Slot 9","Gambit Slot 10"],[null,"Zalera","Accessories 17","Accessories 9","Accessories 7","Accessories 5","Accessories 3","Charge","Shields 1","Maces 2","Warmage","Mystic Armor 5","Mystic Armor 6","Mystic Armor 7","Mystic Armor 8","Shields 4"],[null,null,null,null,"Adrammelech",null,null,null,null,null,"Battle Lore 3","+110 HP",null,null,"Mystic Armor 9","Shields 5"],[null,null,null,null,null,null,"Greatswords 4",null,null,null,"Maces 3","Ether Lore 1",null,null,"Mystic Armor 10","Shields 6",null,"Greatswords 2"],[null,null,null,"+435 HP",null,null,"Zodiark",null,null,null,"Inquisitor","Spellbreaker",null,null,"Mystic Armor 11","Shields 7","Ultima","Greatswords 1"],[null,null,null,"Quickening 4","Ensanguined Shield","Magick Lore 11","Magick Lore 10","Magick Lore 6","Magick Lore 7","Magick Lore 2","Maces 4","Channeling 1",null,null,"Mystic Armor 12","Shell Shield"],[null,null,null,null,"Zodiac Escutcheon","Magick Lore 12","Magick Lore 9","Magick Lore 5","Magick Lore 8","Magick Lore 3","Magick Lore 1","+190 HP","Swiftness 1","Serenity","Mystic Armor 13","Souleater"],[null,null,null,null,null,null,null,null,"Quickening 3",null,"Magick Lore 4","Maces 5","Channeling 2","Headsman","+270 HP","Spellbound"],[null,null,null,null,null,null,null,null,null,null,null,null,null,"Chaos"],[null,null,null,null,null,null,null,null,null,null,null,null,null,"Greatswords 3"]]},{name:"Knight",image:ee,imageAlt:"Leo",text:"Stalwart warriors who wield swords and shield.",rawBoardData:[[null,null,null,null,null,null,null,null,null,null,"Potion Lore 2"],[null,null,"Souleater","Adrenaline","Headsman",null,"Quickening 2",null,null,null,"Shemhazai"],[null,null,"+270 HP","Heavy Armor 4","Shield Block 1","Heavy Armor 5","Battle Lore 3","Heavy Armor 6","Battle Lore 4","Heavy Armor 7","Battle Lore 2","Heavy Armor 8"],["White Magick 7",null,"Gambit Slot 6","Martyr","Swords 3","Shields 3","Swords 4","Shields 4","Swords 5","Shields 5","Swords 6","Battle Lore 1"],["White Magick 6","Mateus","Gambit Slot 5","Heavy Armor 3","Shields 2",null,null,null,null,null,"Shields 6","Heavy Armor 9","Quickening 3"],[null,null,"Gambit Slot 4","+230 HP","Swords 2","Belias","Potion Lore 1",null,null,null,"Swords 7","Battle Lore 5"],[null,null,"Gambit Slot 3","Heavy Armor 2","Shields 1","Second Board",null,null,"Battle Lore 9","C\xfachulainn","Shields 7","Greatswords 1"],[null,null,"Gambit Slot 2","Inquisitor","Swords 1",null,null,null,null,null,"Swords 8","Heavy Armor 10","Exodus","+350 HP"],["+190 HP","+110 HP","+70 HP","Heavy Armor 1","Essentials","Accessories 1","Accessories 2",null,null,null,"Shield Block 2","Greatswords 2"],["Gambit Slot 7","Last Stand","+30 HP","Gambit Slot 1","First Aid","Accessories 3","Accessories 4",null,null,null,"Swords 9","Battle Lore 6",null,"Famfrit"],["Gambit Slot 8","+150 HP",null,null,null,"Accessories 5","Accessories 6","Quickening 1",null,null,"+310 HP","Greatswords 3","Heavy Armor 11","Greatswords 4","Heavy Armor 12"],["Gambit Slot 9","Infuse",null,null,null,"Accessories 7","Accessories 8",null,null,"Zeromus","Spellbound","Battle Lore 7","Shell Shield","Battle Lore 10","Excalibur",null,"Battle Lore 11"],["Gambit Slot 10","Focus",null,"Zalera",null,"Accessories 9","Accessories 10",null,null,null,"Shield Block 3","Sight Unseeing","Battle Lore 8","Battle Lore 12","Genji Armor","Ultima","Telekinesis"],["Blood Sword","Accessories 21","Accessories 19","Accessories 17","Accessories 13","Accessories 11","Accessories 12","Adrammelech",null,null,"Karkata","Ensanguined Shield","Swiftness 1","Zodiac Escutcheon","Tournesol"],["Ribbon","Accessories 22","Accessories 20","Accessories 18","Accessories 16","Accessories 14","Accessories 15",null,null,null,null,"Chaos","Quickening 4","Zodiark"],[null,"Hashmal",null,null,null,null,null,null,null,null,null,"+390 HP","Revive","Excalipur"],[null,"White Magick 8","White Magick 9"]]},{name:"Monk",image:ea,imageAlt:"Virgo",text:"Warriors who temper their bodies into deadly weapons.",rawBoardData:[[null,null,null,"C\xfachulainn",null,null,null,null,"Belias","Second Board"],[null,null,"Brawler","Battle Lore 1",null,"Inquisitor","Martyr",null,"First Aid","Libra"],[null,null,"Battle Lore 5","Light Armor 4","Light Armor 3","Light Armor 2","Light Armor 1","Gambit Slot 1","Gambit Slot 2","Gambit Slot 3","Quickening 1"],["Traveler","Zalera","Battle Lore 2","Light Armor 5","Battle Lore 3","+30 HP","Essentials","Accessories 1","Accessories 2","Gambit Slot 4"],[null,null,"Battle Lore 4","Light Armor 6",null,"+70 HP","Poles 1",null,"Accessories 3","Gambit Slot 5",null,"Adrammelech",null,null,"Phoenix Lore 2"],["White Magick 9","Quickening 2","Numerology","Light Armor 7",null,"+110 HP","Poles 2",null,"Accessories 4","Potion Lore 1","Gambit Slot 6","Focus","Gambit Slot 7","Gambit Slot 8","Quickening 4"],[null,null,"Battle Lore 6","Light Armor 8",null,"+150 HP","Poles 3",null,"Accessories 5","Phoenix Lore 1","Last Stand","Spellbound","+310 HP","Gambit Slot 9","Zeromus","Sight Unseeing"],["White Magick 4","Hashmal","Headsman","Light Armor 9",null,"+190 HP","Poles 4",null,"Accessories 6","Accessories 7",null,null,"+350 HP","Gambit Slot 10"],[null,null,"Battle Lore 7","Light Armor 10",null,"Potion Lore 2","Poles 5",null,"Accessories 8","Accessories 9",null,"Quickening 3","+390 HP","Swiftness 1","Chaos","White Magick 11"],["Potion Lore 3","Shemhazai","Battle Lore 8","Light Armor 11",null,"+230 HP","Poles 6",null,"Accessories 10","Accessories 11","Mateus",null,"+500 HP","Battle Lore 9",null,"White Magick 12"],[null,null,"Battle Lore 10","Light Armor 12",null,"Revive","Bonecrusher",null,"Accessories 12","Accessories 13",null,null,"Accessories 22","Battle Lore 11"],[null,null,"Battle Lore 12","Light Armor 13",null,"+270 HP","Whale Whisker",null,"Achilles","Accessories 14","Accessories 15","Accessories 17","Accessories 19","Ribbon","Battle Lore 13","Ultima","Swiftness 2"],[null,null,"Wither","+435 HP",null,"Expose","Kanya",null,"Adrenaline","Shades of Black","Accessories 16","Accessories 18","Accessories 20","Accessories 21","Battle Lore 14",null,"Swiftness 3"],[null,null,null,null,null,"Exodus",null,null,null,"Famfrit",null,null,"Battle Lore 15","Battle Lore 16"],[null,null,null,null,null,"Souleater",null,null,null,"White Magick 10",null,"White Magick 13","Zodiark"]]},{name:"Time Battlemage",image:el,imageAlt:"Libra",text:"Battlemages who wield crossbows and bend time to their will.",rawBoardData:[[null,null,null,null,null,"Channeling 3",null,"+150 HP",null,"White Magick 4"],[null,null,null,null,null,"Hashmal",null,"Quickening 2",null,"Adrammelech"],[null,null,null,"Gambit Slot 8","Channeling 1","Magick Lore 7","Warmage","Magick Lore 8","Charge","Magick Lore 3","Magick Lore 4","Poach","Spellbreaker"],[null,"Battle Lore 12","Exodus","Gambit Slot 9","Headsman","Heavy Armor 6","Time Magick 6","Swiftness 1","Heavy Armor 5","Time Magick 5","Heavy Armor 4","Ether Lore 2","Gambit Slot 7"],[null,null,null,"Gambit Slot 10","Magick Lore 6","Time Magick 7",null,"Zalera",null,null,"Magick Lore 2","Time Magick 4","Gambit Slot 6","Mateus","+230 HP"],[null,null,null,"+190 HP","Remedy Lore 2","Heavy Armor 7",null,"Ether Lore 3",null,"Second Board","Heavy Armor 3","Time Magick 3","Gambit Slot 5"],[null,null,"Quickening 3","Horology","Last Stand","Heavy Armor 8",null,null,null,"Belias","Heavy Armor 2","Time Magick 2","Gambit Slot 4","Quickening 1"],[null,null,null,"Spellbound","Magick Lore 5","Time Magick 8",null,null,null,null,"Magick Lore 1","Time Magick 1","Gambit Slot 2"],["Battle Lore 9","Famfrit",null,"Ether Lore 1","Serenity","Heavy Armor 9","Zeromus","Addle","Shear",null,"Heavy Armor 1","Essentials","Gambit Slot 1"],[null,"Magick Lore 9","Heavy Armor 12","Stamp","Time Magick 9","Heavy Armor 10",null,null,null,null,"Martyr","Accessories 1","Accessories 2","Inquisitor","Remedy Lore 1"],[null,"Swiftness 3","Time Magick 10","Heavy Armor 11","Channeling 2","Swiftness 2",null,"+270 HP",null,null,"Gambit Slot 3","Crossbows 1","Accessories 3","Accessories 4","Crossbows 2"],[null,null,null,null,null,null,null,"Chaos",null,null,null,null,null,"Accessories 5"],[null,null,"Accessories 20","Accessories 18","Accessories 16","Accessories 14","Accessories 13","Accessories 12","Accessories 11","Accessories 10","Accessories 9","Accessories 8","Accessories 7","Accessories 6"],[null,"Accessories 22","Accessories 21","Accessories 19","Accessories 17","Accessories 15","Crossbows 4","Battle Lore 7","Battle Lore 6","Battle Lore 5","Battle Lore 1","Battle Lore 2","Battle Lore 4","Battle Lore 3","+110 HP"],[null,"Ribbon","Battle Lore 10","Battle Lore 8","Green Magick 3",null,"Ultima",null,null,"C\xfachulainn",null,"Green Magick 2","Crossbows 3","Green Magick 1","Numerology","Shemhazai"],[null,null,"Zodiark",null,"Quickening 4",null,"Swords 7"],[null,null,"Swords 9",null,null,null,"Swords 8"]]},{name:"Foebreaker",image:et,imageAlt:"Scorpio",text:"Warriors who use mighty weapons to tear their foes asunder.",rawBoardData:[[null,null,null,"Shades of Black",null,"Swiftness 2"],[null,null,null,"C\xfachulainn",null,"Hashmal","Quickening 2",null,null,"Quickening 1"],[null,null,"Shell Shield","Last Stand",null,"Shear","Martyr",null,"Gambit Slot 3","Gambit Slot 4"],[null,"Shemhazai","Gambit Slot 9","Gambit Slot 8","Gambit Slot 7","Gambit Slot 6","Gambit Slot 5","Infuse","Gambit Slot 1","Gambit Slot 2"],[null,null,"Heavy Armor 6","Heavy Armor 5","Heavy Armor 4","Heavy Armor 3","Heavy Armor 2","Heavy Armor 1","Essentials","Accessories 1"],["+390 HP","Quickening 3","Heavy Armor 7","Axes & Hammers 6","Axes & Hammers 5","Axes & Hammers 4","Axes & Hammers 3","Axes & Hammers 2","Axes & Hammers 1","Accessories 2"],[null,null,"Heavy Armor 8","Axes & Hammers 7",null,"Inquisitor","Shields 1",null,"+30 HP","Accessories 3","Belias","Horology"],[null,null,"Heavy Armor 9","Vrscika",null,"Shield Block 1","Shields 2",null,"Battle Lore 3","Accessories 4","Second Board",null,null,null,"Swiftness 3"],[null,null,"Heavy Armor 10","Gambit Slot 10",null,"Adrenaline","Shields 3",null,"+70 HP","Accessories 5",null,null,null,null,"Ultima"],["Magick Lore 1","Exodus","Heavy Armor 11","Sight Unseeing",null,"Shield Block 2","Shields 4",null,"Battle Lore 4","Accessories 6",null,null,"Accessories 17","Accessories 18","Accessories 19","Zodiark"],["Magick Lore 2",null,"Heavy Armor 12","Spellbound",null,"Headsman","Shields 5",null,"+110 HP","Accessories 7","Mateus",null,"Accessories 16","Battle Lore 9","Accessories 22"],["Magick Lore 4",null,"Genji Armor","Expose",null,"Shield Block 3","Shields 6",null,"Battle Lore 2","Accessories 8",null,null,"Accessories 15","Battle Lore 12","Accessories 21"],["Magick Lore 3","Zeromus","Swiftness 1","Ensanguined Shield",null,"Focus","Shields 7",null,"+150 HP","Accessories 9",null,null,"Accessories 14","Battle Lore 10","Accessories 20"],[null,null,"Addle","Wither",null,"Hand-bombs 2","Hand-bombs 1",null,"Battle Lore 1","Accessories 10","Accessories 11","Accessories 12","Accessories 13","+310 HP","+350 HP"],[null,null,"Ribbon","Zodiac Escutcheon",null,"Hand-bombs 4","Hand-bombs 3",null,"+190 HP","Battle Lore 5","+230 HP","Battle Lore 6","+270 HP","Battle Lore 7","Battle Lore 8","Chaos"],[null,null,null,"Quickening 4",null,null,"Adrammelech",null,null,"Zalera",null,null,null,null,"Famfrit"],[null,null,null,"Battle Lore 15",null,null,"Battle Lore 11",null,null,"Traveler",null,null,null,null,"Magick Lore 8"]]},{name:"Archer",image:en,imageAlt:"Sagittarius",text:"Warriors who rain death on their foes from afar.",rawBoardData:[[null,null,null,null,null,null,"Quickening 4",null,null,"Hashmal"],[null,null,null,null,null,null,"+230 HP","Revive","Gambit Slot 10","Gambit Slot 9","Gambit Slot 8"],[null,null,"+435 HP","+390 HP","Famfrit","+310 HP","+270 HP","Focus","Traveler","+110 HP","Gambit Slot 7","Gambit Slot 6"],[null,null,null,null,null,null,"Ribbon","+190 HP","+150 HP","Charm","+70 HP","Gambit Slot 5","Zalera"],[null,null,null,null,null,null,null,null,null,null,"+30 HP","Gambit Slot 4"],[null,null,null,null,null,"Battle Lore 4","Accessories 19",null,null,"Mateus","Poach","Gambit Slot 3","Quickening 1","White Magick 4"],[null,null,null,null,null,"Accessories 21","Accessories 13","Zeromus",null,null,"Libra","Gambit Slot 2"],[null,null,"Quickening 3",null,null,"Accessories 16","Accessories 9",null,null,null,"First Aid","Gambit Slot 1",null,null,null,null,"Exodus"],["Infuse","Ultima","Remedy Lore 3","Shear","Accessories 15","Accessories 11","Accessories 7","Accessories 5","Accessories 3","Accessories 1","Essentials","Bows 1","Martyr","Headsman","Remedy Lore 1","Phoenix Lore 1","Spellbound","Potion Lore 2"],["1000 Needles","Zodiark","Phoenix Lore 3","Addle","Accessories 17","Accessories 12","Accessories 8","Accessories 6","Accessories 4","Accessories 2","Light Armor 1","Bows 2","Inquisitor","Swiftness 1","Potion Lore 1","Remedy Lore 2","Battle Lore 3","Potion Lore 3"],[null,null,null,null,null,"Shades of Black","Accessories 10",null,null,null,"Light Armor 2","Steal",null,null,"C\xfachulainn"],[null,null,null,"Magick Lore 2","Chaos","Accessories 18","Accessories 14",null,null,"Belias","Light Armor 3","Bows 3"],[null,"Magick Lore 8","Magick Lore 3","Magick Lore 4",null,"Accessories 22","Accessories 20","Quickening 2",null,"Second Board","Light Armor 4","Last Stand"],[null,"Magick Lore 7",null,null,null,null,null,null,null,null,"Light Armor 5","Bows 4","Adrammelech"],[null,null,null,null,null,null,"Light Armor 10","Light Armor 9","Light Armor 8","Light Armor 7","Light Armor 6","Gil Toss"],[null,null,null,null,null,"Light Armor 12","Light Armor 11","Swiftness 3","Bows 7","Achilles","Bows 5","Magick Lore 1"],[null,null,null,null,null,"Light Armor 13","Dhanusha","Sagittarius","Phoenix Lore 2","Bows 6","Swiftness 2"],[null,null,null,null,null,null,null,null,"Shemhazai"],[null,null,null,null,null,null,"Heavy Armor 12","Heavy Armor 11","Heavy Armor 10"]]},{name:"Black Mage",image:er,imageAlt:"Capricorn",text:"Mages who channel elemental forces into deadly magicks.",rawBoardData:[[null,null,null,null,null,null,null,null,"+70 HP"],[null,null,null,null,"Zodiark",null,"Hand-bombs 3",null,"Quickening 1"],[null,null,null,"Mystic Armor 13","Mystic Armor 12",null,"Mateus","Magick Lore 4","Gambit Slot 5","Adrammelech","Hand-bombs 2"],[null,"+390 HP","Quickening 4","Mystic Armor 11","Staves 5",null,null,"Channeling 1","Gambit Slot 4"],[null,null,null,"Magick Lore 11","Mystic Armor 10",null,null,"Magick Lore 2","Gambit Slot 2"],[null,null,null,"Magick Lore 10","Mystic Armor 9",null,null,"Magick Lore 1","Gambit Slot 1","Gambit Slot 3","Gambit Slot 6","Martyr"],[null,null,null,"Magick Lore 9","Staves 4","Quickening 3",null,"Mystic Armor 1","Essentials","Accessories 1","Accessories 2","Accessories 4"],[null,null,null,"Magick Lore 5","Mystic Armor 8",null,"Second Board","Mystic Armor 2","Black Magick 1",null,"Accessories 3","Gambit Slot 7",null,"Poach"],[null,null,null,"Black Magick 13","Mystic Armor 7",null,"Belias","Staves 1","Black Magick 2",null,"Ether Lore 1","Accessories 5","Zalera","Steal"],[null,null,null,"Black Magick 12","Staves 3",null,null,"Mystic Armor 3","Black Magick 3",null,"Accessories 6","Magick Lore 3",null,null,"Hand-bombs 4"],[null,null,null,"Black Magick 11","Mystic Armor 6","Mystic Armor 5","Staves 2","Mystic Armor 4","Black Magick 4",null,"Warmage","Accessories 7",null,null,"Hashmal"],[null,null,null,"Black Magick 10","Black Magick 9","Black Magick 8","Black Magick 7","Black Magick 6","Black Magick 5",null,"Accessories 8","Inquisitor","Magick Lore 8","Green Magick 1","Channeling 2","+270 HP"],[null,null,null,null,null,null,null,null,null,null,"Charge","Accessories 9","Ether Lore 2","Spellbreaker","Magick Lore 7","Magick Lore 6"],["Telekinesis","Ultima","Magick Lore 14","Magick Lore 15","Ribbon","Channeling 3","Accessories 19","Gambit Slot 9","Accessories 15","Remedy Lore 1","Accessories 10","+150 HP",null,null,"Remedy Lore 2","Headsman","Shemhazai","Heavy Armor 7"],[null,null,"Magick Lore 16","Magick Lore 13","Magick Lore 12","Accessories 21","Green Magick 2","Accessories 17","Charm","Accessories 12","Serenity","Accessories 11",null,null,"Ether Lore 3","Green Magick 3"],[null,null,null,"Chaos",null,"Famfrit",null,null,"Zeromus",null,"Accessories 13","Gambit Slot 8","Accessories 16","Gambit Slot 10","Accessories 20","Staff of the Magi"],[null,null,null,null,"+230 HP","+190 HP",null,null,"Heavy Armor 9",null,"Spellbound","Accessories 14","Swiftness 1","Accessories 18","Swiftness 2","Accessories 22"],[null,null,null,null,"+310 HP",null,null,null,null,null,"Quickening 2",null,"C\xfachulainn",null,"Exodus"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Heavy Armor 8"]]},{name:"Bushi",image:eo,imageAlt:"Aquarius",text:"Swordmasters who devote themselves body and soul to their lords.",rawBoardData:[[null,null,null,null,null,null,null,null,null,null,"Karkata",null,"Masamune","Kumbha"],[null,null,null,null,null,null,null,null,"Souleater",null,"Blood Sword","Zalera","Magick Lore 7","Serenity",null,"Battle Lore 7"],[null,null,null,null,null,null,null,null,"Adrammelech",null,null,null,"Magick Lore 8","Katana 5","Quickening 3","+390 HP"],[null,null,null,null,null,null,null,"Magick Lore 2","+230 HP","Magick Lore 4","+270 HP","Spellbreaker","Magick Lore 3","+310 HP"],[null,null,null,null,null,null,"Second Board","+190 HP","Inquisitor","Katana 2","Swiftness 2","Katana 3","Headsman","Katana 4",null,null,"Gambit Slot 9","Gambit Slot 10"],[null,null,null,null,null,"Libra","Belias","Magick Lore 1","Swiftness 1",null,"Mateus",null,"Hashmal",null,null,null,"Gambit Slot 8","Sight Unseeing"],[null,null,null,null,null,null,null,"+150 HP","Katana 1",null,null,null,null,null,null,null,"Gambit Slot 7","1000 Needles"],[null,null,null,"Shield Block 1",null,null,null,"+70 HP","Essentials","Accessories 1","Accessories 2","Last Stand","Gambit Slot 1","Gambit Slot 3","Gambit Slot 4","Gambit Slot 5","Gambit Slot 6","Gil Toss"],[null,null,null,"Shemhazai",null,null,null,"+110 HP","Mystic Armor 1",null,null,"Accessories 3","Gambit Slot 2","Infuse","Bonecrusher","Remedy Lore 2","Shades of Black","Spellbound"],[null,null,"Magick Lore 5","Magick Lore 6","Mystic Armor 9","Mystic Armor 7","Mystic Armor 5","Mystic Armor 3","Mystic Armor 2",null,null,"Accessories 4","Remedy Lore 1",null,"Quickening 2"],[null,null,"Magick Lore 9","Mystic Armor 11","Mystic Armor 10","Mystic Armor 8","Mystic Armor 6","Mystic Armor 4","Martyr","Quickening 1",null,"Accessories 5","Accessories 6",null,"+350 HP"],["+500 HP","Exodus","Magick Lore 10","Mystic Armor 12",null,null,null,null,null,null,null,"Accessories 7","Accessories 8",null,"Battle Lore 8"],[null,null,"Magick Lore 11","Mystic Armor 13","C\xfachulainn","Stamp","Ultima",null,null,"Famfrit",null,"Accessories 9","Accessories 10"],[null,null,"Magick Lore 12","Genji Armor",null,null,"Ribbon","Accessories 21","Accessories 19","Accessories 17","Accessories 14","Accessories 11","Accessories 13"],[null,null,"Zeromus",null,null,null,"Battle Lore 3","Accessories 22","Accessories 20","Accessories 18","Accessories 16","Accessories 15","Accessories 12"],[null,"Magick Lore 13","Magick Lore 15",null,"+435 HP","Quickening 4","Battle Lore 2","Battle Lore 4"],[null,null,null,null,null,null,"Battle Lore 5","Battle Lore 1","Chaos","Brawler"],[null,null,null,"Heavy Armor 10","Heavy Armor 9","Zodiark","Swiftness 3","Battle Lore 6"],[null,null,null,"Heavy Armor 11"]]},{name:"Shikari",image:ei,imageAlt:"Pisces",text:"Warriors who fight nimbly across hill and dale.",rawBoardData:[[null,null,null,"Shades of Black",null,null,null,null,null,null,null,null,null,"Phoenix Lore 1","Phoenix Lore 2"],[null,null,null,"Adrammelech",null,null,null,null,null,null,null,null,null,"Ultima"],[null,null,"Gambit Slot 10","Gambit Slot 8","Remedy Lore 2","Gambit Slot 7",null,null,null,null,null,"Light Armor 10","Daggers 6","Light Armor 12","Shikari Nagasa & Mina","Chaos"],[null,"Quickening 2","Gambit Slot 9","Swiftness 1","Gambit Slot 6","Gambit Slot 5","Mateus","Gil Toss",null,"White Magick 12","C\xfachulainn","Daggers 5","Light Armor 11","Shields 7","Light Armor 13"],[null,"Ninja Swords 2",null,"Second Board","Gambit Slot 4","Gambit Slot 3",null,null,null,null,null,"Light Armor 9","Shields 6"],[null,null,null,"Belias","Gambit Slot 2","Gambit Slot 1",null,null,null,null,null,"Daggers 4","Light Armor 8","Exodus","Stamp"],["Ninja Swords 1",null,null,null,"First Aid","Daggers 1","Light Armor 2","Daggers 2","Shields 2","Light Armor 5","Shields 3","Light Armor 7","Shields 5"],["Quickening 1","Adrenaline","Last Stand","+30 HP","Martyr","Essentials","Light Armor 1","Light Armor 3","Light Armor 4","Daggers 3","Light Armor 6","Shields 4","Shield Block 2","Accessories 19","Accessories 22","Telekinesis"],[null,"Spellbound","+230 HP","+110 HP","Libra","Accessories 1",null,null,null,null,null,"Shield Block 1","Focus","Accessories 18","Accessories 21","Ribbon"],[null,"+310 HP","Headsman","+190 HP","+70 HP","Accessories 2","Accessories 3","Accessories 6","Accessories 8","Accessories 10","Accessories 12","Accessories 14","Accessories 16","Accessories 17","Accessories 20","+390 HP"],[null,null,"Hashmal",null,"+150 HP","Accessories 4","Accessories 5","Accessories 7","Accessories 9","Accessories 11","Accessories 13","Accessories 15","+350 HP"],[null,null,"Bonecrusher",null,"Battle Lore 3","Inquisitor",null,null,null,null,null,"Potion Lore 1","Traveler","Famfrit"],[null,null,null,null,"Battle Lore 4","+270 HP","Zalera","+435 HP",null,null,"Zeromus","Potion Lore 2","Magick Lore 1"],[null,null,"Remedy Lore 3","Battle Lore 1","Battle Lore 2","Remedy Lore 1",null,null,null,null,null,"Swiftness 3","Magick Lore 2","Magick Lore 4","Magick Lore 8","Zodiark"],["Ninja Swords 3","Quickening 3","Revive","Swiftness 2","Battle Lore 5","Battle Lore 6",null,null,null,null,null,"1000 Needles","Potion Lore 3","Magick Lore 3","Brawler"],[null,null,null,"Shemhazai",null,null,null,null,null,null,null,null,null,"Quickening 4"],[null,null,"Guns 6","Guns 5",null,null,null,null,null,null,null,null,null,"Yagyu Darkblade & Mesa"]]}],eA=ek.map(function(e){let a={name:e.name,text:e.text,image:e.image,imageAlt:e.imageAlt,rows:e.rawBoardData.map(e=>e.map(e=>e?{value:ed(e),adjacent:[]}:void 0)),lookup:new Map};for(let e=0;ea.rows[e]&&a.rows[e][l]&&n.adjacent.push(a.rows[e][l]);l(e-1,t),l(e+1,t),l(e,t-1),l(e,t+1),a.lookup.set(n.value,n)}}}return a});class ew{compare;nodes;constructor(e){this.compare=e,this.nodes=[]}size(){return this.nodes.length}insert(e){let a=this.nodes.length;for(this.nodes.push(e);a>0;){let e=a-1>>1;if(!this.compare(this.nodes[a],this.nodes[e]))return;let l=this.nodes[a];this.nodes[a]=this.nodes[e],this.nodes[e]=l,a=e}}remove(){if(this.nodes.length<2)return this.nodes.pop();let e=this.nodes[0],a=this.nodes.pop();this.nodes[0]=a;let l=0;for(;;){let t=2*l+1,n=t+1,r=l;if(te.slice()),this.selected=e.selected.map(e=>new Set(e)),this.blockedEspers=new Set(e.blockedEspers),this.quickeningCount=e.quickeningCount.slice()):(this.jobs=eb.map(e=>[]),this.selected=eb.map(e=>new Set),this.blockedEspers=new Set,this.quickeningCount=eb.map(e=>0),this.verify())}verify(){this.blockedEspers.clear();for(let e=0;e<6;e++){let a=this.selected[e];for(let l of ey)if(a.has(l))for(let a=e+1;a<6;a++)this.selected[a].delete(l);for(let l of(4===ep.filter(e=>a.has(e)).length&&a.delete(ep[3]),eb[e].innateLicenses))a.add(l);let l=new Set,t=[...eb[e].innateLicenses];for(;t.length;){let n=t.pop();if(!l.has(n)&&a.has(n))for(let a of(l.add(n),this.jobs[e])){let e=a.lookup.get(n);e&&t.push(...e.adjacent.map(e=>e.value))}}for(let e of ey)l.has(e)&&this.blockedEspers.add(e);this.quickeningCount[e]=ep.filter(e=>l.has(e)).length,this.selected[e]=l}}getJob(e,a){return this.jobs[e][a]}unemployed(e){return 0===this.jobs[e].length}allUnemployed(){return!this.jobs.find(e=>e.length>0)}getLpCount(e){let a=0;for(let l of this.selected[e])eb[e].innateLicenses.includes(l)||(a+=l.cost);return a}findPath(e,a){let l=new ew(function(e,a){return e.length{for(let n of a.keys())for(let r of this.jobs[e]){let e=r.lookup.get(n);if(e)for(let{value:n}of e.adjacent)!a.has(n)&&l(n)&&a.set(n,t)}};return l(e=>!e.limited,1),l(a=>!this.isBlocked(e,a),2),a}encode(){let e="";for(let a=0;a<6;a++)e+=function(e,a){let l=eS.get(e[0]).get(e[1]),t=eT[l],n=[l],r=1,o=0;for(let e of t.licenses)a.has(e)&&(o|=r),256==(r<<=1)&&(n.push(o),o=0,r=1);for(1!==r&&n.push(o);n.length>1&&0===n[n.length-1];)n.pop();return btoa(String.fromCharCode(...n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}(this.jobs[a],this.selected[a]),5!==a&&(e+=".");return e}static decode(a){let l=a.split("."),t=l.map(eM),n=new e;for(let e=0;e<6;e++){let a=t[e];a&&(n.jobs[e]=a.jobs,n.selected[e]=a.licenses)}return n.verify(),n}};const{urlLookup:eT,urlReverseLookup:eS}=function(){let e=eA.slice();e.unshift(void 0);let a=[];for(let l of e)for(let t of e){if(l&&l===t)continue;let e={job1:l,job2:t,licenses:[]};if(l)for(let a of l.rows)for(let l of a)l&&e.licenses.push(l.value);if(t)for(let a of t.rows)for(let t of a)!t||l&&l.lookup.has(t.value)||e.licenses.push(t.value);a.push(e)}let l=new Map;for(let e=0;ee),licenses:t}}function eL(e){let a=e,l=new Set;return{useStore(e){let t=()=>x(e);return l.add(t),H(e,()=>{l.delete(t)}),()=>a},dispatch(e){for(let t of(a=e(a),l))t()}}}const eB=e=>a=>a.boardIndex&&!e.getJob(a.characterIndex,a.boardIndex)?{...a,party:e,boardIndex:0,plannedParty:void 0}:{...a,party:e,plannedParty:void 0},eH=(e,a)=>l=>(a&&!l.party.getJob(e,0)&&(a=0),{...l,characterIndex:e,boardIndex:a}),ex=()=>e=>e.qeActive?{...e,qeActive:!1}:{...e,qeActive:!0,dpsActive:!1},eP=()=>e=>e.dpsActive?{...e,dpsActive:!1}:{...e,dpsActive:!0,qeActive:!1},eG=e=>a=>({...a,plannedParty:e}),{useStore:eC,dispatch:eD}=eL(function(){let e=window.location.search&&R.decode(window.location.search.slice(1));return{party:e||new R,characterIndex:0,boardIndex:0,qeActive:!1,dpsActive:!1,plannedParty:void 0}}());var eR=(e,a)=>{let l;let t=eC(a);return e=>{let n=t(),r=n.party===l?.from?l:void 0;return r?C("button",{class:"action button","aria-label":r.label,onClick:()=>eD(eB(r.to))},r.children):C("button",{class:"action button","aria-label":e.label,disabled:e.disabled,onClick:async()=>{let t=n.party,r=e.getNextParty();eD(eB(r));let o={from:r,to:t,label:`Undo ${e.label}`,children:C("i",null,"Undo ",e.children)};l=o,x(a),await new Promise(e=>setTimeout(e,5e3)),l===o&&(l=void 0,x(a))}},e.children)}},eE=(e,a)=>{let l=eC(a);return()=>{let e=l();function a(a,l){let t=e.party.getJob(a,l),n=e.characterIndex===a&&e.boardIndex===l;if(t)return C("button",{class:"job","aria-pressed":n,onClick:e=>{e.stopPropagation(),eD(eH(a,l))}},C("span",{class:"name"},t.name));{let t=1===l&&!e.party.getJob(a,0);return C("button",{disabled:t,class:"job nojob","aria-pressed":n,onClick:e=>{e.stopPropagation(),eD(eH(a,l))}},C("span",{class:"name"},"No Job"))}}return C("div",{class:"character-panel"},C("div",{class:"actions"},function(){let a,l;let t=e.characterIndex,n=e.party.getJob(t,e.boardIndex);return n?(a=`Unlearn ${n.name} from ${eb[t].name}`,l=!1):(a=`Unlearn current job from ${eb[t].name}`,l=!0),C(eR,{label:a,disabled:l,getNextParty:()=>e.party.removeJob(t,n)},"Reset Job")}(),function(){let a=e.characterIndex,l=e.party.unemployed(a),t=`Unlearn all jobs from ${eb[a].name}`;return C(eR,{label:t,disabled:l,getNextParty:()=>e.party.removeAllJobs(a)},"Reset Character")}(),function(){let a=e.party.allUnemployed();return C(eR,{label:"Unlearn all jobs from all characters",disabled:a,getNextParty:()=>new R},"Reset All")}(),C("button",{class:"action button","aria-label":"Manage Quickenings and Espers for all characters at once.",onClick:()=>eD(ex()),"aria-pressed":e.qeActive},e.qeActive?"Hide Mist Planner":"Show Mist Planner"),C("button",{class:"action button","aria-label":"Simulate character damage output",onClick:()=>eD(eP()),"aria-pressed":e.dpsActive},e.dpsActive?"Hide DPS Simulator":"Show DPS Simulator")),C("div",{class:"character-select"},eb.map((l,t)=>C("div",{class:"character button","aria-pressed":e.characterIndex===t,onClick:()=>(function(a){e.characterIndex===a?eD(eH(a,1^e.boardIndex)):eD(eH(a,0))})(t)},C("span",{class:"name"},l.name),C("br",null),a(t,0),C("br",null),a(t,1),C("br",null),C("span",null,e.party.getLpCount(t)," LP")))),C("div",{class:"stats"},function(){let a=e.party.color(e.characterIndex),l=e.plannedParty&&e.plannedParty.color(e.characterIndex);return eh.map(t=>(function(a,l,t){let n=[];if("number"==typeof a.contents[0].grants.what){let r=[],o=[],i=[],s=[];for(let e of a.contents)switch(l.get(e)){case D.OBTAINED:r.push(e);break;case D.CERTAIN:o.push(e);break;case D.POSSIBLE:i.push(e);break;default:t&&t.has(e)&&s.push(e)}let c=(a,l)=>{let t=a.map(a=>({c:e.characterIndex,l:a})),n=l?e.party.deleteAndAdd([],t):e.party.deleteAndAdd(t,[]);eD(eB(n))},m=e=>e.reduce((e,a)=>e+a.grants.what,0);r.length&&n.push(C("p",{class:"l obtained",onClick:()=>c(r,!1)},"+",m(r))),o.length&&n.push(C("p",{class:"l certain",onClick:()=>c(o,!0)},"+",m(o))),i.length&&n.push(C("p",{class:"l possible",onClick:()=>c(i,!0)},"+",m(i))),s.length&&n.push(C("p",{class:"l planned"},"+",m(s)))}else for(let r of a.contents){let a;let o=!1;switch(l.get(r)){case D.OBTAINED:a="l obtained",o=!0;break;case D.CERTAIN:a="l certain";break;case D.POSSIBLE:a="l possible";break;default:if(!(t&&t.has(r)))continue;a="l planned"}let i=()=>{o?eD(eB(e.party.delete(e.characterIndex,r))):eD(eB(e.party.add(e.characterIndex,r)))};n.push(C("p",{class:a,"aria-label":r.text,onClick:i},r.fullName))}return n.length?C("div",{class:"group"},C("h3",{class:"name"},a.name),n):null})(t,a,l))}()))}};const eN=C("a",{href:"https://github.com/nattthebear/ff12characterplanner",target:"_blank",rel:"noopener noreferrer",class:"github-corner","aria-label":"View source on Github"},C("svg",{width:"80",height:"80",viewBox:"0 0 250 250","aria-hidden":!0},C("g",null,C("path",{d:"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"}),C("path",{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor",class:"octo-arm"}),C("path",{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor",class:"octo-body"}))));function eI(){return eN}var ej=(e,a)=>{let l;let t=eC(a),n=t(),r=null,o=e=>{r=e};function i(e){let a=r,t=l;t&&a&&(a.scrollLeft=t.x-e.screenX,a.scrollTop=t.y-e.screenY)}function s(){l=void 0}function c(e){let a=r,t=e.target;a&&(t.classList.contains("empty")||"TABLE"===t.nodeName)&&(l={x:a.scrollLeft+e.screenX,y:a.scrollTop+e.screenY},e.preventDefault())}return document.addEventListener("mousemove",i,{passive:!0}),document.addEventListener("mouseup",s,{passive:!0}),H(a,()=>{document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",s)}),()=>{n=t();let e=n.party.getJob(n.characterIndex,n.boardIndex);if(e)return function(e){let a=n.party.color(n.characterIndex);return C("div",{class:"license-board-holder",ref:o,onMouseDown:c},C("table",{class:"license-board"},C("tbody",null,e.rows.map(e=>C("tr",null,e.map(e=>(function(e,a){let l;if(!e)return C("td",{class:"empty"});let t=e.value,r=!1;switch(a.get(t)){case D.OBTAINED:l="l obtained",r=!0;break;case D.CERTAIN:l="l certain";break;case D.POSSIBLE:l="l possible";break;default:l="l blocked"}return C("td",{class:l,onClick:()=>{r?eD(eB(n.party.delete(n.characterIndex,t))):eD(eB(n.party.add(n.characterIndex,t)))},"aria-label":t.text},C("div",{class:"name"},t.fullName),C("div",{class:"cost"},t.cost),t.image&&C("img",{class:"mist",src:t.image,"aria-role":"none"}))})(e,a)))))))}(e);{let e=n.party.getJob(n.characterIndex,1^n.boardIndex);return C("div",{class:"select-job"},eA.map(a=>C("button",{onClick:()=>eD(eB(n.party.addJob(n.characterIndex,a))),class:"job button",disabled:a===e,"aria-label":a.text,onMouseOver:()=>eD(eG(n.party.addJob(n.characterIndex,a))),onMouseOut:()=>eD(eG(void 0))},C("img",{class:"zodiac",src:a.image,alt:a.imageAlt}),a.name)),C(eI,null))}}};function eW(e,a){return e.sortOrder-a.sortOrder}var ez=(e,a)=>{let l;let t=eC(a),{party:n}=t();function r(e){return C(G,null,C("div",null,C("div",{class:"license-name","aria-label":e.text},e.fullName)),eb.map((a,t)=>(function(e,a){let t,r,o;if(n.unemployed(a))return C("div",{class:"l unreachable",onClick:()=>{eD(eH(a,0)),eD(ex())}},"Choose a job first.");let i=l[a];{let l=new Set;for(let a of i.get(e))l.add(a);for(let t of ef)if(t!==e&&n.has(a,t))for(let e of i.get(t))l.delete(e);o=[...l]}return n.has(a,e)?(t="l obtained",r=()=>{let l=ef.filter(l=>l!==e&&n.has(a,l)),t=n.deleteAndAdd([{c:a,l:e}],l.map(e=>({c:a,l:e})));eD(eB(t))}):n.isBlocked(a,e)?t="l blocked":(t="l possible",r=()=>{let l=n.add(a,e);eD(eB(l))}),o.sort(eW),C("div",{class:t,onClick:r},o.map(e=>C("div",{"aria-label":e.text},e.fullName)))})(e,t)))}function o(e){return e?C("div",{class:"job","aria-label":e.text},e.name):C("div",{class:"job nojob"},"No Job")}return()=>({party:n}=t(),l=eb.map((e,a)=>n.getCovered(a)),C("div",{class:"qe-board"},C("div",null),eb.map((e,a)=>C("div",null,C("div",{class:"character-name"},e.name),o(n.getJob(a,0)),o(n.getJob(a,1)))),ef.map(r)))};const eF=["fire","ice","lightning","water","wind","earth","dark","holy"],eV={fireDamage:1,iceDamage:2,lightningDamage:4,waterDamage:8,windDamage:16,earthDamage:32,darkDamage:64,holyDamage:128,agateRing:256,animationType:512,brawler:1024,berserk:2048,haste:4096,bravery:8192,faith:16384,focus:32768,adrenaline:65536,serenity:131072,spellbreaker:262144,genjiGloves:524288,cameoBelt:1048576},eO={attack:1,str:2,mag:4,vit:8,spd:16,fireBonus:32,iceBonus:64,lightningBonus:128,waterBonus:256,windBonus:512,earthBonus:1024,darkBonus:2048,holyBonus:4096},eK=Object.keys(eO).length;class eQ{constructor(e,a){for(let l in Object.assign(this,e),this.mutateProfile=function(e,a){let l="";for(let t in e){if("name"===t||"l"===t||"animationType"===t&&a)continue;let n=e[t];if("boolean"==typeof n&&n)l+=`ret.${t} = true; -`;else if("number"==typeof n)l+=`ret.${t} += ${n}; -`;else if("string"==typeof n)l+=`ret.${t} = ${JSON.stringify(n)}; -`;else throw Error(`Unexpected type on Profile[${t}]: ${typeof n}`)}return Function("ret",l)}(e,a),this.tooltip=function(e,a){let l=[];function t(a,t){let n=e[a];"number"==typeof n&&n>0?l.push(`${n} ${t}`):!0===n&&l.push(t)}for(let n of(!a&&e.animationType&&l.push({unarmed:"Unarmed",dagger:"Dagger",ninja:"Ninja Sword",katana:"Katana",sword:"Sword",bigsword:"Greatsword",hammer:"Hammer/Axe",pole:"Pole",spear:"Spear",mace:"Mace",bow:"Bow",gun:"Gun",xbow:"Crossbow",measure:"Measure",rod:"Rod",staff:"Staff",handbomb:"Handbomb"}[e.animationType]),"gun"===e.damageType&&"gun"!==e.animationType&&l.push("Pierce"),t("attack","Att"),t("chargeTime","CT"),t("combo","Cb"),t("str","Str"),t("mag","Mag"),t("vit","Vit"),t("spd","Spd"),t("brawler","Brawler"),t("berserk","Berserk"),t("haste","Haste"),t("bravery","Bravery"),t("faith","Faith"),t("focus","Focus"),t("adrenaline","Adrenaline"),t("serenity","Serenity"),t("spellbreaker","Spellbreaker"),t("genjiGloves","Combo+"),t("cameoBelt","Ignore Evasion"),t("agateRing","Ignore Weather"),eF))t(`${n}Damage`,n[0].toUpperCase()+n.slice(1)+" Damage");for(let e of eF)t(`${e}Bonus`,e[0].toUpperCase()+e.slice(1)+" Bonus");return l.join(",")}(e,a),e){let e;null==(e=eV[l])||a&&"animationType"===l||(this.hazardUniqueMask|=e),null!=(e=eO[l])&&(this.sharedMask|=e)}for(let a in eO)this.sharedValues.push(+(e[a]??0))}name;l;mutateProfile;tooltip;hazardUniqueMask=0;sharedMask=0;sharedValues=[];ability;damageType;animationType;attack;combo;chargeTime;str;mag;vit;spd;brawler;berserk;haste;bravery;faith;focus;adrenaline;serenity;spellbreaker;genjiGloves;cameoBelt;agateRing;swiftness1;swiftness2;swiftness3;fireDamage;iceDamage;lightningDamage;waterDamage;windDamage;earthDamage;darkDamage;holyDamage;fireBonus;iceBonus;lightningBonus;waterBonus;windBonus;earthBonus;darkBonus;holyBonus}const eU=(e,a)=>e.map(e=>new eQ(e,!!a)),eZ=eU([{name:"Unarmed",damageType:"unarmed",animationType:"unarmed",attack:12,chargeTime:26,combo:5},{name:"Mythril Sword",damageType:"sword",animationType:"sword",attack:14,chargeTime:30,combo:5},{name:"Broadsword",l:ed("Swords 1"),damageType:"sword",animationType:"sword",attack:14,chargeTime:32,combo:5},{name:"Longsword",l:ed("Swords 2"),damageType:"sword",animationType:"sword",attack:20,chargeTime:32,combo:5},{name:"Iron Sword",l:ed("Swords 2"),damageType:"sword",animationType:"sword",attack:25,chargeTime:32,combo:5},{name:"Mythril Blade",damageType:"sword",animationType:"sword",attack:23,chargeTime:30,combo:5},{name:"Zwill Blade",l:ed("Swords 3"),damageType:"sword",animationType:"sword",attack:30,chargeTime:32,combo:5},{name:"Ancient Sword",l:ed("Swords 3"),damageType:"sword",animationType:"sword",attack:35,chargeTime:32,combo:5},{name:"Blood Sword",l:ed("Blood Sword"),damageType:"sword",animationType:"sword",attack:38,chargeTime:32,combo:5},{name:"Lohengrin",l:ed("Swords 4"),damageType:"sword",animationType:"sword",attack:40,chargeTime:32,combo:5},{name:"Flametongue",l:ed("Swords 4"),damageType:"sword",animationType:"sword",attack:45,chargeTime:32,combo:5,fireDamage:!0},{name:"Demonsbane",l:ed("Swords 5"),damageType:"sword",animationType:"sword",attack:51,chargeTime:32,combo:5},{name:"Icebrand",l:ed("Swords 5"),damageType:"sword",animationType:"sword",attack:55,chargeTime:32,combo:5,iceDamage:!0},{name:"Platinum Sword",l:ed("Swords 6"),damageType:"sword",animationType:"sword",attack:61,chargeTime:32,combo:5},{name:"Bastard Sword",l:ed("Swords 6"),damageType:"sword",animationType:"sword",attack:67,chargeTime:32,combo:5},{name:"Diamond Sword",l:ed("Swords 7"),damageType:"sword",animationType:"sword",attack:73,chargeTime:32,combo:5},{name:"Runeblade",l:ed("Swords 7"),damageType:"sword",animationType:"sword",attack:78,chargeTime:32,combo:5},{name:"Deathbringer",l:ed("Swords 8"),damageType:"sword",animationType:"sword",attack:83,chargeTime:32,combo:5},{name:"Stoneblade",l:ed("Swords 8"),damageType:"sword",animationType:"sword",attack:95,chargeTime:32,combo:5},{name:"Durandal",l:ed("Swords 9"),damageType:"sword",animationType:"sword",attack:99,chargeTime:32,combo:5},{name:"Great Trango",damageType:"sword",animationType:"sword",attack:153,chargeTime:25,combo:30},{name:"Karkata",l:ed("Karkata"),damageType:"sword",animationType:"sword",attack:92,chargeTime:32,combo:7},{name:"Simha",l:ed("Swords 9"),damageType:"sword",animationType:"sword",attack:103,chargeTime:32,combo:10},{name:"Dagger",l:ed("Daggers 1"),damageType:"dagger",animationType:"dagger",attack:14,chargeTime:21,combo:12},{name:"Mage Masher",l:ed("Daggers 2"),damageType:"dagger",animationType:"dagger",attack:18,chargeTime:21,combo:12},{name:"Assassin's Dagger",l:ed("Daggers 2"),damageType:"dagger",animationType:"dagger",attack:31,chargeTime:21,combo:12},{name:"Chopper",l:ed("Daggers 3"),damageType:"dagger",animationType:"dagger",attack:40,chargeTime:21,combo:12},{name:"Main Gauche",l:ed("Daggers 3"),damageType:"dagger",animationType:"dagger",attack:46,chargeTime:21,combo:5},{name:"Gladius",l:ed("Daggers 4"),damageType:"dagger",animationType:"dagger",attack:56,chargeTime:21,combo:12,windDamage:!0},{name:"Avenger",l:ed("Daggers 4"),damageType:"dagger",animationType:"dagger",attack:66,chargeTime:21,combo:12},{name:"Orichalcum Dirk",l:ed("Daggers 5"),damageType:"dagger",animationType:"dagger",attack:79,chargeTime:21,combo:12},{name:"Platinum Dagger",l:ed("Daggers 5"),damageType:"dagger",animationType:"dagger",attack:83,chargeTime:21,combo:12},{name:"Zwill Crossblade",l:ed("Daggers 6"),damageType:"dagger",animationType:"dagger",attack:87,chargeTime:21,combo:12,windDamage:!0},{name:"Shikari Nagasa",l:ed("Shikari Nagasa & Mina"),damageType:"dagger",animationType:"dagger",attack:90,chargeTime:21,combo:12},{name:"Mina",l:ed("Shikari Nagasa & Mina"),damageType:"dagger",animationType:"dagger",attack:104,chargeTime:21,combo:15},{name:"Handaxe",l:ed("Axes & Hammers 1"),damageType:"hammer",animationType:"hammer",attack:17,chargeTime:29,combo:6},{name:"Broadaxe",l:ed("Axes & Hammers 2"),damageType:"hammer",animationType:"hammer",attack:36,chargeTime:29,combo:6},{name:"Slasher",l:ed("Axes & Hammers 3"),damageType:"hammer",animationType:"hammer",attack:54,chargeTime:29,combo:6},{name:"Hammerhead",l:ed("Axes & Hammers 4"),damageType:"hammer",animationType:"hammer",attack:81,chargeTime:29,combo:6},{name:"Francisca",l:ed("Axes & Hammers 5"),damageType:"hammer",animationType:"hammer",attack:88,chargeTime:29,combo:6},{name:"Greataxe",l:ed("Axes & Hammers 6"),damageType:"hammer",animationType:"hammer",attack:110,chargeTime:29,combo:6},{name:"Golden Axe",l:ed("Axes & Hammers 6"),damageType:"hammer",animationType:"hammer",attack:120,chargeTime:29,combo:6},{name:"Iron Hammer",l:ed("Axes & Hammers 2"),damageType:"hammer",animationType:"hammer",attack:24,chargeTime:32,combo:8},{name:"War Hammer",l:ed("Axes & Hammers 3"),damageType:"hammer",animationType:"hammer",attack:42,chargeTime:32,combo:8},{name:"Sledgehammer",l:ed("Axes & Hammers 4"),damageType:"hammer",animationType:"hammer",attack:66,chargeTime:32,combo:8},{name:"Morning Star",l:ed("Axes & Hammers 5"),damageType:"hammer",animationType:"hammer",attack:100,chargeTime:32,combo:8},{name:"Scorpion Tail",l:ed("Axes & Hammers 7"),damageType:"hammer",animationType:"hammer",attack:124,chargeTime:32,combo:8},{name:"Vrscika",l:ed("Vrscika"),damageType:"hammer",animationType:"hammer",attack:133,chargeTime:32,combo:20},{name:"Mace",l:ed("Maces 1"),damageType:"mace",animationType:"mace",attack:17,chargeTime:30,combo:5},{name:"Bronze Mace",l:ed("Maces 1"),damageType:"mace",animationType:"mace",attack:24,chargeTime:30,combo:5},{name:"Bhuj",l:ed("Maces 2"),damageType:"mace",animationType:"mace",attack:34,chargeTime:30,combo:5},{name:"Miter",l:ed("Maces 2"),damageType:"mace",animationType:"mace",attack:42,chargeTime:30,combo:5,waterDamage:!0},{name:"Thorned Mace",l:ed("Maces 3"),damageType:"mace",animationType:"mace",attack:53,chargeTime:30,combo:5},{name:"Chaos Mace",l:ed("Maces 3"),damageType:"mace",animationType:"mace",attack:69,chargeTime:30,combo:5},{name:"Doom Mace",l:ed("Maces 4"),damageType:"mace",animationType:"mace",attack:75,chargeTime:30,combo:5},{name:"Zeus Mace",l:ed("Maces 4"),damageType:"mace",animationType:"mace",attack:81,chargeTime:30,combo:5,darkBonus:!0},{name:"Grand Mace",l:ed("Maces 5"),damageType:"mace",animationType:"mace",attack:88,chargeTime:30,combo:5},{name:"Bonebreaker",damageType:"gun",animationType:"mace",attack:10,chargeTime:30,combo:10},{name:"Bone of Byblos",l:ed("Maces 5"),damageType:"mace",animationType:"mace",attack:100,chargeTime:30,combo:5},{name:"Gilt Measure",l:ed("Measures 1"),damageType:"gun",animationType:"measure",attack:5,chargeTime:32,combo:0},{name:"Arc Scale",l:ed("Measures 2"),damageType:"gun",animationType:"measure",attack:10,chargeTime:32,combo:0},{name:"Multiscale",l:ed("Measures 2"),damageType:"gun",animationType:"measure",attack:13,chargeTime:32,combo:0,fireDamage:!0},{name:"Cross Scale",l:ed("Measures 3"),damageType:"gun",animationType:"measure",attack:16,chargeTime:32,combo:0,lightningDamage:!0},{name:"Caliper",l:ed("Measures 3"),damageType:"gun",animationType:"measure",attack:19,chargeTime:32,combo:0,windDamage:!0},{name:"Euclid's Sextant",l:ed("Measures 4"),damageType:"gun",animationType:"measure",attack:24,chargeTime:32,combo:0,holyDamage:!0},{name:"Claymore",l:ed("Greatswords 1"),damageType:"sword",animationType:"bigsword",attack:83,chargeTime:35,combo:8},{name:"Defender",l:ed("Greatswords 2"),damageType:"sword",animationType:"bigsword",attack:90,chargeTime:35,combo:5},{name:"Save the Queen",l:ed("Greatswords 2"),damageType:"sword",animationType:"bigsword",attack:92,chargeTime:35,combo:8},{name:"Ultima Blade",l:ed("Greatswords 3"),damageType:"sword",animationType:"bigsword",attack:109,chargeTime:35,combo:8},{name:"Ragnarok",l:ed("Greatswords 4"),damageType:"sword",animationType:"bigsword",attack:117,chargeTime:35,combo:8},{name:"Excalibur",l:ed("Excalibur"),damageType:"sword",animationType:"bigsword",attack:127,chargeTime:35,combo:8,holyDamage:!0},{name:"Tournesol",l:ed("Tournesol"),damageType:"sword",animationType:"bigsword",attack:138,chargeTime:35,combo:10},{name:"Wyrmhero Blade",damageType:"sword",animationType:"bigsword",attack:131,chargeTime:99,combo:80,holyDamage:!0,bravery:!0,faith:!0},{name:"Excalipur",l:ed("Excalipur"),damageType:"gun",animationType:"bigsword",attack:1,chargeTime:20,combo:20},{name:"Treaty-Blade",damageType:"sword",animationType:"bigsword",attack:67,chargeTime:30,combo:25},{name:"Sword of Kings",damageType:"sword",animationType:"bigsword",attack:53,chargeTime:30,combo:20},{name:"Kumbha",l:ed("Kumbha"),damageType:"katana",animationType:"sword",attack:117,chargeTime:31,combo:35},{name:"Kotetsu",l:ed("Katana 1"),damageType:"katana",animationType:"katana",attack:16,chargeTime:41,combo:20},{name:"Osafune",l:ed("Katana 1"),damageType:"katana",animationType:"katana",attack:26,chargeTime:31,combo:20},{name:"Kogarasumaru",l:ed("Katana 2"),damageType:"katana",animationType:"katana",attack:40,chargeTime:31,combo:20},{name:"Magoroku",l:ed("Katana 2"),damageType:"katana",animationType:"katana",attack:50,chargeTime:31,combo:20},{name:"Murasame",l:ed("Katana 3"),damageType:"katana",animationType:"katana",attack:62,chargeTime:31,combo:20,waterDamage:!0},{name:"Kiku-ichimonji",l:ed("Katana 3"),damageType:"katana",animationType:"katana",attack:71,chargeTime:31,combo:20},{name:"Yakei",l:ed("Katana 4"),damageType:"katana",animationType:"katana",attack:83,chargeTime:31,combo:20},{name:"Ame-no-Murakumo",l:ed("Katana 4"),damageType:"katana",animationType:"katana",attack:96,chargeTime:31,combo:20,windDamage:!0},{name:"Muramasa",l:ed("Katana 4"),damageType:"katana",animationType:"katana",attack:104,chargeTime:31,combo:20},{name:"Masamune",l:ed("Masamune"),damageType:"katana",animationType:"katana",attack:111,chargeTime:31,combo:30},{name:"Ashura",l:ed("Ninja Swords 1"),damageType:"dagger",animationType:"ninja",attack:72,chargeTime:22,combo:12},{name:"Sakura-saezuri",l:ed("Ninja Swords 1"),damageType:"dagger",animationType:"ninja",attack:77,chargeTime:22,combo:15},{name:"Kagenui",l:ed("Ninja Swords 1"),damageType:"dagger",animationType:"ninja",attack:81,chargeTime:22,combo:18},{name:"Koga Blade",l:ed("Ninja Swords 3"),damageType:"dagger",animationType:"ninja",attack:87,chargeTime:22,combo:22,earthDamage:!0},{name:"Iga Blade",l:ed("Ninja Swords 2"),damageType:"dagger",animationType:"ninja",attack:87,chargeTime:22,combo:22,waterDamage:!0},{name:"Orochi",l:ed("Ninja Swords 1"),damageType:"dagger",animationType:"ninja",attack:94,chargeTime:22,combo:25},{name:"Yagyu Darkblade",l:ed("Yagyu Darkblade & Mesa"),damageType:"dagger",animationType:"ninja",attack:98,chargeTime:24,combo:28,darkDamage:!0},{name:"Mesa",l:ed("Yagyu Darkblade & Mesa"),damageType:"dagger",animationType:"ninja",attack:102,chargeTime:22,combo:32},{name:"Javelin",l:ed("Spears 1"),damageType:"sword",animationType:"spear",attack:16,chargeTime:28,combo:4},{name:"Spear",l:ed("Spears 1"),damageType:"sword",animationType:"spear",attack:26,chargeTime:28,combo:4},{name:"Partisan",l:ed("Spears 2"),damageType:"sword",animationType:"spear",attack:34,chargeTime:28,combo:4},{name:"Heavy Lance",l:ed("Spears 2"),damageType:"sword",animationType:"spear",attack:42,chargeTime:28,combo:4},{name:"Storm Spear",l:ed("Spears 3"),damageType:"sword",animationType:"spear",attack:53,chargeTime:28,combo:4,lightningDamage:!0},{name:"Obelisk",l:ed("Spears 3"),damageType:"sword",animationType:"spear",attack:68,chargeTime:28,combo:4},{name:"Halberd",l:ed("Spears 4"),damageType:"sword",animationType:"spear",attack:75,chargeTime:28,combo:4},{name:"Trident",l:ed("Spears 4"),damageType:"sword",animationType:"spear",attack:85,chargeTime:28,combo:4,iceDamage:!0},{name:"Holy Lance",l:ed("Spears 5"),damageType:"sword",animationType:"spear",attack:91,chargeTime:28,combo:4,holyDamage:!0},{name:"Gungnir",l:ed("Spears 5"),damageType:"sword",animationType:"spear",attack:95,chargeTime:28,combo:4,fireDamage:!0},{name:"Dragon Whisker",l:ed("Dragon Whisker"),damageType:"sword",animationType:"spear",attack:100,chargeTime:28,combo:4},{name:"Vrsabha",l:ed("Vrsabha"),damageType:"sword",animationType:"spear",attack:108,chargeTime:28,combo:10},{name:"Zodiac Spear",l:ed("Zodiac Spear"),damageType:"sword",animationType:"spear",attack:141,chargeTime:28,combo:4},{name:"Oaken Pole",l:ed("Poles 1"),damageType:"pole",animationType:"pole",attack:15,chargeTime:25,combo:15},{name:"Cypress Pole",l:ed("Poles 2"),damageType:"pole",animationType:"pole",attack:22,chargeTime:25,combo:15,earthDamage:!0},{name:"Battle Bamboo",l:ed("Poles 2"),damageType:"pole",animationType:"pole",attack:34,chargeTime:25,combo:15},{name:"Musk Stick",l:ed("Poles 3"),damageType:"pole",animationType:"pole",attack:39,chargeTime:25,combo:15},{name:"Iron Pole",l:ed("Poles 3"),damageType:"pole",animationType:"pole",attack:46,chargeTime:25,combo:15},{name:"Six-fluted Pole",l:ed("Poles 4"),damageType:"pole",animationType:"pole",attack:59,chargeTime:25,combo:15,waterBonus:!0},{name:"Gokuu Pole",l:ed("Poles 4"),damageType:"pole",animationType:"pole",attack:72,chargeTime:25,combo:15},{name:"Zephyr Pole",l:ed("Poles 5"),damageType:"pole",animationType:"pole",attack:77,chargeTime:25,combo:15,windDamage:!0},{name:"Ivory Pole",l:ed("Poles 5"),damageType:"pole",animationType:"pole",attack:83,chargeTime:25,combo:15},{name:"Sweep",l:ed("Poles 6"),damageType:"pole",animationType:"pole",attack:88,chargeTime:25,combo:15},{name:"Eight-fluted Pole",l:ed("Poles 6"),damageType:"pole",animationType:"pole",attack:91,chargeTime:25,combo:15},{name:"Whale Whisker",l:ed("Whale Whisker"),damageType:"pole",animationType:"pole",attack:108,chargeTime:25,combo:15},{name:"Kanya",l:ed("Kanya"),damageType:"pole",animationType:"pole",attack:112,chargeTime:25,combo:35},{name:"Rod",l:ed("Rods 1"),damageType:"sword",animationType:"rod",attack:16,chargeTime:33,mag:2},{name:"Serpent Rod",l:ed("Rods 1"),damageType:"sword",animationType:"rod",attack:25,chargeTime:33,mag:2,iceDamage:!0},{name:"Healing Rod",l:ed("Rods 2"),damageType:"gun",animationType:"rod",attack:7,chargeTime:33,mag:2},{name:"Gaia Rod",l:ed("Rods 2"),damageType:"sword",animationType:"rod",attack:43,chargeTime:33,mag:2,earthDamage:!0},{name:"Power Rod",l:ed("Rods 3"),damageType:"sword",animationType:"rod",attack:56,chargeTime:33,mag:3},{name:"Empyrean Rod",l:ed("Rods 3"),damageType:"sword",animationType:"rod",attack:60,chargeTime:33,mag:2},{name:"Holy Rod",l:ed("Rods 4"),damageType:"sword",animationType:"rod",attack:63,chargeTime:33,mag:4,holyDamage:!0,holyBonus:!0},{name:"Rod of Faith",l:ed("Rod of Faith"),damageType:"gun",animationType:"rod",attack:21,chargeTime:33,mag:6},{name:"Oak Staff",l:ed("Staves 1"),damageType:"katana",animationType:"staff",attack:15,chargeTime:34,mag:2},{name:"Cherry Staff",l:ed("Staves 2"),damageType:"katana",animationType:"staff",attack:20,chargeTime:34,mag:3,windBonus:!0},{name:"Wizard's Staff",l:ed("Staves 2"),damageType:"katana",animationType:"staff",attack:26,chargeTime:34,mag:4},{name:"Flame Staff",l:ed("Staves 3"),damageType:"katana",animationType:"staff",attack:34,chargeTime:34,mag:4,fireBonus:!0},{name:"Storm Staff",l:ed("Staves 3"),damageType:"katana",animationType:"staff",attack:36,chargeTime:34,mag:4,lightningBonus:!0},{name:"Glacial Staff",l:ed("Staves 4"),damageType:"katana",animationType:"staff",attack:38,chargeTime:34,mag:5,iceBonus:!0},{name:"Golden Staff",l:ed("Staves 4"),damageType:"katana",animationType:"staff",attack:42,chargeTime:34,mag:6},{name:"Judicer's Staff",l:ed("Staves 5"),damageType:"katana",animationType:"staff",attack:48,chargeTime:34,mag:7},{name:"Cloud Staff",l:ed("Staves 5"),damageType:"katana",animationType:"staff",attack:49,chargeTime:34,mag:7,lightningBonus:!0,windBonus:!0,waterBonus:!0},{name:"Staff of the Magi",l:ed("Staff of the Magi"),damageType:"katana",animationType:"staff",attack:53,chargeTime:34,mag:8,iceBonus:!0,windBonus:!0,holyBonus:!0},{name:"Shortbow",l:ed("Bows 1"),damageType:"dagger",animationType:"bow",attack:15,chargeTime:36,combo:5},{name:"Silver Bow",l:ed("Bows 2"),damageType:"dagger",animationType:"bow",attack:19,chargeTime:36,combo:5},{name:"Aevis Killer",l:ed("Bows 2"),damageType:"dagger",animationType:"bow",attack:25,chargeTime:36,combo:5},{name:"Killer Bow",l:ed("Bows 3"),damageType:"dagger",animationType:"bow",attack:36,chargeTime:36,combo:5},{name:"Longbow",l:ed("Bows 3"),damageType:"dagger",animationType:"bow",attack:48,chargeTime:36,combo:0},{name:"Elfin Bow",l:ed("Bows 4"),damageType:"dagger",animationType:"bow",attack:54,chargeTime:36,combo:5},{name:"Loxley Bow",l:ed("Bows 4"),damageType:"dagger",animationType:"bow",attack:60,chargeTime:36,combo:5},{name:"Giant Stonebow",l:ed("Bows 5"),damageType:"dagger",animationType:"bow",attack:73,chargeTime:36,combo:5},{name:"Burning Bow",l:ed("Bows 5"),damageType:"dagger",animationType:"bow",attack:77,chargeTime:36,combo:5,fireBonus:!0},{name:"Traitor's Bow",l:ed("Bows 6"),damageType:"dagger",animationType:"bow",attack:82,chargeTime:36,combo:5},{name:"Yoichi Bow",l:ed("Bows 6"),damageType:"dagger",animationType:"bow",attack:89,chargeTime:36,combo:5},{name:"Perseus Bow",l:ed("Bows 7"),damageType:"dagger",animationType:"bow",attack:92,chargeTime:36,combo:5},{name:"Artemis Bow",l:ed("Bows 7"),damageType:"dagger",animationType:"bow",attack:94,chargeTime:36,combo:5},{name:"Sagittarius",l:ed("Sagittarius"),damageType:"dagger",animationType:"bow",attack:97,chargeTime:36,combo:5},{name:"Dhanusha",l:ed("Dhanusha"),damageType:"dagger",animationType:"bow",attack:109,chargeTime:36,combo:20},{name:"Seitengrat",damageType:"dagger",animationType:"bow",attack:224,chargeTime:10,combo:25},{name:"Bowgun",l:ed("Crossbows 1"),damageType:"sword",animationType:"xbow",attack:21,chargeTime:24,combo:7},{name:"Crossbow",l:ed("Crossbows 1"),damageType:"sword",animationType:"xbow",attack:31,chargeTime:24,combo:7},{name:"Paramina Crossbow",l:ed("Crossbows 2"),damageType:"sword",animationType:"xbow",attack:42,chargeTime:24,combo:7},{name:"Recurve Crossbow",l:ed("Crossbows 2"),damageType:"sword",animationType:"xbow",attack:57,chargeTime:24,combo:7},{name:"Hunting Crossbow",l:ed("Crossbows 3"),damageType:"sword",animationType:"xbow",attack:70,chargeTime:24,combo:7},{name:"Penetrator Crossbow",l:ed("Crossbows 3"),damageType:"sword",animationType:"xbow",attack:79,chargeTime:24,combo:7},{name:"Gastrophetes",l:ed("Crossbows 4"),damageType:"sword",animationType:"xbow",attack:84,chargeTime:24,combo:7},{name:"Tula",l:ed("Crossbows 4"),damageType:"sword",animationType:"xbow",attack:91,chargeTime:24,combo:7},{name:"Altair",l:ed("Guns 1"),damageType:"gun",animationType:"gun",attack:6,chargeTime:50,combo:5},{name:"Capella",l:ed("Guns 2"),damageType:"gun",animationType:"gun",attack:8,chargeTime:50,combo:5},{name:"Vega",l:ed("Guns 2"),damageType:"gun",animationType:"gun",attack:13,chargeTime:50,combo:5},{name:"Sirius",l:ed("Guns 3"),damageType:"gun",animationType:"gun",attack:17,chargeTime:50,combo:5},{name:"Betelgeuse",l:ed("Guns 3"),damageType:"gun",animationType:"gun",attack:22,chargeTime:50,combo:5},{name:"Ras Algethi",l:ed("Guns 4"),damageType:"gun",animationType:"gun",attack:29,chargeTime:50,combo:5},{name:"Aldebaran",l:ed("Guns 4"),damageType:"gun",animationType:"gun",attack:33,chargeTime:50,combo:5},{name:"Spica",l:ed("Guns 5"),damageType:"gun",animationType:"gun",attack:38,chargeTime:50,combo:5},{name:"Antares",l:ed("Guns 5"),damageType:"gun",animationType:"gun",attack:41,chargeTime:50,combo:5},{name:"Arcturus",l:ed("Guns 6"),damageType:"gun",animationType:"gun",attack:45,chargeTime:50,combo:5},{name:"Fomalhaut",l:ed("Guns 6"),damageType:"gun",animationType:"gun",attack:52,chargeTime:50,combo:5},{name:"Mithuna",l:ed("Mithuna"),damageType:"gun",animationType:"gun",attack:66,chargeTime:50,combo:10},{name:"Hornito",l:ed("Hand-bombs 1"),damageType:"hammer",animationType:"handbomb",attack:66,chargeTime:33},{name:"Fumarole",l:ed("Hand-bombs 2"),damageType:"hammer",animationType:"handbomb",attack:71,chargeTime:33,waterBonus:!0},{name:"Tumulus",l:ed("Hand-bombs 2"),damageType:"hammer",animationType:"handbomb",attack:76,chargeTime:33},{name:"Caldera",l:ed("Hand-bombs 3"),damageType:"hammer",animationType:"handbomb",attack:83,chargeTime:33},{name:"Volcano",l:ed("Hand-bombs 3"),damageType:"hammer",animationType:"handbomb",attack:90,chargeTime:33},{name:"Makara",l:ed("Hand-bombs 4"),damageType:"hammer",animationType:"handbomb",attack:96,chargeTime:33}]),eq=eU([{name:"Leather Cap",l:ed("Light Armor 1")},{name:"Headgear",l:ed("Light Armor 2")},{name:"Headguard",l:ed("Light Armor 2")},{name:"Leather Headgear",l:ed("Light Armor 3")},{name:"Horned Hat",l:ed("Light Armor 3")},{name:"Balaclava",l:ed("Light Armor 4"),str:1},{name:"Soldier's Cap",l:ed("Light Armor 4")},{name:"Green Beret",l:ed("Light Armor 5"),spd:3},{name:"Red Cap",l:ed("Light Armor 5"),vit:3},{name:"Headband",l:ed("Light Armor 6"),str:2},{name:"Pirate Hat",l:ed("Light Armor 6")},{name:"Goggle Mask",l:ed("Light Armor 7")},{name:"Adamant Hat",l:ed("Light Armor 7")},{name:"Officer's Hat",l:ed("Light Armor 8"),spd:3},{name:"Chakra Band",l:ed("Light Armor 8"),str:2},{name:"Thief's Cap",l:ed("Light Armor 9"),spd:4},{name:"Gigas Hat",l:ed("Light Armor 9"),mag:2},{name:"Chaperon",l:ed("Light Armor 10")},{name:"Crown of Laurels",l:ed("Light Armor 11")},{name:"Renewing Morion",l:ed("Light Armor 12"),vit:4},{name:"Dueling Mask",l:ed("Light Armor 13"),str:2},{name:"Leather Helm",l:ed("Heavy Armor 1"),str:2},{name:"Bronze Helm",l:ed("Heavy Armor 1"),str:2},{name:"Sallet",l:ed("Heavy Armor 2"),str:3},{name:"Iron Helm",l:ed("Heavy Armor 2"),str:3},{name:"Barbut",l:ed("Heavy Armor 3"),str:4},{name:"Winged Helm",l:ed("Heavy Armor 3"),str:5,spd:3},{name:"Golden Helm",l:ed("Heavy Armor 4"),str:5},{name:"Burgonet",l:ed("Heavy Armor 4"),str:4},{name:"Close Helmet",l:ed("Heavy Armor 5"),str:5},{name:"Bone Helm",l:ed("Heavy Armor 5"),str:6},{name:"Diamond Helm",l:ed("Heavy Armor 6"),str:7,vit:3},{name:"Steel Mask",l:ed("Heavy Armor 7"),str:7,spd:4},{name:"Platinum Helm",l:ed("Heavy Armor 8"),str:8},{name:"Giant's Helmet",l:ed("Heavy Armor 9"),str:8},{name:"Dragon Helm",l:ed("Heavy Armor 10"),str:9},{name:"Genji Helm",l:ed("Genji Armor"),str:9,mag:4},{name:"Magepower Shishak",l:ed("Heavy Armor 11"),str:11,mag:5},{name:"Grand Helm",l:ed("Heavy Armor 12"),str:12,vit:10},{name:"Cotton Cap",l:ed("Mystic Armor 1"),mag:2},{name:"Magick Curch",l:ed("Mystic Armor 1"),mag:2},{name:"Pointy Hat",l:ed("Mystic Armor 2"),mag:2},{name:"Topkapi Hat",l:ed("Mystic Armor 2"),mag:3},{name:"Calot Hat",l:ed("Mystic Armor 3"),mag:3},{name:"Wizard's Hat",l:ed("Mystic Armor 3"),mag:4},{name:"Lambent Hat",l:ed("Mystic Armor 4"),mag:4,spd:3},{name:"Feathered Cap",l:ed("Mystic Armor 4"),mag:5},{name:"Mage's Hat",l:ed("Mystic Armor 5"),mag:5},{name:"Lamia's Tiara",l:ed("Mystic Armor 5"),mag:4,vit:7},{name:"Sorcerer's Hat",l:ed("Mystic Armor 6"),mag:6},{name:"Black Cowl",l:ed("Mystic Armor 6"),mag:5,spd:4},{name:"Astrakhan Hat",l:ed("Mystic Armor 7"),mag:6},{name:"Gaia Hat",l:ed("Mystic Armor 7"),mag:7},{name:"Hypnocrown",l:ed("Mystic Armor 8"),str:2,mag:7},{name:"Gold Hairpin",l:ed("Mystic Armor 8"),mag:7,vit:8},{name:"Celebrant's Miter",l:ed("Mystic Armor 9"),mag:6,spd:5},{name:"Black Mask",l:ed("Mystic Armor 10"),mag:8},{name:"White Mask",l:ed("Mystic Armor 11"),mag:8},{name:"Golden Skullcap",l:ed("Mystic Armor 12"),mag:10,spd:3},{name:"Circlet",l:ed("Mystic Armor 13"),str:2,mag:10}]),e$=eU([{name:"Leather Clothing",l:ed("Light Armor 1")},{name:"Chromed Leathers",l:ed("Light Armor 2")},{name:"Leather Breastplate",l:ed("Light Armor 2")},{name:"Bronze Chestplate",l:ed("Light Armor 3")},{name:"Ringmail",l:ed("Light Armor 3"),str:1},{name:"Windbreaker",l:ed("Light Armor 4")},{name:"Heavy Coat",l:ed("Light Armor 4")},{name:"Survival Vest",l:ed("Light Armor 5"),vit:5},{name:"Brigandine",l:ed("Light Armor 5")},{name:"Jujitsu Gi",l:ed("Light Armor 6"),str:2},{name:"Viking Coat",l:ed("Light Armor 6")},{name:"Metal Jerkin",l:ed("Light Armor 7")},{name:"Adamant Vest",l:ed("Light Armor 7")},{name:"Barrel Coat",l:ed("Light Armor 8")},{name:"Power Vest",l:ed("Light Armor 8"),str:2},{name:"Ninja Gear",l:ed("Light Armor 9"),spd:4},{name:"Gigas Chestplate",l:ed("Light Armor 9"),mag:2},{name:"Minerva Bustier",l:ed("Light Armor 10")},{name:"Rubber Suit",l:ed("Light Armor 11")},{name:"Mirage Vest",l:ed("Light Armor 12"),vit:10,spd:10},{name:"Brave Suit",l:ed("Light Armor 13"),bravery:!0},{name:"Leather Armor",l:ed("Heavy Armor 1"),str:2},{name:"Bronze Armor",l:ed("Heavy Armor 1"),str:2},{name:"Scale Armor",l:ed("Heavy Armor 2"),str:3,spd:3},{name:"Iron Armor",l:ed("Heavy Armor 2"),str:3},{name:"Linen Cuirass",l:ed("Heavy Armor 3"),str:4},{name:"Chainmail",l:ed("Heavy Armor 3"),str:3},{name:"Golden Armor",l:ed("Heavy Armor 4"),str:4},{name:"Shielded Armor",l:ed("Heavy Armor 4"),str:5},{name:"Demon Mail",l:ed("Heavy Armor 5"),str:5,vit:3},{name:"Bone Mail",l:ed("Heavy Armor 5"),str:6},{name:"Diamond Armor",l:ed("Heavy Armor 6"),str:7,vit:5},{name:"Mirror Mail",l:ed("Heavy Armor 7"),str:6},{name:"Platinum Armor",l:ed("Heavy Armor 8"),str:7},{name:"Carabineer Mail",l:ed("Heavy Armor 9"),str:8,mag:2},{name:"Dragon Mail",l:ed("Heavy Armor 10"),str:8},{name:"Genji Armor",l:ed("Genji Armor"),str:9,mag:3},{name:"Maximillian",l:ed("Heavy Armor 11"),str:9,spd:6},{name:"Grand Armor",l:ed("Heavy Armor 12"),str:12},{name:"Cotton Shirt",l:ed("Mystic Armor 1"),mag:1},{name:"Light Woven Shirt",l:ed("Mystic Armor 1"),mag:2},{name:"Silken Shirt",l:ed("Mystic Armor 2"),mag:2},{name:"Kilimweave Shirt",l:ed("Mystic Armor 2"),mag:3},{name:"Shepherd's Bolero",l:ed("Mystic Armor 3"),mag:3},{name:"Wizard's Robes",l:ed("Mystic Armor 3"),mag:4},{name:"Chanter's Djellaba",l:ed("Mystic Armor 4"),mag:4,vit:5},{name:"Traveler's Vestment",l:ed("Mystic Armor 4"),mag:5},{name:"Mage's Habit",l:ed("Mystic Armor 5"),mag:6},{name:"Enchanter's Habit",l:ed("Mystic Armor 5"),mag:7,vit:10},{name:"Sorcerer's Habit",l:ed("Mystic Armor 6"),mag:8},{name:"Black Garb",l:ed("Mystic Armor 6"),mag:6,spd:3},{name:"Carmagnole",l:ed("Mystic Armor 7"),mag:7},{name:"Maduin Gear",l:ed("Mystic Armor 7"),str:1,mag:8},{name:"Jade Gown",l:ed("Mystic Armor 8"),mag:8},{name:"Gaia Gear",l:ed("Mystic Armor 8"),mag:8},{name:"Cleric's Robes",l:ed("Mystic Armor 9"),mag:9},{name:"White Robes",l:ed("Mystic Armor 11"),mag:10,spd:4,holyBonus:!0},{name:"Black Robes",l:ed("Mystic Armor 10"),mag:12,darkBonus:!0},{name:"Glimmering Robes",l:ed("Mystic Armor 12"),mag:12,vit:10},{name:"Lordly Robes",l:ed("Mystic Armor 13"),str:5,mag:15}]),eJ=eU([{name:"Bangle",l:ed("Accessories 2")},{name:"Berserker Bracers",l:ed("Accessories 13"),berserk:!0},{name:"Ruby Ring",l:ed("Accessories 15")},{name:"Bubble Belt",l:ed("Accessories 17")},{name:"Winged Boots",l:ed("Accessories 19"),spd:5},{name:"Hermes Sandals",l:ed("Accessories 20"),str:5,haste:!0},{name:"Ring of Renewal",l:ed("Accessories 22")},{name:"Orrachea Armlet",l:ed("Accessories 1")},{name:"Blazer Gloves",l:ed("Accessories 11"),focus:!0},{name:"Steel Gorget",l:ed("Accessories 4"),adrenaline:!0},{name:"Magick Gloves",l:ed("Accessories 13"),serenity:!0},{name:"Leather Gorget",l:ed("Accessories 6"),spellbreaker:!0},{name:"Amber Armlet",l:ed("Accessories 9"),spd:2,brawler:!0},{name:"Sage's Ring",l:ed("Accessories 14")},{name:"Agate Ring",l:ed("Accessories 14"),vit:20,agateRing:!0},{name:"Opal Ring",l:ed("Accessories 20"),mag:5},{name:"Battle Harness",l:ed("Accessories 4"),str:2},{name:"Gauntlets",l:ed("Accessories 8"),vit:5},{name:"Jade Collar",l:ed("Accessories 10"),spd:3},{name:"Cameo Belt",l:ed("Accessories 16"),mag:3,cameoBelt:!0},{name:"Indigo Pendant",l:ed("Accessories 19"),spd:7},{name:"Genji Gloves",l:ed("Genji Armor"),mag:3,genjiGloves:!0},{name:"Argyle Armlet",l:ed("Accessories 3"),str:1},{name:"Tourmaline Ring",l:ed("Accessories 5")},{name:"Rose Corsage",l:ed("Accessories 7"),mag:1},{name:"Black Belt",l:ed("Accessories 9"),vit:7},{name:"Nishijin Belt",l:ed("Accessories 10"),mag:3},{name:"Gillie Boots",l:ed("Accessories 12"),str:1,spd:10},{name:"Bowline Sash",l:ed("Accessories 15"),mag:2},{name:"Fuzzy Miter",l:ed("Accessories 17"),str:2},{name:"Sash",l:ed("Accessories 18"),spd:20},{name:"Power Armlet",l:ed("Accessories 18"),str:3},{name:"Germinas Boots",l:ed("Accessories 22"),vit:20,spd:50},{name:"Quasimodo Boots",l:ed("Accessories 21")},{name:"Ribbon",l:ed("Ribbon")},{name:"Steel Poleyns",l:ed("Accessories 12")},{name:"Diamond Armlet",l:ed("Accessories 3")},{name:"Thief's Cuffs",l:ed("Accessories 8"),spd:1},{name:"Pheasant Netsuke",l:ed("Accessories 11")},{name:"Nihopalaoa",l:ed("Accessories 21")},{name:"Embroidered Tippet",l:ed("Accessories 5")},{name:"Firefly",l:ed("Accessories 2"),str:1,mag:1},{name:"Golden Amulet",l:ed("Accessories 6")},{name:"Cat-ear Hood",l:ed("Accessories 16"),spd:3},{name:"Turtleshell Choker",l:ed("Accessories 7"),mag:2,spd:3},{name:"Manufacted Nethicite"},{name:"Goddess's Magicite"},{name:"Dawn Shard"}]);function eY(e,a){let l={...e};return a.weapon.mutateProfile(l),a.ammo?.mutateProfile(l),a.helm?.mutateProfile(l),a.armor?.mutateProfile(l),a.accessory?.mutateProfile(l),l.str>99&&(l.str=99),l.mag>99&&(l.mag=99),l.vit>99&&(l.vit=99),l.spd>99&&(l.spd=99),l}function e_(e){let[a,...l]=e;return{initialSwing:a/30,comboSwing:l.length?l.reduce((e,a)=>e+a)/l.length/30:0}}const eX=function(e,a){let l={};for(let t in e)l[t]=a(e[t]);return l}({unarmed:[[36,15,23],[36,15,23],[36,15,32],[36,20,20],[36,18,18],[36,26,28]],sword:[[36,15,16],[36,15,15],[36,18,19],[36,15,15],[36,18,18],[36,20,20]],bigsword:[[36,15,15],[36,15,18],[36,19,19],[36,15,15],[36,18,20],[36,20,20]],dagger:[[36,18,23],[36,15,15],[36,23,23],[36,15,23],[36,15,15,18],[36,20,23]],ninja:[[36,15,22],[36,15,15],[36,19,19],[36,15,15],[36,15,20],[36,15,15]],katana:[[36,17,18],[36,15,15],[36,18,19],[36,15,15],[36,20,20],[36,18,25]],hammer:[[36,22,23],[36,18,18],[36,20,21],[36,15,15],[36,15,18,18],[36,26,26]],mace:[[36,15,15],[36,23,23],[36,21,23],[36,15,15],[36,18,20,30],[36,23,23]],pole:[[36,19,19],[36,19,25],[36,16,17],[36,18,18],[36,23,28],[36,20,22]],spear:[[36,18,22],[36,18,18],[36,17,20],[36,15,20],[36,17,20],[36,23,28]],bow:[[42],[48],[48],[42],[42],[42]],xbow:[[42],[48],[42],[42],[42],[48]],gun:[[42],[48],[42],[42],[42],[48]],measure:[[36],[36],[36],[36],[36],[36]],rod:[[36,18],[36,18],[36,18],[36,18],[36,18],[36,18]],handbomb:[[42],[42],[42],[42],[42],[42]],staff:[[36,18],[36,18],[36,18],[36,18],[36,18],[36,18]]},e=>e.map(e_));function e1(e,a,l,t){let n=e*a,r=e*l;return n>=t?(n+r)/2-t:r<=t?0:(1-(t-n)/(r-n))*(r-t)/2}function e0(e,a,l){e??=a.chargeTime;let t=1/(1.022342422396204*a.spd+5.268190606448866)+.1,n=1;a.swiftness1&&(n-=.12),a.swiftness2&&(n-=.12),a.swiftness3&&(n-=.12);let r=1/(.8+l.battleSpeed/5),o=1;return"attack"===a.ability.alg&&a.berserk&&(o/=2),a.haste&&(o/=1.5),(e*t+.25)*n*r*o}function e2(e,a,l,t){let n=a??l;return n.fireDamage&&(l.fireBonus&&(e*=1.5),e*=t.fireReaction),n.iceDamage&&(l.iceBonus&&(e*=1.5),e*=t.iceReaction),n.lightningDamage&&(l.lightningBonus&&(e*=1.5),e*=t.lightningReaction),n.waterDamage&&(l.waterBonus&&(e*=1.5),e*=t.waterReaction),n.windDamage&&(l.windBonus&&(e*=1.5),e*=t.windReaction),n.earthDamage&&(l.earthBonus&&(e*=1.5),e*=t.earthReaction),n.darkDamage&&(l.darkBonus&&(e*=1.5),e*=t.darkReaction),n.holyDamage&&(l.holyBonus&&(e*=1.5),e*=t.holyReaction),t.oil&&n.fireDamage&&(e*=3),!l.agateRing&&("sand"===t.terrain?n.earthDamage&&(e*=1.2):"water"===t.terrain?n.lightningDamage||n.waterDamage?e*=1.2:n.earthDamage&&(e*=.5):"snow"===t.terrain&&n.iceDamage&&(e*=1.2),("windy"===t.weather||"windy and rainy"===t.weather)&&(n.fireDamage||n.windDamage?e*=1.2:n.waterDamage&&(e*=.5)),("rainy"===t.weather||"windy and rainy"===t.weather)&&(n.lightningDamage?e*=1.2:n.fireDamage&&(e*=.5)),"foggy"===t.weather&&n.waterDamage&&(e*=1.2)),e}function e3(e,{hazardUniqueMask:a,sharedMask:l},t){let n=[],r=[],o=0,i=1023&a,s=2096128&a,c=8191&l;for(let a of e)a.hazardUniqueMask&i?r.push(a):a.hazardUniqueMask&s?(n.unshift(a),o++):a.sharedMask&c&&n.push(a);for(;ol)continue e}n.splice(o--,1);break}return n.push(...r),n.length||n.push(t?void 0:e[0]),n}const e5=eU([{name:"Onion Arrows",animationType:"bow",attack:1},{name:"Parallel Arrows",animationType:"bow",attack:2},{name:"Fiery Arrows",animationType:"bow",attack:1,fireDamage:!0},{name:"Bamboo Arrows",animationType:"bow",attack:2},{name:"Lightning Arrows",animationType:"bow",attack:2,lightningDamage:!0},{name:"Assassin's Arrows",animationType:"bow",attack:3},{name:"Icecloud Arrows",animationType:"bow",attack:4,iceDamage:!0},{name:"Artemis Arrows",animationType:"bow",attack:5,earthDamage:!0},{name:"Onion Bolts",animationType:"xbow",attack:1},{name:"Long Bolts",animationType:"xbow",attack:1},{name:"Stone Bolts",animationType:"xbow",attack:1},{name:"Lead Bolts",animationType:"xbow",attack:2},{name:"Black Bolts",animationType:"xbow",attack:2},{name:"Time Bolts",animationType:"xbow",attack:2},{name:"Sapping Bolts",animationType:"xbow",attack:3},{name:"Grand Bolts",animationType:"xbow",attack:4},{name:"Onion Shot",animationType:"gun",attack:1},{name:"Silent Shot",animationType:"gun",attack:1},{name:"Aqua Shot",animationType:"gun",attack:3,waterDamage:!0},{name:"Wyrmfire Shot",animationType:"gun",attack:3,fireDamage:!0},{name:"Mud Shot",animationType:"gun",attack:2,earthDamage:!0},{name:"Windslicer Shot",animationType:"gun",attack:4,windDamage:!0},{name:"Dark Shot",animationType:"gun",attack:4,darkDamage:!0},{name:"Stone Shot",animationType:"gun",attack:3},{name:"Onion Bombs",animationType:"handbomb",attack:1},{name:"Poison Bombs",animationType:"handbomb",attack:2},{name:"Stun Bombs",animationType:"handbomb",attack:2},{name:"Oil Bombs",animationType:"handbomb",attack:3},{name:"Chaos Bombs",animationType:"handbomb",attack:4},{name:"Stink Bombs",animationType:"handbomb",attack:2},{name:"Water Bombs",animationType:"handbomb",attack:5,waterDamage:!0},{name:"Castellanos",animationType:"handbomb",attack:6}],!0);function e4(e,a,l){let t,n;let r={weapon:l.weapons[0],ammo:void 0,armor:void 0,helm:void 0,accessory:void 0},o=function(e,a){let l,t,n,r;let{ability:o}=e;return"attack"===o.alg?function(e,a){let l=255,t=6161;switch(e.combo>0&&(l|=524288),(a.parry||a.block>0||("windy"===a.weather||"windy and rainy"===a.weather)&&("bow"===e.animationType||"xbow"===e.animationType))&&(l|=1048576),("other"!==a.weather||"other"!==a.terrain)&&(l|=256),a.berserk||(l|=2048),a.haste||(l|=4096),a.bravery||(l|=8192),e.focus||100!==a.percentHp||(l|=32768),!e.adrenaline&&a.percentHp<20&&(l|=65536),e.damageType){case"unarmed":t|=2,e.brawler||(l|=1024);break;case"sword":case"pole":case"dagger":t|=2;break;case"hammer":t|=2,t|=8;break;case"mace":t|=4;break;case"katana":t|=2,t|=4}return{hazardUniqueMask:l,sharedMask:t}}(e,a):"magick"===o.alg?(l=0,t=20,o.fireDamage&&(t|=32),o.iceDamage&&(t|=64),o.lightningDamage&&(t|=128),o.waterDamage&&(t|=256),o.windDamage&&(t|=512),o.earthDamage&&(t|=1024),o.darkDamage&&(t|=2048),o.holyDamage&&(t|=4096),("other"!==a.weather||"other"!==a.terrain)&&(l|=256),a.haste||(l|=4096),a.faith||(l|=16384),e.serenity||100!==a.percentHp||(l|=131072),!e.spellbreaker&&a.percentHp<20&&(l|=262144),{hazardUniqueMask:l,sharedMask:t}):(n=0,r=16,"Telekinesis"===o.name?(r|=1,n|=512):"Souleater"===o.name&&(r|=1,r|=2),a.haste||(n|=4096),{hazardUniqueMask:n,sharedMask:r})}(eY(e,r),a),i=e3(l.weapons,o,!1),s=e3(l.armors,o,!0),c=e3(l.helms,o,!0),m=e3(l.accessories,o,!0);for(let l of i){r.weapon=l;let i=e3(e5.filter(e=>e.animationType===l.animationType),o,!1);for(let l of i)for(let o of(r.ammo=l,s))for(let l of(r.armor=o,c))for(let o of(r.helm=l,m)){r.accessory=o;let l=eY(e,r),i=function(e,a){let{ability:l}=e;return"attack"===l.alg?function(e,a){let l;switch(e.damageType){case"unarmed":{let t=e.brawler?(e.str+a.level)/2:11;l=e1(t,1,1.125,a.def)*e.str*(a.level+e.str)/256;break}case"sword":l=e1(e.attack,1,1.125,a.def)*(1+e.str*(a.level+e.str)/256);break;case"pole":l=e1(e.attack,1,1.125,a.mdef)*(1+e.str*(a.level+e.str)/256);break;case"mace":l=e1(e.attack,1,1.125,a.def)*(1+e.mag*(a.level+e.mag)/256);break;case"katana":l=e1(e.attack,1,1.125,a.def)*(1+e.str*(a.level+e.mag)/256);break;case"hammer":l=e1(e.attack,0,1.111,a.def)*(1+e.str*(a.level+e.str)/128);break;case"dagger":l=e1(e.attack,1,1.125,a.def)*(1+e.str*(a.level+e.spd)/218);break;case"gun":{let a=1.0625*e.attack;l=a*a;break}default:throw Error()}let t=l;"gun"===e.damageType&&a.resistGun&&(t/=8),t=e2(t,void 0,e,a),e.berserk&&(t*=1.5),e.bravery&&(t*=1.3),e.focus&&100===a.percentHp&&(t*=1.5),e.adrenaline&&a.percentHp<20&&(t*=2);let n=t;"gun"===e.damageType||e.cameoBelt||(a.block&&(n*=(100-a.block)/100),a.parry&&(n*=.75),("windy"===a.weather||"windy and rainy"===a.weather)&&("bow"===e.animationType?n*=.8:"xbow"===e.animationType&&(n*=.5)));let r=n,o=eX[e.animationType][a.character],i=o.initialSwing;if(e.combo>0){let l=Math.min(1,e.combo*(e.genjiGloves?1.8:.7)/100);if(0===o.comboSwing||"gun"===e.damageType)r*=1+l;else{let e;let t=o.comboSwing;i+=(e=a.percentHp>25?1.873:a.percentHp>12?2.752:a.percentHp>6?4.509:8.028)*t*l,r*=1+e*l}}let s=e0(void 0,e,a),c=s+i,m=r/c;return{dps:m,baseDmg:l,modifiedDamage:t,nonAvoidedDamage:n,comboDamage:r,chargeTime:s,animationTime:i}}(e,a):"magick"===l.alg?function(e,a,l){let t="heal"===e.special,n=e1(e.att,1,1.125,t?0:l.mdef)*(2+a.mag*(l.level+a.mag)/256),r=n;r=e2(r,e,a,l),(l.undead&&"drain"===e.special||!l.undead&&t)&&(r=0),a.faith&&(r*=t?1.5:1.3),a.serenity&&100===l.percentHp&&(r*=1.5),a.spellbreaker&&l.percentHp<20&&(r*=t?1.5:2);let o=r,i=o,s=e.at/30;if(null!=e.aoe){let a=e.aoe/30,t=l.targetCount-1;s+=t*a,i*=l.targetCount}let c=e0(e.ct,a,l),m=c+s,u=i/m;return{dps:u,baseDmg:n,modifiedDamage:r,nonAvoidedDamage:o,comboDamage:i,chargeTime:c,animationTime:s}}(l,e,a):function(e,a,l){let t=0;switch(e.name){case"1000 Needles":t=1e3;break;case"Souleater":t=l.undead?0:1.4*e1(a.attack,1,1.125,0)*(1+a.str*(l.level+a.str)/256);break;case"Gil Toss":t=Math.min(1e4,l.partyMaxHp*l.percentHp/100);break;case"Horology":t=l.minuteOnesDigit*l.minuteOnesDigit*l.level/2;break;case"Telekinesis":t=(a.attack*l.targetLevel-1)/2}let n=t,r=n,o=l.level-l.targetLevel;o>0&&(o*=3);let i=Math.max(0,Math.min(e.chn+o,100));if(r*=i/100,"Telekinesis"===e.name)switch(a.animationType){case"bow":case"gun":case"xbow":case"handbomb":r=0}let s=r,c=e.at/30;if(null!=e.aoe){let a=e.aoe/30,t=l.targetCount-1;c+=t*a,"Gil Toss"===e.name?t>0&&(c-=20/30):s*=l.targetCount}let m=e0(e.ct,a,l),u=m+c,g=s/u;return{dps:g,baseDmg:t,modifiedDamage:n,nonAvoidedDamage:r,comboDamage:s,chargeTime:m,animationTime:c}}(l,e,a)}(l,a);(!t||i.dps>t.dps)&&(t=i,n={...r})}}return{ability:e.ability,doll:n,dps:t}}const e6={str:[23,24,23,25,21,20],mag:[22,18,20,20,24,21],vit:[24,24,26,20,23,23],spd:[24,24,23,23,23,24]},e8={str:[72,67,63,69,68,65],mag:[67,59,63,56,70,72],vit:[48,45,47,36,44,48],spd:[18,19,18,16,17,16]},e7={name:"Attack",text:"Attack with weapon in hand.",alg:"attack"},e9=[{name:"Cure",text:"Restore a small amount of HP to one ally.",l:ed("White Magick 1"),alg:"magick",ct:23,at:111,att:20,special:"heal"},{name:"Cura",text:"Restore HP to all allies in range.",l:ed("White Magick 4"),alg:"magick",ct:23,at:117,aoe:30,att:46,special:"heal"},{name:"Curaga",text:"Restore a large amount of HP to one ally.",l:ed("White Magick 6"),alg:"magick",ct:23,at:144,att:86,special:"heal"},{name:"Curaja",text:"Restore a large amount of HP to all allies in range.",l:ed("White Magick 9"),alg:"magick",ct:23,at:114,aoe:30,att:120,special:"heal"},{name:"Holy",text:"Deal heavy holy damage to one target.",l:ed("White Magick 11"),alg:"magick",ct:23,at:227,att:157,holyDamage:!0},{name:"Fire",text:"Deal fire damage to one foe.",l:ed("Black Magick 1"),alg:"magick",ct:23,at:75,att:22,fireDamage:!0},{name:"Fira",text:"Deal fire damage to all foes in range.",l:ed("Black Magick 5"),alg:"magick",ct:23,at:75,aoe:30,att:67,fireDamage:!0},{name:"Firaga",text:"Deal heavy fire damage to all foes in range.",l:ed("Black Magick 9"),alg:"magick",ct:23,at:75,aoe:30,att:120,fireDamage:!0},{name:"Thunder",text:"Deal lightning damage to one foe.",l:ed("Black Magick 1"),alg:"magick",ct:23,at:75,att:23,lightningDamage:!0},{name:"Thundara",text:"Deal lightning damage to all foes in range.",l:ed("Black Magick 6"),alg:"magick",ct:23,at:84,aoe:114,att:68,lightningDamage:!0},{name:"Thundaga",text:"Deal heavy lightning damage to all foes in range.",l:ed("Black Magick 9"),alg:"magick",ct:23,at:96,aoe:48,att:122,lightningDamage:!0},{name:"Blizzard",text:"Deal ice damage to one foe.",l:ed("Black Magick 2"),alg:"magick",ct:23,at:102,att:25,iceDamage:!0},{name:"Blizzara",text:"Deal ice damage to all foes in range.",l:ed("Black Magick 6"),alg:"magick",ct:23,at:102,aoe:30,att:70,iceDamage:!0},{name:"Blizzaga",text:"Deal heavy ice damage to all foes in range.",l:ed("Black Magick 10"),alg:"magick",ct:23,at:105,aoe:75,att:125,iceDamage:!0},{name:"Aero",text:"Deal wind damage to all foes in range.",l:ed("Black Magick 4"),alg:"magick",ct:23,at:90,aoe:24,att:51,windDamage:!0},{name:"Aeroga",text:"Deal heavy wind damage to all foes in range.",l:ed("Black Magick 8"),alg:"magick",ct:23,at:108,aoe:36,att:103,windDamage:!0},{name:"Aqua",text:"Deal water damage to one foe.",l:ed("Black Magick 3"),alg:"magick",ct:23,at:153,att:37,waterDamage:!0},{name:"Bio",text:"Inflict Sap and deal damage to all foes in range.",l:ed("Black Magick 7"),alg:"magick",ct:23,at:106,aoe:30,att:67},{name:"Shock",text:"Deal heavy damage to one foe.",l:ed("Black Magick 11"),alg:"magick",ct:23,at:123,att:133},{name:"Scourge",text:"Inflict Sap and deal heavy damage to all foes in range.",l:ed("Black Magick 12"),alg:"magick",ct:23,at:117,aoe:45,att:142},{name:"Flare",text:"Deal massive damage to one foe.",l:ed("Black Magick 12"),alg:"magick",ct:23,at:305,att:163},{name:"Scathe",text:"Deal massive damage to all foes in range.",l:ed("Black Magick 13"),alg:"magick",ct:23,at:218,aoe:0,att:190},{name:"Drain",text:"Transfer HP from one foe to the caster.",l:ed("Green Magick 2"),alg:"magick",ct:23,at:129,att:62,special:"drain"},{name:"Dark",text:"Deal moderate dark damage to all foes in range.",l:ed("Arcane Magick 1"),alg:"magick",ct:23,at:96,aoe:30,att:46,darkDamage:!0},{name:"Darkra",text:"Deal dark damage to all foes in range.",l:ed("Arcane Magick 1"),alg:"magick",ct:23,at:99,aoe:30,att:91,darkDamage:!0},{name:"Darkga",text:"Deal heavy dark damage to all foes in range.",l:ed("Arcane Magick 2"),alg:"magick",ct:23,at:110,aoe:30,att:130,darkDamage:!0},{name:"Ardor",text:"Deal massive fire damage to all foes in range.",l:ed("Arcane Magick 3"),alg:"magick",ct:23,at:141,aoe:19,att:173,fireDamage:!0}],ae=[{name:"1000 Needles",text:"Deal 1,000 damage to one foe.",l:ed("1000 Needles"),alg:"technick",ct:25,chn:100,at:114},{name:"Souleater",text:"Consume HP to deal damage to one foe.",l:ed("Souleater"),alg:"technick",ct:30,chn:200,at:126},{name:"Gil Toss",text:"Throw gil, damaging all foes in range.",l:ed("Gil Toss"),alg:"technick",ct:30,chn:200,at:75,aoe:20},{name:"Horology",text:"Deal damage based on a factor of time to all foes in range.",l:ed("Horology"),alg:"technick",ct:30,chn:90,at:105,aoe:30},{name:"Telekinesis",text:"Deal ranged damage with melee weapons.",l:ed("Telekinesis"),alg:"technick",ct:30,chn:80,at:36}],aa=eh.find(e=>"Battle Lore"===e.name).contents,al=eh.find(e=>"Magick Lore"===e.name).contents;function at(e){return C("div",{"aria-label":e.tooltip,class:"control"},C("label",null,e.label,C("input",{class:`d-${e.max.toString().length}`,type:"number",value:e.value,min:e.min,max:e.max,onChange:a=>{if(a.currentTarget.validity.valid){let l=a.currentTarget.valueAsNumber;l==l&&e.changeValue(l)}}})))}function an(e){return C("div",{"aria-label":e.tooltip,class:"control"},C("label",null,C("input",{type:"checkbox",checked:e.value,onChange:()=>e.changeValue(!e.value)}),e.label))}function ar(e,a){let l=e.map(({value:e,label:a})=>C("option",{value:e},a)),t=a?Number:String;return function(e){return C("div",{"aria-label":e.tooltip,class:"control"},C("label",null,e.label,C("select",{value:e.value,onChange:a=>e.changeValue(t(a.currentTarget.value))},l)))}}const ao=ar([{value:0,label:"Immune"},{value:.5,label:"Strong"},{value:1,label:"Normal"},{value:2,label:"Weak"}],!0),ai=ar([{value:"other",label:"None"},{value:"windy",label:"Wind"},{value:"rainy",label:"Rain"},{value:"foggy",label:"Fog"},{value:"windy and rainy",label:"Downpour"}],!1),as=ar([{value:"other",label:"None"},{value:"sand",label:"Sand"},{value:"water",label:"Water"},{value:"snow",label:"Snow"}],!1),{useStore:ac,dispatch:am}=eL({character:-1,def:30,mdef:30,targetCount:1,percentHp:1,fireReaction:1,iceReaction:1,lightningReaction:1,waterReaction:1,windReaction:1,earthReaction:1,darkReaction:1,holyReaction:1,level:70,targetLevel:60,minuteOnesDigit:6,partyMaxHp:25e3,resistGun:!1,battleSpeed:6,berserk:!0,haste:!0,bravery:!0,faith:!0,parry:!1,block:0,terrain:"other",weather:"other",oil:!1,undead:!1,allowCertainLicenses:!0,allowCheaterGear:!0}),au=(e,a)=>am(l=>({...l,[e]:a}));var ag=(e,a)=>{let l=ac(a);return e=>{let a=l();return C("div",{class:"dps-optimizer"},C("div",{class:"controls"},C(at,{min:0,max:250,label:"Def",tooltip:"Target's physical defense",value:a.def,changeValue:e=>au("def",e)}),C(at,{min:0,max:250,label:"MDef",tooltip:"Target's magical defense",value:a.mdef,changeValue:e=>au("mdef",e)}),C(at,{min:1,max:10,label:"Aoe",tooltip:"Number of targets",value:a.targetCount,changeValue:e=>au("targetCount",e)}),C(at,{min:1,max:100,label:"HP%",tooltip:"Character's HP percentage",value:a.percentHp,changeValue:e=>au("percentHp",e)}),C(at,{min:1,max:99,label:"C. Lvl",tooltip:"Character's level",value:a.level,changeValue:e=>au("level",e)}),C(at,{min:1,max:99,label:"T. Lvl",tooltip:"Target's level",value:a.targetLevel,changeValue:e=>au("targetLevel",e)}),C(at,{min:0,max:9,label:"Time",tooltip:"Ones digit of game clock minutes",value:a.minuteOnesDigit,changeValue:e=>au("minuteOnesDigit",e)}),C(at,{min:100,max:5e4,label:"Party HP",tooltip:"Combined Max HP of entire active party",value:a.partyMaxHp,changeValue:e=>au("partyMaxHp",e)}),C(at,{min:0,max:40,label:"Block",tooltip:"Target's block (EVA)",value:a.block,changeValue:e=>au("block",e)}),C(ai,{label:"Weather",tooltip:"What is the current weather?",value:a.weather,changeValue:e=>au("weather",e)}),C(as,{label:"Terrain",tooltip:"What is the current terrain?",value:a.terrain,changeValue:e=>au("terrain",e)}),C("br",null),C(an,{label:"Resist G&M",tooltip:"Does the target resist guns and measures?",value:a.resistGun,changeValue:e=>au("resistGun",e)}),C(an,{label:"Berserk",tooltip:"Is the berserk buff available?",value:a.berserk,changeValue:e=>au("berserk",e)}),C(an,{label:"Haste",tooltip:"Is the haste buff available?",value:a.haste,changeValue:e=>au("haste",e)}),C(an,{label:"Bravery",tooltip:"Is the bravery buff available?",value:a.bravery,changeValue:e=>au("bravery",e)}),C(an,{label:"Faith",tooltip:"Is the faith buff available?",value:a.faith,changeValue:e=>au("faith",e)}),C(an,{label:"Oil",tooltip:"Is the target oiled?",value:a.oil,changeValue:e=>au("oil",e)}),C(an,{label:"Parry",tooltip:"Can the target parry attacks?",value:a.parry,changeValue:e=>au("parry",e)}),C(an,{label:"Undead",tooltip:"Is the target undead?",value:a.undead,changeValue:e=>au("undead",e)}),C(an,{label:"All Licenses",tooltip:"Allow grey-shaded licenses",value:a.allowCertainLicenses,changeValue:e=>au("allowCertainLicenses",e)}),C(an,{label:"Secret Gear",tooltip:"Allow secret items",value:a.allowCheaterGear,changeValue:e=>au("allowCheaterGear",e)}),C("br",null),eF.map(e=>C(ao,{label:e[0].toUpperCase()+e.slice(1),tooltip:`How much ${e} damage does the target take?`,value:a[`${e}Reaction`],changeValue:a=>au(`${e}Reaction`,a)}))),C(ay,{party:e.party,env:a}))}};function ad(e){let{value:a}=e;return C("td",{"aria-label":a?.tooltip},a?.name)}function ah(e){let{value:a}=e;return C("td",{"aria-label":a.text},a.name)}function ap(e){let{value:a}=e,l=`Base Damage: ${Math.round(a.baseDmg)} -Modified Damage: ${Math.round(a.modifiedDamage)} -Not Avoided Damage: ${Math.round(a.nonAvoidedDamage)} -Comboed Damage: ${Math.round(a.comboDamage)} -Charge Time: ${a.chargeTime.toFixed(2)}s -Animation Time: ${a.animationTime.toFixed(2)}s`;return C("td",{class:"r","aria-label":l},Math.round(a.dps))}const ay=(e,a)=>{let l={results:void 0,for:void 0,nodes:C("tr",null,C("td",null,"Working..."))},t=()=>l.for&&l.for.env===e.env&&l.for.party===e.party;async function n(){let t=[[],[],[],[],[],[]],{party:n,env:r}=e,o=performance.now(),i=!1;for(let a=0;a<6;a++){let l=t[a],s={...r,character:a};for(let a of function*(e,a){let l=a.color(e.character);function t(e){return n(ed(e))}function n(a){let t=l.get(a);return t===D.OBTAINED||e.allowCertainLicenses&&t===D.CERTAIN}function r(e){return!e.l||n(e.l)}let o=eZ.filter(a=>r(a)&&(e.allowCheaterGear||a.attack<=150)),i={weapons:o,armors:e$.filter(r),helms:eq.filter(r),accessories:eJ.filter(r)},s=e9.filter(r),c=ae.filter(r),m={ability:e7,damageType:"unarmed",animationType:"unarmed",attack:0,combo:0,chargeTime:0,...function(e,a){function l(e,l){return Math.floor(a*l/128)+e}return{str:l(e6.str[e],e8.str[e]),mag:l(e6.mag[e],e8.mag[e]),vit:l(e6.vit[e],e8.vit[e]),spd:l(e6.spd[e],e8.spd[e])}}(e.character,e.level),brawler:t("Brawler"),berserk:e.berserk,haste:e.haste,bravery:e.bravery,faith:e.faith,focus:t("Focus"),adrenaline:t("Adrenaline"),serenity:t("Serenity"),spellbreaker:t("Spellbreaker"),genjiGloves:!1,cameoBelt:!1,agateRing:!1,swiftness1:t("Swiftness 1"),swiftness2:t("Swiftness 2"),swiftness3:t("Swiftness 3"),fireDamage:!1,iceDamage:!1,lightningDamage:!1,waterDamage:!1,windDamage:!1,earthDamage:!1,darkDamage:!1,holyDamage:!1,fireBonus:!1,iceBonus:!1,lightningBonus:!1,waterBonus:!1,windBonus:!1,earthBonus:!1,darkBonus:!1,holyBonus:!1};for(let a of(m.str+=aa.filter(n).length,m.mag+=al.filter(n).length,s))m.ability=a,yield e4(m,e,i);for(let a of c)m.ability=a,yield e4(m,e,i);for(let a of(m.ability=e7,i.weapons=[],o))i.weapons[0]=a,yield e4(m,e,i)}(s,n)){if(performance.now()-o>120&&(await new Promise(e=>setTimeout(e,0)),i=!0,o=performance.now(),n!==e.party||r!==e.env))return;l.push(a)}l.sort((e,a)=>a.dps.dps-e.dps.dps)}l={results:t,for:{party:n,env:r},nodes:t.map((e,a)=>C(af,{name:eb[a].name,results:e}))},i&&x(a)}return a=>(e=a,t()||n(),C("div",{class:t()?"results":"results busy"},C("table",null,C("tbody",null,l.nodes))))};function af(e){return C(G,null,C("tr",{class:"sticky"},C("th",{colSpan:9999},e.name)),C("tr",{class:"sticky second-row"},C("th",{class:"r"},"DPS"),C("th",null,"Ability"),C("th",null,"Weapon"),C("th",null,"Ammo"),C("th",null,"Helm"),C("th",null,"Armor"),C("th",null,"Accessory")),e.results.map(({ability:e,doll:a,dps:l})=>C("tr",{class:"data-row"},C(ap,{value:l}),C(ah,{value:e}),C(ad,{value:a.weapon}),C(ad,{value:a.ammo}),C(ad,{value:a.helm}),C(ad,{value:a.armor}),C(ad,{value:a.accessory}))))}function ab(e){return e.split("-")[1]}function ak(e){return"y"===e?"height":"width"}function aA(e){return e.split("-")[0]}function aw(e){return["top","bottom"].includes(aA(e))?"x":"y"}function av(e,a,l){let t,{reference:n,floating:r}=e,o=n.x+n.width/2-r.width/2,i=n.y+n.height/2-r.height/2,s=aw(a),c=ak(s),m=n[c]/2-r[c]/2,u=aA(a),g="x"===s;switch(u){case"top":t={x:o,y:n.y-r.height};break;case"bottom":t={x:o,y:n.y+n.height};break;case"right":t={x:n.x+n.width,y:i};break;case"left":t={x:n.x-r.width,y:i};break;default:t={x:n.x,y:n.y}}switch(ab(a)){case"start":t[s]-=m*(l&&g?-1:1);break;case"end":t[s]+=m*(l&&g?-1:1)}return t}const aT=async(e,a,l)=>{let{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o}=l,i=r.filter(Boolean),s=await (null==o.isRTL?void 0:o.isRTL(a)),c=await o.getElementRects({reference:e,floating:a,strategy:n}),{x:m,y:u}=av(c,t,s),g=t,d={},h=0;for(let l=0;lax[e])}const aG={start:"end",end:"start"};function aC(e){return e.replace(/start|end/g,e=>aG[e])}function aD(e){var a;return(null==(a=e.ownerDocument)?void 0:a.defaultView)||window}function aR(e){return aD(e).getComputedStyle(e)}function aE(e){return e instanceof aD(e).Node}function aN(e){return aE(e)?(e.nodeName||"").toLowerCase():"#document"}function aI(e){return e instanceof aD(e).HTMLElement}function aj(e){return e instanceof aD(e).Element}function aW(e){return"undefined"!=typeof ShadowRoot&&(e instanceof aD(e).ShadowRoot||e instanceof ShadowRoot)}function az(e){let{overflow:a,overflowX:l,overflowY:t,display:n}=aR(e);return/auto|scroll|overlay|hidden|clip/.test(a+t+l)&&!["inline","contents"].includes(n)}function aF(e){let a=aV(),l=aR(e);return"none"!==l.transform||"none"!==l.perspective||!a&&!!l.backdropFilter&&"none"!==l.backdropFilter||!a&&!!l.filter&&"none"!==l.filter||["transform","perspective","filter"].some(e=>(l.willChange||"").includes(e))||["paint","layout","strict","content"].some(e=>(l.contain||"").includes(e))}function aV(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function aO(e){return["html","body","#document"].includes(aN(e))}const aK=Math.min,aQ=Math.max,aU=Math.round,aZ=e=>({x:e,y:e});function aq(e){let a=aR(e),l=parseFloat(a.width)||0,t=parseFloat(a.height)||0,n=aI(e),r=n?e.offsetWidth:l,o=n?e.offsetHeight:t,i=aU(l)!==r||aU(t)!==o;return i&&(l=r,t=o),{width:l,height:t,$:i}}function a$(e){return aj(e)?e:e.contextElement}function aJ(e){let a=a$(e);if(!aI(a))return aZ(1);let l=a.getBoundingClientRect(),{width:t,height:n,$:r}=aq(a),o=(r?aU(l.width):l.width)/t,i=(r?aU(l.height):l.height)/n;return o&&Number.isFinite(o)||(o=1),i&&Number.isFinite(i)||(i=1),{x:o,y:i}}const aY=aZ(0);function a_(e,a,l){var t,n;if(void 0===a&&(a=!0),!aV())return aY;let r=e?aD(e):window;return!l||a&&l!==r?aY:{x:(null==(t=r.visualViewport)?void 0:t.offsetLeft)||0,y:(null==(n=r.visualViewport)?void 0:n.offsetTop)||0}}function aX(e,a,l,t){void 0===a&&(a=!1),void 0===l&&(l=!1);let n=e.getBoundingClientRect(),r=a$(e),o=aZ(1);a&&(t?aj(t)&&(o=aJ(t)):o=aJ(e));let i=a_(r,l,t),s=(n.left+i.x)/o.x,c=(n.top+i.y)/o.y,m=n.width/o.x,u=n.height/o.y;if(r){let e=aD(r),a=t&&aj(t)?aD(t):t,l=e.frameElement;for(;l&&t&&a!==e;){let e=aJ(l),a=l.getBoundingClientRect(),t=getComputedStyle(l),n=a.left+(l.clientLeft+parseFloat(t.paddingLeft))*e.x,r=a.top+(l.clientTop+parseFloat(t.paddingTop))*e.y;s*=e.x,c*=e.y,m*=e.x,u*=e.y,s+=n,c+=r,l=aD(l).frameElement}}return aM({width:m,height:u,x:s,y:c})}function a1(e){return((aE(e)?e.ownerDocument:e.document)||window.document).documentElement}function a0(e){return aj(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function a2(e){return aX(a1(e)).left+a0(e).scrollLeft}function a3(e){if("html"===aN(e))return e;let a=e.assignedSlot||e.parentNode||aW(e)&&e.host||a1(e);return aW(a)?a.host:a}function a5(e,a,l){let t;if("viewport"===a)t=function(e,a){let l=aD(e),t=a1(e),n=l.visualViewport,r=t.clientWidth,o=t.clientHeight,i=0,s=0;if(n){r=n.width,o=n.height;let e=aV();(!e||e&&"fixed"===a)&&(i=n.offsetLeft,s=n.offsetTop)}return{width:r,height:o,x:i,y:s}}(e,l);else if("document"===a)t=function(e){let a=a1(e),l=a0(e),t=e.ownerDocument.body,n=aQ(a.scrollWidth,a.clientWidth,t.scrollWidth,t.clientWidth),r=aQ(a.scrollHeight,a.clientHeight,t.scrollHeight,t.clientHeight),o=-l.scrollLeft+a2(e),i=-l.scrollTop;return"rtl"===aR(t).direction&&(o+=aQ(a.clientWidth,t.clientWidth)-n),{width:n,height:r,x:o,y:i}}(a1(e));else if(aj(a))t=function(e,a){let l=aX(e,!0,"fixed"===a),t=l.top+e.clientTop,n=l.left+e.clientLeft,r=aI(e)?aJ(e):aZ(1),o=e.clientWidth*r.x,i=e.clientHeight*r.y,s=n*r.x,c=t*r.y;return{width:o,height:i,x:s,y:c}}(a,l);else{let l=a_(e);t={...a,x:a.x-l.x,y:a.y-l.y}}return aM(t)}function a4(e,a){return aI(e)&&"fixed"!==aR(e).position?a?a(e):e.offsetParent:null}function a6(e,a){let l=aD(e);if(!aI(e))return l;let t=a4(e,a);for(;t&&["table","td","th"].includes(aN(t))&&"static"===aR(t).position;)t=a4(t,a);return t&&("html"===aN(t)||"body"===aN(t)&&"static"===aR(t).position&&!aF(t))?l:t||function(e){let a=a3(e);for(;aI(a)&&!aO(a);){if(aF(a))return a;a=a3(a)}return null}(e)||l}const a8={getClippingRect:function(e){let{element:a,boundary:l,rootBoundary:t,strategy:n}=e,r="clippingAncestors"===l?function(e,a){let l=a.get(e);if(l)return l;let t=(function e(a,l){var t;void 0===l&&(l=[]);let n=function e(a){let l=a3(a);return aO(l)?a.ownerDocument?a.ownerDocument.body:a.body:aI(l)&&az(l)?l:e(l)}(a),r=n===(null==(t=a.ownerDocument)?void 0:t.body),o=aD(n);return r?l.concat(o,o.visualViewport||[],az(n)?n:[]):l.concat(n,e(n))})(e).filter(e=>aj(e)&&"body"!==aN(e)),n=null,r="fixed"===aR(e).position,o=r?a3(e):e;for(;aj(o)&&!aO(o);){let a=aR(o),l=aF(o);l||"fixed"!==a.position||(n=null);let i=r?!l&&!n:!l&&"static"===a.position&&!!n&&["absolute","fixed"].includes(n.position)||az(o)&&!l&&function e(a,l){let t=a3(a);return!(t===l||!aj(t)||aO(t))&&("fixed"===aR(t).position||e(t,l))}(e,o);i?t=t.filter(e=>e!==o):n=a,o=a3(o)}return a.set(e,t),t}(a,this._c):[].concat(l),o=[...r,t],i=o[0],s=o.reduce((e,l)=>{let t=a5(a,l,n);return e.top=aQ(t.top,e.top),e.right=aK(t.right,e.right),e.bottom=aK(t.bottom,e.bottom),e.left=aQ(t.left,e.left),e},a5(a,i,n));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:a,offsetParent:l,strategy:t}=e,n=aI(l),r=a1(l);if(l===r)return a;let o={scrollLeft:0,scrollTop:0},i=aZ(1),s=aZ(0);if((n||!n&&"fixed"!==t)&&(("body"!==aN(l)||az(r))&&(o=a0(l)),aI(l))){let e=aX(l);i=aJ(l),s.x=e.x+l.clientLeft,s.y=e.y+l.clientTop}return{width:a.width*i.x,height:a.height*i.y,x:a.x*i.x-o.scrollLeft*i.x+s.x,y:a.y*i.y-o.scrollTop*i.y+s.y}},isElement:aj,getDimensions:function(e){return aq(e)},getOffsetParent:a6,getDocumentElement:a1,getScale:aJ,async getElementRects(e){let{reference:a,floating:l,strategy:t}=e,n=this.getOffsetParent||a6,r=this.getDimensions;return{reference:function(e,a,l){let t=aI(a),n=a1(a),r="fixed"===l,o=aX(e,!0,r,a),i={scrollLeft:0,scrollTop:0},s=aZ(0);if(t||!t&&!r){if(("body"!==aN(a)||az(n))&&(i=a0(a)),aI(a)){let e=aX(a,!0,r,a);s.x=e.x+a.clientLeft,s.y=e.y+a.clientTop}else n&&(s.x=a2(n))}return{x:o.left+i.scrollLeft-s.x,y:o.top+i.scrollTop-s.y,width:o.width,height:o.height}}(a,await n(l),t),floating:{x:0,y:0,...await r(l)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===aR(e).direction},a7=(e,a,l)=>{let t=new Map,n={platform:a8,...l},r={...n.platform,_c:t};return aT(e,a,{...n,platform:r})};Array.prototype.at||Object.defineProperty(Array.prototype,"at",{configurable:!0,enumerable:!1,value:function(e){let{length:a}=this;if(e<0&&(e+=a),e>=0&&et}},e,(void 0)??null,void 0);t=a,n.scheduleLayerUpdate(),S()}(document.body,C(G,null,C((e,a)=>{let l;let t=eC(a);return()=>{let{party:e,qeActive:a,dpsActive:n}=t();return e!==l&&(requestIdleCallback(()=>{let a=window.location.href.split("?")[0],l=e.encode();window.history.replaceState(null,"",a+("AA.AA.AA.AA.AA.AA"===l?"":"?"+l))}),l=e),C("div",{class:"character-planner"},C(eE,null),a?C(ez,null):n?C(ag,{party:e}):C(ej,null))}},null),C((e,a)=>{let l=null,t=e=>l=e,n=null,r=null;function o(e){for(r=e.target;r&&null==(n=r.getAttribute("aria-label"));)r=r.parentElement;x(a)}async function i(){if(r&&l){var e,a;let t=await a7(r,l,{middleware:[(void 0===e&&(e={}),{name:"flip",options:e,async fn(a){var l,t,n,r;let{placement:o,middlewareData:i,rects:s,initialPlacement:c,platform:m,elements:u}=a,{mainAxis:g=!0,crossAxis:d=!0,fallbackPlacements:h,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:y="none",flipAlignment:f=!0,...b}=aS(e,a),k=aA(o),A=aA(c)===c,w=await (null==m.isRTL?void 0:m.isRTL(u.floating)),v=h||(A||!f?[aP(c)]:function(e){let a=aP(e);return[aC(e),a,aC(a)]}(c));h||"none"===y||v.push(...function(e,a,l,t){let n=ab(e),r=function(e,a,l){let t=["left","right"],n=["right","left"];switch(e){case"top":case"bottom":if(l)return a?n:t;return a?t:n;case"left":case"right":return a?["top","bottom"]:["bottom","top"];default:return[]}}(aA(e),"start"===l,t);return n&&(r=r.map(e=>e+"-"+n),a&&(r=r.concat(r.map(aC)))),r}(c,f,y,w));let T=[c,...v],S=await aL(a,b),M=[],L=(null==(l=i.flip)?void 0:l.overflows)||[];if(g&&M.push(S[k]),d){let{main:e,cross:a}=function(e,a,l){void 0===l&&(l=!1);let t=ab(e),n=aw(e),r=ak(n),o="x"===n?t===(l?"end":"start")?"right":"left":"start"===t?"bottom":"top";return a.reference[r]>a.floating[r]&&(o=aP(o)),{main:o,cross:aP(o)}}(o,s,w);M.push(S[e],S[a])}if(L=[...L,{placement:o,overflows:M}],!M.every(e=>e<=0)){let e=((null==(t=i.flip)?void 0:t.index)||0)+1,a=T[e];if(a)return{data:{index:e,overflows:L},reset:{placement:a}};let l=null==(n=L.filter(e=>e.overflows[0]<=0).sort((e,a)=>e.overflows[1]-a.overflows[1])[0])?void 0:n.placement;if(!l)switch(p){case"bestFit":{let e=null==(r=L.map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,a)=>e+a,0)]).sort((e,a)=>e[1]-a[1])[0])?void 0:r[0];e&&(l=e);break}case"initialPlacement":l=c}if(o!==l)return{reset:{placement:l}}}return{}}}),(void 0===a&&(a={}),{name:"shift",options:a,async fn(e){let{x:l,y:t,placement:n}=e,{mainAxis:r=!0,crossAxis:o=!1,limiter:i={fn:e=>{let{x:a,y:l}=e;return{x:a,y:l}}},...s}=aS(a,e),c={x:l,y:t},m=await aL(e,s),u=aw(aA(n)),g="x"===u?"y":"x",d=c[u],h=c[g];if(r){let e=d+m["y"===u?"top":"left"],a=d-m["y"===u?"bottom":"right"];d=aH(e,aB(d,a))}if(o){let e=h+m["y"===g?"top":"left"],a=h-m["y"===g?"bottom":"right"];h=aH(e,aB(h,a))}let p=i.fn({...e,[u]:d,[g]:h});return{...p,data:{x:p.x-l,y:p.y-t}}}})],strategy:"fixed"});l.style.transform=`translate(${Math.round(t.x)}px,${Math.round(t.y)}px)`}}return document.addEventListener("mouseover",o,{passive:!0}),document.documentElement.addEventListener("mouseleave",o,{passive:!0}),document.addEventListener("scroll",i,{passive:!0,capture:!0}),()=>(B(a.depth,i),C("div",{ref:t,class:n?"tooltip":"tooltip hidden"},n))},null))); -//# sourceMappingURL=index.378c7830.js.map diff --git a/docs/index.b38c99fa.css b/docs/index.951fcd51.css similarity index 98% rename from docs/index.b38c99fa.css rename to docs/index.951fcd51.css index d14d6d2..8000f2f 100644 --- a/docs/index.b38c99fa.css +++ b/docs/index.951fcd51.css @@ -1,3 +1,3 @@ /*! modern-normalize v2.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */ -*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}hr{color:inherit;height:0}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}button{cursor:pointer}button:disabled{cursor:not-allowed}:root,body{width:100%;min-width:800px;height:100%;min-height:640px;font-family:HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif}.button{background-color:#fff;border:2px solid #000;border-radius:6px;margin:2px;padding:6px}.button:hover{background-color:#efe}.button:disabled{color:#999;background-color:#ccc;border-color:#999}.button:disabled img{opacity:.3}.button[aria-pressed=true]{background-color:#eef;border-color:#33f}.l{cursor:pointer}.l.obtained{background-color:#fff}.l.obtained:hover{box-shadow:inset 0 0 8px red}.l.certain{background-color:#ddd}.l.certain:hover{box-shadow:inset 0 0 8px #0a0}.l.possible{background-color:#ffa}.l.possible:hover{box-shadow:inset 0 0 8px #0a0}.l.blocked{cursor:not-allowed;background-color:#fbb}.l.blocked:hover{box-shadow:inset 0 0 8px red}.l.unreachable{cursor:not-allowed}.l.unreachable:hover{box-shadow:inset 0 0 8px red}.l.planned{background-color:#afa}.character-panel{flex-direction:column;display:flex}.character-panel .actions{flex:none;display:flex}.character-panel .actions .action{flex:1 0 0;font-size:12px}.character-panel .character-select{flex:none;display:flex}.character-panel .character-select .character{text-align:center;cursor:pointer}.character-panel .character-select .character>.name{font-weight:700}.character-panel .character-select .character .job{background-color:#0000;border:none;font-size:14px}.character-panel .character-select .character .job:hover{background-color:#afa}.character-panel .character-select .character .job[aria-pressed=true]{background-color:#aaf}.character-panel .character-select .character .job.nojob{font-style:italic}.character-panel .character-select .character .job:disabled{color:#aaa}.character-panel .stats{flex-flow:column wrap;flex:0 auto;place-content:flex-start;align-items:flex-start;display:flex;overflow:auto}.character-panel .stats .group{flex:none;margin:4px}.character-panel .stats .group .name{margin:0;font-size:16px}.character-panel .stats .group .l{margin:0;font-size:12px}.license-board-holder{background-color:#333;min-width:240px;overflow:auto}.license-board{border-spacing:0}.license-board td{vertical-align:top;min-width:80px;max-width:80px;height:80px;padding:4px;position:relative}.license-board .l{box-shadow:inset 0 0 2px #000}.license-board .l .name{font-size:10px}.license-board .l .cost{font-size:24px;font-weight:700;position:absolute;bottom:4px;right:4px}.license-board .l .mist{opacity:.1;object-fit:contain;width:100%;height:100%;padding:10px;position:absolute;top:0;left:0}.select-job{background-color:#aaa;place-content:center;min-width:240px;display:grid;position:relative}.select-job .job{text-align:left;line-height:32px}.select-job .job .zodiac{float:right;height:32px;margin-left:20px}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}.github-corner{pointer-events:none;border:0;position:absolute;top:0;right:0}.github-corner svg{color:#fff;fill:#000;display:block}.github-corner svg g{pointer-events:initial}.github-corner svg g:hover .octo-arm{animation:.56s ease-in-out octocat-wave}.github-corner svg g .octo-arm{transform-origin:130px 106px}.qe-board{text-align:center;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr 1fr;grid-auto-rows:1fr;display:grid}.qe-board>*{flex-direction:column;justify-content:center;align-items:center;display:flex}.qe-board .character-name,.qe-board .license-name{font-size:14px;font-weight:700}.qe-board .job{font-size:12px}.qe-board .job.nojob{font-style:italic}.qe-board .l{font-size:12px;box-shadow:inset 0 0 2px #000}.qe-board .l.unreachable{color:#888;background-color:#ddd;font-style:italic}.dps-optimizer{flex-direction:column;display:flex}.dps-optimizer .controls{flex:none}.dps-optimizer .controls .control{padding:2px;display:inline-block}.dps-optimizer .controls .control input[type=number]{text-align:right;margin-left:4px}.dps-optimizer .controls .control input[type=number].d-1{width:2.2em}.dps-optimizer .controls .control input[type=number].d-2{width:3em}.dps-optimizer .controls .control input[type=number].d-3{width:3.8em}.dps-optimizer .controls .control input[type=number].d-4{width:4.6em}.dps-optimizer .controls .control input[type=number].d-5{width:5.4em}.dps-optimizer .controls .control input[type=checkbox]{margin-right:4px}.dps-optimizer .controls .control select{margin-left:4px}.dps-optimizer .results{font-size:12px;overflow:auto}.dps-optimizer .results table{border-collapse:collapse}.dps-optimizer .results.busy{color:#aaa}.dps-optimizer .results tr:nth-child(2n){background-color:#f8f8f8}.dps-optimizer .results .sticky{background-color:#fff;height:20px;position:sticky;top:0}.dps-optimizer .results .sticky.second-row{top:20px}.dps-optimizer .results th,.dps-optimizer .results td{padding:2px}.dps-optimizer .results tr.data-row:hover{background-color:#efe}.dps-optimizer .results th{text-align:left}.dps-optimizer .results .r{text-align:right}.character-planner{width:100%;height:100%;display:flex}.character-planner>:first-child{flex:none}.character-planner>:nth-child(2){flex:1 0 0}.tooltip{white-space:pre-wrap;color:#fff;pointer-events:none;background-color:#000000b3;border-radius:6px;padding:6px;font-size:12px;position:fixed;top:0;left:0}.tooltip.hidden{display:none} -/*# sourceMappingURL=index.b38c99fa.css.map */ +*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}hr{color:inherit;height:0}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted buttontext}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}button{cursor:pointer}button:disabled{cursor:not-allowed}:root,body{width:100%;min-width:800px;height:100%;min-height:640px;font-family:HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif}.button{background-color:#fff;border:2px solid #000;border-radius:6px;margin:2px;padding:6px}.button:hover{background-color:#efe}.button:disabled{color:#999;background-color:#ccc;border-color:#999}.button:disabled img{opacity:.3}.button[aria-pressed=true]{background-color:#eef;border-color:#33f}.l{cursor:pointer}.l.obtained{background-color:#fff}.l.obtained:hover{box-shadow:inset 0 0 8px red}.l.certain{background-color:#ddd}.l.certain:hover{box-shadow:inset 0 0 8px #0a0}.l.possible{background-color:#ffa}.l.possible:hover{box-shadow:inset 0 0 8px #0a0}.l.blocked{cursor:not-allowed;background-color:#fbb}.l.blocked:hover{box-shadow:inset 0 0 8px red}.l.unreachable{cursor:not-allowed}.l.unreachable:hover{box-shadow:inset 0 0 8px red}.l.planned{background-color:#afa}.character-panel{flex-direction:column;display:flex}.character-panel .actions{flex:none;display:flex}.character-panel .actions .action{flex:1 0 0;font-size:12px}.character-panel .character-select{flex:none;display:flex}.character-panel .character-select .character{text-align:center;cursor:pointer}.character-panel .character-select .character>.name{font-weight:700}.character-panel .character-select .character .job{background-color:#0000;border:none;font-size:14px}.character-panel .character-select .character .job:hover{background-color:#afa}.character-panel .character-select .character .job[aria-pressed=true]{background-color:#aaf}.character-panel .character-select .character .job.nojob{font-style:italic}.character-panel .character-select .character .job:disabled{color:#aaa}.character-panel .stats{flex-flow:column wrap;flex:0 auto;place-content:flex-start;align-items:flex-start;display:flex;overflow:auto}.character-panel .stats .group{flex:none;margin:4px}.character-panel .stats .group .name{margin:0;font-size:16px}.character-panel .stats .group .l{margin:0;font-size:12px}.license-board-holder{background-color:#333;min-width:240px;overflow:auto}.license-board{border-spacing:0}.license-board td{vertical-align:top;min-width:80px;max-width:80px;height:80px;padding:4px;position:relative}.license-board .l{box-shadow:inset 0 0 2px #000}.license-board .l .name{font-size:10px}.license-board .l .cost{font-size:24px;font-weight:700;position:absolute;bottom:4px;right:4px}.license-board .l .mist{opacity:.1;object-fit:contain;width:100%;height:100%;padding:10px;position:absolute;top:0;left:0}.select-job{background-color:#aaa;place-content:center;min-width:240px;display:grid;position:relative}.select-job .job{text-align:left;line-height:32px}.select-job .job .zodiac{float:right;height:32px;margin-left:20px}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}.github-corner{pointer-events:none;border:0;position:absolute;top:0;right:0}.github-corner svg{color:#fff;fill:#000;display:block}.github-corner svg g{pointer-events:initial}.github-corner svg g:hover .octo-arm{animation:.56s ease-in-out octocat-wave}.github-corner svg g .octo-arm{transform-origin:130px 106px}.qe-board{text-align:center;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr 1fr;grid-auto-rows:1fr;display:grid}.qe-board>*{flex-direction:column;justify-content:center;align-items:center;display:flex}.qe-board .character-name,.qe-board .license-name{font-size:14px;font-weight:700}.qe-board .job{font-size:12px}.qe-board .job.nojob{font-style:italic}.qe-board .l{font-size:12px;box-shadow:inset 0 0 2px #000}.qe-board .l.unreachable{color:#888;background-color:#ddd;font-style:italic}.dps-optimizer{flex-direction:column;display:flex}.dps-optimizer .controls{flex:none}.dps-optimizer .controls .control{padding:2px;display:inline-block}.dps-optimizer .controls .control input[type=number]{text-align:right;margin-left:4px}.dps-optimizer .controls .control input[type=number].d-1{width:2.2em}.dps-optimizer .controls .control input[type=number].d-2{width:3em}.dps-optimizer .controls .control input[type=number].d-3{width:3.8em}.dps-optimizer .controls .control input[type=number].d-4{width:4.6em}.dps-optimizer .controls .control input[type=number].d-5{width:5.4em}.dps-optimizer .controls .control input[type=checkbox]{margin-right:4px}.dps-optimizer .controls .control select{margin-left:4px}.dps-optimizer .results{font-size:12px;overflow:auto}.dps-optimizer .results table{border-collapse:collapse}.dps-optimizer .results.busy{color:#aaa}.dps-optimizer .results tr:nth-child(2n){background-color:#f8f8f8}.dps-optimizer .results .sticky{background-color:#fff;height:20px;position:sticky;top:0}.dps-optimizer .results .sticky.second-row{top:20px}.dps-optimizer .results th,.dps-optimizer .results td{padding:2px}.dps-optimizer .results tr.data-row:hover{background-color:#efe}.dps-optimizer .results th{text-align:left}.dps-optimizer .results .r{text-align:right}.character-planner{width:100%;height:100%;display:flex}.character-planner>:first-child{flex:none}.character-planner>:nth-child(2){flex:1 0 0}.tooltip{white-space:pre-wrap;color:#fff;pointer-events:none;background-color:#000000b3;border-radius:6px;padding:6px;font-size:12px;position:fixed;top:0;left:0}.tooltip.hidden{display:none} +/*# sourceMappingURL=index.951fcd51.css.map */ diff --git a/docs/index.html b/docs/index.html index 7999777..7d4fdde 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -Final Fantasy 12 Character Planner \ No newline at end of file +Final Fantasy 12 Character Planner \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c128e1a..b0d4f2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,31 +8,32 @@ "name": "character-planner", "version": "0.1.0", "dependencies": { - "@floating-ui/dom": "^1.4.2", + "@floating-ui/dom": "^1.6.3", "modern-normalize": "^2.0.0", "vdomk": "^0.1.5" }, "devDependencies": { - "@parcel/optimizer-blob-url": "^2.10.3", - "@parcel/optimizer-data-url": "^2.10.3", - "@parcel/reporter-bundle-analyzer": "^2.10.3", - "@parcel/transformer-inline": "^2.10.3", - "@parcel/transformer-inline-string": "^2.10.3", - "@parcel/validator-typescript": "^2.10.3", - "browserslist": "^4.21.9", + "@parcel/optimizer-blob-url": "^2.12.0", + "@parcel/optimizer-data-url": "^2.12.0", + "@parcel/reporter-bundle-analyzer": "^2.12.0", + "@parcel/transformer-inline": "^2.12.0", + "@parcel/transformer-inline-string": "^2.12.0", + "@parcel/validator-typescript": "^2.12.0", + "browserslist": "^4.23.0", "copyfiles": "^2.0.0", "dexnode": "^1.2.1", "http-server": "^14.1.1", - "parcel": "^2.10.3", + "parcel": "^2.12.0", + "prettier": "^3.2.5", "rimraf": "^5.0.1", "ts-node": "^10.9.1", - "typescript": "^5.3.2" + "typescript": "^5.4.2" } }, "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", @@ -217,13 +218,19 @@ "integrity": "sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==" }, "node_modules/@floating-ui/dom": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.4.2.tgz", - "integrity": "sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dependencies": { - "@floating-ui/core": "^1.3.1" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -307,15 +314,15 @@ "dev": true }, "node_modules/@lezer/common": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.1.1.tgz", - "integrity": "sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", "dev": true }, "node_modules/@lezer/lr": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.14.tgz", - "integrity": "sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", + "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", "dev": true, "dependencies": { "@lezer/common": "^1.0.0" @@ -492,21 +499,21 @@ ] }, "node_modules/@parcel/bundler-default": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.10.3.tgz", - "integrity": "sha512-a+yq8zH8mrg6FBgUjrC+r3z6cfK7dQVMNzduEU/LF52Z4FVAmTR8gefl/YGmAbquJL3PFAHdhICrljYnQ1WQkg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.12.0.tgz", + "integrity": "sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/graph": "3.0.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/graph": "3.2.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -514,14 +521,14 @@ } }, "node_modules/@parcel/cache": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.10.3.tgz", - "integrity": "sha512-fNNOFOl4dwOlzP8iAa+evZ+3BakX0sV+3+PiYA0zaps7EmPmkTSGDhCWzaYRSO8fhmNDlrUX9Xh7b/X738LFqA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.12.0.tgz", + "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", "dev": true, "dependencies": { - "@parcel/fs": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/fs": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/utils": "2.12.0", "lmdb": "2.8.5" }, "engines": { @@ -532,13 +539,13 @@ "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.10.3" + "@parcel/core": "^2.12.0" } }, "node_modules/@parcel/codeframe": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.10.3.tgz", - "integrity": "sha512-70ovUzeXBowDMjK+1xaLT4hm3jZUK7EbaCS6tN1cmmr0S1TDhU7g37jnpni+u9de9Lc/lErwTaDVXUf9WSQzQw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.12.0.tgz", + "integrity": "sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==", "dev": true, "dependencies": { "chalk": "^4.1.0" @@ -552,16 +559,16 @@ } }, "node_modules/@parcel/compressor-raw": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.10.3.tgz", - "integrity": "sha512-5SUZ80uwu7o0D+0RjhjBnSUXJRgaayfqVQtBRP3U7/W/Bb1Ixm1yDGXtDlyCbzimWqWVMMJ4/eVCEW7I8Ln4Bw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.12.0.tgz", + "integrity": "sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -569,72 +576,72 @@ } }, "node_modules/@parcel/config-default": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.10.3.tgz", - "integrity": "sha512-gHVw5cKZVA9h/J4E33qQLg3QG3cYMyWVruyVzF8dFy/Rar5ebXMof1f38IhR2BIavpoThbnCnxgD4SVK8xOPag==", - "dev": true, - "dependencies": { - "@parcel/bundler-default": "2.10.3", - "@parcel/compressor-raw": "2.10.3", - "@parcel/namer-default": "2.10.3", - "@parcel/optimizer-css": "2.10.3", - "@parcel/optimizer-htmlnano": "2.10.3", - "@parcel/optimizer-image": "2.10.3", - "@parcel/optimizer-svgo": "2.10.3", - "@parcel/optimizer-swc": "2.10.3", - "@parcel/packager-css": "2.10.3", - "@parcel/packager-html": "2.10.3", - "@parcel/packager-js": "2.10.3", - "@parcel/packager-raw": "2.10.3", - "@parcel/packager-svg": "2.10.3", - "@parcel/packager-wasm": "2.10.3", - "@parcel/reporter-dev-server": "2.10.3", - "@parcel/resolver-default": "2.10.3", - "@parcel/runtime-browser-hmr": "2.10.3", - "@parcel/runtime-js": "2.10.3", - "@parcel/runtime-react-refresh": "2.10.3", - "@parcel/runtime-service-worker": "2.10.3", - "@parcel/transformer-babel": "2.10.3", - "@parcel/transformer-css": "2.10.3", - "@parcel/transformer-html": "2.10.3", - "@parcel/transformer-image": "2.10.3", - "@parcel/transformer-js": "2.10.3", - "@parcel/transformer-json": "2.10.3", - "@parcel/transformer-postcss": "2.10.3", - "@parcel/transformer-posthtml": "2.10.3", - "@parcel/transformer-raw": "2.10.3", - "@parcel/transformer-react-refresh-wrap": "2.10.3", - "@parcel/transformer-svg": "2.10.3" + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.12.0.tgz", + "integrity": "sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg==", + "dev": true, + "dependencies": { + "@parcel/bundler-default": "2.12.0", + "@parcel/compressor-raw": "2.12.0", + "@parcel/namer-default": "2.12.0", + "@parcel/optimizer-css": "2.12.0", + "@parcel/optimizer-htmlnano": "2.12.0", + "@parcel/optimizer-image": "2.12.0", + "@parcel/optimizer-svgo": "2.12.0", + "@parcel/optimizer-swc": "2.12.0", + "@parcel/packager-css": "2.12.0", + "@parcel/packager-html": "2.12.0", + "@parcel/packager-js": "2.12.0", + "@parcel/packager-raw": "2.12.0", + "@parcel/packager-svg": "2.12.0", + "@parcel/packager-wasm": "2.12.0", + "@parcel/reporter-dev-server": "2.12.0", + "@parcel/resolver-default": "2.12.0", + "@parcel/runtime-browser-hmr": "2.12.0", + "@parcel/runtime-js": "2.12.0", + "@parcel/runtime-react-refresh": "2.12.0", + "@parcel/runtime-service-worker": "2.12.0", + "@parcel/transformer-babel": "2.12.0", + "@parcel/transformer-css": "2.12.0", + "@parcel/transformer-html": "2.12.0", + "@parcel/transformer-image": "2.12.0", + "@parcel/transformer-js": "2.12.0", + "@parcel/transformer-json": "2.12.0", + "@parcel/transformer-postcss": "2.12.0", + "@parcel/transformer-posthtml": "2.12.0", + "@parcel/transformer-raw": "2.12.0", + "@parcel/transformer-react-refresh-wrap": "2.12.0", + "@parcel/transformer-svg": "2.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.10.3" + "@parcel/core": "^2.12.0" } }, "node_modules/@parcel/core": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.10.3.tgz", - "integrity": "sha512-b64FdqJi4CX6iWeLZNfmwdTrC1VLPXHMuFusf1sTZTuRBFw2oRpgJvuiqsrInaZ82o3lbLMo4a9/5LtNaZKa+Q==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.12.0.tgz", + "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==", "dev": true, "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.10.3", - "@parcel/diagnostic": "2.10.3", - "@parcel/events": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/graph": "3.0.3", - "@parcel/logger": "2.10.3", - "@parcel/package-manager": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/profiler": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/cache": "2.12.0", + "@parcel/diagnostic": "2.12.0", + "@parcel/events": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/graph": "3.2.0", + "@parcel/logger": "2.12.0", + "@parcel/package-manager": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/profiler": "2.12.0", + "@parcel/rust": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0", "abortcontroller-polyfill": "^1.1.9", "base-x": "^3.0.8", "browserslist": "^4.6.6", @@ -655,9 +662,9 @@ } }, "node_modules/@parcel/diagnostic": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.10.3.tgz", - "integrity": "sha512-Hf3xG9UVkDABDXWi89TjEP5U1CLUUj81kx/QFeupBXnzt5GEQZBhkxdBq6+4w17Mmuvk7H5uumNsSptkWq9PCA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.12.0.tgz", + "integrity": "sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==", "dev": true, "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", @@ -672,9 +679,9 @@ } }, "node_modules/@parcel/events": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.10.3.tgz", - "integrity": "sha512-I3FsZYmKzgvo1f6frUWdF7hWwpeWTshPrFqpn9ICDXs/1Hjlf32jNXLBqon9b9XUDfMw4nSRMFMzMLJpbdheGA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.12.0.tgz", + "integrity": "sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==", "dev": true, "engines": { "node": ">= 12.0.0" @@ -685,16 +692,16 @@ } }, "node_modules/@parcel/fs": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.10.3.tgz", - "integrity": "sha512-0w4+Lc7B5VpwqX4GQfjnI5qN7tc9qbGPSPsf/6U2YPWU4dkGsMfPEmLBx7dZvJy3UiGxpsjMMuRHa14+jJ5QrQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.12.0.tgz", + "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", "dev": true, "dependencies": { - "@parcel/rust": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/rust": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.10.3" + "@parcel/workers": "2.12.0" }, "engines": { "node": ">= 12.0.0" @@ -704,13 +711,13 @@ "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.10.3" + "@parcel/core": "^2.12.0" } }, "node_modules/@parcel/graph": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.0.3.tgz", - "integrity": "sha512-zUA8KsjR2+v2Q2bFBF7zBk33ejriDiRA/+LK5QE8LrFpkaDa+gjkx76h2x7JqGXIDHNos446KX4nz2OUCVwrNQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.2.0.tgz", + "integrity": "sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==", "dev": true, "dependencies": { "nullthrows": "^1.1.1" @@ -724,13 +731,13 @@ } }, "node_modules/@parcel/logger": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.10.3.tgz", - "integrity": "sha512-mAVTA0NgbbwEUzkzjBqjqyBBax+8bscRaZIAsEqMiSFWGcUmRgwVlH/jy3QDkFc7OHzwvdPK+XlMLV7s/3DJNw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.12.0.tgz", + "integrity": "sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/events": "2.10.3" + "@parcel/diagnostic": "2.12.0", + "@parcel/events": "2.12.0" }, "engines": { "node": ">= 12.0.0" @@ -741,9 +748,9 @@ } }, "node_modules/@parcel/markdown-ansi": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.10.3.tgz", - "integrity": "sha512-uzN1AJmp1oYh/ZLdD9WA7xP5u/L3Bs/6AFZz5s695zus74RCx9OtQcF0Yyl1hbKVJDfuw9WFuzMfPL/9p/C5DQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.12.0.tgz", + "integrity": "sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==", "dev": true, "dependencies": { "chalk": "^4.1.0" @@ -757,18 +764,18 @@ } }, "node_modules/@parcel/namer-default": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.10.3.tgz", - "integrity": "sha512-s7kgB/x7TISIHhen9IK4+CBXgmRJYahVS+oiAbMm18vcUVuXeZDBeTedOco6zUQIKuB71vx/4DBIuiIp6Q9hpg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.12.0.tgz", + "integrity": "sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -776,16 +783,16 @@ } }, "node_modules/@parcel/node-resolver-core": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.1.3.tgz", - "integrity": "sha512-o7XK1KiK3ymO39bhc5qfDQiZpKA1xQmKg0TEPDNiLIXHKLEBheqarhw3Nwwt9MOFibfwsisQtDTIS+2v9A640A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.3.0.tgz", + "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", "dev": true, "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/diagnostic": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/rust": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/rust": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1", "semver": "^7.5.2" }, @@ -798,17 +805,17 @@ } }, "node_modules/@parcel/optimizer-blob-url": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-blob-url/-/optimizer-blob-url-2.10.3.tgz", - "integrity": "sha512-vLDvX/hjebiHqO6t7+qzwsJssh5m8RZzAgrT1ZTutfWPoxeyeiVXK1vDmpY4H1Mfo99o7q3oKjStUU/AdYnoQw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-blob-url/-/optimizer-blob-url-2.12.0.tgz", + "integrity": "sha512-gCps54+7Y/uRa+CrAaXKzXF21bqK9IRXaHmN4bkTAcN6frMM//3mUA/W//tOIjDegw+657ETMQWki+xOzPrw6A==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3" + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -816,22 +823,22 @@ } }, "node_modules/@parcel/optimizer-css": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.10.3.tgz", - "integrity": "sha512-Pc8jwV3U9w5DJDNcRQML5FlKdpPGnuCTtk1P+9FfyEUjdxoVxC+YeMIQcE961clAgl47qh7eNObXtsX/lb04Dg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.12.0.tgz", + "integrity": "sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", + "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -839,19 +846,19 @@ } }, "node_modules/@parcel/optimizer-data-url": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.10.3.tgz", - "integrity": "sha512-wGIQWYd8NsumwvuX8w8MBHVgboFMC+uZOX3HqPSlDY0zyqTqnVZfCk6y7RQoJVjVZoU6RY/SyElb5OYsCLqyag==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.12.0.tgz", + "integrity": "sha512-9g7+1bXZkLFFQ2cLm+CsiJzxMMSDxdo3w3xcqzIj5hcha22jaPP6N1weCAbfxkd6D8wgmljeNUzewFMT0Ob2FQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "isbinaryfile": "^4.0.2", "mime": "^2.4.4" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -871,12 +878,12 @@ } }, "node_modules/@parcel/optimizer-htmlnano": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.10.3.tgz", - "integrity": "sha512-KTIZOy19tYeG0j3JRv435A6jnTh3O1LPhsUfo6Xlea7Cz1yUUxAANl9MG8lHZKYbZCFFKbfk2I9QBycmcYxAAw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.12.0.tgz", + "integrity": "sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", + "@parcel/plugin": "2.12.0", "htmlnano": "^2.0.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", @@ -884,7 +891,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -960,43 +967,43 @@ } }, "node_modules/@parcel/optimizer-image": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.10.3.tgz", - "integrity": "sha512-hbeI6+GoddJxib8MlK5iafbCm1oy3p0UL9bb8s5mjTZiHtj1PORlH8gP7mT1WlYOCgoy45QdHelcrmL9fJ8kBA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.12.0.tgz", + "integrity": "sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3" + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.10.3" + "@parcel/core": "^2.12.0" } }, "node_modules/@parcel/optimizer-svgo": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.10.3.tgz", - "integrity": "sha512-STN7sdjz6wGnQnvy22SkQaLi5C1E+j7J0xy96T0/mCP9KoIsBDE7panCtf53p4sWCNRsXNVrXt5KrpCC+u0LHg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.12.0.tgz", + "integrity": "sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "svgo": "^2.4.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1072,21 +1079,21 @@ } }, "node_modules/@parcel/optimizer-swc": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.10.3.tgz", - "integrity": "sha512-Cxy05CysiKbv/PtX++ETje4cbhCJySmN6EmFyQBs0jvzsUdWwqnsttavYRoMviUUK9mjm/i5q+cyewBO/8Oc5g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.12.0.tgz", + "integrity": "sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", "@swc/core": "^1.3.36", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1094,18 +1101,19 @@ } }, "node_modules/@parcel/package-manager": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.10.3.tgz", - "integrity": "sha512-KqOW5oUmElrcb7d+hOC68ja1PI2qbPZTwdduduRvB90DAweMt7r1046+W2Df5bd+p9iv72DxGEn9xomX+qz9MA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/node-resolver-core": "3.1.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.12.0.tgz", + "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/node-resolver-core": "3.3.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0", + "@swc/core": "^1.3.36", "semver": "^7.5.2" }, "engines": { @@ -1116,24 +1124,25 @@ "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.10.3" + "@parcel/core": "^2.12.0" } }, "node_modules/@parcel/packager-css": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.10.3.tgz", - "integrity": "sha512-Jk165fFU2XyWjN7agKy+YvvRoOJbWIb57VlVDgBHanB5ptS7aCildambrljGNTivatr+zFrchE5ZDNUFXZhYnw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.12.0.tgz", + "integrity": "sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", + "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1141,20 +1150,20 @@ } }, "node_modules/@parcel/packager-html": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.10.3.tgz", - "integrity": "sha512-bEI6FhBvERuoqyi/h681qGImTRBUnqNW4sKoFO67q/bxWLevXtEGMFOeqridiVOjYQH9s1kKwM/ln/UwKVazZw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.12.0.tgz", + "integrity": "sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1162,23 +1171,23 @@ } }, "node_modules/@parcel/packager-js": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.10.3.tgz", - "integrity": "sha512-SjLSDw0juC7bEk/0geUtSVXaZqm2SgHL2IZaPnkoBQxVqzh2MdvAxJCrS2LxiR/cuQRfvQ5bnoJA7Kk1w2VNAg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.12.0.tgz", + "integrity": "sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "globals": "^13.2.0", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1186,16 +1195,16 @@ } }, "node_modules/@parcel/packager-raw": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.10.3.tgz", - "integrity": "sha512-d236tnP2ViOnUJR0+qG6EHw7MUWSA14fLKnYYzL5SRQ4BVo5XC+CM9HKN5O4YCCVu3+9Su2X1+RESo5sxbFq7w==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.12.0.tgz", + "integrity": "sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1203,19 +1212,19 @@ } }, "node_modules/@parcel/packager-svg": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.10.3.tgz", - "integrity": "sha512-Rk/GokkNs9uLwiy6Ux/xXpD8nMVhA9LN9eIbVqi8+eR42xUmICmEoUoSm+CnekkXxY2a5e3mKpL7JZbT9vOEhA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.12.0.tgz", + "integrity": "sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "posthtml": "^0.16.4" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1223,16 +1232,16 @@ } }, "node_modules/@parcel/packager-wasm": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.10.3.tgz", - "integrity": "sha512-j6VmU84LKy+XRHgZQFoASG98P50a9tkeT3LYRrol3RGGQrvx7PT3/D6rOqbnQjR2iGnaHzYoAlgg9jIMmWXYiA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.12.0.tgz", + "integrity": "sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" }, "engines": { "node": ">=12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1240,12 +1249,12 @@ } }, "node_modules/@parcel/plugin": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.10.3.tgz", - "integrity": "sha512-FgsfGKSdtSV1EcO2NWFCZaY14W0PnEEF8vZaRCTML3vKfUbilYs/biaqf5geFOu4DwRuCC8unOTqFy7dLwcK/A==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.12.0.tgz", + "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", "dev": true, "dependencies": { - "@parcel/types": "2.10.3" + "@parcel/types": "2.12.0" }, "engines": { "node": ">= 12.0.0" @@ -1256,13 +1265,13 @@ } }, "node_modules/@parcel/profiler": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.10.3.tgz", - "integrity": "sha512-yikaM6/vsvjDCcBHAXTKmDsWUF3UvC0lMG8RpnuVSN+R40MGH1vyrR4vNnqhkiCcs0RkVXm7bpuz3cDJLNLYSQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.12.0.tgz", + "integrity": "sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/events": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/events": "2.12.0", "chrome-trace-event": "^1.0.2" }, "engines": { @@ -1274,18 +1283,18 @@ } }, "node_modules/@parcel/reporter-bundle-analyzer": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-bundle-analyzer/-/reporter-bundle-analyzer-2.10.3.tgz", - "integrity": "sha512-cl1YTHvwU1nMUr94sl0f8ZiJ5hwHjaRobluPJK2jSkfLVflideIFWupuzNANpuWKeE8mlXNp8DUVgi3YpVXUMA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-bundle-analyzer/-/reporter-bundle-analyzer-2.12.0.tgz", + "integrity": "sha512-lj5ayqpo7lzvc1jZWDKiqzzFakhfF8a6U59cxmCGXn4sU6qEDbJcGUqox4vemiBWb1cr0/b4MpfnIs9aUl5UDA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1293,20 +1302,20 @@ } }, "node_modules/@parcel/reporter-cli": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.10.3.tgz", - "integrity": "sha512-p5xQTPRuB1K3eI3Ro90vcdxpdt0VqIgrUP/VJKtSI8I3fLLGgPBNmSZejqqLup3jFRzUttQPHYkWl/R14LHjAQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.12.0.tgz", + "integrity": "sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "chalk": "^4.1.0", "term-size": "^2.2.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1314,17 +1323,17 @@ } }, "node_modules/@parcel/reporter-dev-server": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.10.3.tgz", - "integrity": "sha512-1Kzb2TrlnOYhGwFXZYCeoO18hpVhI3pRXnN22li9ZmdpeugZ0zZJamfPV8Duj4sBvBoSajbZhiPAe/6tQgWDSA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.12.0.tgz", + "integrity": "sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3" + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1332,19 +1341,19 @@ } }, "node_modules/@parcel/reporter-tracer": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.10.3.tgz", - "integrity": "sha512-53T9VPJvCi4Co0iTmNN+nqFD+Fkt3QFW8CPXBVlmlQzOtufVjDb01VsE1NPD8/J7O0jd548HJX/s5uqT0380jg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.12.0.tgz", + "integrity": "sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "chrome-trace-event": "^1.0.3", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1352,17 +1361,17 @@ } }, "node_modules/@parcel/resolver-default": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.10.3.tgz", - "integrity": "sha512-TQc1LwpvEKyF3CnU9ifHOKV2usFLVYmMAVAkxyKKGTbnJGEqBDQ0ITqTapA6bJLvZ6d2eUT7guqd4nrBEjeZpw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.12.0.tgz", + "integrity": "sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==", "dev": true, "dependencies": { - "@parcel/node-resolver-core": "3.1.3", - "@parcel/plugin": "2.10.3" + "@parcel/node-resolver-core": "3.3.0", + "@parcel/plugin": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1370,17 +1379,17 @@ } }, "node_modules/@parcel/runtime-browser-hmr": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.10.3.tgz", - "integrity": "sha512-+6+mlJiLL3aNVIEyXMUPbPSgljYgnbl9JNMbEXikDQpGGiXTZ7gNNKsqwYeYzgQBYwgqRfR2ir6Bznc2R7dvxg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.12.0.tgz", + "integrity": "sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3" + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1388,19 +1397,19 @@ } }, "node_modules/@parcel/runtime-js": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.10.3.tgz", - "integrity": "sha512-EMLgZzBGf5ylOT5U/N2rBK5ZZxnmEM4aJsissEAxcE/2cgE8TyhSng6p3A88vVJlO/unHcwRuFGlxKCueugGsQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.12.0.tgz", + "integrity": "sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1408,19 +1417,19 @@ } }, "node_modules/@parcel/runtime-react-refresh": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.10.3.tgz", - "integrity": "sha512-l03mni8XJq3fmeAV8UYlKJ/+u0LYRuk6ZVP0VLYLwgK4O0mlRuxwaZWYUeB8r/kTsEjB3gF/9AAtUZdAC7Swow==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.12.0.tgz", + "integrity": "sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "react-error-overlay": "6.0.9", "react-refresh": "^0.9.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1428,18 +1437,18 @@ } }, "node_modules/@parcel/runtime-service-worker": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.10.3.tgz", - "integrity": "sha512-NjhS80t+O5iBgKXIQ+i07ZEh/VW8XHzanwTHmznJXEoIjLoBpELZ9r6bV/eUD3mYgM1vmW9Aijdu5xtsd0JW6A==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.12.0.tgz", + "integrity": "sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1447,9 +1456,9 @@ } }, "node_modules/@parcel/rust": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.10.3.tgz", - "integrity": "sha512-s1dD1QI/6JkWLICsFh8/iUvO7W1aj/avx+2mCSzuwEIsMywexpBf56qhVYMa3D9D50hS1h5FMk9RrSnSiPf8WA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.12.0.tgz", + "integrity": "sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==", "dev": true, "engines": { "node": ">= 12.0.0" @@ -1472,15 +1481,15 @@ } }, "node_modules/@parcel/transformer-babel": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.10.3.tgz", - "integrity": "sha512-SDTyDZX3WTkX7WS5Dg5cBLjWtIkUeeHezIjeOI4cw40tBjj5bXRR2TBfPsqwOnpTHr5jhNSicD6DN+XfTI2MMw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.12.0.tgz", + "integrity": "sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", "browserslist": "^4.6.6", "json5": "^2.2.0", "nullthrows": "^1.1.1", @@ -1488,7 +1497,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1496,22 +1505,22 @@ } }, "node_modules/@parcel/transformer-css": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.10.3.tgz", - "integrity": "sha512-qlPYcwVgbqFHrec6CKcTQ4hY7EkjvH40Wyqf0xjAyIoIuOPmrpSUOp+VKjeRdbyFwH/4GBjrDZMBvCUsgeM2GA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.12.0.tgz", + "integrity": "sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", + "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1519,14 +1528,14 @@ } }, "node_modules/@parcel/transformer-html": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.10.3.tgz", - "integrity": "sha512-u0uklWpliEcPADtBlboxhxBvlGrP0yPRZk/A2iL0VhfAi9ONFEuJkEoesispNhAg3KiojEh0Ddzu7bYp9U0yww==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.12.0.tgz", + "integrity": "sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -1536,7 +1545,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1544,35 +1553,35 @@ } }, "node_modules/@parcel/transformer-image": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.10.3.tgz", - "integrity": "sha512-At7D7eMauE+/EnlXiDfNSap2te11L0TIW55SC9iTRTI/CqesWfT96ZB/LcH3HXckYy/GJi0xyTjYxC/YjUqDog==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.12.0.tgz", + "integrity": "sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "peerDependencies": { - "@parcel/core": "^2.10.3" + "@parcel/core": "^2.12.0" } }, "node_modules/@parcel/transformer-inline": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-inline/-/transformer-inline-2.10.3.tgz", - "integrity": "sha512-vDlVTh80pCUsxHs9sHyH5PfS5eu6+aqsZRmMmlO0HIm10RV8eaQd6IRD7fdEbQpOZQbDdvXBFdakX/TRsDBvPQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-inline/-/transformer-inline-2.12.0.tgz", + "integrity": "sha512-tnX4PldBWioCfFbNLv6nUWV0v1RI2zS9GneMEHowjZ91BSOHZEef8/Q8JRLPZXnaIzBGI9RWK36Wk+icueNaFQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1580,16 +1589,16 @@ } }, "node_modules/@parcel/transformer-inline-string": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.10.3.tgz", - "integrity": "sha512-vOxBqLkzouA744b4x1KoaV4+Lo8kQmnz1Y2ahlnt2bEER3TMJpGiEiggFahq3WQKOOFOfhBcVFH0ncBCszCfWg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.12.0.tgz", + "integrity": "sha512-FawH7Hgc7E8/Uc0t1UlFT2AdKdEQysu6OJp88NJixAqNhZT7G24OtKltM+VyayPxQZyLblPcp6TnYpY+Tz9VGA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1597,17 +1606,17 @@ } }, "node_modules/@parcel/transformer-js": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.10.3.tgz", - "integrity": "sha512-9pGqrCSLlipXvL7hOrLsaW5Pq4bjFBOTiZ5k5kizk1qeuHKMIHxySGdy0E35eSsJ6JzXP0lTXPywMPysSI6owQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.12.0.tgz", + "integrity": "sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0", "@swc/helpers": "^0.5.0", "browserslist": "^4.6.6", "nullthrows": "^1.1.1", @@ -1616,28 +1625,28 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.10.3" + "@parcel/core": "^2.12.0" } }, "node_modules/@parcel/transformer-json": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.10.3.tgz", - "integrity": "sha512-cPhiQNgrX92VEATuxf3GCPQnlfnZW1iCsOHMT1CzgmofE7tVlW1hOOokWw21/8spG44Zax0SrRW0udi9TdmpQA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.12.0.tgz", + "integrity": "sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", + "@parcel/plugin": "2.12.0", "json5": "^2.2.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1645,15 +1654,15 @@ } }, "node_modules/@parcel/transformer-postcss": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.10.3.tgz", - "integrity": "sha512-SpTZQdGQ3aVvl6+3tLlw/txUyzZSsv8t+hcfc9PM0n1rd4mfjWxVKmgNC1Y3nFoSubLMp+03GbMq16ym8t89WQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.12.0.tgz", + "integrity": "sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", + "@parcel/utils": "2.12.0", "clone": "^2.1.1", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", @@ -1661,7 +1670,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1669,13 +1678,13 @@ } }, "node_modules/@parcel/transformer-posthtml": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.10.3.tgz", - "integrity": "sha512-k6pz0H/W1k+i9uDNXjum7XkaFYKvSSrgEsmhoh7OriXPrLunboIzMBXFQcQSCyxCpw/kLuKFBLP38mQnYC5BbQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.12.0.tgz", + "integrity": "sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -1684,7 +1693,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1692,16 +1701,16 @@ } }, "node_modules/@parcel/transformer-raw": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.10.3.tgz", - "integrity": "sha512-r//P2Hg14m/vJK/XJyq0cmcS4RTRy4bPSL4c0FxbEdDRrSm0Hcd1gdfgl0HeqSQQfcz0Xu4nCM5zAhg6FUpiXQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.12.0.tgz", + "integrity": "sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1709,18 +1718,18 @@ } }, "node_modules/@parcel/transformer-react-refresh-wrap": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.10.3.tgz", - "integrity": "sha512-Sc6ExGQy/YhNYFxRgEyi4SikYmV3wbATYo/VzqUjvZ4vE9YXM0sC5CyJhcoWVHmMPhm5eowOwFA6UrTsgHd2+g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.12.0.tgz", + "integrity": "sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==", "dev": true, "dependencies": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "react-refresh": "^0.9.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1728,14 +1737,14 @@ } }, "node_modules/@parcel/transformer-svg": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.10.3.tgz", - "integrity": "sha512-fjkTdPB8y467I/yHPEaNxNxoGtRIgEqNjVkBhtE/ibhF/YfqIEpDlJyI7G5G71pt2peLMLXZnJowzHqeoEUHOQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.12.0.tgz", + "integrity": "sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -1744,7 +1753,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1752,9 +1761,9 @@ } }, "node_modules/@parcel/ts-utils": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.10.3.tgz", - "integrity": "sha512-DkYs9C/BOY8pw7clzKltVY1biGcte3KAaq1u6KQkzLbPudjtl8fzk/SMRGKjYSm0gjqc/TiK87PwWWNQZtz8mw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.12.0.tgz", + "integrity": "sha512-zou+W6dcqnXXUOfN5zGM+ePIWbYOhGp8bVB2jICoNkoKmNAHd4l4zeHl5yQXnbZfynVw88cZVqxtXS8tYebelg==", "dev": true, "dependencies": { "nullthrows": "^1.1.1" @@ -1771,31 +1780,31 @@ } }, "node_modules/@parcel/types": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.10.3.tgz", - "integrity": "sha512-4ISgDKcbJsR7NKj2jquPUPQWc/b2x6zHb/jZVdHVzMQxJp98DX+cvQR137iOTXUAFtwkKVjFcHWfejwGdGf9bw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.12.0.tgz", + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", "dev": true, "dependencies": { - "@parcel/cache": "2.10.3", - "@parcel/diagnostic": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/package-manager": "2.10.3", + "@parcel/cache": "2.12.0", + "@parcel/diagnostic": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/package-manager": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/workers": "2.10.3", + "@parcel/workers": "2.12.0", "utility-types": "^3.10.0" } }, "node_modules/@parcel/utils": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.10.3.tgz", - "integrity": "sha512-l9pEQgq+D57t42m2sJkdU08Dpp0HVzDEwVrp/by/l37ZkYPJ2Me3oXtsJhvA+hej2kO8+FuKPm64FaUVaA2g+w==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.12.0.tgz", + "integrity": "sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==", "dev": true, "dependencies": { - "@parcel/codeframe": "2.10.3", - "@parcel/diagnostic": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/markdown-ansi": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/codeframe": "2.12.0", + "@parcel/diagnostic": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/markdown-ansi": "2.12.0", + "@parcel/rust": "2.12.0", "@parcel/source-map": "^2.1.1", "chalk": "^4.1.0", "nullthrows": "^1.1.1" @@ -1809,20 +1818,20 @@ } }, "node_modules/@parcel/validator-typescript": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/validator-typescript/-/validator-typescript-2.10.3.tgz", - "integrity": "sha512-d8DndHKV0ZPjwd06E7Yx6hnNS9auaUZsc4uF2mJVfQIqMD72bWOjgfvVYyiQr45ATWvOEAuWkznooOQEMuK51A==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/validator-typescript/-/validator-typescript-2.12.0.tgz", + "integrity": "sha512-oiAG/MA6Ycbv106KCAQAwwVKdDdpyvK8xWJ47wme726Nkc6YO/UCoHBqIFTld8+PC7QD3U0XY5Y4kavm3n+lMQ==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/ts-utils": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3" + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/ts-utils": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.10.3" + "parcel": "^2.12.0" }, "funding": { "type": "opencollective", @@ -1833,11 +1842,10 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", - "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", "dev": true, - "hasInstallScript": true, "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -1852,24 +1860,24 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.3.0", - "@parcel/watcher-darwin-arm64": "2.3.0", - "@parcel/watcher-darwin-x64": "2.3.0", - "@parcel/watcher-freebsd-x64": "2.3.0", - "@parcel/watcher-linux-arm-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-musl": "2.3.0", - "@parcel/watcher-linux-x64-glibc": "2.3.0", - "@parcel/watcher-linux-x64-musl": "2.3.0", - "@parcel/watcher-win32-arm64": "2.3.0", - "@parcel/watcher-win32-ia32": "2.3.0", - "@parcel/watcher-win32-x64": "2.3.0" + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", - "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", "cpu": [ "arm64" ], @@ -1887,9 +1895,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", "cpu": [ "arm64" ], @@ -1907,9 +1915,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", - "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", "cpu": [ "x64" ], @@ -1927,9 +1935,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", - "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", "cpu": [ "x64" ], @@ -1947,9 +1955,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", - "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", "cpu": [ "arm" ], @@ -1967,9 +1975,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", - "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", "cpu": [ "arm64" ], @@ -1987,9 +1995,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", - "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", "cpu": [ "arm64" ], @@ -2007,9 +2015,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", - "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", "cpu": [ "x64" ], @@ -2027,9 +2035,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", - "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", "cpu": [ "x64" ], @@ -2047,9 +2055,9 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", - "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", "cpu": [ "arm64" ], @@ -2067,9 +2075,9 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", - "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", "cpu": [ "ia32" ], @@ -2087,9 +2095,9 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", - "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", "cpu": [ "x64" ], @@ -2107,16 +2115,16 @@ } }, "node_modules/@parcel/workers": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.10.3.tgz", - "integrity": "sha512-qlN8G3VybPHVIbD6fsZr2gmrXG2UlROUQIPW/kkAvjQ29uRfFn7YEC8CHTICt8M1HhCNkr0cMXkuXQBi0l3kAg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.12.0.tgz", + "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/profiler": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/profiler": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" }, "engines": { @@ -2127,7 +2135,7 @@ "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.10.3" + "@parcel/core": "^2.12.0" } }, "node_modules/@pkgjs/parseargs": { @@ -2502,9 +2510,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -2521,10 +2529,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -2556,9 +2564,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001507", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001507.tgz", - "integrity": "sha512-SFpUDoSLCaE5XYL2jfqe9ova/pbQHEmbheDf5r4diNwbAgR3qxM9NQtfsiSscjqoya5K7kFcHPUQ+VsUkIJR4A==", + "version": "1.0.30001598", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001598.tgz", + "integrity": "sha512-j8mQRDziG94uoBfeFuqsJUNECW37DXpnvhcMJMdlH2u3MRkq1sAI0LJcXP1i/Py0KbSIC4UDj8YHPrTn5YsL+Q==", "dev": true, "funding": [ { @@ -3065,9 +3073,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.440", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.440.tgz", - "integrity": "sha512-r6dCgNpRhPwiWlxbHzZQ/d9swfPaEJGi8ekqRBwQYaR3WmA5VkqQfBWSDDjuJU1ntO+W9tHx8OHV/96Q8e0dVw==", + "version": "1.4.708", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.708.tgz", + "integrity": "sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==", "dev": true }, "node_modules/emoji-regex": { @@ -3234,9 +3242,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3601,9 +3609,9 @@ } }, "node_modules/lightningcss": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.22.1.tgz", - "integrity": "sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.24.1.tgz", + "integrity": "sha512-kUpHOLiH5GB0ERSv4pxqlL0RYKnOXtgGtVe7shDGfhS0AZ4D1ouKFYAcLcZhql8aMspDNzaUCumGHZ78tb2fTg==", "dev": true, "dependencies": { "detect-libc": "^1.0.3" @@ -3616,21 +3624,21 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.22.1", - "lightningcss-darwin-x64": "1.22.1", - "lightningcss-freebsd-x64": "1.22.1", - "lightningcss-linux-arm-gnueabihf": "1.22.1", - "lightningcss-linux-arm64-gnu": "1.22.1", - "lightningcss-linux-arm64-musl": "1.22.1", - "lightningcss-linux-x64-gnu": "1.22.1", - "lightningcss-linux-x64-musl": "1.22.1", - "lightningcss-win32-x64-msvc": "1.22.1" + "lightningcss-darwin-arm64": "1.24.1", + "lightningcss-darwin-x64": "1.24.1", + "lightningcss-freebsd-x64": "1.24.1", + "lightningcss-linux-arm-gnueabihf": "1.24.1", + "lightningcss-linux-arm64-gnu": "1.24.1", + "lightningcss-linux-arm64-musl": "1.24.1", + "lightningcss-linux-x64-gnu": "1.24.1", + "lightningcss-linux-x64-musl": "1.24.1", + "lightningcss-win32-x64-msvc": "1.24.1" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.22.1.tgz", - "integrity": "sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.24.1.tgz", + "integrity": "sha512-1jQ12jBy+AE/73uGQWGSafK5GoWgmSiIQOGhSEXiFJSZxzV+OXIx+a9h2EYHxdJfX864M+2TAxWPWb0Vv+8y4w==", "cpu": [ "arm64" ], @@ -3648,9 +3656,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.22.1.tgz", - "integrity": "sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.24.1.tgz", + "integrity": "sha512-R4R1d7VVdq2mG4igMU+Di8GPf0b64ZLnYVkubYnGG0Qxq1KaXQtAzcLI43EkpnoWvB/kUg8JKCWH4S13NfiLcQ==", "cpu": [ "x64" ], @@ -3668,9 +3676,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.22.1.tgz", - "integrity": "sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.24.1.tgz", + "integrity": "sha512-z6NberUUw5ALES6Ixn2shmjRRrM1cmEn1ZQPiM5IrZ6xHHL5a1lPin9pRv+w6eWfcrEo+qGG6R9XfJrpuY3e4g==", "cpu": [ "x64" ], @@ -3688,9 +3696,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.22.1.tgz", - "integrity": "sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.24.1.tgz", + "integrity": "sha512-NLQLnBQW/0sSg74qLNI8F8QKQXkNg4/ukSTa+XhtkO7v3BnK19TS1MfCbDHt+TTdSgNEBv0tubRuapcKho2EWw==", "cpu": [ "arm" ], @@ -3708,9 +3716,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.22.1.tgz", - "integrity": "sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.24.1.tgz", + "integrity": "sha512-AQxWU8c9E9JAjAi4Qw9CvX2tDIPjgzCTrZCSXKELfs4mCwzxRkHh2RCxX8sFK19RyJoJAjA/Kw8+LMNRHS5qEg==", "cpu": [ "arm64" ], @@ -3728,9 +3736,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.22.1.tgz", - "integrity": "sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.24.1.tgz", + "integrity": "sha512-JCgH/SrNrhqsguUA0uJUM1PvN5+dVuzPIlXcoWDHSv2OU/BWlj2dUYr3XNzEw748SmNZPfl2NjQrAdzaPOn1lA==", "cpu": [ "arm64" ], @@ -3748,9 +3756,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.22.1.tgz", - "integrity": "sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.24.1.tgz", + "integrity": "sha512-TYdEsC63bHV0h47aNRGN3RiK7aIeco3/keN4NkoSQ5T8xk09KHuBdySltWAvKLgT8JvR+ayzq8ZHnL1wKWY0rw==", "cpu": [ "x64" ], @@ -3768,9 +3776,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.22.1.tgz", - "integrity": "sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.24.1.tgz", + "integrity": "sha512-HLfzVik3RToot6pQ2Rgc3JhfZkGi01hFetHt40HrUMoeKitLoqUUT5owM6yTZPTytTUW9ukLBJ1pc3XNMSvlLw==", "cpu": [ "x64" ], @@ -3788,9 +3796,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.22.1.tgz", - "integrity": "sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.24.1.tgz", + "integrity": "sha512-joEupPjYJ7PjZtDsS5lzALtlAudAbgIBMGJPNeFe5HfdmJXFd13ECmEM+5rXNxYVMRHua2w8132R6ab5Z6K9Ow==", "cpu": [ "x64" ], @@ -3955,9 +3963,9 @@ "dev": true }, "node_modules/msgpackr": { - "version": "1.9.9", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.9.tgz", - "integrity": "sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.10.1.tgz", + "integrity": "sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==", "dev": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" @@ -3998,10 +4006,13 @@ } }, "node_modules/node-addon-api": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", - "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", - "dev": true + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", + "dev": true, + "engines": { + "node": "^16 || ^18 || >= 20" + } }, "node_modules/node-gyp-build-optional-packages": { "version": "5.1.1", @@ -4027,9 +4038,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/noms": { @@ -4112,28 +4123,28 @@ } }, "node_modules/ordered-binary": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.1.tgz", - "integrity": "sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz", + "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==", "dev": true }, "node_modules/parcel": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.10.3.tgz", - "integrity": "sha512-Ocx33N4ZVnotJTALhMZ0AqPIE9UN5uP6jjA+lYJ4FlEYuYYZsvOQXZQgeMa62pFj6jrOHWh7ho8uJhRdTNwVyg==", - "dev": true, - "dependencies": { - "@parcel/config-default": "2.10.3", - "@parcel/core": "2.10.3", - "@parcel/diagnostic": "2.10.3", - "@parcel/events": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/package-manager": "2.10.3", - "@parcel/reporter-cli": "2.10.3", - "@parcel/reporter-dev-server": "2.10.3", - "@parcel/reporter-tracer": "2.10.3", - "@parcel/utils": "2.10.3", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.12.0.tgz", + "integrity": "sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==", + "dev": true, + "dependencies": { + "@parcel/config-default": "2.12.0", + "@parcel/core": "2.12.0", + "@parcel/diagnostic": "2.12.0", + "@parcel/events": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/package-manager": "2.12.0", + "@parcel/reporter-cli": "2.12.0", + "@parcel/reporter-dev-server": "2.12.0", + "@parcel/reporter-tracer": "2.12.0", + "@parcel/utils": "2.12.0", "chalk": "^4.1.0", "commander": "^7.0.0", "get-port": "^4.2.0" @@ -4327,6 +4338,21 @@ "node": ">=12" } }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -4668,9 +4694,9 @@ } }, "node_modules/svgo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.4.tgz", - "integrity": "sha512-T+Xul3JwuJ6VGXKo/p2ndqx1ibxNKnLTvRc1ZTWKCfyKS/GgNjRZcYsK84fxTsy/izr91g/Rwx6fGnVgaFSI5g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", "dev": true, "optional": true, "peer": true, @@ -4678,9 +4704,9 @@ "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", - "css-tree": "^2.2.1", + "css-tree": "^2.3.1", "css-what": "^6.1.0", - "csso": "5.0.5", + "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": { @@ -4820,9 +4846,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4854,9 +4880,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -4896,9 +4922,9 @@ "dev": true }, "node_modules/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", "dev": true, "engines": { "node": ">= 4" @@ -5072,9 +5098,9 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "requires": { "@babel/highlight": "^7.23.4", @@ -5229,13 +5255,19 @@ "integrity": "sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==" }, "@floating-ui/dom": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.4.2.tgz", - "integrity": "sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "requires": { - "@floating-ui/core": "^1.3.1" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, + "@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, "@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -5297,15 +5329,15 @@ "dev": true }, "@lezer/common": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.1.1.tgz", - "integrity": "sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", "dev": true }, "@lezer/lr": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.14.tgz", - "integrity": "sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", + "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", "dev": true, "requires": { "@lezer/common": "^1.0.0" @@ -5407,109 +5439,109 @@ "optional": true }, "@parcel/bundler-default": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.10.3.tgz", - "integrity": "sha512-a+yq8zH8mrg6FBgUjrC+r3z6cfK7dQVMNzduEU/LF52Z4FVAmTR8gefl/YGmAbquJL3PFAHdhICrljYnQ1WQkg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.12.0.tgz", + "integrity": "sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/graph": "3.0.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/graph": "3.2.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" } }, "@parcel/cache": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.10.3.tgz", - "integrity": "sha512-fNNOFOl4dwOlzP8iAa+evZ+3BakX0sV+3+PiYA0zaps7EmPmkTSGDhCWzaYRSO8fhmNDlrUX9Xh7b/X738LFqA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.12.0.tgz", + "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", "dev": true, "requires": { - "@parcel/fs": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/fs": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/utils": "2.12.0", "lmdb": "2.8.5" } }, "@parcel/codeframe": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.10.3.tgz", - "integrity": "sha512-70ovUzeXBowDMjK+1xaLT4hm3jZUK7EbaCS6tN1cmmr0S1TDhU7g37jnpni+u9de9Lc/lErwTaDVXUf9WSQzQw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.12.0.tgz", + "integrity": "sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==", "dev": true, "requires": { "chalk": "^4.1.0" } }, "@parcel/compressor-raw": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.10.3.tgz", - "integrity": "sha512-5SUZ80uwu7o0D+0RjhjBnSUXJRgaayfqVQtBRP3U7/W/Bb1Ixm1yDGXtDlyCbzimWqWVMMJ4/eVCEW7I8Ln4Bw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.12.0.tgz", + "integrity": "sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" } }, "@parcel/config-default": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.10.3.tgz", - "integrity": "sha512-gHVw5cKZVA9h/J4E33qQLg3QG3cYMyWVruyVzF8dFy/Rar5ebXMof1f38IhR2BIavpoThbnCnxgD4SVK8xOPag==", - "dev": true, - "requires": { - "@parcel/bundler-default": "2.10.3", - "@parcel/compressor-raw": "2.10.3", - "@parcel/namer-default": "2.10.3", - "@parcel/optimizer-css": "2.10.3", - "@parcel/optimizer-htmlnano": "2.10.3", - "@parcel/optimizer-image": "2.10.3", - "@parcel/optimizer-svgo": "2.10.3", - "@parcel/optimizer-swc": "2.10.3", - "@parcel/packager-css": "2.10.3", - "@parcel/packager-html": "2.10.3", - "@parcel/packager-js": "2.10.3", - "@parcel/packager-raw": "2.10.3", - "@parcel/packager-svg": "2.10.3", - "@parcel/packager-wasm": "2.10.3", - "@parcel/reporter-dev-server": "2.10.3", - "@parcel/resolver-default": "2.10.3", - "@parcel/runtime-browser-hmr": "2.10.3", - "@parcel/runtime-js": "2.10.3", - "@parcel/runtime-react-refresh": "2.10.3", - "@parcel/runtime-service-worker": "2.10.3", - "@parcel/transformer-babel": "2.10.3", - "@parcel/transformer-css": "2.10.3", - "@parcel/transformer-html": "2.10.3", - "@parcel/transformer-image": "2.10.3", - "@parcel/transformer-js": "2.10.3", - "@parcel/transformer-json": "2.10.3", - "@parcel/transformer-postcss": "2.10.3", - "@parcel/transformer-posthtml": "2.10.3", - "@parcel/transformer-raw": "2.10.3", - "@parcel/transformer-react-refresh-wrap": "2.10.3", - "@parcel/transformer-svg": "2.10.3" + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.12.0.tgz", + "integrity": "sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg==", + "dev": true, + "requires": { + "@parcel/bundler-default": "2.12.0", + "@parcel/compressor-raw": "2.12.0", + "@parcel/namer-default": "2.12.0", + "@parcel/optimizer-css": "2.12.0", + "@parcel/optimizer-htmlnano": "2.12.0", + "@parcel/optimizer-image": "2.12.0", + "@parcel/optimizer-svgo": "2.12.0", + "@parcel/optimizer-swc": "2.12.0", + "@parcel/packager-css": "2.12.0", + "@parcel/packager-html": "2.12.0", + "@parcel/packager-js": "2.12.0", + "@parcel/packager-raw": "2.12.0", + "@parcel/packager-svg": "2.12.0", + "@parcel/packager-wasm": "2.12.0", + "@parcel/reporter-dev-server": "2.12.0", + "@parcel/resolver-default": "2.12.0", + "@parcel/runtime-browser-hmr": "2.12.0", + "@parcel/runtime-js": "2.12.0", + "@parcel/runtime-react-refresh": "2.12.0", + "@parcel/runtime-service-worker": "2.12.0", + "@parcel/transformer-babel": "2.12.0", + "@parcel/transformer-css": "2.12.0", + "@parcel/transformer-html": "2.12.0", + "@parcel/transformer-image": "2.12.0", + "@parcel/transformer-js": "2.12.0", + "@parcel/transformer-json": "2.12.0", + "@parcel/transformer-postcss": "2.12.0", + "@parcel/transformer-posthtml": "2.12.0", + "@parcel/transformer-raw": "2.12.0", + "@parcel/transformer-react-refresh-wrap": "2.12.0", + "@parcel/transformer-svg": "2.12.0" } }, "@parcel/core": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.10.3.tgz", - "integrity": "sha512-b64FdqJi4CX6iWeLZNfmwdTrC1VLPXHMuFusf1sTZTuRBFw2oRpgJvuiqsrInaZ82o3lbLMo4a9/5LtNaZKa+Q==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.12.0.tgz", + "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==", "dev": true, "requires": { "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.10.3", - "@parcel/diagnostic": "2.10.3", - "@parcel/events": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/graph": "3.0.3", - "@parcel/logger": "2.10.3", - "@parcel/package-manager": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/profiler": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/cache": "2.12.0", + "@parcel/diagnostic": "2.12.0", + "@parcel/events": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/graph": "3.2.0", + "@parcel/logger": "2.12.0", + "@parcel/package-manager": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/profiler": "2.12.0", + "@parcel/rust": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0", "abortcontroller-polyfill": "^1.1.9", "base-x": "^3.0.8", "browserslist": "^4.6.6", @@ -5523,9 +5555,9 @@ } }, "@parcel/diagnostic": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.10.3.tgz", - "integrity": "sha512-Hf3xG9UVkDABDXWi89TjEP5U1CLUUj81kx/QFeupBXnzt5GEQZBhkxdBq6+4w17Mmuvk7H5uumNsSptkWq9PCA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.12.0.tgz", + "integrity": "sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==", "dev": true, "requires": { "@mischnic/json-sourcemap": "^0.1.0", @@ -5533,111 +5565,111 @@ } }, "@parcel/events": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.10.3.tgz", - "integrity": "sha512-I3FsZYmKzgvo1f6frUWdF7hWwpeWTshPrFqpn9ICDXs/1Hjlf32jNXLBqon9b9XUDfMw4nSRMFMzMLJpbdheGA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.12.0.tgz", + "integrity": "sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==", "dev": true }, "@parcel/fs": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.10.3.tgz", - "integrity": "sha512-0w4+Lc7B5VpwqX4GQfjnI5qN7tc9qbGPSPsf/6U2YPWU4dkGsMfPEmLBx7dZvJy3UiGxpsjMMuRHa14+jJ5QrQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.12.0.tgz", + "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", "dev": true, "requires": { - "@parcel/rust": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/rust": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.10.3" + "@parcel/workers": "2.12.0" } }, "@parcel/graph": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.0.3.tgz", - "integrity": "sha512-zUA8KsjR2+v2Q2bFBF7zBk33ejriDiRA/+LK5QE8LrFpkaDa+gjkx76h2x7JqGXIDHNos446KX4nz2OUCVwrNQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.2.0.tgz", + "integrity": "sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==", "dev": true, "requires": { "nullthrows": "^1.1.1" } }, "@parcel/logger": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.10.3.tgz", - "integrity": "sha512-mAVTA0NgbbwEUzkzjBqjqyBBax+8bscRaZIAsEqMiSFWGcUmRgwVlH/jy3QDkFc7OHzwvdPK+XlMLV7s/3DJNw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.12.0.tgz", + "integrity": "sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/events": "2.10.3" + "@parcel/diagnostic": "2.12.0", + "@parcel/events": "2.12.0" } }, "@parcel/markdown-ansi": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.10.3.tgz", - "integrity": "sha512-uzN1AJmp1oYh/ZLdD9WA7xP5u/L3Bs/6AFZz5s695zus74RCx9OtQcF0Yyl1hbKVJDfuw9WFuzMfPL/9p/C5DQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.12.0.tgz", + "integrity": "sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==", "dev": true, "requires": { "chalk": "^4.1.0" } }, "@parcel/namer-default": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.10.3.tgz", - "integrity": "sha512-s7kgB/x7TISIHhen9IK4+CBXgmRJYahVS+oiAbMm18vcUVuXeZDBeTedOco6zUQIKuB71vx/4DBIuiIp6Q9hpg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.12.0.tgz", + "integrity": "sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "nullthrows": "^1.1.1" } }, "@parcel/node-resolver-core": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.1.3.tgz", - "integrity": "sha512-o7XK1KiK3ymO39bhc5qfDQiZpKA1xQmKg0TEPDNiLIXHKLEBheqarhw3Nwwt9MOFibfwsisQtDTIS+2v9A640A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.3.0.tgz", + "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", "dev": true, "requires": { "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/diagnostic": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/rust": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/rust": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1", "semver": "^7.5.2" } }, "@parcel/optimizer-blob-url": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-blob-url/-/optimizer-blob-url-2.10.3.tgz", - "integrity": "sha512-vLDvX/hjebiHqO6t7+qzwsJssh5m8RZzAgrT1ZTutfWPoxeyeiVXK1vDmpY4H1Mfo99o7q3oKjStUU/AdYnoQw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-blob-url/-/optimizer-blob-url-2.12.0.tgz", + "integrity": "sha512-gCps54+7Y/uRa+CrAaXKzXF21bqK9IRXaHmN4bkTAcN6frMM//3mUA/W//tOIjDegw+657ETMQWki+xOzPrw6A==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3" + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0" } }, "@parcel/optimizer-css": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.10.3.tgz", - "integrity": "sha512-Pc8jwV3U9w5DJDNcRQML5FlKdpPGnuCTtk1P+9FfyEUjdxoVxC+YeMIQcE961clAgl47qh7eNObXtsX/lb04Dg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.12.0.tgz", + "integrity": "sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", + "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" } }, "@parcel/optimizer-data-url": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.10.3.tgz", - "integrity": "sha512-wGIQWYd8NsumwvuX8w8MBHVgboFMC+uZOX3HqPSlDY0zyqTqnVZfCk6y7RQoJVjVZoU6RY/SyElb5OYsCLqyag==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.12.0.tgz", + "integrity": "sha512-9g7+1bXZkLFFQ2cLm+CsiJzxMMSDxdo3w3xcqzIj5hcha22jaPP6N1weCAbfxkd6D8wgmljeNUzewFMT0Ob2FQ==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "isbinaryfile": "^4.0.2", "mime": "^2.4.4" }, @@ -5651,12 +5683,12 @@ } }, "@parcel/optimizer-htmlnano": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.10.3.tgz", - "integrity": "sha512-KTIZOy19tYeG0j3JRv435A6jnTh3O1LPhsUfo6Xlea7Cz1yUUxAANl9MG8lHZKYbZCFFKbfk2I9QBycmcYxAAw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.12.0.tgz", + "integrity": "sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", + "@parcel/plugin": "2.12.0", "htmlnano": "^2.0.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", @@ -5719,27 +5751,27 @@ } }, "@parcel/optimizer-image": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.10.3.tgz", - "integrity": "sha512-hbeI6+GoddJxib8MlK5iafbCm1oy3p0UL9bb8s5mjTZiHtj1PORlH8gP7mT1WlYOCgoy45QdHelcrmL9fJ8kBA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.12.0.tgz", + "integrity": "sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3" + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0" } }, "@parcel/optimizer-svgo": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.10.3.tgz", - "integrity": "sha512-STN7sdjz6wGnQnvy22SkQaLi5C1E+j7J0xy96T0/mCP9KoIsBDE7panCtf53p4sWCNRsXNVrXt5KrpCC+u0LHg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.12.0.tgz", + "integrity": "sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "svgo": "^2.4.0" }, "dependencies": { @@ -5799,232 +5831,234 @@ } }, "@parcel/optimizer-swc": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.10.3.tgz", - "integrity": "sha512-Cxy05CysiKbv/PtX++ETje4cbhCJySmN6EmFyQBs0jvzsUdWwqnsttavYRoMviUUK9mjm/i5q+cyewBO/8Oc5g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.12.0.tgz", + "integrity": "sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", "@swc/core": "^1.3.36", "nullthrows": "^1.1.1" } }, "@parcel/package-manager": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.10.3.tgz", - "integrity": "sha512-KqOW5oUmElrcb7d+hOC68ja1PI2qbPZTwdduduRvB90DAweMt7r1046+W2Df5bd+p9iv72DxGEn9xomX+qz9MA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/node-resolver-core": "3.1.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.12.0.tgz", + "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/node-resolver-core": "3.3.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0", + "@swc/core": "^1.3.36", "semver": "^7.5.2" } }, "@parcel/packager-css": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.10.3.tgz", - "integrity": "sha512-Jk165fFU2XyWjN7agKy+YvvRoOJbWIb57VlVDgBHanB5ptS7aCildambrljGNTivatr+zFrchE5ZDNUFXZhYnw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.12.0.tgz", + "integrity": "sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", + "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" } }, "@parcel/packager-html": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.10.3.tgz", - "integrity": "sha512-bEI6FhBvERuoqyi/h681qGImTRBUnqNW4sKoFO67q/bxWLevXtEGMFOeqridiVOjYQH9s1kKwM/ln/UwKVazZw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.12.0.tgz", + "integrity": "sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5" } }, "@parcel/packager-js": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.10.3.tgz", - "integrity": "sha512-SjLSDw0juC7bEk/0geUtSVXaZqm2SgHL2IZaPnkoBQxVqzh2MdvAxJCrS2LxiR/cuQRfvQ5bnoJA7Kk1w2VNAg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.12.0.tgz", + "integrity": "sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "globals": "^13.2.0", "nullthrows": "^1.1.1" } }, "@parcel/packager-raw": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.10.3.tgz", - "integrity": "sha512-d236tnP2ViOnUJR0+qG6EHw7MUWSA14fLKnYYzL5SRQ4BVo5XC+CM9HKN5O4YCCVu3+9Su2X1+RESo5sxbFq7w==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.12.0.tgz", + "integrity": "sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" } }, "@parcel/packager-svg": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.10.3.tgz", - "integrity": "sha512-Rk/GokkNs9uLwiy6Ux/xXpD8nMVhA9LN9eIbVqi8+eR42xUmICmEoUoSm+CnekkXxY2a5e3mKpL7JZbT9vOEhA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.12.0.tgz", + "integrity": "sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "posthtml": "^0.16.4" } }, "@parcel/packager-wasm": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.10.3.tgz", - "integrity": "sha512-j6VmU84LKy+XRHgZQFoASG98P50a9tkeT3LYRrol3RGGQrvx7PT3/D6rOqbnQjR2iGnaHzYoAlgg9jIMmWXYiA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.12.0.tgz", + "integrity": "sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" } }, "@parcel/plugin": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.10.3.tgz", - "integrity": "sha512-FgsfGKSdtSV1EcO2NWFCZaY14W0PnEEF8vZaRCTML3vKfUbilYs/biaqf5geFOu4DwRuCC8unOTqFy7dLwcK/A==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.12.0.tgz", + "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", "dev": true, "requires": { - "@parcel/types": "2.10.3" + "@parcel/types": "2.12.0" } }, "@parcel/profiler": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.10.3.tgz", - "integrity": "sha512-yikaM6/vsvjDCcBHAXTKmDsWUF3UvC0lMG8RpnuVSN+R40MGH1vyrR4vNnqhkiCcs0RkVXm7bpuz3cDJLNLYSQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.12.0.tgz", + "integrity": "sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/events": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/events": "2.12.0", "chrome-trace-event": "^1.0.2" } }, "@parcel/reporter-bundle-analyzer": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-bundle-analyzer/-/reporter-bundle-analyzer-2.10.3.tgz", - "integrity": "sha512-cl1YTHvwU1nMUr94sl0f8ZiJ5hwHjaRobluPJK2jSkfLVflideIFWupuzNANpuWKeE8mlXNp8DUVgi3YpVXUMA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-bundle-analyzer/-/reporter-bundle-analyzer-2.12.0.tgz", + "integrity": "sha512-lj5ayqpo7lzvc1jZWDKiqzzFakhfF8a6U59cxmCGXn4sU6qEDbJcGUqox4vemiBWb1cr0/b4MpfnIs9aUl5UDA==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" } }, "@parcel/reporter-cli": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.10.3.tgz", - "integrity": "sha512-p5xQTPRuB1K3eI3Ro90vcdxpdt0VqIgrUP/VJKtSI8I3fLLGgPBNmSZejqqLup3jFRzUttQPHYkWl/R14LHjAQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.12.0.tgz", + "integrity": "sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "chalk": "^4.1.0", "term-size": "^2.2.1" } }, "@parcel/reporter-dev-server": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.10.3.tgz", - "integrity": "sha512-1Kzb2TrlnOYhGwFXZYCeoO18hpVhI3pRXnN22li9ZmdpeugZ0zZJamfPV8Duj4sBvBoSajbZhiPAe/6tQgWDSA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.12.0.tgz", + "integrity": "sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3" + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0" } }, "@parcel/reporter-tracer": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.10.3.tgz", - "integrity": "sha512-53T9VPJvCi4Co0iTmNN+nqFD+Fkt3QFW8CPXBVlmlQzOtufVjDb01VsE1NPD8/J7O0jd548HJX/s5uqT0380jg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.12.0.tgz", + "integrity": "sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "chrome-trace-event": "^1.0.3", "nullthrows": "^1.1.1" } }, "@parcel/resolver-default": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.10.3.tgz", - "integrity": "sha512-TQc1LwpvEKyF3CnU9ifHOKV2usFLVYmMAVAkxyKKGTbnJGEqBDQ0ITqTapA6bJLvZ6d2eUT7guqd4nrBEjeZpw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.12.0.tgz", + "integrity": "sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==", "dev": true, "requires": { - "@parcel/node-resolver-core": "3.1.3", - "@parcel/plugin": "2.10.3" + "@parcel/node-resolver-core": "3.3.0", + "@parcel/plugin": "2.12.0" } }, "@parcel/runtime-browser-hmr": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.10.3.tgz", - "integrity": "sha512-+6+mlJiLL3aNVIEyXMUPbPSgljYgnbl9JNMbEXikDQpGGiXTZ7gNNKsqwYeYzgQBYwgqRfR2ir6Bznc2R7dvxg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.12.0.tgz", + "integrity": "sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3" + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0" } }, "@parcel/runtime-js": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.10.3.tgz", - "integrity": "sha512-EMLgZzBGf5ylOT5U/N2rBK5ZZxnmEM4aJsissEAxcE/2cgE8TyhSng6p3A88vVJlO/unHcwRuFGlxKCueugGsQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.12.0.tgz", + "integrity": "sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" } }, "@parcel/runtime-react-refresh": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.10.3.tgz", - "integrity": "sha512-l03mni8XJq3fmeAV8UYlKJ/+u0LYRuk6ZVP0VLYLwgK4O0mlRuxwaZWYUeB8r/kTsEjB3gF/9AAtUZdAC7Swow==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.12.0.tgz", + "integrity": "sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "react-error-overlay": "6.0.9", "react-refresh": "^0.9.0" } }, "@parcel/runtime-service-worker": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.10.3.tgz", - "integrity": "sha512-NjhS80t+O5iBgKXIQ+i07ZEh/VW8XHzanwTHmznJXEoIjLoBpELZ9r6bV/eUD3mYgM1vmW9Aijdu5xtsd0JW6A==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.12.0.tgz", + "integrity": "sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" } }, "@parcel/rust": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.10.3.tgz", - "integrity": "sha512-s1dD1QI/6JkWLICsFh8/iUvO7W1aj/avx+2mCSzuwEIsMywexpBf56qhVYMa3D9D50hS1h5FMk9RrSnSiPf8WA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.12.0.tgz", + "integrity": "sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==", "dev": true }, "@parcel/source-map": { @@ -6037,15 +6071,15 @@ } }, "@parcel/transformer-babel": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.10.3.tgz", - "integrity": "sha512-SDTyDZX3WTkX7WS5Dg5cBLjWtIkUeeHezIjeOI4cw40tBjj5bXRR2TBfPsqwOnpTHr5jhNSicD6DN+XfTI2MMw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.12.0.tgz", + "integrity": "sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", "browserslist": "^4.6.6", "json5": "^2.2.0", "nullthrows": "^1.1.1", @@ -6053,29 +6087,29 @@ } }, "@parcel/transformer-css": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.10.3.tgz", - "integrity": "sha512-qlPYcwVgbqFHrec6CKcTQ4hY7EkjvH40Wyqf0xjAyIoIuOPmrpSUOp+VKjeRdbyFwH/4GBjrDZMBvCUsgeM2GA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.12.0.tgz", + "integrity": "sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", + "@parcel/utils": "2.12.0", "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", + "lightningcss": "^1.22.1", "nullthrows": "^1.1.1" } }, "@parcel/transformer-html": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.10.3.tgz", - "integrity": "sha512-u0uklWpliEcPADtBlboxhxBvlGrP0yPRZk/A2iL0VhfAi9ONFEuJkEoesispNhAg3KiojEh0Ddzu7bYp9U0yww==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.12.0.tgz", + "integrity": "sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -6085,47 +6119,47 @@ } }, "@parcel/transformer-image": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.10.3.tgz", - "integrity": "sha512-At7D7eMauE+/EnlXiDfNSap2te11L0TIW55SC9iTRTI/CqesWfT96ZB/LcH3HXckYy/GJi0xyTjYxC/YjUqDog==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.12.0.tgz", + "integrity": "sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0", "nullthrows": "^1.1.1" } }, "@parcel/transformer-inline": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-inline/-/transformer-inline-2.10.3.tgz", - "integrity": "sha512-vDlVTh80pCUsxHs9sHyH5PfS5eu6+aqsZRmMmlO0HIm10RV8eaQd6IRD7fdEbQpOZQbDdvXBFdakX/TRsDBvPQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-inline/-/transformer-inline-2.12.0.tgz", + "integrity": "sha512-tnX4PldBWioCfFbNLv6nUWV0v1RI2zS9GneMEHowjZ91BSOHZEef8/Q8JRLPZXnaIzBGI9RWK36Wk+icueNaFQ==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" } }, "@parcel/transformer-inline-string": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.10.3.tgz", - "integrity": "sha512-vOxBqLkzouA744b4x1KoaV4+Lo8kQmnz1Y2ahlnt2bEER3TMJpGiEiggFahq3WQKOOFOfhBcVFH0ncBCszCfWg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.12.0.tgz", + "integrity": "sha512-FawH7Hgc7E8/Uc0t1UlFT2AdKdEQysu6OJp88NJixAqNhZT7G24OtKltM+VyayPxQZyLblPcp6TnYpY+Tz9VGA==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" } }, "@parcel/transformer-js": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.10.3.tgz", - "integrity": "sha512-9pGqrCSLlipXvL7hOrLsaW5Pq4bjFBOTiZ5k5kizk1qeuHKMIHxySGdy0E35eSsJ6JzXP0lTXPywMPysSI6owQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.12.0.tgz", + "integrity": "sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.10.3", - "@parcel/workers": "2.10.3", + "@parcel/utils": "2.12.0", + "@parcel/workers": "2.12.0", "@swc/helpers": "^0.5.0", "browserslist": "^4.6.6", "nullthrows": "^1.1.1", @@ -6134,25 +6168,25 @@ } }, "@parcel/transformer-json": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.10.3.tgz", - "integrity": "sha512-cPhiQNgrX92VEATuxf3GCPQnlfnZW1iCsOHMT1CzgmofE7tVlW1hOOokWw21/8spG44Zax0SrRW0udi9TdmpQA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.12.0.tgz", + "integrity": "sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", + "@parcel/plugin": "2.12.0", "json5": "^2.2.0" } }, "@parcel/transformer-postcss": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.10.3.tgz", - "integrity": "sha512-SpTZQdGQ3aVvl6+3tLlw/txUyzZSsv8t+hcfc9PM0n1rd4mfjWxVKmgNC1Y3nFoSubLMp+03GbMq16ym8t89WQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.12.0.tgz", + "integrity": "sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", + "@parcel/utils": "2.12.0", "clone": "^2.1.1", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", @@ -6160,13 +6194,13 @@ } }, "@parcel/transformer-posthtml": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.10.3.tgz", - "integrity": "sha512-k6pz0H/W1k+i9uDNXjum7XkaFYKvSSrgEsmhoh7OriXPrLunboIzMBXFQcQSCyxCpw/kLuKFBLP38mQnYC5BbQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.12.0.tgz", + "integrity": "sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -6175,34 +6209,34 @@ } }, "@parcel/transformer-raw": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.10.3.tgz", - "integrity": "sha512-r//P2Hg14m/vJK/XJyq0cmcS4RTRy4bPSL4c0FxbEdDRrSm0Hcd1gdfgl0HeqSQQfcz0Xu4nCM5zAhg6FUpiXQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.12.0.tgz", + "integrity": "sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3" + "@parcel/plugin": "2.12.0" } }, "@parcel/transformer-react-refresh-wrap": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.10.3.tgz", - "integrity": "sha512-Sc6ExGQy/YhNYFxRgEyi4SikYmV3wbATYo/VzqUjvZ4vE9YXM0sC5CyJhcoWVHmMPhm5eowOwFA6UrTsgHd2+g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.12.0.tgz", + "integrity": "sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==", "dev": true, "requires": { - "@parcel/plugin": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/plugin": "2.12.0", + "@parcel/utils": "2.12.0", "react-refresh": "^0.9.0" } }, "@parcel/transformer-svg": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.10.3.tgz", - "integrity": "sha512-fjkTdPB8y467I/yHPEaNxNxoGtRIgEqNjVkBhtE/ibhF/YfqIEpDlJyI7G5G71pt2peLMLXZnJowzHqeoEUHOQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.12.0.tgz", + "integrity": "sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/rust": "2.12.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -6211,76 +6245,76 @@ } }, "@parcel/ts-utils": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.10.3.tgz", - "integrity": "sha512-DkYs9C/BOY8pw7clzKltVY1biGcte3KAaq1u6KQkzLbPudjtl8fzk/SMRGKjYSm0gjqc/TiK87PwWWNQZtz8mw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.12.0.tgz", + "integrity": "sha512-zou+W6dcqnXXUOfN5zGM+ePIWbYOhGp8bVB2jICoNkoKmNAHd4l4zeHl5yQXnbZfynVw88cZVqxtXS8tYebelg==", "dev": true, "requires": { "nullthrows": "^1.1.1" } }, "@parcel/types": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.10.3.tgz", - "integrity": "sha512-4ISgDKcbJsR7NKj2jquPUPQWc/b2x6zHb/jZVdHVzMQxJp98DX+cvQR137iOTXUAFtwkKVjFcHWfejwGdGf9bw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.12.0.tgz", + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", "dev": true, "requires": { - "@parcel/cache": "2.10.3", - "@parcel/diagnostic": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/package-manager": "2.10.3", + "@parcel/cache": "2.12.0", + "@parcel/diagnostic": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/package-manager": "2.12.0", "@parcel/source-map": "^2.1.1", - "@parcel/workers": "2.10.3", + "@parcel/workers": "2.12.0", "utility-types": "^3.10.0" } }, "@parcel/utils": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.10.3.tgz", - "integrity": "sha512-l9pEQgq+D57t42m2sJkdU08Dpp0HVzDEwVrp/by/l37ZkYPJ2Me3oXtsJhvA+hej2kO8+FuKPm64FaUVaA2g+w==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.12.0.tgz", + "integrity": "sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==", "dev": true, "requires": { - "@parcel/codeframe": "2.10.3", - "@parcel/diagnostic": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/markdown-ansi": "2.10.3", - "@parcel/rust": "2.10.3", + "@parcel/codeframe": "2.12.0", + "@parcel/diagnostic": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/markdown-ansi": "2.12.0", + "@parcel/rust": "2.12.0", "@parcel/source-map": "^2.1.1", "chalk": "^4.1.0", "nullthrows": "^1.1.1" } }, "@parcel/validator-typescript": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/validator-typescript/-/validator-typescript-2.10.3.tgz", - "integrity": "sha512-d8DndHKV0ZPjwd06E7Yx6hnNS9auaUZsc4uF2mJVfQIqMD72bWOjgfvVYyiQr45ATWvOEAuWkznooOQEMuK51A==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/validator-typescript/-/validator-typescript-2.12.0.tgz", + "integrity": "sha512-oiAG/MA6Ycbv106KCAQAwwVKdDdpyvK8xWJ47wme726Nkc6YO/UCoHBqIFTld8+PC7QD3U0XY5Y4kavm3n+lMQ==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/plugin": "2.10.3", - "@parcel/ts-utils": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3" + "@parcel/diagnostic": "2.12.0", + "@parcel/plugin": "2.12.0", + "@parcel/ts-utils": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0" } }, "@parcel/watcher": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", - "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", - "dev": true, - "requires": { - "@parcel/watcher-android-arm64": "2.3.0", - "@parcel/watcher-darwin-arm64": "2.3.0", - "@parcel/watcher-darwin-x64": "2.3.0", - "@parcel/watcher-freebsd-x64": "2.3.0", - "@parcel/watcher-linux-arm-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-musl": "2.3.0", - "@parcel/watcher-linux-x64-glibc": "2.3.0", - "@parcel/watcher-linux-x64-musl": "2.3.0", - "@parcel/watcher-win32-arm64": "2.3.0", - "@parcel/watcher-win32-ia32": "2.3.0", - "@parcel/watcher-win32-x64": "2.3.0", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "dev": true, + "requires": { + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1", "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", @@ -6288,100 +6322,100 @@ } }, "@parcel/watcher-android-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", - "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", "dev": true, "optional": true }, "@parcel/watcher-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", "dev": true, "optional": true }, "@parcel/watcher-darwin-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", - "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", "dev": true, "optional": true }, "@parcel/watcher-freebsd-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", - "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", "dev": true, "optional": true }, "@parcel/watcher-linux-arm-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", - "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", "dev": true, "optional": true }, "@parcel/watcher-linux-arm64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", - "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", "dev": true, "optional": true }, "@parcel/watcher-linux-arm64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", - "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", "dev": true, "optional": true }, "@parcel/watcher-linux-x64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", - "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", "dev": true, "optional": true }, "@parcel/watcher-linux-x64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", - "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", "dev": true, "optional": true }, "@parcel/watcher-win32-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", - "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", "dev": true, "optional": true }, "@parcel/watcher-win32-ia32": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", - "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", "dev": true, "optional": true }, "@parcel/watcher-win32-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", - "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", "dev": true, "optional": true }, "@parcel/workers": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.10.3.tgz", - "integrity": "sha512-qlN8G3VybPHVIbD6fsZr2gmrXG2UlROUQIPW/kkAvjQ29uRfFn7YEC8CHTICt8M1HhCNkr0cMXkuXQBi0l3kAg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.12.0.tgz", + "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/profiler": "2.10.3", - "@parcel/types": "2.10.3", - "@parcel/utils": "2.10.3", + "@parcel/diagnostic": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/profiler": "2.12.0", + "@parcel/types": "2.12.0", + "@parcel/utils": "2.12.0", "nullthrows": "^1.1.1" } }, @@ -6621,15 +6655,15 @@ } }, "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" } }, "call-bind": { @@ -6649,9 +6683,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001507", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001507.tgz", - "integrity": "sha512-SFpUDoSLCaE5XYL2jfqe9ova/pbQHEmbheDf5r4diNwbAgR3qxM9NQtfsiSscjqoya5K7kFcHPUQ+VsUkIJR4A==", + "version": "1.0.30001598", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001598.tgz", + "integrity": "sha512-j8mQRDziG94uoBfeFuqsJUNECW37DXpnvhcMJMdlH2u3MRkq1sAI0LJcXP1i/Py0KbSIC4UDj8YHPrTn5YsL+Q==", "dev": true }, "chalk": { @@ -7015,9 +7049,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.440", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.440.tgz", - "integrity": "sha512-r6dCgNpRhPwiWlxbHzZQ/d9swfPaEJGi8ekqRBwQYaR3WmA5VkqQfBWSDDjuJU1ntO+W9tHx8OHV/96Q8e0dVw==", + "version": "1.4.708", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.708.tgz", + "integrity": "sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==", "dev": true }, "emoji-regex": { @@ -7134,9 +7168,9 @@ } }, "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -7382,83 +7416,83 @@ "dev": true }, "lightningcss": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.22.1.tgz", - "integrity": "sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.24.1.tgz", + "integrity": "sha512-kUpHOLiH5GB0ERSv4pxqlL0RYKnOXtgGtVe7shDGfhS0AZ4D1ouKFYAcLcZhql8aMspDNzaUCumGHZ78tb2fTg==", "dev": true, "requires": { "detect-libc": "^1.0.3", - "lightningcss-darwin-arm64": "1.22.1", - "lightningcss-darwin-x64": "1.22.1", - "lightningcss-freebsd-x64": "1.22.1", - "lightningcss-linux-arm-gnueabihf": "1.22.1", - "lightningcss-linux-arm64-gnu": "1.22.1", - "lightningcss-linux-arm64-musl": "1.22.1", - "lightningcss-linux-x64-gnu": "1.22.1", - "lightningcss-linux-x64-musl": "1.22.1", - "lightningcss-win32-x64-msvc": "1.22.1" + "lightningcss-darwin-arm64": "1.24.1", + "lightningcss-darwin-x64": "1.24.1", + "lightningcss-freebsd-x64": "1.24.1", + "lightningcss-linux-arm-gnueabihf": "1.24.1", + "lightningcss-linux-arm64-gnu": "1.24.1", + "lightningcss-linux-arm64-musl": "1.24.1", + "lightningcss-linux-x64-gnu": "1.24.1", + "lightningcss-linux-x64-musl": "1.24.1", + "lightningcss-win32-x64-msvc": "1.24.1" } }, "lightningcss-darwin-arm64": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.22.1.tgz", - "integrity": "sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.24.1.tgz", + "integrity": "sha512-1jQ12jBy+AE/73uGQWGSafK5GoWgmSiIQOGhSEXiFJSZxzV+OXIx+a9h2EYHxdJfX864M+2TAxWPWb0Vv+8y4w==", "dev": true, "optional": true }, "lightningcss-darwin-x64": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.22.1.tgz", - "integrity": "sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.24.1.tgz", + "integrity": "sha512-R4R1d7VVdq2mG4igMU+Di8GPf0b64ZLnYVkubYnGG0Qxq1KaXQtAzcLI43EkpnoWvB/kUg8JKCWH4S13NfiLcQ==", "dev": true, "optional": true }, "lightningcss-freebsd-x64": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.22.1.tgz", - "integrity": "sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.24.1.tgz", + "integrity": "sha512-z6NberUUw5ALES6Ixn2shmjRRrM1cmEn1ZQPiM5IrZ6xHHL5a1lPin9pRv+w6eWfcrEo+qGG6R9XfJrpuY3e4g==", "dev": true, "optional": true }, "lightningcss-linux-arm-gnueabihf": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.22.1.tgz", - "integrity": "sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.24.1.tgz", + "integrity": "sha512-NLQLnBQW/0sSg74qLNI8F8QKQXkNg4/ukSTa+XhtkO7v3BnK19TS1MfCbDHt+TTdSgNEBv0tubRuapcKho2EWw==", "dev": true, "optional": true }, "lightningcss-linux-arm64-gnu": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.22.1.tgz", - "integrity": "sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.24.1.tgz", + "integrity": "sha512-AQxWU8c9E9JAjAi4Qw9CvX2tDIPjgzCTrZCSXKELfs4mCwzxRkHh2RCxX8sFK19RyJoJAjA/Kw8+LMNRHS5qEg==", "dev": true, "optional": true }, "lightningcss-linux-arm64-musl": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.22.1.tgz", - "integrity": "sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.24.1.tgz", + "integrity": "sha512-JCgH/SrNrhqsguUA0uJUM1PvN5+dVuzPIlXcoWDHSv2OU/BWlj2dUYr3XNzEw748SmNZPfl2NjQrAdzaPOn1lA==", "dev": true, "optional": true }, "lightningcss-linux-x64-gnu": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.22.1.tgz", - "integrity": "sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.24.1.tgz", + "integrity": "sha512-TYdEsC63bHV0h47aNRGN3RiK7aIeco3/keN4NkoSQ5T8xk09KHuBdySltWAvKLgT8JvR+ayzq8ZHnL1wKWY0rw==", "dev": true, "optional": true }, "lightningcss-linux-x64-musl": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.22.1.tgz", - "integrity": "sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.24.1.tgz", + "integrity": "sha512-HLfzVik3RToot6pQ2Rgc3JhfZkGi01hFetHt40HrUMoeKitLoqUUT5owM6yTZPTytTUW9ukLBJ1pc3XNMSvlLw==", "dev": true, "optional": true }, "lightningcss-win32-x64-msvc": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.22.1.tgz", - "integrity": "sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.24.1.tgz", + "integrity": "sha512-joEupPjYJ7PjZtDsS5lzALtlAudAbgIBMGJPNeFe5HfdmJXFd13ECmEM+5rXNxYVMRHua2w8132R6ab5Z6K9Ow==", "dev": true, "optional": true }, @@ -7579,9 +7613,9 @@ "dev": true }, "msgpackr": { - "version": "1.9.9", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.9.tgz", - "integrity": "sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.10.1.tgz", + "integrity": "sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==", "dev": true, "requires": { "msgpackr-extract": "^3.0.2" @@ -7613,9 +7647,9 @@ } }, "node-addon-api": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", - "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", "dev": true }, "node-gyp-build-optional-packages": { @@ -7636,9 +7670,9 @@ } }, "node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "noms": { @@ -7714,28 +7748,28 @@ "dev": true }, "ordered-binary": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.1.tgz", - "integrity": "sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz", + "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==", "dev": true }, "parcel": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.10.3.tgz", - "integrity": "sha512-Ocx33N4ZVnotJTALhMZ0AqPIE9UN5uP6jjA+lYJ4FlEYuYYZsvOQXZQgeMa62pFj6jrOHWh7ho8uJhRdTNwVyg==", - "dev": true, - "requires": { - "@parcel/config-default": "2.10.3", - "@parcel/core": "2.10.3", - "@parcel/diagnostic": "2.10.3", - "@parcel/events": "2.10.3", - "@parcel/fs": "2.10.3", - "@parcel/logger": "2.10.3", - "@parcel/package-manager": "2.10.3", - "@parcel/reporter-cli": "2.10.3", - "@parcel/reporter-dev-server": "2.10.3", - "@parcel/reporter-tracer": "2.10.3", - "@parcel/utils": "2.10.3", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.12.0.tgz", + "integrity": "sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==", + "dev": true, + "requires": { + "@parcel/config-default": "2.12.0", + "@parcel/core": "2.12.0", + "@parcel/diagnostic": "2.12.0", + "@parcel/events": "2.12.0", + "@parcel/fs": "2.12.0", + "@parcel/logger": "2.12.0", + "@parcel/package-manager": "2.12.0", + "@parcel/reporter-cli": "2.12.0", + "@parcel/reporter-dev-server": "2.12.0", + "@parcel/reporter-tracer": "2.12.0", + "@parcel/utils": "2.12.0", "chalk": "^4.1.0", "commander": "^7.0.0", "get-port": "^4.2.0" @@ -7878,6 +7912,12 @@ "is-json": "^2.0.1" } }, + "prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -8128,9 +8168,9 @@ } }, "svgo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.4.tgz", - "integrity": "sha512-T+Xul3JwuJ6VGXKo/p2ndqx1ibxNKnLTvRc1ZTWKCfyKS/GgNjRZcYsK84fxTsy/izr91g/Rwx6fGnVgaFSI5g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", "dev": true, "optional": true, "peer": true, @@ -8138,9 +8178,9 @@ "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", - "css-tree": "^2.2.1", + "css-tree": "^2.3.1", "css-what": "^6.1.0", - "csso": "5.0.5", + "csso": "^5.0.5", "picocolors": "^1.0.0" } }, @@ -8235,9 +8275,9 @@ "dev": true }, "typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "dev": true }, "union": { @@ -8256,9 +8296,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -8278,9 +8318,9 @@ "dev": true }, "utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", "dev": true }, "v8-compile-cache-lib": { diff --git a/package.json b/package.json index df453c1..8b751ad 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { - "@floating-ui/dom": "^1.4.2", + "@floating-ui/dom": "^1.6.3", "modern-normalize": "^2.0.0", "vdomk": "^0.1.5" }, @@ -15,23 +15,25 @@ "test-profile": "dexnode --experimental-loader ts-node/esm --experimental-loader ./test/mock-url-module-loader.mjs --test src/dps/OptimizeForCharacter.test.ts", "deploy": "rimraf ./docs && copyfiles -u 1 ./build/**/* ./docs", "start:prod": "http-server ./docs -p 3010", - "clear-cache": "rimraf ./.parcel-dev ./.parcel-cache" + "clear-cache": "rimraf ./.parcel-dev ./.parcel-cache", + "diff-compare": "node --experimental-loader ts-node/esm diffCompare.ts" }, "devDependencies": { - "@parcel/optimizer-blob-url": "^2.10.3", - "@parcel/optimizer-data-url": "^2.10.3", - "@parcel/reporter-bundle-analyzer": "^2.10.3", - "@parcel/transformer-inline": "^2.10.3", - "@parcel/transformer-inline-string": "^2.10.3", - "@parcel/validator-typescript": "^2.10.3", - "browserslist": "^4.21.9", + "@parcel/optimizer-blob-url": "^2.12.0", + "@parcel/optimizer-data-url": "^2.12.0", + "@parcel/reporter-bundle-analyzer": "^2.12.0", + "@parcel/transformer-inline": "^2.12.0", + "@parcel/transformer-inline-string": "^2.12.0", + "@parcel/validator-typescript": "^2.12.0", + "browserslist": "^4.23.0", "copyfiles": "^2.0.0", "dexnode": "^1.2.1", "http-server": "^14.1.1", - "parcel": "^2.10.3", + "parcel": "^2.12.0", + "prettier": "^3.2.5", "rimraf": "^5.0.1", "ts-node": "^10.9.1", - "typescript": "^5.3.2" + "typescript": "^5.4.2" }, "browserslist": { "production": [