diff --git a/404.html b/404.html index 2b8f4f75..c7f4c60a 100644 --- a/404.html +++ b/404.html @@ -35,6 +35,6 @@ - + \ No newline at end of file diff --git a/982.371b9cd840d69b6e.js b/982.eb396bfa7a0b7c45.js similarity index 99% rename from 982.371b9cd840d69b6e.js rename to 982.eb396bfa7a0b7c45.js index ac3f6781..3a36954e 100644 --- a/982.371b9cd840d69b6e.js +++ b/982.eb396bfa7a0b7c45.js @@ -1 +1 @@ -(()=>{"use strict";var de={443:(P,c,O)=>{O.d(c,{F:()=>H});var t=O(7580),e=O(8333),n=O(1043);const H={[t.U.WhisperOfDurance]:{id:t.U.WhisperOfDurance,name:"Whisper of Durance",description:"Slow that you apply to targets lasts longer. For those abilities that linger, their duration will also increase.",type:e.O.Stasis,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:3469412969},[t.U.WhisperOfChains]:{id:t.U.WhisperOfChains,name:"Whisper of Chains",description:"While you are near frozen targets or a friendly Stasis crystal, you take reduced damage from targets.",type:e.O.Stasis,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:537774540},[t.U.WhisperOfConduction]:{id:t.U.WhisperOfConduction,name:"Whisper of Conduction",description:"Nearby Stasis shards track to your position.",type:e.O.Stasis,bonus:[{stat:n.WB.Intellect,value:10},{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2483898429},[t.U.WhisperOfBonds]:{id:t.U.WhisperOfBonds,name:"Whisper of Bonds",description:"Defeating frozen targets generates an Orb of Power.",type:e.O.Stasis,bonus:[{stat:n.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:3469412974},[t.U.WhisperOfHunger]:{id:t.U.WhisperOfHunger,name:"Whisper of Hunger",description:"Increases the melee energy gained from picking up Stasis shards.",type:e.O.Stasis,bonus:[{stat:n.WB.Strength,value:-20}],cost:1,requiredArmorAffinity:0,hash:2483898431},[t.U.WhisperOfFractures]:{id:t.U.WhisperOfFractures,name:"Whisper of Fractures",description:"Your melee energy recharges faster when you are near two or more targets.",type:e.O.Stasis,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774542},[t.U.WhisperOfImpetus]:{id:t.U.WhisperOfImpetus,name:"Whisper of Impetus",description:"Damaging targets with a Stasis melee reloads your stowed weapons and grants you a temporary boost to weapon ready speed.",type:e.O.Stasis,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:537774543},[t.U.WhisperOfTorment]:{id:t.U.WhisperOfTorment,name:"Whisper of Torment",description:"You gain grenade energy each time you take damage from targets. Having Frost Armor increases the amount of energy gained.",type:e.O.Stasis,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774541},[t.U.EchoOfExpulsion]:{id:t.U.EchoOfExpulsion,name:"Echo of Expulsion",description:"Void ability final blows cause targets to explode.",type:e.O.Void,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984665},[t.U.EchoOfProvision]:{id:t.U.EchoOfProvision,name:"Echo of Provision",description:"Damaging targets with grenades grants melee energy.",type:e.O.Void,bonus:[{stat:n.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984664},[t.U.EchoOfPersistence]:{id:t.U.EchoOfPersistence,name:"Echo of Persistence",description:"Void buffs applied to you (Invisibility, Overshield, and Devour) have increased duration.",type:e.O.Void,bonus:[{stat:n.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984671},[t.U.EchoOfLeeching]:{id:t.U.EchoOfLeeching,name:"Echo of Leeching",description:"Melee final blows start health regeneration for you and nearby allies.",type:e.O.Void,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984670},[t.U.EchoOfDomineering]:{id:t.U.EchoOfDomineering,name:"Echo of Domineering",description:"After suppressing a target, you gain greatly increased mobility for a short duration, and your equipped weapon is reloaded from reserves.\n\nDefeating suppressed targets creates a Void Breach.",type:e.O.Void,bonus:[{stat:n.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984657},[t.U.EchoOfDilation]:{id:t.U.EchoOfDilation,name:"Echo of Dilation",description:"While crouched, you sneak faster and gain enhanced radar resolution.",type:e.O.Void,bonus:[{stat:n.WB.Mobility,value:10},{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984656},[t.U.EchoOfUndermining]:{id:t.U.EchoOfUndermining,name:"Echo of Undermining",description:"Your Void grenades weaken targets.",type:e.O.Void,bonus:[{stat:n.WB.Discipline,value:-20}],cost:1,requiredArmorAffinity:0,hash:2272984668},[t.U.EchoOfInstability]:{id:t.U.EchoOfInstability,name:"Echo of Instability",description:"Defeating targets with grenades grants Volatile Rounds to your Void weapons.",type:e.O.Void,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180600},[t.U.EchoOfHarvest]:{id:t.U.EchoOfHarvest,name:"Echo of Harvest",description:"Defeating weakened targets creates an Orb of Power and a Void Breach.",type:e.O.Void,bonus:[{stat:n.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180601},[t.U.EchoOfObscurity]:{id:t.U.EchoOfObscurity,name:"Echo of Obscurity",description:"Finisher final blows grant Invisibility.",type:e.O.Void,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180602},[t.U.EchoOfStarvation]:{id:t.U.EchoOfStarvation,name:"Echo of Starvation",description:"Picking up a Void Breach or an Orb of Power grants Devour.",type:e.O.Void,bonus:[{stat:n.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180603},[t.U.EchoOfVigilance]:{id:t.U.EchoOfVigilance,name:"Echo of Vigilance",description:"Defeating a target while your shields are depleted grants you a temporary Void overshield.",type:e.O.Void,bonus:[{stat:n.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:3854948621},[t.U.EmberOfBenelovence]:{id:t.U.EmberOfBenelovence,name:"Ember of Benevolence",description:"Applying restoration, cure, or radiant to allies grants increased grenade, melee, and class ability regeneration for a short duration.",type:e.O.Solar,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132292},[t.U.EmberOfBeams]:{id:t.U.EmberOfBeams,name:"Ember of Beams",description:"Your Solar Super projectiles have stronger target acquisition.",type:e.O.Solar,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:362132295},[t.U.EmberOfEmpyrean]:{id:t.U.EmberOfEmpyrean,name:"Ember of Empyrean",description:"Solar weapon or ability final blows extend the duration of restoration and radiant effects applied to you.",type:e.O.Solar,bonus:[{stat:n.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132294},[t.U.EmberOfCombustion]:{id:t.U.EmberOfCombustion,name:"Ember of Combustion",description:"Final blows with a Solar Super causes targets to ignite and creates a Firesprite.",type:e.O.Solar,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:362132289},[t.U.EmberOfChar]:{id:t.U.EmberOfChar,name:"Ember of Char",description:"Your Solar ignitions spread scorch to affected targets.",type:e.O.Solar,bonus:[{stat:n.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:362132291},[t.U.EmberOfTempering]:{id:t.U.EmberOfTempering,name:"Ember of Tempering",description:"Solar weapon final blows grant you and your allies increased recovery for a short duration. Stacks 3 times.\n\nWhile Ember of Tempering is active, your weapons have increased airborne effectiveness, and your Solar weapon final blows create a Firesprite.",type:e.O.Solar,bonus:[{stat:n.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132290},[t.U.EmberOfEruption]:{id:t.U.EmberOfEruption,name:"Ember of Eruption",description:"Your Solar ignitions have increased area of effect.",type:e.O.Solar,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276348},[t.U.EmberOfWonder]:{id:t.U.EmberOfWonder,name:"Ember of Wonder",description:"Rapidly defeating multiple targets with Solar ignitions generates an Orb of Power.",type:e.O.Solar,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276350},[t.U.EmberOfSearing]:{id:t.U.EmberOfSearing,name:"Ember of Searing",description:"Defeating scorched targets grants melee energy and creates a Firesprite.",type:e.O.Solar,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276351},[t.U.EmberOfTorches]:{id:t.U.EmberOfTorches,name:"Ember of Torches",description:"Powered melee attacks against combatants make you and nearby allies radiant.",type:e.O.Solar,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132288},[t.U.EmberOfMercy]:{id:t.U.EmberOfMercy,name:"Ember of Mercy",description:"When you revive an ally, you and other nearby allies gain restoration.\n\nPicking up a Firesprite grants restoration.",type:e.O.Solar,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:4180586737},[t.U.SparkOfBrilliance]:{id:t.U.SparkOfBrilliance,name:"Spark of Brilliance",description:"Defeating a blinded target with precision damage creates a blinding explosion.",type:e.O.Arc,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705905},[t.U.SparkOfFeedback]:{id:t.U.SparkOfFeedback,name:"Spark of Feedback",description:"Taking melee damage briefly increases your outgoing melee damage.",type:e.O.Arc,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705907},[t.U.SparkOfDischarge]:{id:t.U.SparkOfDischarge,name:"Spark of Discharge",description:"Arc weapon final blows have a chance to create an Ionic Trace.",type:e.O.Arc,bonus:[{stat:n.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069362},[t.U.SparkOfFocus]:{id:t.U.SparkOfFocus,name:"Spark of Focus",description:"After sprinting for a short time, your class ability regeneration is increased.",type:e.O.Arc,bonus:[{stat:n.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069360},[t.U.SparkOfVolts]:{id:t.U.SparkOfVolts,name:"Spark of Volts",description:"Finishers make you amplified.",type:e.O.Arc,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705904},[t.U.SparkOfResistance]:{id:t.U.SparkOfResistance,name:"Spark of Resistance",description:"While surrounded by combatants, you are more resistant to incoming damage.",type:e.O.Arc,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1727069366},[t.U.SparkOfShock]:{id:t.U.SparkOfShock,name:"Spark of Shock",description:"Your Arc grenades jolt targets.",type:e.O.Arc,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069364},[t.U.ThreadOfFury]:{id:t.U.ThreadOfFury,name:"Thread of Fury",description:"Damaging targets with a Tangle grants melee energy.",type:e.O.Strand,bonus:[{stat:n.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512219},[t.U.ThreadOfAscent]:{id:t.U.ThreadOfAscent,name:"Thread of Ascent",description:"Activating your grenade ability reloads your equipped weapon and grants bonus airborne effectiveness and handling for a short duration.",type:e.O.Strand,bonus:[{stat:n.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512216},[t.U.ThreadOfFinality]:{id:t.U.ThreadOfFinality,name:"Thread of Finality",description:"Finisher final blows create Threadlings.",type:e.O.Strand,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512217},[t.U.ThreadOfWarding]:{id:t.U.ThreadOfWarding,name:"Thread of Warding",description:"Picking up an Orb of Power grants Woven Mail.",type:e.O.Strand,bonus:[{stat:n.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512222},[t.U.ThreadOfTransmutation]:{id:t.U.ThreadOfTransmutation,name:"Thread of Transmutation",description:"While you have Woven Mail, weapon final blows create a Tangle.",type:e.O.Strand,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512221},[t.U.ThreadOfEvolution]:{id:t.U.ThreadOfEvolution,name:"Thread of Evolution",description:"Threadlings travel farther and deal additional damage.",type:e.O.Strand,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512211},[t.U.ThreadOfBinding]:{id:t.U.ThreadOfBinding,name:"Thread of Binding",description:"Super final blows emit a suspending burst from the target.",type:e.O.Strand,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3192552688},[t.U.ThreadOfGeneration]:{id:t.U.ThreadOfGeneration,name:"Thread of Generation",description:"Dealing damage generates grenade energy.",type:e.O.Strand,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:3192552691},[t.U.ThreadOfPropagation]:{id:t.U.ThreadOfPropagation,name:"Thread of Propagation",description:"Powered melee final blows grant your Strand weapons Unraveling Rounds.",type:e.O.Strand,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512210},[t.U.FacetOfAwakening]:{id:t.U.FacetOfAwakening,name:"Facet of Awakening",description:"Rapid elemental final blows and Super final blows generate an elemental pickup of the matching damage type.",type:e.O.Prismatic,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:124726505},[t.U.FacetOfCourage]:{id:t.U.FacetOfCourage,name:"Facet of Courage",description:"Your Light abilities deal increased damage to targets afflicted with Darkness debuffs.",type:e.O.Prismatic,bonus:[{stat:n.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922124},[t.U.FacetOfDawn]:{id:t.U.FacetOfDawn,name:"Facet of Dawn",description:"Powered melee hits against targets make you Radiant. Powered melee final blows make both you and nearby allies Radiant.",type:e.O.Prismatic,bonus:[{stat:n.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922126},[t.U.FacetOfDefiance]:{id:t.U.FacetOfDefiance,name:"Facet of Defiance",description:"Finishers create a detonation that either jolts, scorches, slows, severs, or makes targets volatile based on the damage type of your equipped Super.",type:e.O.Prismatic,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:74393640},[t.U.FacetOfDevotion]:{id:t.U.FacetOfDevotion,name:"Facet of Devotion",description:"Defeating targets afflicted with a Darkness debuff grants bonus Light Transcendence energy.",type:e.O.Prismatic,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922125},[t.U.FacetOfDominance]:{id:t.U.FacetOfDominance,name:"Facet of Dominance",description:"Your Void grenades weaken targets, and your Arc grenades jolt targets.",type:e.O.Prismatic,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726504},[t.U.FacetOfGrace]:{id:t.U.FacetOfGrace,name:"Facet of Grace",description:"Defeating targets with Kinetic weapons grants you bonus Transcendence energy. Defeating targets with your Super grants you and nearby allies bonus Transcendence energy.",type:e.O.Prismatic,bonus:[{stat:n.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922121},[t.U.FacetOfHonor]:{id:t.U.FacetOfHonor,name:"Facet of Honor",description:"Collecting an elemental pickup or destroying a Tangle grants Transcendence energy of the same type.",type:e.O.Prismatic,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:124726501},[t.U.FacetOfJustice]:{id:t.U.FacetOfJustice,name:"Facet of Justice",description:"While Transcendent, your ability final blows explode.",type:e.O.Prismatic,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922115},[t.U.FacetOfProtection]:{id:t.U.FacetOfProtection,name:"Facet of Protection",description:"While surrounded by enemies, you are more resistant to incoming damage.",type:e.O.Prismatic,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922120},[t.U.FacetOfPurpose]:{id:t.U.FacetOfPurpose,name:"Facet of Purpose",description:"Picking up an Orb of Power grants either Amplified, Restoration, Frost Armor, Woven Mail, or Overshield, based on the damage type of your equipped super.",type:e.O.Prismatic,bonus:[{stat:n.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726498},[t.U.FacetOfRuin]:{id:t.U.FacetOfRuin,name:"Facet of Ruin",description:"Increases the size and damage of the burst when you shatter a Stasis crystal or frozen target and increases the area of effect of Solar ignitions.",type:e.O.Prismatic,bonus:[{stat:n.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:124726499},[t.U.FacetOfSacrifice]:{id:t.U.FacetOfSacrifice,name:"Facet of Sacrifice",description:"While you have a Light buff, ability final blows grant bonus Darkness Transcendence energy.",type:e.O.Prismatic,bonus:[{stat:n.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:124726502}}},3244:(P,c,O)=>{O.d(c,{dM:()=>n});const n=-2},6471:(P,c,O)=>{O.d(c,{y:()=>t});var t=(()=>{return(e=t||(t={}))[e.ArmorSlotNone=0]="ArmorSlotNone",e[e.ArmorSlotHelmet=1]="ArmorSlotHelmet",e[e.ArmorSlotGauntlet=2]="ArmorSlotGauntlet",e[e.ArmorSlotChest=3]="ArmorSlotChest",e[e.ArmorSlotLegs=4]="ArmorSlotLegs",e[e.ArmorSlotClass=5]="ArmorSlotClass",t;var e})()},1043:(P,c,O)=>{O.d(c,{AR:()=>L,K9:()=>H,Pn:()=>i,WB:()=>n}),O(8333);var e=(()=>{return(s=e||(e={}))[s.NONE=0]="NONE",s[s.MINOR_MOBILITY=1]="MINOR_MOBILITY",s[s.MAJOR_MOBILITY=2]="MAJOR_MOBILITY",s[s.ARTIFICE_MOBILITY=3]="ARTIFICE_MOBILITY",s[s.MINOR_RESILIENCE=4]="MINOR_RESILIENCE",s[s.MAJOR_RESILIENCE=5]="MAJOR_RESILIENCE",s[s.ARTIFICE_RESILIENCE=6]="ARTIFICE_RESILIENCE",s[s.MINOR_RECOVERY=7]="MINOR_RECOVERY",s[s.MAJOR_RECOVERY=8]="MAJOR_RECOVERY",s[s.ARTIFICE_RECOVERY=9]="ARTIFICE_RECOVERY",s[s.MINOR_DISCIPLINE=10]="MINOR_DISCIPLINE",s[s.MAJOR_DISCIPLINE=11]="MAJOR_DISCIPLINE",s[s.ARTIFICE_DISCIPLINE=12]="ARTIFICE_DISCIPLINE",s[s.MINOR_INTELLECT=13]="MINOR_INTELLECT",s[s.MAJOR_INTELLECT=14]="MAJOR_INTELLECT",s[s.ARTIFICE_INTELLECT=15]="ARTIFICE_INTELLECT",s[s.MINOR_STRENGTH=16]="MINOR_STRENGTH",s[s.MAJOR_STRENGTH=17]="MAJOR_STRENGTH",s[s.ARTIFICE_STRENGTH=18]="ARTIFICE_STRENGTH",e;var s})(),n=(()=>{return(s=n||(n={}))[s.Mobility=0]="Mobility",s[s.Resilience=1]="Resilience",s[s.Recovery=2]="Recovery",s[s.Discipline=3]="Discipline",s[s.Intellect=4]="Intellect",s[s.Strength=5]="Strength",n;var s})();const H={[e.NONE]:[n.Strength,0,0,0],[e.MINOR_MOBILITY]:[n.Mobility,5,1,1703647492],[e.MAJOR_MOBILITY]:[n.Mobility,10,3,4183296050],[e.ARTIFICE_MOBILITY]:[n.Mobility,3,0,2322202118],[e.MINOR_RESILIENCE]:[n.Resilience,5,2,2532323436],[e.MAJOR_RESILIENCE]:[n.Resilience,10,4,1180408010],[e.ARTIFICE_RESILIENCE]:[n.Resilience,3,0,199176566],[e.MINOR_RECOVERY]:[n.Recovery,5,2,1237786518],[e.MAJOR_RECOVERY]:[n.Recovery,10,4,4204488676],[e.ARTIFICE_RECOVERY]:[n.Recovery,3,0,539459624],[e.MINOR_DISCIPLINE]:[n.Discipline,5,1,4021790309],[e.MAJOR_DISCIPLINE]:[n.Discipline,10,3,1435557120],[e.ARTIFICE_DISCIPLINE]:[n.Discipline,3,0,617569843],[e.MINOR_INTELLECT]:[n.Intellect,5,2,350061697],[e.MAJOR_INTELLECT]:[n.Intellect,10,4,2724608735],[e.ARTIFICE_INTELLECT]:[n.Intellect,3,0,3160845295],[e.MINOR_STRENGTH]:[n.Strength,5,1,2639422088],[e.MAJOR_STRENGTH]:[n.Strength,10,3,4287799666],[e.ARTIFICE_STRENGTH]:[n.Strength,3,0,2507624050]};var L=(()=>{return(s=L||(L={}))[s.ClassAbilityRegenerationStat=10]="ClassAbilityRegenerationStat",L;var s})(),i=(()=>{return(s=i||(i={}))[s.None=0]="None",s[s.SlotCrotasEnd=2]="SlotCrotasEnd",s[s.SlotRootOfNightmares=3]="SlotRootOfNightmares",s[s.SlotKingsFall=4]="SlotKingsFall",s[s.SlotVowOfTheDisciple=5]="SlotVowOfTheDisciple",s[s.SlotVaultOfGlass=6]="SlotVaultOfGlass",s[s.SlotDeepStoneCrypt=7]="SlotDeepStoneCrypt",s[s.SlotGardenOfSalvation=8]="SlotGardenOfSalvation",s[s.SlotLastWish=9]="SlotLastWish",s[s.SlotArtifice=10]="SlotArtifice",s[s.PerkIronBanner=11]="PerkIronBanner",s[s.SlotNightmare=12]="SlotNightmare",s[s.GuardianGamesClassItem=18]="GuardianGamesClassItem",s[s.PerkEchoesOfGlory=20]="PerkEchoesOfGlory",s[s.SlotSalvationsEdge=21]="SlotSalvationsEdge",s[s.COUNT=22]="COUNT",i;var s})()},1650:(P,c,O)=>{O.d(c,{w:()=>t});var t=(()=>{return(e=t||(t={}))[e.None=0]="None",e[e.ReduceUsedModSockets=1]="ReduceUsedModSockets",e[e.ReduceUsedModPoints=2]="ReduceUsedModPoints",t;var e})()},7580:(P,c,O)=>{O.d(c,{U:()=>t});var t=(()=>{return(e=t||(t={}))[e.WhisperOfDurance=1e3]="WhisperOfDurance",e[e.WhisperOfChains=1001]="WhisperOfChains",e[e.WhisperOfConduction=1002]="WhisperOfConduction",e[e.WhisperOfBonds=1101]="WhisperOfBonds",e[e.WhisperOfHunger=1102]="WhisperOfHunger",e[e.WhisperOfFractures=1103]="WhisperOfFractures",e[e.WhisperOfTorment=1104]="WhisperOfTorment",e[e.EchoOfExpulsion=1200]="EchoOfExpulsion",e[e.EchoOfProvision=1201]="EchoOfProvision",e[e.EchoOfPersistence=1202]="EchoOfPersistence",e[e.EchoOfLeeching=1203]="EchoOfLeeching",e[e.EchoOfDomineering=1204]="EchoOfDomineering",e[e.EchoOfDilation=1205]="EchoOfDilation",e[e.EchoOfUndermining=1206]="EchoOfUndermining",e[e.EchoOfInstability=1207]="EchoOfInstability",e[e.EchoOfHarvest=1208]="EchoOfHarvest",e[e.EchoOfObscurity=1209]="EchoOfObscurity",e[e.EchoOfStarvation=1210]="EchoOfStarvation",e[e.EchoOfVigilance=1211]="EchoOfVigilance",e[e.EmberOfBenelovence=1300]="EmberOfBenelovence",e[e.EmberOfBeams=1301]="EmberOfBeams",e[e.EmberOfEmpyrean=1302]="EmberOfEmpyrean",e[e.EmberOfCombustion=1303]="EmberOfCombustion",e[e.EmberOfChar=1304]="EmberOfChar",e[e.EmberOfTempering=1305]="EmberOfTempering",e[e.EmberOfEruption=1306]="EmberOfEruption",e[e.EmberOfWonder=1307]="EmberOfWonder",e[e.EmberOfSearing=1308]="EmberOfSearing",e[e.EmberOfTorches=1309]="EmberOfTorches",e[e.EmberOfMercy=1310]="EmberOfMercy",e[e.SparkOfBrilliance=1400]="SparkOfBrilliance",e[e.SparkOfFeedback=1401]="SparkOfFeedback",e[e.SparkOfDischarge=1402]="SparkOfDischarge",e[e.SparkOfFocus=1403]="SparkOfFocus",e[e.SparkOfVolts=1404]="SparkOfVolts",e[e.SparkOfResistance=1405]="SparkOfResistance",e[e.SparkOfShock=1406]="SparkOfShock",e[e.ThreadOfFury=1600]="ThreadOfFury",e[e.ThreadOfAscent=1601]="ThreadOfAscent",e[e.ThreadOfFinality=1602]="ThreadOfFinality",e[e.ThreadOfWarding=1603]="ThreadOfWarding",e[e.ThreadOfTransmutation=1604]="ThreadOfTransmutation",e[e.ThreadOfEvolution=1605]="ThreadOfEvolution",e[e.ThreadOfBinding=1606]="ThreadOfBinding",e[e.ThreadOfGeneration=1607]="ThreadOfGeneration",e[e.ThreadOfPropagation=1608]="ThreadOfPropagation",e[e.WhisperOfImpetus=537774543]="WhisperOfImpetus",e[e.FacetOfAwakening=1700]="FacetOfAwakening",e[e.FacetOfCourage=1701]="FacetOfCourage",e[e.FacetOfDawn=1702]="FacetOfDawn",e[e.FacetOfDefiance=1703]="FacetOfDefiance",e[e.FacetOfDevotion=1704]="FacetOfDevotion",e[e.FacetOfDominance=1705]="FacetOfDominance",e[e.FacetOfGrace=1706]="FacetOfGrace",e[e.FacetOfHonor=1707]="FacetOfHonor",e[e.FacetOfJustice=1708]="FacetOfJustice",e[e.FacetOfProtection=1709]="FacetOfProtection",e[e.FacetOfPurpose=1710]="FacetOfPurpose",e[e.FacetOfRuin=1711]="FacetOfRuin",e[e.FacetOfSacrifice=1712]="FacetOfSacrifice",t;var e})()},8333:(P,c,O)=>{O.d(c,{O:()=>t});var t=(()=>{return(e=t||(t={}))[e.CombatStyleMod=0]="CombatStyleMod",e[e.Stasis=1]="Stasis",e[e.Void=2]="Void",e[e.Solar=3]="Solar",e[e.Arc=4]="Arc",e[e.Strand=5]="Strand",e[e.Prismatic=6]="Prismatic",t;var e})()},2340:(P,c,O)=>{O.d(c,{N:()=>t});const t={version:"2.6.3",revision:"691b00b",production:!0,beta:!1,canary:!1,apiKey:"9415df8eff46408aa9c0d51e4d69b94f",clientId:"37252",client_secret:"KnVcJPWr7C5y0loOfBoKSyQ-vWXR0JICrgb1aJLsLgg",offlineMode:!1,featureFlags:{enableModslotLimitation:!0,enableZeroWaste:!0,enableGuardianGamesFeatures:!1}}},5861:(P,c,O)=>{function t(n,H,X,x,Z,L,i){try{var j=n[L](i),J=j.value}catch(te){return void X(te)}j.done?H(J):Promise.resolve(J).then(x,Z)}function e(n){return function(){var H=this,X=arguments;return new Promise(function(x,Z){var L=n.apply(H,X);function i(J){t(L,x,Z,i,j,"next",J)}function j(J){t(L,x,Z,i,j,"throw",J)}i(void 0)})}}O.d(c,{Z:()=>e})}},ce={};function N(P){var c=ce[P];if(void 0!==c)return c.exports;var O=ce[P]={exports:{}};return de[P](O,O.exports,N),O.exports}N.d=(P,c)=>{for(var O in c)N.o(c,O)&&!N.o(P,O)&&Object.defineProperty(P,O,{enumerable:!0,get:c[O]})},N.o=(P,c)=>Object.prototype.hasOwnProperty.call(P,c),(()=>{var P=N(5861),c=N(6471),O=N(3244),t=N(443),e=N(1043),n=N(2340);const H={1:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,1,2,31]],2:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,0,2,32]],3:[[1,0,0,3],[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,2,2,33]],4:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,1,2,34]],5:[[0,1,0,5],[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,0,2,35],[0,3,2,35]],6:[[2,0,0,6],[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,2,2,36],[2,0,3,36],[2,2,3,46]],7:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,1,2,37],[4,1,3,47]],8:[[1,1,0,8],[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38]],9:[[3,0,0,9],[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,2,2,39],[3,0,3,39],[3,2,3,49]],10:[[0,2,0,10],[0,0,1,10],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,1,2,40],[0,2,3,40],[5,1,3,50]],11:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41]],12:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,2,2,42],[4,0,3,42],[4,2,3,52]],13:[[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43]],14:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,2,2,45],[5,0,3,45],[5,2,3,55]],16:[[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46]],17:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],18:[[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],19:[[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[5,1,4,60]],21:[[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],22:[[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43]],24:[[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],27:[[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43],[1,0,5,53]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],38:[[1,3,2,38],[1,1,3,38],[1,1,4,48]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],41:[[2,3,2,41],[2,1,3,41],[2,1,4,51]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],43:[[1,2,3,43],[1,0,4,43],[1,0,5,53]],44:[[3,3,2,44],[3,1,3,44],[3,1,4,54]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],46:[[2,2,3,46],[2,0,4,46],[2,0,5,56]],47:[[4,3,2,47],[4,1,3,47],[4,1,4,57]],48:[[1,1,4,48]],49:[[3,2,3,49],[3,0,4,49],[3,0,5,59]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],51:[[2,1,4,51]],52:[[4,2,3,52],[4,0,4,52],[4,0,5,62]],53:[[1,0,5,53]],54:[[3,1,4,54]],55:[[5,2,3,55],[5,0,4,55],[5,0,5,65]],56:[[2,0,5,56]],57:[[4,1,4,57]],58:[],59:[[3,0,5,59]],60:[[5,1,4,60]],61:[],62:[[4,0,5,62]],63:[],64:[],65:[[5,0,5,65]]},X={1:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],2:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],3:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],4:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],5:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],6:[[2,0,0,6],[1,1,0,8],[0,2,0,10],[0,0,1,10]],7:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],8:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],9:[[3,0,0,9],[0,2,0,10],[0,0,1,10],[2,1,0,11]],10:[[0,2,0,10],[0,0,1,10],[2,1,0,11],[4,0,0,12]],11:[[2,1,0,11],[4,0,0,12],[1,2,0,13],[1,0,1,13],[0,3,0,15],[0,1,1,15],[0,0,2,20]],12:[[4,0,0,12],[1,2,0,13],[1,0,1,13],[3,1,0,14],[0,3,0,15],[0,1,1,15],[0,0,2,20]],13:[[1,2,0,13],[1,0,1,13],[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[0,0,2,20]],14:[[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[0,0,2,20]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[4,1,0,17],[0,0,2,20]],16:[[2,2,0,16],[2,0,1,16],[4,1,0,17],[1,3,0,18],[1,1,1,18],[0,4,0,20],[0,2,1,20],[0,0,2,20]],17:[[4,1,0,17],[1,3,0,18],[1,1,1,18],[3,2,0,19],[3,0,1,19],[0,4,0,20],[0,2,1,20],[0,0,2,20]],18:[[1,1,1,18],[1,3,0,18],[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20]],19:[[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22]],21:[[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],22:[[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],24:[[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[0,0,3,30]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[0,0,3,30]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[0,4,1,30],[0,2,2,30],[0,0,3,30]],27:[[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[0,4,1,30],[0,2,2,30],[0,0,3,30]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[0,3,2,35],[0,1,3,35],[0,0,4,40]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[0,3,2,35],[0,1,3,35],[0,0,4,40]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[0,0,4,40]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[0,0,4,40]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[0,0,4,40]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[0,2,3,40],[0,0,4,40]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[0,2,3,40],[0,0,4,40]],38:[[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42]],41:[[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[0,1,4,45],[0,0,5,50]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[0,1,4,45],[0,0,5,50]],43:[[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[0,0,5,50]],44:[[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[0,0,5,50]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[0,0,5,50]],46:[[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[1,1,4,48],[0,0,5,50]],47:[[4,3,2,47],[4,1,3,47],[1,1,4,48],[3,2,3,49],[3,0,4,49],[0,0,5,50]],48:[[1,1,4,48],[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50]],49:[[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51],[4,2,3,52],[4,0,4,52]],51:[[2,1,4,51],[4,2,3,52],[4,0,4,52],[1,0,5,53]],52:[[4,2,3,52],[4,0,4,52],[1,0,5,53],[3,1,4,54]],53:[[1,0,5,53],[3,1,4,54],[5,2,3,55],[5,0,4,55]],54:[[3,1,4,54],[5,2,3,55],[5,0,4,55],[2,0,5,56]],55:[[5,2,3,55],[5,0,4,55],[2,0,5,56],[4,1,4,57]],56:[[2,0,5,56],[4,1,4,57]],57:[[4,1,4,57],[3,0,5,59]],58:[[3,0,5,59],[5,1,4,60]],59:[[3,0,5,59],[5,1,4,60]],60:[[5,1,4,60],[4,0,5,62]],61:[[4,0,5,62]],62:[[4,0,5,62]],63:[[5,0,5,65]],64:[[5,0,5,65]],65:[[5,0,5,65]]};var x=N(1650);function L(a){return Object.prototype.hasOwnProperty.call(a,"armor")&&Object.prototype.hasOwnProperty.call(a,"usedArtifice")&&Object.prototype.hasOwnProperty.call(a,"usedMods")&&Object.prototype.hasOwnProperty.call(a,"statsWithMods")&&Object.prototype.hasOwnProperty.call(a,"classItemPerk")}function i(a,r,d,u,S,b,y){var m=a.selectedExotics[0]||0;let p=r.slice();if((!u.isExotic||!a.assumeEveryExoticIsArtifice)&&(m<=0||u.hash!=m)&&a.armorPerks[c.y.ArmorSlotHelmet].fixed&&a.armorPerks[c.y.ArmorSlotHelmet].value!=e.Pn.None&&a.armorPerks[c.y.ArmorSlotHelmet].value!=u.perk)return{valid:!1};if((!S.isExotic||!a.assumeEveryExoticIsArtifice)&&(m<=0||S.hash!=m)&&a.armorPerks[c.y.ArmorSlotGauntlet].fixed&&a.armorPerks[c.y.ArmorSlotGauntlet].value!=e.Pn.None&&a.armorPerks[c.y.ArmorSlotGauntlet].value!=S.perk)return{valid:!1};if((!b.isExotic||!a.assumeEveryExoticIsArtifice)&&(m<=0||b.hash!=m)&&a.armorPerks[c.y.ArmorSlotChest].fixed&&a.armorPerks[c.y.ArmorSlotChest].value!=e.Pn.None&&a.armorPerks[c.y.ArmorSlotChest].value!=b.perk)return{valid:!1};if((!y.isExotic||!a.assumeEveryExoticIsArtifice)&&(m<=0||y.hash!=m)&&a.armorPerks[c.y.ArmorSlotLegs].fixed&&a.armorPerks[c.y.ArmorSlotLegs].value!=e.Pn.None&&a.armorPerks[c.y.ArmorSlotLegs].value!=y.perk)return{valid:!1};if(a.armorPerks[c.y.ArmorSlotClass].fixed&&a.armorPerks[c.y.ArmorSlotClass].value!=e.Pn.None&&!d.has(a.armorPerks[c.y.ArmorSlotClass].value))return{valid:!1};p[u.perk]--,p[S.perk]--,p[b.perk]--,p[y.perk]--,m>0&&(u.hash==m?p[a.armorPerks[u.slot].value]--:S.hash==m?p[a.armorPerks[S.slot].value]--:b.hash==m?p[a.armorPerks[b.slot].value]--:y.hash==m&&p[a.armorPerks[y.slot].value]--);let W=0;for(let I=1;Ir.minimumStatTiers[o].value||!r.allowExactStats&&f[o]/10>=r.minimumStatTiers[o].value+1))return null;let q=I.filter(o=>(!o.isExotic||!r.ignoreExistingExoticArtificeSlots)&&o.perk==e.Pn.SlotArtifice||r.assumeEveryLegendaryIsArtifice&&!o.isExotic||r.assumeEveryExoticIsArtifice&&o.isExotic).length;W&&(q+=1);const w=[Math.max(0,10*r.minimumStatTiers[0].value-f[0]),Math.max(0,10*r.minimumStatTiers[1].value-f[1]),Math.max(0,10*r.minimumStatTiers[2].value-f[2]),Math.max(0,10*r.minimumStatTiers[3].value-f[3]),Math.max(0,10*r.minimumStatTiers[4].value-f[4]),Math.max(0,10*r.minimumStatTiers[5].value-f[5])];if(r.onlyShowResultsWithNoWastedStats)for(let o=0;o<6;o++){const E=10-f[o]%10;w[o]=Math.max(w[o],E<10?E:0)}const F=[0,0,0,0,0,0];if(r.tryLimitWastedStats)for(let o=0;o<6;o++)0==w[o]&&!r.minimumStatTiers[o].fixed&&f[o]<100&&f[o]%10>0&&(F[o]=10-f[o]%10);const K=F.reduce((o,E)=>o+E,0),G=w[0]+w[1]+w[2]+w[3]+w[4]+w[5];if(G>50+3*q)return null;let l;if(l=0==G&&0==K?[]:ae(r,w,F,q,m,r.modOptimizationStrategy),null==l)return null;const h=[Math.max(0,100-f[0]),Math.max(0,100-f[1]),Math.max(0,100-f[2]),Math.max(0,100-f[3]),Math.max(0,100-f[4]),Math.max(0,100-f[5])];let g=[],C=[];for(let o=0;o<4;o++)for(let E=o+1;E<5;E++)for(let R=E+1;R<6;R++){let _=w.slice();if(_[o]=h[o],_[E]=h[E],_[R]=h[R],_[0]+_[1]+_[2]+_[3]+_[4]+_[5]<=65){g.push([o,E,R]);for(let M=R+1;M<6;M++){let V=_.slice();V[M]=h[M],V[0]+V[1]+V[2]+V[3]+V[4]+V[5]<=65&&C.push([o,E,R,M])}}}if(g.length>0){for(let o of g){const E=w.slice();for(let _ of o)E[_]=h[_];null!=ae(r,E,[0,0,0,0,0,0],q,m,x.w.None)&&a.statCombo3x100.add((1<=r.minimumStatTiers[o].value&&R>a.maximumPossibleTiers[o]/10&&!(f[o]>=10*R);R--){const _=10-f[o]%10;if(w[o]=Math.max(_<10?_:0,10*R-f[o]),null!=ae(r,w,[0,0,0,0,0,0],q,m,x.w.None)){a.maximumPossibleTiers[o]=10*R;break}}w[o]=E}if(p)return[];const A=l.filter(o=>o%3==0),B=l.filter(o=>o%3!=0);for(let o of l)f[Math.floor((o-1)/3)]+=e.K9[o][1];const D=function pe(a){return(a[e.WB.Mobility]>100?a[e.WB.Mobility]-100:a[e.WB.Mobility]%10)+(a[e.WB.Resilience]>100?a[e.WB.Resilience]-100:a[e.WB.Resilience]%10)+(a[e.WB.Recovery]>100?a[e.WB.Recovery]-100:a[e.WB.Recovery]%10)+(a[e.WB.Discipline]>100?a[e.WB.Discipline]-100:a[e.WB.Discipline]%10)+(a[e.WB.Intellect]>100?a[e.WB.Intellect]-100:a[e.WB.Intellect]%10)+(a[e.WB.Strength]>100?a[e.WB.Strength]-100:a[e.WB.Strength]%10)}(f);return r.onlyShowResultsWithNoWastedStats&&D>0?null:function Z(a,r,d,u,S,b,y,m){return{armor:[a.id,r.id,d.id,u.id],usedArtifice:S,usedMods:b,classItemPerk:e.Pn.None,statsWithMods:y,statsWithoutMods:m}}(d,u,S,b,A,B,f,Y)}function ae(a,r,d,u,S,b=x.w.None){const y=r[0]+r[1]+r[2]+r[3]+r[4]+r[5];if(y>65)return null;const m=a.onlyShowResultsWithNoWastedStats?H:X,p=[m[r[0]]||[[0,0,0,0]],m[r[1]]||[[0,0,0,0]],m[r[2]]||[[0,0,0,0]],m[r[3]]||[[0,0,0,0]],m[r[4]]||[[0,0,0,0]],m[r[5]]||[[0,0,0,0]]];if(a.allowExactStats)for(let l=0;l<6;l++)a.minimumStatTiers[l].fixed&&r[l]>0&&(p[l]=H[r[l]]||[[0,0,0,0]],p[l]=p[l].filter(h=>h[3]-r[l]<10));for(let l=0;l0){const h=m[d[l]].filter(g=>0==g[2]&&g[3]%10>0&&(d[l]+g[3])%10g+C[1]+C[2]:b==x.w.ReduceUsedModPoints?(h,g,C)=>h+Y[C]*g[1]+q[C]*g[2]:(h,g)=>h+g[3],0)}function F(l,h=!1){const g=l.reduce((A,B,D)=>[A[0]+B[0],A[1]+B[1],A[2]+B[2],A[3]+B[3]-r[D]],[0,0,0,0]);if(w(l)>k||g[0]>u||g[1]+g[2]>I||g[3]<0)return!1;if(!h||5==U)return!0;let C=[];for(let A=0;AI)return!1;l.sort((g,C)=>C-g);for(let g=0;g0&&b!=x.w.None;e:for(let l of p[0])if(F([l]))for(let h of p[1])if(F([l,h]))for(let g of p[2])if(F([l,h,g])&&!(K&&w([l,h,g])>=k))for(let C of p[3])if(F([l,h,g,C])&&!(K&&w([l,h,g,C])>=k))for(let A of p[4])if(F([l,h,g,C,A])&&!(K&&w([l,h,g,C,A])>=k))t:for(let B of p[5]){let D=[l,h,g,C,A,B];if(!F(D,!0))continue;for(let E=0;E<6;E++)if(d[E]>0&&0==D[E][3]&&null!=T)continue t;let o=w(D);if(ov.slot==c.y.ArmorSlotHelmet).filter(v=>!u.useFotlArmor||[199733460,2545426109,3224066584].indexOf(v.hash)>-1),p=b.filter(v=>v.slot==c.y.ArmorSlotGauntlet),W=b.filter(v=>v.slot==c.y.ArmorSlotChest),T=b.filter(v=>v.slot==c.y.ArmorSlotLegs);if(d.count>1){var k=[[m,m.length],[p,p.length],[W,W.length],[T,T.length]].sort((v,z)=>z[1]-v[1])[0][0],I=Math.round(k.length/d.count),U=I*d.current,f=U+I;d.current==d.count-1&&(f=k.length),k.splice(f),k.splice(0,U)}let Y=b.filter(v=>v.slot==c.y.ArmorSlotClass),q=Y.filter(v=>v.isExotic).length,w=Y.length-q,F=new Set(Y.filter(v=>!v.isExotic).map(v=>v.perk)),K=new Set(Y.filter(v=>v.isExotic).map(v=>v.perk));w>0&&(u.assumeEveryLegendaryIsArtifice||u.assumeClassItemIsArtifice)&&F.add(e.Pn.SlotArtifice),q>0&&u.assumeEveryExoticIsArtifice&&K.add(e.Pn.SlotArtifice),console.debug("items",JSON.stringify({helmets:m.length,gauntlets:p.length,chests:W.length,legs:T.length,availableClassItemTypes:F}));const G={maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:new Set,statCombo4x100:new Set},l=function j(a){const r=[0,0,0,0,0,0];for(const u of a.enabledMods)for(const S of t.F[u].bonus)r[S.stat==e.AR.ClassAbilityRegenerationStat?[1,0,2][a.characterClass]:S.stat]+=S.value;return r}(u),h=function J(a){let r=[];for(let d=0;dd>0).sort((d,u)=>u-d)}(u),C=S.length<=1,A=F.has(e.Pn.SlotArtifice),B=K.has(e.Pn.SlotArtifice),D=u.selectedExotics.indexOf(O.dM)>-1,o=Y.sort((v,z)=>v.masterworked?-1:1).find(v=>v.isExotic)||null,E=!!o&&u.selectedExotics.indexOf(o.hash)>-1;console.log("hasArtificeClassItem",A);let R=[],_=0,Q=0,M=0,V=!1,$=function fe(a,r,d,u){let S=0;const b=a.filter(U=>U.isExotic).length,y=a.length-b,m=r.filter(U=>U.isExotic).length,p=r.length-m,W=d.filter(U=>U.isExotic).length,T=d.length-W,k=u.filter(U=>U.isExotic).length,I=u.length-k;return S+=b*p*T*I,S+=y*m*T*I,S+=y*p*W*I,S+=y*p*T*k,S+=y*p*T*I,S}(m,p,W,T),ne=0,me=0;console.log("estimatedCalculations",$);let ge=$>=1e6?125:75;console.time(`tm #${d.current}`);const he=!!o&&(o.masterworked||u.assumeExoticsMasterworked),Ee=u.assumeClassItemMasterworked||u.assumeLegendariesMasterworked;for(let[v,z,oe,re]of function*le(a,r,d,u,S,b){for(let y of a)for(let m of r)if(!(S&&y.isExotic&&m.isExotic))for(let p of d)if(!S||!y.isExotic&&!m.isExotic||!p.isExotic)for(let W of u)S&&(y.isExotic||m.isExotic||p.isExotic)&&W.isExotic||b&&!(y.isExotic||m.isExotic||p.isExotic||W.isExotic)||(yield[y,m,p,W])}(m,p,W,T,C,D)){ne++;const se=i(u,h,F,v,z,oe,re);if(!se.valid)continue;const Se=!se.requiredClassItemType||se.requiredClassItemType==e.Pn.SlotArtifice,ie=v.isExotic||z.isExotic||oe.isExotic||re.isExotic,ee=s(G,u,v,z,oe,re,l,g,V,(A||!ie&&B&&!u.ignoreExistingExoticArtificeSlots)&&Se,E,E?he:Ee||!ie&&he);null!=ee&&(M++,L(ee)&&(ee.classItemPerk=se.requiredClassItemType||(A?e.Pn.SlotArtifice:e.Pn.None),!ie&&o&&E&&ee.armor.push(o.id),R.push(ee),_++,Q++,V=V||u.limitParsedResults&&Q>=3e4/d.count||Q>=1e6/d.count)),M%5e3==0&&me+ge=5e3&&(postMessage({runtime:G,results:R,done:!1,checkedCalculations:ne,estimatedCalculations:$}),R=[],_=0)}console.timeEnd(`tm #${d.current}`),console.timeEnd(`total #${d.current}`),postMessage({runtime:G,results:R,done:!0,checkedCalculations:ne,estimatedCalculations:$,stats:{permutationCount:M,itemCount:b.length-Y.length,totalTime:Date.now()-y}})});return function(r){return a.apply(this,arguments)}}())})()})(); \ No newline at end of file +(()=>{"use strict";var de={443:(P,c,O)=>{O.d(c,{F:()=>H});var t=O(7580),e=O(8333),n=O(1043);const H={[t.U.WhisperOfDurance]:{id:t.U.WhisperOfDurance,name:"Whisper of Durance",description:"Slow that you apply to targets lasts longer. For those abilities that linger, their duration will also increase.",type:e.O.Stasis,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:3469412969},[t.U.WhisperOfChains]:{id:t.U.WhisperOfChains,name:"Whisper of Chains",description:"While you are near frozen targets or a friendly Stasis crystal, you take reduced damage from targets.",type:e.O.Stasis,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:537774540},[t.U.WhisperOfConduction]:{id:t.U.WhisperOfConduction,name:"Whisper of Conduction",description:"Nearby Stasis shards track to your position.",type:e.O.Stasis,bonus:[{stat:n.WB.Intellect,value:10},{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2483898429},[t.U.WhisperOfBonds]:{id:t.U.WhisperOfBonds,name:"Whisper of Bonds",description:"Defeating frozen targets generates an Orb of Power.",type:e.O.Stasis,bonus:[{stat:n.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:3469412974},[t.U.WhisperOfHunger]:{id:t.U.WhisperOfHunger,name:"Whisper of Hunger",description:"Increases the melee energy gained from picking up Stasis shards.",type:e.O.Stasis,bonus:[{stat:n.WB.Strength,value:-20}],cost:1,requiredArmorAffinity:0,hash:2483898431},[t.U.WhisperOfFractures]:{id:t.U.WhisperOfFractures,name:"Whisper of Fractures",description:"Your melee energy recharges faster when you are near two or more targets.",type:e.O.Stasis,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774542},[t.U.WhisperOfImpetus]:{id:t.U.WhisperOfImpetus,name:"Whisper of Impetus",description:"Damaging targets with a Stasis melee reloads your stowed weapons and grants you a temporary boost to weapon ready speed.",type:e.O.Stasis,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:537774543},[t.U.WhisperOfTorment]:{id:t.U.WhisperOfTorment,name:"Whisper of Torment",description:"You gain grenade energy each time you take damage from targets. Having Frost Armor increases the amount of energy gained.",type:e.O.Stasis,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774541},[t.U.EchoOfExpulsion]:{id:t.U.EchoOfExpulsion,name:"Echo of Expulsion",description:"Void ability final blows cause targets to explode.",type:e.O.Void,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984665},[t.U.EchoOfProvision]:{id:t.U.EchoOfProvision,name:"Echo of Provision",description:"Damaging targets with grenades grants melee energy.",type:e.O.Void,bonus:[{stat:n.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984664},[t.U.EchoOfPersistence]:{id:t.U.EchoOfPersistence,name:"Echo of Persistence",description:"Void buffs applied to you (Invisibility, Overshield, and Devour) have increased duration.",type:e.O.Void,bonus:[{stat:n.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984671},[t.U.EchoOfLeeching]:{id:t.U.EchoOfLeeching,name:"Echo of Leeching",description:"Melee final blows start health regeneration for you and nearby allies.",type:e.O.Void,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984670},[t.U.EchoOfDomineering]:{id:t.U.EchoOfDomineering,name:"Echo of Domineering",description:"After suppressing a target, you gain greatly increased mobility for a short duration, and your equipped weapon is reloaded from reserves.\n\nDefeating suppressed targets creates a Void Breach.",type:e.O.Void,bonus:[{stat:n.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984657},[t.U.EchoOfDilation]:{id:t.U.EchoOfDilation,name:"Echo of Dilation",description:"While crouched, you sneak faster and gain enhanced radar resolution.",type:e.O.Void,bonus:[{stat:n.WB.Mobility,value:10},{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984656},[t.U.EchoOfUndermining]:{id:t.U.EchoOfUndermining,name:"Echo of Undermining",description:"Your Void grenades weaken targets.",type:e.O.Void,bonus:[{stat:n.WB.Discipline,value:-20}],cost:1,requiredArmorAffinity:0,hash:2272984668},[t.U.EchoOfInstability]:{id:t.U.EchoOfInstability,name:"Echo of Instability",description:"Defeating targets with grenades grants Volatile Rounds to your Void weapons.",type:e.O.Void,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180600},[t.U.EchoOfHarvest]:{id:t.U.EchoOfHarvest,name:"Echo of Harvest",description:"Defeating weakened targets creates an Orb of Power and a Void Breach.",type:e.O.Void,bonus:[{stat:n.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180601},[t.U.EchoOfObscurity]:{id:t.U.EchoOfObscurity,name:"Echo of Obscurity",description:"Finisher final blows grant Invisibility.",type:e.O.Void,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180602},[t.U.EchoOfStarvation]:{id:t.U.EchoOfStarvation,name:"Echo of Starvation",description:"Picking up a Void Breach or an Orb of Power grants Devour.",type:e.O.Void,bonus:[{stat:n.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180603},[t.U.EchoOfVigilance]:{id:t.U.EchoOfVigilance,name:"Echo of Vigilance",description:"Defeating a target while your shields are depleted grants you a temporary Void overshield.",type:e.O.Void,bonus:[{stat:n.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:3854948621},[t.U.EmberOfBenelovence]:{id:t.U.EmberOfBenelovence,name:"Ember of Benevolence",description:"Applying restoration, cure, or radiant to allies grants increased grenade, melee, and class ability regeneration for a short duration.",type:e.O.Solar,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132292},[t.U.EmberOfBeams]:{id:t.U.EmberOfBeams,name:"Ember of Beams",description:"Your Solar Super projectiles have stronger target acquisition.",type:e.O.Solar,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:362132295},[t.U.EmberOfEmpyrean]:{id:t.U.EmberOfEmpyrean,name:"Ember of Empyrean",description:"Solar weapon or ability final blows extend the duration of restoration and radiant effects applied to you.",type:e.O.Solar,bonus:[{stat:n.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132294},[t.U.EmberOfCombustion]:{id:t.U.EmberOfCombustion,name:"Ember of Combustion",description:"Final blows with a Solar Super causes targets to ignite and creates a Firesprite.",type:e.O.Solar,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:362132289},[t.U.EmberOfChar]:{id:t.U.EmberOfChar,name:"Ember of Char",description:"Your Solar ignitions spread scorch to affected targets.",type:e.O.Solar,bonus:[{stat:n.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:362132291},[t.U.EmberOfTempering]:{id:t.U.EmberOfTempering,name:"Ember of Tempering",description:"Solar weapon final blows grant you and your allies increased recovery for a short duration. Stacks 3 times.\n\nWhile Ember of Tempering is active, your weapons have increased airborne effectiveness, and your Solar weapon final blows create a Firesprite.",type:e.O.Solar,bonus:[{stat:n.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132290},[t.U.EmberOfEruption]:{id:t.U.EmberOfEruption,name:"Ember of Eruption",description:"Your Solar ignitions have increased area of effect.",type:e.O.Solar,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276348},[t.U.EmberOfWonder]:{id:t.U.EmberOfWonder,name:"Ember of Wonder",description:"Rapidly defeating multiple targets with Solar ignitions generates an Orb of Power.",type:e.O.Solar,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276350},[t.U.EmberOfSearing]:{id:t.U.EmberOfSearing,name:"Ember of Searing",description:"Defeating scorched targets grants melee energy and creates a Firesprite.",type:e.O.Solar,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276351},[t.U.EmberOfTorches]:{id:t.U.EmberOfTorches,name:"Ember of Torches",description:"Powered melee attacks against combatants make you and nearby allies radiant.",type:e.O.Solar,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132288},[t.U.EmberOfMercy]:{id:t.U.EmberOfMercy,name:"Ember of Mercy",description:"When you revive an ally, you and other nearby allies gain restoration.\n\nPicking up a Firesprite grants restoration.",type:e.O.Solar,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:4180586737},[t.U.SparkOfBrilliance]:{id:t.U.SparkOfBrilliance,name:"Spark of Brilliance",description:"Defeating a blinded target with precision damage creates a blinding explosion.",type:e.O.Arc,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705905},[t.U.SparkOfFeedback]:{id:t.U.SparkOfFeedback,name:"Spark of Feedback",description:"Taking melee damage briefly increases your outgoing melee damage.",type:e.O.Arc,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705907},[t.U.SparkOfDischarge]:{id:t.U.SparkOfDischarge,name:"Spark of Discharge",description:"Arc weapon final blows have a chance to create an Ionic Trace.",type:e.O.Arc,bonus:[{stat:n.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069362},[t.U.SparkOfFocus]:{id:t.U.SparkOfFocus,name:"Spark of Focus",description:"After sprinting for a short time, your class ability regeneration is increased.",type:e.O.Arc,bonus:[{stat:n.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069360},[t.U.SparkOfVolts]:{id:t.U.SparkOfVolts,name:"Spark of Volts",description:"Finishers make you amplified.",type:e.O.Arc,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705904},[t.U.SparkOfResistance]:{id:t.U.SparkOfResistance,name:"Spark of Resistance",description:"While surrounded by combatants, you are more resistant to incoming damage.",type:e.O.Arc,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1727069366},[t.U.SparkOfShock]:{id:t.U.SparkOfShock,name:"Spark of Shock",description:"Your Arc grenades jolt targets.",type:e.O.Arc,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069364},[t.U.ThreadOfFury]:{id:t.U.ThreadOfFury,name:"Thread of Fury",description:"Damaging targets with a Tangle grants melee energy.",type:e.O.Strand,bonus:[{stat:n.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512219},[t.U.ThreadOfAscent]:{id:t.U.ThreadOfAscent,name:"Thread of Ascent",description:"Activating your grenade ability reloads your equipped weapon and grants bonus airborne effectiveness and handling for a short duration.",type:e.O.Strand,bonus:[{stat:n.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512216},[t.U.ThreadOfFinality]:{id:t.U.ThreadOfFinality,name:"Thread of Finality",description:"Finisher final blows create Threadlings.",type:e.O.Strand,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512217},[t.U.ThreadOfWarding]:{id:t.U.ThreadOfWarding,name:"Thread of Warding",description:"Picking up an Orb of Power grants Woven Mail.",type:e.O.Strand,bonus:[{stat:n.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512222},[t.U.ThreadOfTransmutation]:{id:t.U.ThreadOfTransmutation,name:"Thread of Transmutation",description:"While you have Woven Mail, weapon final blows create a Tangle.",type:e.O.Strand,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512221},[t.U.ThreadOfEvolution]:{id:t.U.ThreadOfEvolution,name:"Thread of Evolution",description:"Threadlings travel farther and deal additional damage.",type:e.O.Strand,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512211},[t.U.ThreadOfBinding]:{id:t.U.ThreadOfBinding,name:"Thread of Binding",description:"Super final blows emit a suspending burst from the target.",type:e.O.Strand,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3192552688},[t.U.ThreadOfGeneration]:{id:t.U.ThreadOfGeneration,name:"Thread of Generation",description:"Dealing damage generates grenade energy.",type:e.O.Strand,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:3192552691},[t.U.ThreadOfPropagation]:{id:t.U.ThreadOfPropagation,name:"Thread of Propagation",description:"Powered melee final blows grant your Strand weapons Unraveling Rounds.",type:e.O.Strand,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512210},[t.U.FacetOfAwakening]:{id:t.U.FacetOfAwakening,name:"Facet of Awakening",description:"Rapid elemental final blows and Super final blows generate an elemental pickup of the matching damage type.",type:e.O.Prismatic,bonus:[{stat:n.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:124726505},[t.U.FacetOfCourage]:{id:t.U.FacetOfCourage,name:"Facet of Courage",description:"Your Light abilities deal increased damage to targets afflicted with Darkness debuffs.",type:e.O.Prismatic,bonus:[{stat:n.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922124},[t.U.FacetOfDawn]:{id:t.U.FacetOfDawn,name:"Facet of Dawn",description:"Powered melee hits against targets make you Radiant. Powered melee final blows make both you and nearby allies Radiant.",type:e.O.Prismatic,bonus:[{stat:n.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922126},[t.U.FacetOfDefiance]:{id:t.U.FacetOfDefiance,name:"Facet of Defiance",description:"Finishers create a detonation that either jolts, scorches, slows, severs, or makes targets volatile based on the damage type of your equipped Super.",type:e.O.Prismatic,bonus:[{stat:n.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:74393640},[t.U.FacetOfDevotion]:{id:t.U.FacetOfDevotion,name:"Facet of Devotion",description:"Defeating targets afflicted with a Darkness debuff grants bonus Light Transcendence energy.",type:e.O.Prismatic,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922125},[t.U.FacetOfDominance]:{id:t.U.FacetOfDominance,name:"Facet of Dominance",description:"Your Void grenades weaken targets, and your Arc grenades jolt targets.",type:e.O.Prismatic,bonus:[{stat:n.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726504},[t.U.FacetOfGrace]:{id:t.U.FacetOfGrace,name:"Facet of Grace",description:"Defeating targets with Kinetic weapons grants you bonus Transcendence energy. Defeating targets with your Super grants you and nearby allies bonus Transcendence energy.",type:e.O.Prismatic,bonus:[{stat:n.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922121},[t.U.FacetOfHonor]:{id:t.U.FacetOfHonor,name:"Facet of Honor",description:"Collecting an elemental pickup or destroying a Tangle grants Transcendence energy of the same type.",type:e.O.Prismatic,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:124726501},[t.U.FacetOfJustice]:{id:t.U.FacetOfJustice,name:"Facet of Justice",description:"While Transcendent, your ability final blows explode.",type:e.O.Prismatic,bonus:[{stat:n.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922115},[t.U.FacetOfProtection]:{id:t.U.FacetOfProtection,name:"Facet of Protection",description:"While surrounded by enemies, you are more resistant to incoming damage.",type:e.O.Prismatic,bonus:[{stat:n.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922120},[t.U.FacetOfPurpose]:{id:t.U.FacetOfPurpose,name:"Facet of Purpose",description:"Picking up an Orb of Power grants either Amplified, Restoration, Frost Armor, Woven Mail, or Overshield, based on the damage type of your equipped super.",type:e.O.Prismatic,bonus:[{stat:n.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726498},[t.U.FacetOfRuin]:{id:t.U.FacetOfRuin,name:"Facet of Ruin",description:"Increases the size and damage of the burst when you shatter a Stasis crystal or frozen target and increases the area of effect of Solar ignitions.",type:e.O.Prismatic,bonus:[{stat:n.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:124726499},[t.U.FacetOfSacrifice]:{id:t.U.FacetOfSacrifice,name:"Facet of Sacrifice",description:"While you have a Light buff, ability final blows grant bonus Darkness Transcendence energy.",type:e.O.Prismatic,bonus:[{stat:n.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:124726502}}},3244:(P,c,O)=>{O.d(c,{dM:()=>n});const n=-2},6471:(P,c,O)=>{O.d(c,{y:()=>t});var t=(()=>{return(e=t||(t={}))[e.ArmorSlotNone=0]="ArmorSlotNone",e[e.ArmorSlotHelmet=1]="ArmorSlotHelmet",e[e.ArmorSlotGauntlet=2]="ArmorSlotGauntlet",e[e.ArmorSlotChest=3]="ArmorSlotChest",e[e.ArmorSlotLegs=4]="ArmorSlotLegs",e[e.ArmorSlotClass=5]="ArmorSlotClass",t;var e})()},1043:(P,c,O)=>{O.d(c,{AR:()=>L,K9:()=>H,Pn:()=>i,WB:()=>n}),O(8333);var e=(()=>{return(s=e||(e={}))[s.NONE=0]="NONE",s[s.MINOR_MOBILITY=1]="MINOR_MOBILITY",s[s.MAJOR_MOBILITY=2]="MAJOR_MOBILITY",s[s.ARTIFICE_MOBILITY=3]="ARTIFICE_MOBILITY",s[s.MINOR_RESILIENCE=4]="MINOR_RESILIENCE",s[s.MAJOR_RESILIENCE=5]="MAJOR_RESILIENCE",s[s.ARTIFICE_RESILIENCE=6]="ARTIFICE_RESILIENCE",s[s.MINOR_RECOVERY=7]="MINOR_RECOVERY",s[s.MAJOR_RECOVERY=8]="MAJOR_RECOVERY",s[s.ARTIFICE_RECOVERY=9]="ARTIFICE_RECOVERY",s[s.MINOR_DISCIPLINE=10]="MINOR_DISCIPLINE",s[s.MAJOR_DISCIPLINE=11]="MAJOR_DISCIPLINE",s[s.ARTIFICE_DISCIPLINE=12]="ARTIFICE_DISCIPLINE",s[s.MINOR_INTELLECT=13]="MINOR_INTELLECT",s[s.MAJOR_INTELLECT=14]="MAJOR_INTELLECT",s[s.ARTIFICE_INTELLECT=15]="ARTIFICE_INTELLECT",s[s.MINOR_STRENGTH=16]="MINOR_STRENGTH",s[s.MAJOR_STRENGTH=17]="MAJOR_STRENGTH",s[s.ARTIFICE_STRENGTH=18]="ARTIFICE_STRENGTH",e;var s})(),n=(()=>{return(s=n||(n={}))[s.Mobility=0]="Mobility",s[s.Resilience=1]="Resilience",s[s.Recovery=2]="Recovery",s[s.Discipline=3]="Discipline",s[s.Intellect=4]="Intellect",s[s.Strength=5]="Strength",n;var s})();const H={[e.NONE]:[n.Strength,0,0,0],[e.MINOR_MOBILITY]:[n.Mobility,5,1,1703647492],[e.MAJOR_MOBILITY]:[n.Mobility,10,3,4183296050],[e.ARTIFICE_MOBILITY]:[n.Mobility,3,0,2322202118],[e.MINOR_RESILIENCE]:[n.Resilience,5,2,2532323436],[e.MAJOR_RESILIENCE]:[n.Resilience,10,4,1180408010],[e.ARTIFICE_RESILIENCE]:[n.Resilience,3,0,199176566],[e.MINOR_RECOVERY]:[n.Recovery,5,2,1237786518],[e.MAJOR_RECOVERY]:[n.Recovery,10,4,4204488676],[e.ARTIFICE_RECOVERY]:[n.Recovery,3,0,539459624],[e.MINOR_DISCIPLINE]:[n.Discipline,5,1,4021790309],[e.MAJOR_DISCIPLINE]:[n.Discipline,10,3,1435557120],[e.ARTIFICE_DISCIPLINE]:[n.Discipline,3,0,617569843],[e.MINOR_INTELLECT]:[n.Intellect,5,2,350061697],[e.MAJOR_INTELLECT]:[n.Intellect,10,4,2724608735],[e.ARTIFICE_INTELLECT]:[n.Intellect,3,0,3160845295],[e.MINOR_STRENGTH]:[n.Strength,5,1,2639422088],[e.MAJOR_STRENGTH]:[n.Strength,10,3,4287799666],[e.ARTIFICE_STRENGTH]:[n.Strength,3,0,2507624050]};var L=(()=>{return(s=L||(L={}))[s.ClassAbilityRegenerationStat=10]="ClassAbilityRegenerationStat",L;var s})(),i=(()=>{return(s=i||(i={}))[s.None=0]="None",s[s.SlotCrotasEnd=2]="SlotCrotasEnd",s[s.SlotRootOfNightmares=3]="SlotRootOfNightmares",s[s.SlotKingsFall=4]="SlotKingsFall",s[s.SlotVowOfTheDisciple=5]="SlotVowOfTheDisciple",s[s.SlotVaultOfGlass=6]="SlotVaultOfGlass",s[s.SlotDeepStoneCrypt=7]="SlotDeepStoneCrypt",s[s.SlotGardenOfSalvation=8]="SlotGardenOfSalvation",s[s.SlotLastWish=9]="SlotLastWish",s[s.SlotArtifice=10]="SlotArtifice",s[s.PerkIronBanner=11]="PerkIronBanner",s[s.SlotNightmare=12]="SlotNightmare",s[s.GuardianGamesClassItem=18]="GuardianGamesClassItem",s[s.PerkEchoesOfGlory=20]="PerkEchoesOfGlory",s[s.SlotSalvationsEdge=21]="SlotSalvationsEdge",s[s.COUNT=22]="COUNT",i;var s})()},1650:(P,c,O)=>{O.d(c,{w:()=>t});var t=(()=>{return(e=t||(t={}))[e.None=0]="None",e[e.ReduceUsedModSockets=1]="ReduceUsedModSockets",e[e.ReduceUsedModPoints=2]="ReduceUsedModPoints",t;var e})()},7580:(P,c,O)=>{O.d(c,{U:()=>t});var t=(()=>{return(e=t||(t={}))[e.WhisperOfDurance=1e3]="WhisperOfDurance",e[e.WhisperOfChains=1001]="WhisperOfChains",e[e.WhisperOfConduction=1002]="WhisperOfConduction",e[e.WhisperOfBonds=1101]="WhisperOfBonds",e[e.WhisperOfHunger=1102]="WhisperOfHunger",e[e.WhisperOfFractures=1103]="WhisperOfFractures",e[e.WhisperOfTorment=1104]="WhisperOfTorment",e[e.EchoOfExpulsion=1200]="EchoOfExpulsion",e[e.EchoOfProvision=1201]="EchoOfProvision",e[e.EchoOfPersistence=1202]="EchoOfPersistence",e[e.EchoOfLeeching=1203]="EchoOfLeeching",e[e.EchoOfDomineering=1204]="EchoOfDomineering",e[e.EchoOfDilation=1205]="EchoOfDilation",e[e.EchoOfUndermining=1206]="EchoOfUndermining",e[e.EchoOfInstability=1207]="EchoOfInstability",e[e.EchoOfHarvest=1208]="EchoOfHarvest",e[e.EchoOfObscurity=1209]="EchoOfObscurity",e[e.EchoOfStarvation=1210]="EchoOfStarvation",e[e.EchoOfVigilance=1211]="EchoOfVigilance",e[e.EmberOfBenelovence=1300]="EmberOfBenelovence",e[e.EmberOfBeams=1301]="EmberOfBeams",e[e.EmberOfEmpyrean=1302]="EmberOfEmpyrean",e[e.EmberOfCombustion=1303]="EmberOfCombustion",e[e.EmberOfChar=1304]="EmberOfChar",e[e.EmberOfTempering=1305]="EmberOfTempering",e[e.EmberOfEruption=1306]="EmberOfEruption",e[e.EmberOfWonder=1307]="EmberOfWonder",e[e.EmberOfSearing=1308]="EmberOfSearing",e[e.EmberOfTorches=1309]="EmberOfTorches",e[e.EmberOfMercy=1310]="EmberOfMercy",e[e.SparkOfBrilliance=1400]="SparkOfBrilliance",e[e.SparkOfFeedback=1401]="SparkOfFeedback",e[e.SparkOfDischarge=1402]="SparkOfDischarge",e[e.SparkOfFocus=1403]="SparkOfFocus",e[e.SparkOfVolts=1404]="SparkOfVolts",e[e.SparkOfResistance=1405]="SparkOfResistance",e[e.SparkOfShock=1406]="SparkOfShock",e[e.ThreadOfFury=1600]="ThreadOfFury",e[e.ThreadOfAscent=1601]="ThreadOfAscent",e[e.ThreadOfFinality=1602]="ThreadOfFinality",e[e.ThreadOfWarding=1603]="ThreadOfWarding",e[e.ThreadOfTransmutation=1604]="ThreadOfTransmutation",e[e.ThreadOfEvolution=1605]="ThreadOfEvolution",e[e.ThreadOfBinding=1606]="ThreadOfBinding",e[e.ThreadOfGeneration=1607]="ThreadOfGeneration",e[e.ThreadOfPropagation=1608]="ThreadOfPropagation",e[e.WhisperOfImpetus=537774543]="WhisperOfImpetus",e[e.FacetOfAwakening=1700]="FacetOfAwakening",e[e.FacetOfCourage=1701]="FacetOfCourage",e[e.FacetOfDawn=1702]="FacetOfDawn",e[e.FacetOfDefiance=1703]="FacetOfDefiance",e[e.FacetOfDevotion=1704]="FacetOfDevotion",e[e.FacetOfDominance=1705]="FacetOfDominance",e[e.FacetOfGrace=1706]="FacetOfGrace",e[e.FacetOfHonor=1707]="FacetOfHonor",e[e.FacetOfJustice=1708]="FacetOfJustice",e[e.FacetOfProtection=1709]="FacetOfProtection",e[e.FacetOfPurpose=1710]="FacetOfPurpose",e[e.FacetOfRuin=1711]="FacetOfRuin",e[e.FacetOfSacrifice=1712]="FacetOfSacrifice",t;var e})()},8333:(P,c,O)=>{O.d(c,{O:()=>t});var t=(()=>{return(e=t||(t={}))[e.CombatStyleMod=0]="CombatStyleMod",e[e.Stasis=1]="Stasis",e[e.Void=2]="Void",e[e.Solar=3]="Solar",e[e.Arc=4]="Arc",e[e.Strand=5]="Strand",e[e.Prismatic=6]="Prismatic",t;var e})()},2340:(P,c,O)=>{O.d(c,{N:()=>t});const t={version:"2.6.4",revision:"f65a045",production:!0,beta:!1,canary:!1,apiKey:"9415df8eff46408aa9c0d51e4d69b94f",clientId:"37252",client_secret:"KnVcJPWr7C5y0loOfBoKSyQ-vWXR0JICrgb1aJLsLgg",offlineMode:!1,featureFlags:{enableModslotLimitation:!0,enableZeroWaste:!0,enableGuardianGamesFeatures:!1}}},5861:(P,c,O)=>{function t(n,H,X,x,Z,L,i){try{var j=n[L](i),J=j.value}catch(te){return void X(te)}j.done?H(J):Promise.resolve(J).then(x,Z)}function e(n){return function(){var H=this,X=arguments;return new Promise(function(x,Z){var L=n.apply(H,X);function i(J){t(L,x,Z,i,j,"next",J)}function j(J){t(L,x,Z,i,j,"throw",J)}i(void 0)})}}O.d(c,{Z:()=>e})}},ce={};function N(P){var c=ce[P];if(void 0!==c)return c.exports;var O=ce[P]={exports:{}};return de[P](O,O.exports,N),O.exports}N.d=(P,c)=>{for(var O in c)N.o(c,O)&&!N.o(P,O)&&Object.defineProperty(P,O,{enumerable:!0,get:c[O]})},N.o=(P,c)=>Object.prototype.hasOwnProperty.call(P,c),(()=>{var P=N(5861),c=N(6471),O=N(3244),t=N(443),e=N(1043),n=N(2340);const H={1:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,1,2,31]],2:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,0,2,32]],3:[[1,0,0,3],[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,2,2,33]],4:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,1,2,34]],5:[[0,1,0,5],[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,0,2,35],[0,3,2,35]],6:[[2,0,0,6],[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,2,2,36],[2,0,3,36],[2,2,3,46]],7:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,1,2,37],[4,1,3,47]],8:[[1,1,0,8],[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38]],9:[[3,0,0,9],[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,2,2,39],[3,0,3,39],[3,2,3,49]],10:[[0,2,0,10],[0,0,1,10],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,1,2,40],[0,2,3,40],[5,1,3,50]],11:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41]],12:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,2,2,42],[4,0,3,42],[4,2,3,52]],13:[[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43]],14:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,2,2,45],[5,0,3,45],[5,2,3,55]],16:[[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46]],17:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],18:[[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],19:[[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[5,1,4,60]],21:[[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],22:[[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43]],24:[[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],27:[[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43],[1,0,5,53]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],38:[[1,3,2,38],[1,1,3,38],[1,1,4,48]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],41:[[2,3,2,41],[2,1,3,41],[2,1,4,51]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],43:[[1,2,3,43],[1,0,4,43],[1,0,5,53]],44:[[3,3,2,44],[3,1,3,44],[3,1,4,54]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],46:[[2,2,3,46],[2,0,4,46],[2,0,5,56]],47:[[4,3,2,47],[4,1,3,47],[4,1,4,57]],48:[[1,1,4,48]],49:[[3,2,3,49],[3,0,4,49],[3,0,5,59]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],51:[[2,1,4,51]],52:[[4,2,3,52],[4,0,4,52],[4,0,5,62]],53:[[1,0,5,53]],54:[[3,1,4,54]],55:[[5,2,3,55],[5,0,4,55],[5,0,5,65]],56:[[2,0,5,56]],57:[[4,1,4,57]],58:[],59:[[3,0,5,59]],60:[[5,1,4,60]],61:[],62:[[4,0,5,62]],63:[],64:[],65:[[5,0,5,65]]},X={1:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],2:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],3:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],4:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],5:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],6:[[2,0,0,6],[1,1,0,8],[0,2,0,10],[0,0,1,10]],7:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],8:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],9:[[3,0,0,9],[0,2,0,10],[0,0,1,10],[2,1,0,11]],10:[[0,2,0,10],[0,0,1,10],[2,1,0,11],[4,0,0,12]],11:[[2,1,0,11],[4,0,0,12],[1,2,0,13],[1,0,1,13],[0,3,0,15],[0,1,1,15],[0,0,2,20]],12:[[4,0,0,12],[1,2,0,13],[1,0,1,13],[3,1,0,14],[0,3,0,15],[0,1,1,15],[0,0,2,20]],13:[[1,2,0,13],[1,0,1,13],[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[0,0,2,20]],14:[[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[0,0,2,20]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[4,1,0,17],[0,0,2,20]],16:[[2,2,0,16],[2,0,1,16],[4,1,0,17],[1,3,0,18],[1,1,1,18],[0,4,0,20],[0,2,1,20],[0,0,2,20]],17:[[4,1,0,17],[1,3,0,18],[1,1,1,18],[3,2,0,19],[3,0,1,19],[0,4,0,20],[0,2,1,20],[0,0,2,20]],18:[[1,1,1,18],[1,3,0,18],[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20]],19:[[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22]],21:[[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],22:[[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],24:[[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[0,0,3,30]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[0,0,3,30]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[0,4,1,30],[0,2,2,30],[0,0,3,30]],27:[[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[0,4,1,30],[0,2,2,30],[0,0,3,30]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[0,3,2,35],[0,1,3,35],[0,0,4,40]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[0,3,2,35],[0,1,3,35],[0,0,4,40]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[0,0,4,40]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[0,0,4,40]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[0,0,4,40]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[0,2,3,40],[0,0,4,40]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[0,2,3,40],[0,0,4,40]],38:[[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42]],41:[[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[0,1,4,45],[0,0,5,50]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[0,1,4,45],[0,0,5,50]],43:[[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[0,0,5,50]],44:[[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[0,0,5,50]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[0,0,5,50]],46:[[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[1,1,4,48],[0,0,5,50]],47:[[4,3,2,47],[4,1,3,47],[1,1,4,48],[3,2,3,49],[3,0,4,49],[0,0,5,50]],48:[[1,1,4,48],[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50]],49:[[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51],[4,2,3,52],[4,0,4,52]],51:[[2,1,4,51],[4,2,3,52],[4,0,4,52],[1,0,5,53]],52:[[4,2,3,52],[4,0,4,52],[1,0,5,53],[3,1,4,54]],53:[[1,0,5,53],[3,1,4,54],[5,2,3,55],[5,0,4,55]],54:[[3,1,4,54],[5,2,3,55],[5,0,4,55],[2,0,5,56]],55:[[5,2,3,55],[5,0,4,55],[2,0,5,56],[4,1,4,57]],56:[[2,0,5,56],[4,1,4,57]],57:[[4,1,4,57],[3,0,5,59]],58:[[3,0,5,59],[5,1,4,60]],59:[[3,0,5,59],[5,1,4,60]],60:[[5,1,4,60],[4,0,5,62]],61:[[4,0,5,62]],62:[[4,0,5,62]],63:[[5,0,5,65]],64:[[5,0,5,65]],65:[[5,0,5,65]]};var x=N(1650);function L(a){return Object.prototype.hasOwnProperty.call(a,"armor")&&Object.prototype.hasOwnProperty.call(a,"usedArtifice")&&Object.prototype.hasOwnProperty.call(a,"usedMods")&&Object.prototype.hasOwnProperty.call(a,"statsWithMods")&&Object.prototype.hasOwnProperty.call(a,"classItemPerk")}function i(a,r,d,u,S,b,y){var m=a.selectedExotics[0]||0;let p=r.slice();if((!u.isExotic||!a.assumeEveryExoticIsArtifice)&&(m<=0||u.hash!=m)&&a.armorPerks[c.y.ArmorSlotHelmet].fixed&&a.armorPerks[c.y.ArmorSlotHelmet].value!=e.Pn.None&&a.armorPerks[c.y.ArmorSlotHelmet].value!=u.perk)return{valid:!1};if((!S.isExotic||!a.assumeEveryExoticIsArtifice)&&(m<=0||S.hash!=m)&&a.armorPerks[c.y.ArmorSlotGauntlet].fixed&&a.armorPerks[c.y.ArmorSlotGauntlet].value!=e.Pn.None&&a.armorPerks[c.y.ArmorSlotGauntlet].value!=S.perk)return{valid:!1};if((!b.isExotic||!a.assumeEveryExoticIsArtifice)&&(m<=0||b.hash!=m)&&a.armorPerks[c.y.ArmorSlotChest].fixed&&a.armorPerks[c.y.ArmorSlotChest].value!=e.Pn.None&&a.armorPerks[c.y.ArmorSlotChest].value!=b.perk)return{valid:!1};if((!y.isExotic||!a.assumeEveryExoticIsArtifice)&&(m<=0||y.hash!=m)&&a.armorPerks[c.y.ArmorSlotLegs].fixed&&a.armorPerks[c.y.ArmorSlotLegs].value!=e.Pn.None&&a.armorPerks[c.y.ArmorSlotLegs].value!=y.perk)return{valid:!1};if(a.armorPerks[c.y.ArmorSlotClass].fixed&&a.armorPerks[c.y.ArmorSlotClass].value!=e.Pn.None&&!d.has(a.armorPerks[c.y.ArmorSlotClass].value))return{valid:!1};p[u.perk]--,p[S.perk]--,p[b.perk]--,p[y.perk]--,m>0&&(u.hash==m?p[a.armorPerks[u.slot].value]--:S.hash==m?p[a.armorPerks[S.slot].value]--:b.hash==m?p[a.armorPerks[b.slot].value]--:y.hash==m&&p[a.armorPerks[y.slot].value]--);let W=0;for(let I=1;Ir.minimumStatTiers[o].value||!r.allowExactStats&&f[o]/10>=r.minimumStatTiers[o].value+1))return null;let q=I.filter(o=>(!o.isExotic||!r.ignoreExistingExoticArtificeSlots)&&o.perk==e.Pn.SlotArtifice||r.assumeEveryLegendaryIsArtifice&&!o.isExotic||r.assumeEveryExoticIsArtifice&&o.isExotic).length;W&&(q+=1);const w=[Math.max(0,10*r.minimumStatTiers[0].value-f[0]),Math.max(0,10*r.minimumStatTiers[1].value-f[1]),Math.max(0,10*r.minimumStatTiers[2].value-f[2]),Math.max(0,10*r.minimumStatTiers[3].value-f[3]),Math.max(0,10*r.minimumStatTiers[4].value-f[4]),Math.max(0,10*r.minimumStatTiers[5].value-f[5])];if(r.onlyShowResultsWithNoWastedStats)for(let o=0;o<6;o++){const E=10-f[o]%10;w[o]=Math.max(w[o],E<10?E:0)}const F=[0,0,0,0,0,0];if(r.tryLimitWastedStats)for(let o=0;o<6;o++)0==w[o]&&!r.minimumStatTiers[o].fixed&&f[o]<100&&f[o]%10>0&&(F[o]=10-f[o]%10);const K=F.reduce((o,E)=>o+E,0),G=w[0]+w[1]+w[2]+w[3]+w[4]+w[5];if(G>50+3*q)return null;let l;if(l=0==G&&0==K?[]:ae(r,w,F,q,m,r.modOptimizationStrategy),null==l)return null;const h=[Math.max(0,100-f[0]),Math.max(0,100-f[1]),Math.max(0,100-f[2]),Math.max(0,100-f[3]),Math.max(0,100-f[4]),Math.max(0,100-f[5])];let g=[],C=[];for(let o=0;o<4;o++)for(let E=o+1;E<5;E++)for(let R=E+1;R<6;R++){let _=w.slice();if(_[o]=h[o],_[E]=h[E],_[R]=h[R],_[0]+_[1]+_[2]+_[3]+_[4]+_[5]<=65){g.push([o,E,R]);for(let M=R+1;M<6;M++){let V=_.slice();V[M]=h[M],V[0]+V[1]+V[2]+V[3]+V[4]+V[5]<=65&&C.push([o,E,R,M])}}}if(g.length>0){for(let o of g){const E=w.slice();for(let _ of o)E[_]=h[_];null!=ae(r,E,[0,0,0,0,0,0],q,m,x.w.None)&&a.statCombo3x100.add((1<=r.minimumStatTiers[o].value&&R>a.maximumPossibleTiers[o]/10&&!(f[o]>=10*R);R--){const _=10-f[o]%10;if(w[o]=Math.max(_<10?_:0,10*R-f[o]),null!=ae(r,w,[0,0,0,0,0,0],q,m,x.w.None)){a.maximumPossibleTiers[o]=10*R;break}}w[o]=E}if(p)return[];const A=l.filter(o=>o%3==0),B=l.filter(o=>o%3!=0);for(let o of l)f[Math.floor((o-1)/3)]+=e.K9[o][1];const D=function pe(a){return(a[e.WB.Mobility]>100?a[e.WB.Mobility]-100:a[e.WB.Mobility]%10)+(a[e.WB.Resilience]>100?a[e.WB.Resilience]-100:a[e.WB.Resilience]%10)+(a[e.WB.Recovery]>100?a[e.WB.Recovery]-100:a[e.WB.Recovery]%10)+(a[e.WB.Discipline]>100?a[e.WB.Discipline]-100:a[e.WB.Discipline]%10)+(a[e.WB.Intellect]>100?a[e.WB.Intellect]-100:a[e.WB.Intellect]%10)+(a[e.WB.Strength]>100?a[e.WB.Strength]-100:a[e.WB.Strength]%10)}(f);return r.onlyShowResultsWithNoWastedStats&&D>0?null:function Z(a,r,d,u,S,b,y,m){return{armor:[a.id,r.id,d.id,u.id],usedArtifice:S,usedMods:b,classItemPerk:e.Pn.None,statsWithMods:y,statsWithoutMods:m}}(d,u,S,b,A,B,f,Y)}function ae(a,r,d,u,S,b=x.w.None){const y=r[0]+r[1]+r[2]+r[3]+r[4]+r[5];if(y>65)return null;const m=a.onlyShowResultsWithNoWastedStats?H:X,p=[m[r[0]]||[[0,0,0,0]],m[r[1]]||[[0,0,0,0]],m[r[2]]||[[0,0,0,0]],m[r[3]]||[[0,0,0,0]],m[r[4]]||[[0,0,0,0]],m[r[5]]||[[0,0,0,0]]];if(a.allowExactStats)for(let l=0;l<6;l++)a.minimumStatTiers[l].fixed&&r[l]>0&&(p[l]=H[r[l]]||[[0,0,0,0]],p[l]=p[l].filter(h=>h[3]-r[l]<10));for(let l=0;l0){const h=m[d[l]].filter(g=>0==g[2]&&g[3]%10>0&&(d[l]+g[3])%10g+C[1]+C[2]:b==x.w.ReduceUsedModPoints?(h,g,C)=>h+Y[C]*g[1]+q[C]*g[2]:(h,g)=>h+g[3],0)}function F(l,h=!1){const g=l.reduce((A,B,D)=>[A[0]+B[0],A[1]+B[1],A[2]+B[2],A[3]+B[3]-r[D]],[0,0,0,0]);if(w(l)>k||g[0]>u||g[1]+g[2]>I||g[3]<0)return!1;if(!h||5==U)return!0;let C=[];for(let A=0;AI)return!1;l.sort((g,C)=>C-g);for(let g=0;g0&&b!=x.w.None;e:for(let l of p[0])if(F([l]))for(let h of p[1])if(F([l,h]))for(let g of p[2])if(F([l,h,g])&&!(K&&w([l,h,g])>=k))for(let C of p[3])if(F([l,h,g,C])&&!(K&&w([l,h,g,C])>=k))for(let A of p[4])if(F([l,h,g,C,A])&&!(K&&w([l,h,g,C,A])>=k))t:for(let B of p[5]){let D=[l,h,g,C,A,B];if(!F(D,!0))continue;for(let E=0;E<6;E++)if(d[E]>0&&0==D[E][3]&&null!=T)continue t;let o=w(D);if(ov.slot==c.y.ArmorSlotHelmet).filter(v=>!u.useFotlArmor||[199733460,2545426109,3224066584].indexOf(v.hash)>-1),p=b.filter(v=>v.slot==c.y.ArmorSlotGauntlet),W=b.filter(v=>v.slot==c.y.ArmorSlotChest),T=b.filter(v=>v.slot==c.y.ArmorSlotLegs);if(d.count>1){var k=[[m,m.length],[p,p.length],[W,W.length],[T,T.length]].sort((v,z)=>z[1]-v[1])[0][0],I=Math.round(k.length/d.count),U=I*d.current,f=U+I;d.current==d.count-1&&(f=k.length),k.splice(f),k.splice(0,U)}let Y=b.filter(v=>v.slot==c.y.ArmorSlotClass),q=Y.filter(v=>v.isExotic).length,w=Y.length-q,F=new Set(Y.filter(v=>!v.isExotic).map(v=>v.perk)),K=new Set(Y.filter(v=>v.isExotic).map(v=>v.perk));w>0&&(u.assumeEveryLegendaryIsArtifice||u.assumeClassItemIsArtifice)&&F.add(e.Pn.SlotArtifice),q>0&&u.assumeEveryExoticIsArtifice&&K.add(e.Pn.SlotArtifice),console.debug("items",JSON.stringify({helmets:m.length,gauntlets:p.length,chests:W.length,legs:T.length,availableClassItemTypes:F}));const G={maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:new Set,statCombo4x100:new Set},l=function j(a){const r=[0,0,0,0,0,0];for(const u of a.enabledMods)for(const S of t.F[u].bonus)r[S.stat==e.AR.ClassAbilityRegenerationStat?[1,0,2][a.characterClass]:S.stat]+=S.value;return r}(u),h=function J(a){let r=[];for(let d=0;dd>0).sort((d,u)=>u-d)}(u),C=S.length<=1,A=F.has(e.Pn.SlotArtifice),B=K.has(e.Pn.SlotArtifice),D=u.selectedExotics.indexOf(O.dM)>-1,o=Y.sort((v,z)=>v.masterworked?-1:1).find(v=>v.isExotic)||null,E=!!o&&u.selectedExotics.indexOf(o.hash)>-1;console.log("hasArtificeClassItem",A);let R=[],_=0,Q=0,M=0,V=!1,$=function fe(a,r,d,u){let S=0;const b=a.filter(U=>U.isExotic).length,y=a.length-b,m=r.filter(U=>U.isExotic).length,p=r.length-m,W=d.filter(U=>U.isExotic).length,T=d.length-W,k=u.filter(U=>U.isExotic).length,I=u.length-k;return S+=b*p*T*I,S+=y*m*T*I,S+=y*p*W*I,S+=y*p*T*k,S+=y*p*T*I,S}(m,p,W,T),ne=0,me=0;console.log("estimatedCalculations",$);let ge=$>=1e6?125:75;console.time(`tm #${d.current}`);const he=!!o&&(o.masterworked||u.assumeExoticsMasterworked),Ee=u.assumeClassItemMasterworked||u.assumeLegendariesMasterworked;for(let[v,z,oe,re]of function*le(a,r,d,u,S,b){for(let y of a)for(let m of r)if(!(S&&y.isExotic&&m.isExotic))for(let p of d)if(!S||!y.isExotic&&!m.isExotic||!p.isExotic)for(let W of u)S&&(y.isExotic||m.isExotic||p.isExotic)&&W.isExotic||b&&!(y.isExotic||m.isExotic||p.isExotic||W.isExotic)||(yield[y,m,p,W])}(m,p,W,T,C,D)){ne++;const se=i(u,h,F,v,z,oe,re);if(!se.valid)continue;const Se=!se.requiredClassItemType||se.requiredClassItemType==e.Pn.SlotArtifice,ie=v.isExotic||z.isExotic||oe.isExotic||re.isExotic,ee=s(G,u,v,z,oe,re,l,g,V,(A||!ie&&B&&!u.ignoreExistingExoticArtificeSlots)&&Se,E,E?he:Ee||!ie&&he);null!=ee&&(M++,L(ee)&&(ee.classItemPerk=se.requiredClassItemType||(A?e.Pn.SlotArtifice:e.Pn.None),!ie&&o&&E&&ee.armor.push(o.id),R.push(ee),_++,Q++,V=V||u.limitParsedResults&&Q>=3e4/d.count||Q>=1e6/d.count)),M%5e3==0&&me+ge=5e3&&(postMessage({runtime:G,results:R,done:!1,checkedCalculations:ne,estimatedCalculations:$}),R=[],_=0)}console.timeEnd(`tm #${d.current}`),console.timeEnd(`total #${d.current}`),postMessage({runtime:G,results:R,done:!0,checkedCalculations:ne,estimatedCalculations:$,stats:{permutationCount:M,itemCount:b.length-Y.length,totalTime:Date.now()-y}})});return function(r){return a.apply(this,arguments)}}())})()})(); \ No newline at end of file diff --git a/index.html b/index.html index 2b8f4f75..c7f4c60a 100644 --- a/index.html +++ b/index.html @@ -35,6 +35,6 @@ - + \ No newline at end of file diff --git a/main.4345a21c6a2bb89b.js b/main.4345a21c6a2bb89b.js deleted file mode 100644 index 137fe8ad..00000000 --- a/main.4345a21c6a2bb89b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkD2ArmorPicker=self.webpackChunkD2ArmorPicker||[]).push([[179],{443:(ht,st,_)=>{_.d(st,{F:()=>Z});var u=_(7580),t=_(8333),g=_(1043);const Z={[u.U.WhisperOfDurance]:{id:u.U.WhisperOfDurance,name:"Whisper of Durance",description:"Slow that you apply to targets lasts longer. For those abilities that linger, their duration will also increase.",type:t.O.Stasis,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:3469412969},[u.U.WhisperOfChains]:{id:u.U.WhisperOfChains,name:"Whisper of Chains",description:"While you are near frozen targets or a friendly Stasis crystal, you take reduced damage from targets.",type:t.O.Stasis,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:537774540},[u.U.WhisperOfConduction]:{id:u.U.WhisperOfConduction,name:"Whisper of Conduction",description:"Nearby Stasis shards track to your position.",type:t.O.Stasis,bonus:[{stat:g.WB.Intellect,value:10},{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2483898429},[u.U.WhisperOfBonds]:{id:u.U.WhisperOfBonds,name:"Whisper of Bonds",description:"Defeating frozen targets generates an Orb of Power.",type:t.O.Stasis,bonus:[{stat:g.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:3469412974},[u.U.WhisperOfHunger]:{id:u.U.WhisperOfHunger,name:"Whisper of Hunger",description:"Increases the melee energy gained from picking up Stasis shards.",type:t.O.Stasis,bonus:[{stat:g.WB.Strength,value:-20}],cost:1,requiredArmorAffinity:0,hash:2483898431},[u.U.WhisperOfFractures]:{id:u.U.WhisperOfFractures,name:"Whisper of Fractures",description:"Your melee energy recharges faster when you are near two or more targets.",type:t.O.Stasis,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774542},[u.U.WhisperOfImpetus]:{id:u.U.WhisperOfImpetus,name:"Whisper of Impetus",description:"Damaging targets with a Stasis melee reloads your stowed weapons and grants you a temporary boost to weapon ready speed.",type:t.O.Stasis,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:537774543},[u.U.WhisperOfTorment]:{id:u.U.WhisperOfTorment,name:"Whisper of Torment",description:"You gain grenade energy each time you take damage from targets. Having Frost Armor increases the amount of energy gained.",type:t.O.Stasis,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774541},[u.U.EchoOfExpulsion]:{id:u.U.EchoOfExpulsion,name:"Echo of Expulsion",description:"Void ability final blows cause targets to explode.",type:t.O.Void,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984665},[u.U.EchoOfProvision]:{id:u.U.EchoOfProvision,name:"Echo of Provision",description:"Damaging targets with grenades grants melee energy.",type:t.O.Void,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984664},[u.U.EchoOfPersistence]:{id:u.U.EchoOfPersistence,name:"Echo of Persistence",description:"Void buffs applied to you (Invisibility, Overshield, and Devour) have increased duration.",type:t.O.Void,bonus:[{stat:g.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984671},[u.U.EchoOfLeeching]:{id:u.U.EchoOfLeeching,name:"Echo of Leeching",description:"Melee final blows start health regeneration for you and nearby allies.",type:t.O.Void,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984670},[u.U.EchoOfDomineering]:{id:u.U.EchoOfDomineering,name:"Echo of Domineering",description:"After suppressing a target, you gain greatly increased mobility for a short duration, and your equipped weapon is reloaded from reserves.\n\nDefeating suppressed targets creates a Void Breach.",type:t.O.Void,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984657},[u.U.EchoOfDilation]:{id:u.U.EchoOfDilation,name:"Echo of Dilation",description:"While crouched, you sneak faster and gain enhanced radar resolution.",type:t.O.Void,bonus:[{stat:g.WB.Mobility,value:10},{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984656},[u.U.EchoOfUndermining]:{id:u.U.EchoOfUndermining,name:"Echo of Undermining",description:"Your Void grenades weaken targets.",type:t.O.Void,bonus:[{stat:g.WB.Discipline,value:-20}],cost:1,requiredArmorAffinity:0,hash:2272984668},[u.U.EchoOfInstability]:{id:u.U.EchoOfInstability,name:"Echo of Instability",description:"Defeating targets with grenades grants Volatile Rounds to your Void weapons.",type:t.O.Void,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180600},[u.U.EchoOfHarvest]:{id:u.U.EchoOfHarvest,name:"Echo of Harvest",description:"Defeating weakened targets creates an Orb of Power and a Void Breach.",type:t.O.Void,bonus:[{stat:g.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180601},[u.U.EchoOfObscurity]:{id:u.U.EchoOfObscurity,name:"Echo of Obscurity",description:"Finisher final blows grant Invisibility.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180602},[u.U.EchoOfStarvation]:{id:u.U.EchoOfStarvation,name:"Echo of Starvation",description:"Picking up a Void Breach or an Orb of Power grants Devour.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180603},[u.U.EchoOfVigilance]:{id:u.U.EchoOfVigilance,name:"Echo of Vigilance",description:"Defeating a target while your shields are depleted grants you a temporary Void overshield.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:3854948621},[u.U.EmberOfBenelovence]:{id:u.U.EmberOfBenelovence,name:"Ember of Benevolence",description:"Applying restoration, cure, or radiant to allies grants increased grenade, melee, and class ability regeneration for a short duration.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132292},[u.U.EmberOfBeams]:{id:u.U.EmberOfBeams,name:"Ember of Beams",description:"Your Solar Super projectiles have stronger target acquisition.",type:t.O.Solar,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:362132295},[u.U.EmberOfEmpyrean]:{id:u.U.EmberOfEmpyrean,name:"Ember of Empyrean",description:"Solar weapon or ability final blows extend the duration of restoration and radiant effects applied to you.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132294},[u.U.EmberOfCombustion]:{id:u.U.EmberOfCombustion,name:"Ember of Combustion",description:"Final blows with a Solar Super causes targets to ignite and creates a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:362132289},[u.U.EmberOfChar]:{id:u.U.EmberOfChar,name:"Ember of Char",description:"Your Solar ignitions spread scorch to affected targets.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:362132291},[u.U.EmberOfTempering]:{id:u.U.EmberOfTempering,name:"Ember of Tempering",description:"Solar weapon final blows grant you and your allies increased recovery for a short duration. Stacks 3 times.\n\nWhile Ember of Tempering is active, your weapons have increased airborne effectiveness, and your Solar weapon final blows create a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132290},[u.U.EmberOfEruption]:{id:u.U.EmberOfEruption,name:"Ember of Eruption",description:"Your Solar ignitions have increased area of effect.",type:t.O.Solar,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276348},[u.U.EmberOfWonder]:{id:u.U.EmberOfWonder,name:"Ember of Wonder",description:"Rapidly defeating multiple targets with Solar ignitions generates an Orb of Power.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276350},[u.U.EmberOfSearing]:{id:u.U.EmberOfSearing,name:"Ember of Searing",description:"Defeating scorched targets grants melee energy and creates a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276351},[u.U.EmberOfTorches]:{id:u.U.EmberOfTorches,name:"Ember of Torches",description:"Powered melee attacks against combatants make you and nearby allies radiant.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132288},[u.U.EmberOfMercy]:{id:u.U.EmberOfMercy,name:"Ember of Mercy",description:"When you revive an ally, you and other nearby allies gain restoration.\n\nPicking up a Firesprite grants restoration.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:4180586737},[u.U.SparkOfBrilliance]:{id:u.U.SparkOfBrilliance,name:"Spark of Brilliance",description:"Defeating a blinded target with precision damage creates a blinding explosion.",type:t.O.Arc,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705905},[u.U.SparkOfFeedback]:{id:u.U.SparkOfFeedback,name:"Spark of Feedback",description:"Taking melee damage briefly increases your outgoing melee damage.",type:t.O.Arc,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705907},[u.U.SparkOfDischarge]:{id:u.U.SparkOfDischarge,name:"Spark of Discharge",description:"Arc weapon final blows have a chance to create an Ionic Trace.",type:t.O.Arc,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069362},[u.U.SparkOfFocus]:{id:u.U.SparkOfFocus,name:"Spark of Focus",description:"After sprinting for a short time, your class ability regeneration is increased.",type:t.O.Arc,bonus:[{stat:g.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069360},[u.U.SparkOfVolts]:{id:u.U.SparkOfVolts,name:"Spark of Volts",description:"Finishers make you amplified.",type:t.O.Arc,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705904},[u.U.SparkOfResistance]:{id:u.U.SparkOfResistance,name:"Spark of Resistance",description:"While surrounded by combatants, you are more resistant to incoming damage.",type:t.O.Arc,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1727069366},[u.U.SparkOfShock]:{id:u.U.SparkOfShock,name:"Spark of Shock",description:"Your Arc grenades jolt targets.",type:t.O.Arc,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069364},[u.U.ThreadOfFury]:{id:u.U.ThreadOfFury,name:"Thread of Fury",description:"Damaging targets with a Tangle grants melee energy.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512219},[u.U.ThreadOfAscent]:{id:u.U.ThreadOfAscent,name:"Thread of Ascent",description:"Activating your grenade ability reloads your equipped weapon and grants bonus airborne effectiveness and handling for a short duration.",type:t.O.Strand,bonus:[{stat:g.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512216},[u.U.ThreadOfFinality]:{id:u.U.ThreadOfFinality,name:"Thread of Finality",description:"Finisher final blows create Threadlings.",type:t.O.Strand,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512217},[u.U.ThreadOfWarding]:{id:u.U.ThreadOfWarding,name:"Thread of Warding",description:"Picking up an Orb of Power grants Woven Mail.",type:t.O.Strand,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512222},[u.U.ThreadOfTransmutation]:{id:u.U.ThreadOfTransmutation,name:"Thread of Transmutation",description:"While you have Woven Mail, weapon final blows create a Tangle.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512221},[u.U.ThreadOfEvolution]:{id:u.U.ThreadOfEvolution,name:"Thread of Evolution",description:"Threadlings travel farther and deal additional damage.",type:t.O.Strand,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512211},[u.U.ThreadOfBinding]:{id:u.U.ThreadOfBinding,name:"Thread of Binding",description:"Super final blows emit a suspending burst from the target.",type:t.O.Strand,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3192552688},[u.U.ThreadOfGeneration]:{id:u.U.ThreadOfGeneration,name:"Thread of Generation",description:"Dealing damage generates grenade energy.",type:t.O.Strand,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:3192552691},[u.U.ThreadOfPropagation]:{id:u.U.ThreadOfPropagation,name:"Thread of Propagation",description:"Powered melee final blows grant your Strand weapons Unraveling Rounds.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512210},[u.U.FacetOfAwakening]:{id:u.U.FacetOfAwakening,name:"Facet of Awakening",description:"Rapid elemental final blows and Super final blows generate an elemental pickup of the matching damage type.",type:t.O.Prismatic,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:124726505},[u.U.FacetOfCourage]:{id:u.U.FacetOfCourage,name:"Facet of Courage",description:"Your Light abilities deal increased damage to targets afflicted with Darkness debuffs.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922124},[u.U.FacetOfDawn]:{id:u.U.FacetOfDawn,name:"Facet of Dawn",description:"Powered melee hits against targets make you Radiant. Powered melee final blows make both you and nearby allies Radiant.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922126},[u.U.FacetOfDefiance]:{id:u.U.FacetOfDefiance,name:"Facet of Defiance",description:"Finishers create a detonation that either jolts, scorches, slows, severs, or makes targets volatile based on the damage type of your equipped Super.",type:t.O.Prismatic,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:74393640},[u.U.FacetOfDevotion]:{id:u.U.FacetOfDevotion,name:"Facet of Devotion",description:"Defeating targets afflicted with a Darkness debuff grants bonus Light Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922125},[u.U.FacetOfDominance]:{id:u.U.FacetOfDominance,name:"Facet of Dominance",description:"Your Void grenades weaken targets, and your Arc grenades jolt targets.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726504},[u.U.FacetOfGrace]:{id:u.U.FacetOfGrace,name:"Facet of Grace",description:"Defeating targets with Kinetic weapons grants you bonus Transcendence energy. Defeating targets with your Super grants you and nearby allies bonus Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922121},[u.U.FacetOfHonor]:{id:u.U.FacetOfHonor,name:"Facet of Honor",description:"Collecting an elemental pickup or destroying a Tangle grants Transcendence energy of the same type.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:124726501},[u.U.FacetOfJustice]:{id:u.U.FacetOfJustice,name:"Facet of Justice",description:"While Transcendent, your ability final blows explode.",type:t.O.Prismatic,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922115},[u.U.FacetOfProtection]:{id:u.U.FacetOfProtection,name:"Facet of Protection",description:"While surrounded by enemies, you are more resistant to incoming damage.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922120},[u.U.FacetOfPurpose]:{id:u.U.FacetOfPurpose,name:"Facet of Purpose",description:"Picking up an Orb of Power grants either Amplified, Restoration, Frost Armor, Woven Mail, or Overshield, based on the damage type of your equipped super.",type:t.O.Prismatic,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726498},[u.U.FacetOfRuin]:{id:u.U.FacetOfRuin,name:"Facet of Ruin",description:"Increases the size and damage of the burst when you shatter a Stasis crystal or frozen target and increases the area of effect of Solar ignitions.",type:t.O.Prismatic,bonus:[{stat:g.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:124726499},[u.U.FacetOfSacrifice]:{id:u.U.FacetOfSacrifice,name:"Facet of Sacrifice",description:"While you have a Light buff, ability final blows grant bonus Darkness Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:124726502}}},3244:(ht,st,_)=>{_.d(st,{Io:()=>t,Qj:()=>u,dM:()=>g});const u=5,t=-1,g=-2},4682:(ht,st,_)=>{_.d(st,{v:()=>t});var u=_(6438);class t extends u.ZP{constructor(){super("d2armorpicker-v2"),this.version(25).stores({manifestArmor:"id++, hash, isExotic",inventoryArmor:"id++, itemInstanceId, isExotic, hash, name, masterworked, clazz, slot, source",manifestCollectibles:"id++, hash",vendorNames:"id++, vendorId"})}}},6471:(ht,st,_)=>{_.d(st,{y:()=>u});var u=(()=>{return(t=u||(u={}))[t.ArmorSlotNone=0]="ArmorSlotNone",t[t.ArmorSlotHelmet=1]="ArmorSlotHelmet",t[t.ArmorSlotGauntlet=2]="ArmorSlotGauntlet",t[t.ArmorSlotChest=3]="ArmorSlotChest",t[t.ArmorSlotLegs=4]="ArmorSlotLegs",t[t.ArmorSlotClass=5]="ArmorSlotClass",u;var t})()},1043:(ht,st,_)=>{_.d(st,{AR:()=>x,Bd:()=>Ft,DH:()=>gt,ED:()=>Ut,ID:()=>qt,K9:()=>Z,Mi:()=>M,Pn:()=>A,WB:()=>g,X9:()=>Ct,cM:()=>Mt,iV:()=>t,kw:()=>It,lp:()=>ot});var u=_(8333),t=(()=>{return(h=t||(t={}))[h.NONE=0]="NONE",h[h.MINOR_MOBILITY=1]="MINOR_MOBILITY",h[h.MAJOR_MOBILITY=2]="MAJOR_MOBILITY",h[h.ARTIFICE_MOBILITY=3]="ARTIFICE_MOBILITY",h[h.MINOR_RESILIENCE=4]="MINOR_RESILIENCE",h[h.MAJOR_RESILIENCE=5]="MAJOR_RESILIENCE",h[h.ARTIFICE_RESILIENCE=6]="ARTIFICE_RESILIENCE",h[h.MINOR_RECOVERY=7]="MINOR_RECOVERY",h[h.MAJOR_RECOVERY=8]="MAJOR_RECOVERY",h[h.ARTIFICE_RECOVERY=9]="ARTIFICE_RECOVERY",h[h.MINOR_DISCIPLINE=10]="MINOR_DISCIPLINE",h[h.MAJOR_DISCIPLINE=11]="MAJOR_DISCIPLINE",h[h.ARTIFICE_DISCIPLINE=12]="ARTIFICE_DISCIPLINE",h[h.MINOR_INTELLECT=13]="MINOR_INTELLECT",h[h.MAJOR_INTELLECT=14]="MAJOR_INTELLECT",h[h.ARTIFICE_INTELLECT=15]="ARTIFICE_INTELLECT",h[h.MINOR_STRENGTH=16]="MINOR_STRENGTH",h[h.MAJOR_STRENGTH=17]="MAJOR_STRENGTH",h[h.ARTIFICE_STRENGTH=18]="ARTIFICE_STRENGTH",t;var h})(),g=(()=>{return(h=g||(g={}))[h.Mobility=0]="Mobility",h[h.Resilience=1]="Resilience",h[h.Recovery=2]="Recovery",h[h.Discipline=3]="Discipline",h[h.Intellect=4]="Intellect",h[h.Strength=5]="Strength",g;var h})();const Z={[t.NONE]:[g.Strength,0,0,0],[t.MINOR_MOBILITY]:[g.Mobility,5,1,1703647492],[t.MAJOR_MOBILITY]:[g.Mobility,10,3,4183296050],[t.ARTIFICE_MOBILITY]:[g.Mobility,3,0,2322202118],[t.MINOR_RESILIENCE]:[g.Resilience,5,2,2532323436],[t.MAJOR_RESILIENCE]:[g.Resilience,10,4,1180408010],[t.ARTIFICE_RESILIENCE]:[g.Resilience,3,0,199176566],[t.MINOR_RECOVERY]:[g.Recovery,5,2,1237786518],[t.MAJOR_RECOVERY]:[g.Recovery,10,4,4204488676],[t.ARTIFICE_RECOVERY]:[g.Recovery,3,0,539459624],[t.MINOR_DISCIPLINE]:[g.Discipline,5,1,4021790309],[t.MAJOR_DISCIPLINE]:[g.Discipline,10,3,1435557120],[t.ARTIFICE_DISCIPLINE]:[g.Discipline,3,0,617569843],[t.MINOR_INTELLECT]:[g.Intellect,5,2,350061697],[t.MAJOR_INTELLECT]:[g.Intellect,10,4,2724608735],[t.ARTIFICE_INTELLECT]:[g.Intellect,3,0,3160845295],[t.MINOR_STRENGTH]:[g.Strength,5,1,2639422088],[t.MAJOR_STRENGTH]:[g.Strength,10,3,4287799666],[t.ARTIFICE_STRENGTH]:[g.Strength,3,0,2507624050]},M={[g.Mobility]:"Mobility",[g.Resilience]:"Resilience",[g.Recovery]:"Recovery",[g.Discipline]:"Discipline",[g.Intellect]:"Intellect",[g.Strength]:"Strength"},It={[g.Mobility]:2996146975,[g.Resilience]:392767087,[g.Recovery]:1943323491,[g.Discipline]:1735777505,[g.Intellect]:144602215,[g.Strength]:4244567218},ot={[g.Mobility]:"https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",[g.Resilience]:"https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",[g.Recovery]:"https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",[g.Discipline]:"https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",[g.Intellect]:"https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",[g.Strength]:"https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png"};var x=(()=>{return(h=x||(x={}))[h.ClassAbilityRegenerationStat=10]="ClassAbilityRegenerationStat",x;var h})(),A=(()=>{return(h=A||(A={}))[h.None=0]="None",h[h.SlotCrotasEnd=2]="SlotCrotasEnd",h[h.SlotRootOfNightmares=3]="SlotRootOfNightmares",h[h.SlotKingsFall=4]="SlotKingsFall",h[h.SlotVowOfTheDisciple=5]="SlotVowOfTheDisciple",h[h.SlotVaultOfGlass=6]="SlotVaultOfGlass",h[h.SlotDeepStoneCrypt=7]="SlotDeepStoneCrypt",h[h.SlotGardenOfSalvation=8]="SlotGardenOfSalvation",h[h.SlotLastWish=9]="SlotLastWish",h[h.SlotArtifice=10]="SlotArtifice",h[h.PerkIronBanner=11]="PerkIronBanner",h[h.SlotNightmare=12]="SlotNightmare",h[h.GuardianGamesClassItem=18]="GuardianGamesClassItem",h[h.PerkEchoesOfGlory=20]="PerkEchoesOfGlory",h[h.SlotSalvationsEdge=21]="SlotSalvationsEdge",h[h.COUNT=22]="COUNT",A;var h})();const Ut={1760565003:A.PerkEchoesOfGlory},Mt={[A.None]:"None",[A.SlotCrotasEnd]:"Crota's End Modslot",[A.SlotRootOfNightmares]:"Root of Nightmares Modslot",[A.SlotKingsFall]:"King's Fall Modslot",[A.SlotVowOfTheDisciple]:"Vow of the Disciple Modslot",[A.SlotVaultOfGlass]:"Vault of Glass Modslot",[A.SlotDeepStoneCrypt]:"Deep Stone Crypt Modslot",[A.SlotGardenOfSalvation]:"Garden of Salvation Modslot",[A.SlotLastWish]:"Last Wish Modslot",[A.SlotArtifice]:"Artifice Modslot",[A.PerkIronBanner]:"Iron Banner Perk",[A.SlotNightmare]:"Nightmare Hunt Modslot",[A.GuardianGamesClassItem]:"Guardian Games",[A.PerkEchoesOfGlory]:"Echoes of Glory Perk",[A.SlotSalvationsEdge]:"Salvation's Edge Modslot",[A.COUNT]:""},Ct={[A.None]:"https://www.bungie.net/img/misc/missing_icon_d2.png",[A.SlotCrotasEnd]:"https://www.bungie.net/common/destiny2_content/icons/7ddce334fe8391848f408227439c1d7a.png",[A.SlotRootOfNightmares]:"https://www.bungie.net/common/destiny2_content/icons/f2b6ec58e14244e4972705897667c246.png",[A.SlotKingsFall]:"https://www.bungie.net/common/destiny2_content/icons/0e515c7cf25a2f2350b788e6f5b7f8eb.png",[A.SlotVowOfTheDisciple]:"https://www.bungie.net/common/destiny2_content/icons/b84b6ea72dd05de7123aa2ae87ba0d6a.png",[A.SlotVaultOfGlass]:"https://www.bungie.net/common/destiny2_content/icons/7c9a2d95113de19c5acdbed57775abf4.png",[A.SlotDeepStoneCrypt]:"https://www.bungie.net/common/destiny2_content/icons/d6452d010cfe72a51a9089ec68ab223c.png",[A.SlotGardenOfSalvation]:"https://www.bungie.net/common/destiny2_content/icons/53d6e3505cd03d4026b3dbbd9ccc19b6.jpg",[A.SlotLastWish]:"https://www.bungie.net/common/destiny2_content/icons/76f0c1520fa384ceb27bd2469225dd8a.png",[A.SlotArtifice]:"https://www.bungie.net/common/destiny2_content/icons/46eec78bb7864641bbd7ba1fd4f9f248.png",[A.PerkIronBanner]:"https://bungie.net/common/destiny2_content/icons/DestinyActivityModeDefinition_fe57052d7cf971f7502daa75a2ca2437.png",[A.SlotNightmare]:"https://www.bungie.net/common/destiny2_content/icons/53d6e3505cd03d4026b3dbbd9ccc19b6.jpg",[A.GuardianGamesClassItem]:"https://www.bungie.net/common/destiny2_content/icons/DestinyEventCardDefinition_ce6c2cf855dce694bcc89803b6bc44b7.png",[A.SlotSalvationsEdge]:"https://www.bungie.net/common/destiny2_content/icons/f4a1f99b49ecf412726d71ea9ee15540.png",[A.PerkEchoesOfGlory]:"https://www.bungie.net/common/destiny2_content/icons/c67322c917e16f3b8a4cb962e3f11166.png",[A.COUNT]:""},gt={[A.SlotCrotasEnd]:717667840,[A.SlotRootOfNightmares]:4144354978,[A.SlotKingsFall]:1728096240,[A.SlotVowOfTheDisciple]:2447143568,[A.SlotVaultOfGlass]:3738398030,[A.SlotDeepStoneCrypt]:4055462131,[A.SlotGardenOfSalvation]:706611068,[A.SlotLastWish]:1679876242,[A.SlotArtifice]:3727270518,[A.PerkIronBanner]:2472875850,[A.SlotNightmare]:1180997867,[A.SlotSalvationsEdge]:4059283783,[A.PerkEchoesOfGlory]:2352831367},qt={[A.SlotCrotasEnd]:"modslot:crotasend",[A.SlotRootOfNightmares]:"modslot:rootofnightmares",[A.SlotKingsFall]:"modslot:kingsfall",[A.SlotVowOfTheDisciple]:"modslot:vowofthedisciple",[A.SlotVaultOfGlass]:"modslot:vaultofglass",[A.SlotDeepStoneCrypt]:"modslot:deepstonecrypt",[A.SlotGardenOfSalvation]:"modslot:gardenofsalvation",[A.SlotLastWish]:"modslot:lastwish",[A.SlotArtifice]:'perkname:"artifice armor"',[A.PerkIronBanner]:'perkname:"iron lord\'s pride"',[A.SlotNightmare]:"modslot:nightmare",[A.GuardianGamesClassItem]:"(hash:537041732 or hash:366019830 or hash:1013401891)",[A.PerkEchoesOfGlory]:'exactperk:"echoes of glory"',[A.SlotSalvationsEdge]:"(source:salvationsedge is:armor)"},Ft={1:{[u.O.Stasis]:873720784,[u.O.Void]:2453351420,[u.O.Solar]:2240888816,[u.O.Arc]:2328211300,[u.O.Strand]:3785442599,[u.O.Prismatic]:4282591831},0:{[u.O.Stasis]:613647804,[u.O.Void]:2842471112,[u.O.Solar]:2550323932,[u.O.Arc]:2932390016,[u.O.Strand]:242419885,[u.O.Prismatic]:1616346845},2:{[u.O.Stasis]:3291545503,[u.O.Void]:2849050827,[u.O.Solar]:3941205951,[u.O.Arc]:3168997075,[u.O.Strand]:4204413574,[u.O.Prismatic]:3893112950}}},1650:(ht,st,_)=>{_.d(st,{w:()=>u});var u=(()=>{return(t=u||(u={}))[t.None=0]="None",t[t.ReduceUsedModSockets=1]="ReduceUsedModSockets",t[t.ReduceUsedModPoints=2]="ReduceUsedModPoints",u;var t})()},7580:(ht,st,_)=>{_.d(st,{U:()=>u});var u=(()=>{return(t=u||(u={}))[t.WhisperOfDurance=1e3]="WhisperOfDurance",t[t.WhisperOfChains=1001]="WhisperOfChains",t[t.WhisperOfConduction=1002]="WhisperOfConduction",t[t.WhisperOfBonds=1101]="WhisperOfBonds",t[t.WhisperOfHunger=1102]="WhisperOfHunger",t[t.WhisperOfFractures=1103]="WhisperOfFractures",t[t.WhisperOfTorment=1104]="WhisperOfTorment",t[t.EchoOfExpulsion=1200]="EchoOfExpulsion",t[t.EchoOfProvision=1201]="EchoOfProvision",t[t.EchoOfPersistence=1202]="EchoOfPersistence",t[t.EchoOfLeeching=1203]="EchoOfLeeching",t[t.EchoOfDomineering=1204]="EchoOfDomineering",t[t.EchoOfDilation=1205]="EchoOfDilation",t[t.EchoOfUndermining=1206]="EchoOfUndermining",t[t.EchoOfInstability=1207]="EchoOfInstability",t[t.EchoOfHarvest=1208]="EchoOfHarvest",t[t.EchoOfObscurity=1209]="EchoOfObscurity",t[t.EchoOfStarvation=1210]="EchoOfStarvation",t[t.EchoOfVigilance=1211]="EchoOfVigilance",t[t.EmberOfBenelovence=1300]="EmberOfBenelovence",t[t.EmberOfBeams=1301]="EmberOfBeams",t[t.EmberOfEmpyrean=1302]="EmberOfEmpyrean",t[t.EmberOfCombustion=1303]="EmberOfCombustion",t[t.EmberOfChar=1304]="EmberOfChar",t[t.EmberOfTempering=1305]="EmberOfTempering",t[t.EmberOfEruption=1306]="EmberOfEruption",t[t.EmberOfWonder=1307]="EmberOfWonder",t[t.EmberOfSearing=1308]="EmberOfSearing",t[t.EmberOfTorches=1309]="EmberOfTorches",t[t.EmberOfMercy=1310]="EmberOfMercy",t[t.SparkOfBrilliance=1400]="SparkOfBrilliance",t[t.SparkOfFeedback=1401]="SparkOfFeedback",t[t.SparkOfDischarge=1402]="SparkOfDischarge",t[t.SparkOfFocus=1403]="SparkOfFocus",t[t.SparkOfVolts=1404]="SparkOfVolts",t[t.SparkOfResistance=1405]="SparkOfResistance",t[t.SparkOfShock=1406]="SparkOfShock",t[t.ThreadOfFury=1600]="ThreadOfFury",t[t.ThreadOfAscent=1601]="ThreadOfAscent",t[t.ThreadOfFinality=1602]="ThreadOfFinality",t[t.ThreadOfWarding=1603]="ThreadOfWarding",t[t.ThreadOfTransmutation=1604]="ThreadOfTransmutation",t[t.ThreadOfEvolution=1605]="ThreadOfEvolution",t[t.ThreadOfBinding=1606]="ThreadOfBinding",t[t.ThreadOfGeneration=1607]="ThreadOfGeneration",t[t.ThreadOfPropagation=1608]="ThreadOfPropagation",t[t.WhisperOfImpetus=537774543]="WhisperOfImpetus",t[t.FacetOfAwakening=1700]="FacetOfAwakening",t[t.FacetOfCourage=1701]="FacetOfCourage",t[t.FacetOfDawn=1702]="FacetOfDawn",t[t.FacetOfDefiance=1703]="FacetOfDefiance",t[t.FacetOfDevotion=1704]="FacetOfDevotion",t[t.FacetOfDominance=1705]="FacetOfDominance",t[t.FacetOfGrace=1706]="FacetOfGrace",t[t.FacetOfHonor=1707]="FacetOfHonor",t[t.FacetOfJustice=1708]="FacetOfJustice",t[t.FacetOfProtection=1709]="FacetOfProtection",t[t.FacetOfPurpose=1710]="FacetOfPurpose",t[t.FacetOfRuin=1711]="FacetOfRuin",t[t.FacetOfSacrifice=1712]="FacetOfSacrifice",u;var t})()},8333:(ht,st,_)=>{_.d(st,{O:()=>u});var u=(()=>{return(t=u||(u={}))[t.CombatStyleMod=0]="CombatStyleMod",t[t.Stasis=1]="Stasis",t[t.Void=2]="Void",t[t.Solar=3]="Solar",t[t.Arc=4]="Arc",t[t.Strand=5]="Strand",t[t.Prismatic=6]="Prismatic",u;var t})()},4661:(ht,st,_)=>{_.d(st,{V:()=>R});var u=_(4859),t=_(9549),g=_(4385),Z=_(3238),M=_(7314),It=_(4144),ot=_(455),x=_(2143),A=_(3546),Ut=_(266),Mt=_(3162),Ct=_(7392),gt=_(6308),qt=_(8739),Ft=_(3683),h=_(3217),ft=_(811),rt=_(6338),Y=_(7084),mt=_(5412),Vt=_(7009),Yt=_(1572),f=_(3848),T=_(7331),D=_(3267),k=_(4006),J=_(9814),L=_(4650);let R=(()=>{class c{}return c.\u0275fac=function(v){return new(v||c)},c.\u0275mod=L.oAB({type:c}),c.\u0275inj=L.cJS({imports:[u.ot,t.lN,g.LD,Z.Ng,M.KP,It.c,ot.rP,x.p0,A.QW,Ut.AV,Mt.Cv,Ct.Ps,gt.JX,qt.TU,Ft.g0,h.Tx,ft.vV,rt.ie,Y.To,mt.Is,Vt.ZX,Yt.Cq,f.Nh,T.Hi,D.SJ,k.UX,k.u5,J.o9,J.o9,k.UX,k.u5,u.ot,t.lN,g.LD,Z.Ng,M.KP,It.c,ot.rP,x.p0,A.QW,Ut.AV,Mt.Cv,Ct.Ps,gt.JX,qt.TU,Ft.g0,h.Tx,ft.vV,rt.ie,Y.To,mt.Is,Vt.ZX,Yt.Cq,f.Nh,T.Hi,D.SJ]}),c})()},6982:(ht,st,_)=>{_.d(st,{jG:()=>Vt,_1:()=>Yt});var u=_(5861),t=_(6471),g=_(3244),Z=_(443),M=_(1043),It=_(2340);const ot={1:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,1,2,31]],2:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,0,2,32]],3:[[1,0,0,3],[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,2,2,33]],4:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,1,2,34]],5:[[0,1,0,5],[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,0,2,35],[0,3,2,35]],6:[[2,0,0,6],[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,2,2,36],[2,0,3,36],[2,2,3,46]],7:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,1,2,37],[4,1,3,47]],8:[[1,1,0,8],[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38]],9:[[3,0,0,9],[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,2,2,39],[3,0,3,39],[3,2,3,49]],10:[[0,2,0,10],[0,0,1,10],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,1,2,40],[0,2,3,40],[5,1,3,50]],11:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41]],12:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,2,2,42],[4,0,3,42],[4,2,3,52]],13:[[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43]],14:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,2,2,45],[5,0,3,45],[5,2,3,55]],16:[[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46]],17:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],18:[[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],19:[[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[5,1,4,60]],21:[[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],22:[[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43]],24:[[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],27:[[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43],[1,0,5,53]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],38:[[1,3,2,38],[1,1,3,38],[1,1,4,48]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],41:[[2,3,2,41],[2,1,3,41],[2,1,4,51]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],43:[[1,2,3,43],[1,0,4,43],[1,0,5,53]],44:[[3,3,2,44],[3,1,3,44],[3,1,4,54]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],46:[[2,2,3,46],[2,0,4,46],[2,0,5,56]],47:[[4,3,2,47],[4,1,3,47],[4,1,4,57]],48:[[1,1,4,48]],49:[[3,2,3,49],[3,0,4,49],[3,0,5,59]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],51:[[2,1,4,51]],52:[[4,2,3,52],[4,0,4,52],[4,0,5,62]],53:[[1,0,5,53]],54:[[3,1,4,54]],55:[[5,2,3,55],[5,0,4,55],[5,0,5,65]],56:[[2,0,5,56]],57:[[4,1,4,57]],58:[],59:[[3,0,5,59]],60:[[5,1,4,60]],61:[],62:[[4,0,5,62]],63:[],64:[],65:[[5,0,5,65]]},x={1:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],2:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],3:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],4:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],5:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],6:[[2,0,0,6],[1,1,0,8],[0,2,0,10],[0,0,1,10]],7:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],8:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],9:[[3,0,0,9],[0,2,0,10],[0,0,1,10],[2,1,0,11]],10:[[0,2,0,10],[0,0,1,10],[2,1,0,11],[4,0,0,12]],11:[[2,1,0,11],[4,0,0,12],[1,2,0,13],[1,0,1,13],[0,3,0,15],[0,1,1,15],[0,0,2,20]],12:[[4,0,0,12],[1,2,0,13],[1,0,1,13],[3,1,0,14],[0,3,0,15],[0,1,1,15],[0,0,2,20]],13:[[1,2,0,13],[1,0,1,13],[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[0,0,2,20]],14:[[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[0,0,2,20]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[4,1,0,17],[0,0,2,20]],16:[[2,2,0,16],[2,0,1,16],[4,1,0,17],[1,3,0,18],[1,1,1,18],[0,4,0,20],[0,2,1,20],[0,0,2,20]],17:[[4,1,0,17],[1,3,0,18],[1,1,1,18],[3,2,0,19],[3,0,1,19],[0,4,0,20],[0,2,1,20],[0,0,2,20]],18:[[1,1,1,18],[1,3,0,18],[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20]],19:[[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22]],21:[[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],22:[[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],24:[[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[0,0,3,30]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[0,0,3,30]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[0,4,1,30],[0,2,2,30],[0,0,3,30]],27:[[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[0,4,1,30],[0,2,2,30],[0,0,3,30]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[0,3,2,35],[0,1,3,35],[0,0,4,40]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[0,3,2,35],[0,1,3,35],[0,0,4,40]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[0,0,4,40]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[0,0,4,40]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[0,0,4,40]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[0,2,3,40],[0,0,4,40]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[0,2,3,40],[0,0,4,40]],38:[[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42]],41:[[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[0,1,4,45],[0,0,5,50]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[0,1,4,45],[0,0,5,50]],43:[[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[0,0,5,50]],44:[[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[0,0,5,50]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[0,0,5,50]],46:[[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[1,1,4,48],[0,0,5,50]],47:[[4,3,2,47],[4,1,3,47],[1,1,4,48],[3,2,3,49],[3,0,4,49],[0,0,5,50]],48:[[1,1,4,48],[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50]],49:[[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51],[4,2,3,52],[4,0,4,52]],51:[[2,1,4,51],[4,2,3,52],[4,0,4,52],[1,0,5,53]],52:[[4,2,3,52],[4,0,4,52],[1,0,5,53],[3,1,4,54]],53:[[1,0,5,53],[3,1,4,54],[5,2,3,55],[5,0,4,55]],54:[[3,1,4,54],[5,2,3,55],[5,0,4,55],[2,0,5,56]],55:[[5,2,3,55],[5,0,4,55],[2,0,5,56],[4,1,4,57]],56:[[2,0,5,56],[4,1,4,57]],57:[[4,1,4,57],[3,0,5,59]],58:[[3,0,5,59],[5,1,4,60]],59:[[3,0,5,59],[5,1,4,60]],60:[[5,1,4,60],[4,0,5,62]],61:[[4,0,5,62]],62:[[4,0,5,62]],63:[[5,0,5,65]],64:[[5,0,5,65]],65:[[5,0,5,65]]};var A=_(1650);function Mt(f){return Object.prototype.hasOwnProperty.call(f,"armor")&&Object.prototype.hasOwnProperty.call(f,"usedArtifice")&&Object.prototype.hasOwnProperty.call(f,"usedMods")&&Object.prototype.hasOwnProperty.call(f,"statsWithMods")&&Object.prototype.hasOwnProperty.call(f,"classItemPerk")}function Ct(f,T,D,k,J,L,R){var c=f.selectedExotics[0]||0;let P=T.slice();if((!k.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||k.hash!=c)&&f.armorPerks[t.y.ArmorSlotHelmet].fixed&&f.armorPerks[t.y.ArmorSlotHelmet].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotHelmet].value!=k.perk)return{valid:!1};if((!J.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||J.hash!=c)&&f.armorPerks[t.y.ArmorSlotGauntlet].fixed&&f.armorPerks[t.y.ArmorSlotGauntlet].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotGauntlet].value!=J.perk)return{valid:!1};if((!L.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||L.hash!=c)&&f.armorPerks[t.y.ArmorSlotChest].fixed&&f.armorPerks[t.y.ArmorSlotChest].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotChest].value!=L.perk)return{valid:!1};if((!R.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||R.hash!=c)&&f.armorPerks[t.y.ArmorSlotLegs].fixed&&f.armorPerks[t.y.ArmorSlotLegs].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotLegs].value!=R.perk)return{valid:!1};if(f.armorPerks[t.y.ArmorSlotClass].fixed&&f.armorPerks[t.y.ArmorSlotClass].value!=M.Pn.None&&!D.has(f.armorPerks[t.y.ArmorSlotClass].value))return{valid:!1};P[k.perk]--,P[J.perk]--,P[L.perk]--,P[R.perk]--,c>0&&(k.hash==c?P[f.armorPerks[k.slot].value]--:J.hash==c?P[f.armorPerks[J.slot].value]--:L.hash==c?P[f.armorPerks[L.slot].value]--:R.hash==c&&P[f.armorPerks[R.slot].value]--);let v=0;for(let j=1;jT.minimumStatTiers[y].value||!T.allowExactStats&&w[y]/10>=T.minimumStatTiers[y].value+1))return null;let vt=j.filter(y=>(!y.isExotic||!T.ignoreExistingExoticArtificeSlots)&&y.perk==M.Pn.SlotArtifice||T.assumeEveryLegendaryIsArtifice&&!y.isExotic||T.assumeEveryExoticIsArtifice&&y.isExotic).length;v&&(vt+=1);const $=[Math.max(0,10*T.minimumStatTiers[0].value-w[0]),Math.max(0,10*T.minimumStatTiers[1].value-w[1]),Math.max(0,10*T.minimumStatTiers[2].value-w[2]),Math.max(0,10*T.minimumStatTiers[3].value-w[3]),Math.max(0,10*T.minimumStatTiers[4].value-w[4]),Math.max(0,10*T.minimumStatTiers[5].value-w[5])];if(T.onlyShowResultsWithNoWastedStats)for(let y=0;y<6;y++){const q=10-w[y]%10;$[y]=Math.max($[y],q<10?q:0)}const _t=[0,0,0,0,0,0];if(T.tryLimitWastedStats)for(let y=0;y<6;y++)0==$[y]&&!T.minimumStatTiers[y].fixed&&w[y]<100&&w[y]%10>0&&(_t[y]=10-w[y]%10);const Ot=_t.reduce((y,q)=>y+q,0),Zt=$[0]+$[1]+$[2]+$[3]+$[4]+$[5];if(Zt>50+3*vt)return null;let I;if(I=0==Zt&&0==Ot?[]:mt(T,$,_t,vt,c,T.modOptimizationStrategy),null==I)return null;const E=[Math.max(0,100-w[0]),Math.max(0,100-w[1]),Math.max(0,100-w[2]),Math.max(0,100-w[3]),Math.max(0,100-w[4]),Math.max(0,100-w[5])];let N=[],X=[];for(let y=0;y<4;y++)for(let q=y+1;q<5;q++)for(let H=q+1;H<6;H++){let at=$.slice();if(at[y]=E[y],at[q]=E[q],at[H]=E[H],at[0]+at[1]+at[2]+at[3]+at[4]+at[5]<=65){N.push([y,q,H]);for(let kt=H+1;kt<6;kt++){let bt=at.slice();bt[kt]=E[kt],bt[0]+bt[1]+bt[2]+bt[3]+bt[4]+bt[5]<=65&&X.push([y,q,H,kt])}}}if(N.length>0){for(let y of N){const q=$.slice();for(let at of y)q[at]=E[at];null!=mt(T,q,[0,0,0,0,0,0],vt,c,A.w.None)&&f.statCombo3x100.add((1<=T.minimumStatTiers[y].value&&H>f.maximumPossibleTiers[y]/10&&!(w[y]>=10*H);H--){const at=10-w[y]%10;if($[y]=Math.max(at<10?at:0,10*H-w[y]),null!=mt(T,$,[0,0,0,0,0,0],vt,c,A.w.None)){f.maximumPossibleTiers[y]=10*H;break}}$[y]=q}if(P)return[];const lt=I.filter(y=>y%3==0),z=I.filter(y=>y%3!=0);for(let y of I)w[Math.floor((y-1)/3)]+=M.K9[y][1];const tt=Yt(w);return T.onlyShowResultsWithNoWastedStats&&tt>0?null:function Ut(f,T,D,k,J,L,R,c){return{armor:[f.id,T.id,D.id,k.id],usedArtifice:J,usedMods:L,classItemPerk:M.Pn.None,statsWithMods:R,statsWithoutMods:c}}(D,k,J,L,lt,z,w,Tt)}function mt(f,T,D,k,J,L=A.w.None){const R=T[0]+T[1]+T[2]+T[3]+T[4]+T[5];if(R>65)return null;const c=f.onlyShowResultsWithNoWastedStats?ot:x,P=[c[T[0]]||[[0,0,0,0]],c[T[1]]||[[0,0,0,0]],c[T[2]]||[[0,0,0,0]],c[T[3]]||[[0,0,0,0]],c[T[4]]||[[0,0,0,0]],c[T[5]]||[[0,0,0,0]]];if(f.allowExactStats)for(let I=0;I<6;I++)f.minimumStatTiers[I].fixed&&T[I]>0&&(P[I]=ot[T[I]]||[[0,0,0,0]],P[I]=P[I].filter(E=>E[3]-T[I]<10));for(let I=0;I0){const E=c[D[I]].filter(N=>0==N[2]&&N[3]%10>0&&(D[I]+N[3])%10N+X[1]+X[2]:L==A.w.ReduceUsedModPoints?(E,N,X)=>E+Tt[X]*N[1]+vt[X]*N[2]:(E,N)=>E+N[3],0)}function _t(I,E=!1){const N=I.reduce((lt,z,tt)=>[lt[0]+z[0],lt[1]+z[1],lt[2]+z[2],lt[3]+z[3]-T[tt]],[0,0,0,0]);if($(I)>it||N[0]>k||N[1]+N[2]>j||N[3]<0)return!1;if(!E||5==et)return!0;let X=[];for(let lt=0;ltj)return!1;I.sort((N,X)=>X-N);for(let N=0;N0&&L!=A.w.None;t:for(let I of P[0])if(_t([I]))for(let E of P[1])if(_t([I,E]))for(let N of P[2])if(_t([I,E,N])&&!(Ot&&$([I,E,N])>=it))for(let X of P[3])if(_t([I,E,N,X])&&!(Ot&&$([I,E,N,X])>=it))for(let lt of P[4])if(_t([I,E,N,X,lt])&&!(Ot&&$([I,E,N,X,lt])>=it))e:for(let z of P[5]){let tt=[I,E,N,X,lt,z];if(!_t(tt,!0))continue;for(let q=0;q<6;q++)if(D[q]>0&&0==tt[q][3]&&null!=U)continue e;let y=$(tt);if(y100?f[M.WB.Mobility]-100:f[M.WB.Mobility]%10)+(f[M.WB.Resilience]>100?f[M.WB.Resilience]-100:f[M.WB.Resilience]%10)+(f[M.WB.Recovery]>100?f[M.WB.Recovery]-100:f[M.WB.Recovery]%10)+(f[M.WB.Discipline]>100?f[M.WB.Discipline]-100:f[M.WB.Discipline]%10)+(f[M.WB.Intellect]>100?f[M.WB.Intellect]-100:f[M.WB.Intellect]%10)+(f[M.WB.Strength]>100?f[M.WB.Strength]-100:f[M.WB.Strength]%10)}addEventListener("message",function(){var f=(0,u.Z)(function*({data:T}){const D=T.threadSplit,k=T.config;let J=T.selectedExotics,L=T.items;if(null==D||null==k||null==L)return;const R=Date.now();console.debug("START RESULTS BUILDER 2"),console.time(`total #${D.current}`),k.onlyShowResultsWithNoWastedStats=It.N.featureFlags.enableZeroWaste&&k.onlyShowResultsWithNoWastedStats,It.N.featureFlags.enableModslotLimitation||(k.maximumModSlots[t.y.ArmorSlotHelmet].value=5,k.maximumModSlots[t.y.ArmorSlotGauntlet].value=5,k.maximumModSlots[t.y.ArmorSlotChest].value=5,k.maximumModSlots[t.y.ArmorSlotLegs].value=5,k.maximumModSlots[t.y.ArmorSlotClass].value=5),console.log("Using config",T.config);let c=L.filter(Q=>Q.slot==t.y.ArmorSlotHelmet).filter(Q=>!k.useFotlArmor||[199733460,2545426109,3224066584].indexOf(Q.hash)>-1),P=L.filter(Q=>Q.slot==t.y.ArmorSlotGauntlet),v=L.filter(Q=>Q.slot==t.y.ArmorSlotChest),U=L.filter(Q=>Q.slot==t.y.ArmorSlotLegs);if(D.count>1){var it=[[c,c.length],[P,P.length],[v,v.length],[U,U.length]].sort((Q,Jt)=>Jt[1]-Q[1])[0][0],j=Math.round(it.length/D.count),et=j*D.current,w=et+j;D.current==D.count-1&&(w=it.length),it.splice(w),it.splice(0,et)}let Tt=L.filter(Q=>Q.slot==t.y.ArmorSlotClass),vt=Tt.filter(Q=>Q.isExotic).length,$=Tt.length-vt,_t=new Set(Tt.filter(Q=>!Q.isExotic).map(Q=>Q.perk)),Ot=new Set(Tt.filter(Q=>Q.isExotic).map(Q=>Q.perk));$>0&&(k.assumeEveryLegendaryIsArtifice||k.assumeClassItemIsArtifice)&&_t.add(M.Pn.SlotArtifice),vt>0&&k.assumeEveryExoticIsArtifice&&Ot.add(M.Pn.SlotArtifice),console.debug("items",JSON.stringify({helmets:c.length,gauntlets:P.length,chests:v.length,legs:U.length,availableClassItemTypes:_t}));const Zt={maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:new Set,statCombo4x100:new Set},I=function gt(f){const T=[0,0,0,0,0,0];for(const k of f.enabledMods)for(const J of Z.F[k].bonus)T[J.stat==M.AR.ClassAbilityRegenerationStat?[1,0,2][f.characterClass]:J.stat]+=J.value;return T}(k),E=function qt(f){let T=[];for(let D=0;DD>0).sort((D,k)=>k-D)}(k),X=J.length<=1,lt=_t.has(M.Pn.SlotArtifice),z=Ot.has(M.Pn.SlotArtifice),tt=k.selectedExotics.indexOf(g.dM)>-1,y=Tt.sort((Q,Jt)=>Q.masterworked?-1:1).find(Q=>Q.isExotic)||null,q=!!y&&k.selectedExotics.indexOf(y.hash)>-1;console.log("hasArtificeClassItem",lt);let H=[],at=0,Dt=0,kt=0,bt=!1,Pt=function ft(f,T,D,k){let J=0;const L=f.filter(et=>et.isExotic).length,R=f.length-L,c=T.filter(et=>et.isExotic).length,P=T.length-c,v=D.filter(et=>et.isExotic).length,U=D.length-v,it=k.filter(et=>et.isExotic).length,j=k.length-it;return J+=L*P*U*j,J+=R*c*U*j,J+=R*P*v*j,J+=R*P*U*it,J+=R*P*U*j,J}(c,P,v,U),Qt=0,ae=0;console.log("estimatedCalculations",Pt);let At=Pt>=1e6?125:75;console.time(`tm #${D.current}`);const te=!!y&&(y.masterworked||k.assumeExoticsMasterworked),se=k.assumeClassItemMasterworked||k.assumeLegendariesMasterworked;for(let[Q,Jt,Ht,Wt]of function*h(f,T,D,k,J,L){for(let R of f)for(let c of T)if(!(J&&R.isExotic&&c.isExotic))for(let P of D)if(!J||!R.isExotic&&!c.isExotic||!P.isExotic)for(let v of k)J&&(R.isExotic||c.isExotic||P.isExotic)&&v.isExotic||L&&!(R.isExotic||c.isExotic||P.isExotic||v.isExotic)||(yield[R,c,P,v])}(c,P,v,U,X,tt)){Qt++;const jt=Ct(k,E,_t,Q,Jt,Ht,Wt);if(!jt.valid)continue;const dt=!jt.requiredClassItemType||jt.requiredClassItemType==M.Pn.SlotArtifice,Gt=Q.isExotic||Jt.isExotic||Ht.isExotic||Wt.isExotic,l=Y(Zt,k,Q,Jt,Ht,Wt,I,N,bt,(lt||!Gt&&z&&!k.ignoreExistingExoticArtificeSlots)&&dt,q,q?te:se||!Gt&&te);null!=l&&(kt++,Mt(l)&&(l.classItemPerk=jt.requiredClassItemType||(lt?M.Pn.SlotArtifice:M.Pn.None),!Gt&&y&&q&&l.armor.push(y.id),H.push(l),at++,Dt++,bt=bt||k.limitParsedResults&&Dt>=3e4/D.count||Dt>=1e6/D.count)),kt%5e3==0&&ae+At=5e3&&(postMessage({runtime:Zt,results:H,done:!1,checkedCalculations:Qt,estimatedCalculations:Pt}),H=[],at=0)}console.timeEnd(`tm #${D.current}`),console.timeEnd(`total #${D.current}`),postMessage({runtime:Zt,results:H,done:!0,checkedCalculations:Qt,estimatedCalculations:Pt,stats:{permutationCount:kt,itemCount:L.length-Tt.length,totalTime:Date.now()-R}})});return function(T){return f.apply(this,arguments)}}())},2340:(ht,st,_)=>{_.d(st,{N:()=>u});const u={version:"2.6.3",revision:"691b00b",production:!0,beta:!1,canary:!1,apiKey:"9415df8eff46408aa9c0d51e4d69b94f",clientId:"37252",client_secret:"KnVcJPWr7C5y0loOfBoKSyQ-vWXR0JICrgb1aJLsLgg",offlineMode:!1,featureFlags:{enableModslotLimitation:!0,enableZeroWaste:!0,enableGuardianGamesFeatures:!1}}},1379:(ht,st,_)=>{var u=_(1481),t=_(4650),g=_(2340),Z=_(6895),M=_(5829),It=_(3683),ot=_(6630),x=_(5861),A=_(6831),Ut=_(529),Mt=_(591);let Ct=(()=>{class n{constructor(){this.__status={calculatingResults:!1,calculatingPermutations:!1,updatingResultsTable:!1,updatingInventory:!1,updatingManifest:!1,updatingVendors:!1,apiError:!1,authError:!1},this._status=new Mt.X(this.__status),this.status=this._status.asObservable()}getStatus(){return this.__status}modifyStatus(e){e(this.__status),console.log("modifyStatus",this.__status),this._status.next(this.__status)}setApiError(){this.__status.apiError||this.modifyStatus(e=>{e.apiError=!0})}clearApiError(){!this.__status.apiError||this.modifyStatus(e=>{e.apiError=!1})}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),gt=(()=>{class n{constructor(e,o,a){this.http=e,this.router=o,this.status=a,this._logoutEvent=new A.t(1),this.logoutEvent=this._logoutEvent.asObservable()}get refreshTokenExpired(){return this.refreshTokenExpiringAt (this.lastRefresh + timing)":Date.now()>e.lastRefresh+18e5}),!(e.refreshToken&&Date.now()e.lastRefresh+18e5)||(yield e.generateTokens(!0))})()}getCurrentMembershipData(){var e=this;return(0,x.Z)(function*(){const o=JSON.parse(localStorage.getItem("auth-membershipInfo")||"null");if(null==o){const a=e.getCurrentMembershipData();return localStorage.setItem("auth-membershipInfo",JSON.stringify(a)),a}return o})()}generateTokens(e=!1){var o=this;return(0,x.Z)(function*(){console.info("Generate auth tokens","refresh based on refresh_token:",e);const a=g.N.clientId,s=g.N.client_secret;let p=`grant_type=authorization_code&code=${o.authCode}&client_id=${a}&client_secret=${s}`;return e&&(p=`grant_type=refresh_token&refresh_token=${o.refreshToken}&client_id=${a}&client_secret=${s}`),yield o.http.post("https://www.bungie.net/Platform/App/OAuth/Token/",p,{headers:{"Content-Type":"application/x-www-form-urlencoded","X-API-Key":g.N.apiKey}}).toPromise().then(C=>(console.log("generateTokens",C),o.accessToken=C.access_token,o.refreshToken=C.refresh_token,o.refreshTokenExpiringAt=Date.now()+1e3*C.refresh_expires_in-1e4,o.lastRefresh=Date.now(),o.status.modifyStatus(d=>d.authError=!1),!0)).catch(function(){var C=(0,x.Z)(function*(d){return console.log({err:d}),o.status.modifyStatus(S=>S.authError=!0),!1});return function(d){return C.apply(this,arguments)}}())})()}isAuthenticated(){return!!this.accessToken}get authCode(){return localStorage.getItem("code")}set authCode(e){e?(console.info("Setting new auth code"),localStorage.setItem("code",""+e)):(console.info("Clearing auth code"),localStorage.removeItem("code"))}get accessToken(){return localStorage.getItem("accessToken")}set accessToken(e){e?(console.info("Setting new access token"),localStorage.setItem("accessToken",""+e)):(console.info("Clearing access token"),localStorage.removeItem("accessToken"))}get refreshToken(){return localStorage.getItem("refreshToken")}set refreshToken(e){e?(console.info("Setting new refresh token"),localStorage.setItem("refreshToken",""+e)):(console.info("Clearing refresh token"),localStorage.removeItem("refreshToken"))}get refreshTokenExpiringAt(){let e=localStorage.getItem("refreshTokenExpiringAt")||"0";return e?Number.parseInt(e):0}set refreshTokenExpiringAt(e){e?(console.info("Setting new refresh token"),localStorage.setItem("refreshTokenExpiringAt",""+e)):(console.info("Clearing refresh token"),localStorage.removeItem("refreshTokenExpiringAt"))}get lastRefresh(){let e=localStorage.getItem("lastRefresh")||"0";return e?Number.parseInt(e):0}set lastRefresh(e){e?localStorage.setItem("lastRefresh",e.toString()):localStorage.removeItem("lastRefresh")}clearManifestInfo(){localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("LastManifestUpdate")}clearLoginInfo(){this.lastRefresh=null,this.refreshTokenExpiringAt=null,this.authCode=null,this.accessToken=null,this.refreshToken=null}logout(){var e=this;return(0,x.Z)(function*(){if(g.N.offlineMode)console.debug("Offline mode, skipping logout");else try{e._logoutEvent.next(null),e.clearManifestInfo(),e.clearLoginInfo()}finally{yield e.router.navigate(["login"])}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Ut.eN),t.LFG(ot.F0),t.LFG(Ct))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),qt=(()=>{class n{constructor(e,o,a){this.activatedRoute=e,this.router=o,this.loginService=a}ngOnInit(){var e=this;this.activatedRoute.queryParams.subscribe(function(){var o=(0,x.Z)(function*(a){let s=a.code;window.location.search.indexOf("?code=")>-1&&(s=window.location.search.substr(6)),console.info({code:s}),s&&(e.loginService.authCode=s,console.info("Generate tokens with the new code"),yield e.loginService.generateTokens(),console.info("Now navigate to /"),yield e.router.navigate(["/"]))});return function(a){return o.apply(this,arguments)}}())}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(ot.gz),t.Y36(ot.F0),t.Y36(gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-handle-bungie-login"]],decls:0,vars:0,template:function(e,o){}}),n})();function Ft(n,i){1&n&&(t.TgZ(0,"mat-toolbar",5),t._UZ(1,"span",2),t._uU(2," You are using the "),t.TgZ(3,"b"),t._uU(4,"\xa0unstable\xa0"),t.qZA(),t._uU(5," canary build. Some features may be unfinished or vanish. Please report any issues you encounter. "),t._UZ(6,"span",2),t.qZA())}let h=(()=>{class n{constructor(){this.title="D2ArmorPicker",this.is_beta=g.N.beta,this.is_canary=g.N.canary,console.log("PRODUCTION?",g.N.production)}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-root"]],decls:9,vars:1,consts:[["class","canary-warning","color","primary",4,"ngIf"],["color","accent",1,"bungie-day"],[1,"header-spacer"],["fxHide.xs","","src","../assets/bungie_foundation.png",1,"donordrive"],["href","https://tiltify.com/@mijago/d2armorpicker","target","_blank","title","Support the Bungie Foundation!"],["color","primary",1,"canary-warning"]],template:function(e,o){1&e&&(t.YNc(0,Ft,7,0,"mat-toolbar",0),t.TgZ(1,"mat-toolbar",1),t._UZ(2,"span",2)(3,"img",3),t.TgZ(4,"a",4),t._uU(5," Please support us at the Bungie Foundation 2024 \u2764 "),t.qZA(),t._UZ(6,"span",2),t.qZA(),t._UZ(7,"app-handle-bungie-login")(8,"router-outlet")),2&e&&t.Q6J("ngIf",o.is_canary)},dependencies:[Z.O5,M.b8,It.Ye,ot.lC,qt],styles:[".bungie-day[_ngcontent-%COMP%], .canary-warning[_ngcontent-%COMP%]{height:-moz-fit-content;height:fit-content;position:relative;max-width:100vw;word-break:break-all}.canary-warning[_ngcontent-%COMP%]{font-size:11pt}.bungie-day[_ngcontent-%COMP%] img.donordrive[_ngcontent-%COMP%]{height:30px;margin-left:2px;margin-right:2px}.bungie-day[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .bungie-day[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:visited{color:#fff}.header-spacer[_ngcontent-%COMP%]{flex:1 1 auto}"]}),n})();var ft=_(1576),rt=_(4859),Y=_(3546),mt=_(7084);let Vt=(()=>{class n{constructor(){}startLogin(){window.location.href=`https://www.bungie.net/en/OAuth/Authorize?client_id=${g.N.clientId}&response_type=code&reauth=true`}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-login"]],decls:76,vars:0,consts:[["mat-card-avatar","",1,"example-header-image"],["href","https://ko-fi.com/mijago","target","_blank"],["href","https://github.com/Mijago/D2ArmorPicker","target","_blank"],["color","primary","mat-raised-button","",3,"click"],[1,"mat-elevation-z11"],["src","assets/info/statselection.png",1,"image-example"],["src","assets/resultOverviewWithFlex.png",1,"image-example"],["src","assets/info/whattodonow.png",1,"image-example"],["src","assets/info/armorClustering.png",1,"image-example"],["fxLayoutGap","10px","fxLayout","row",1,"armor-image-container"],["src","assets/info/cluster-example/img.png"],["src","assets/info/cluster-example/img_1.png"],["src","assets/info/cluster-example/img_2.png"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card")(1,"mat-card-header"),t._UZ(2,"div",0),t.TgZ(3,"mat-card-title"),t._uU(4,"Destiny 2 Armor Picker"),t.qZA(),t.TgZ(5,"mat-card-subtitle"),t._uU(6,"A simple armor min-max tool by Mijago."),t.qZA()(),t.TgZ(7,"mat-card-content")(8,"p"),t._uU(9," This tool allows you to select the optimal armor from your inventory and vault to satisfy your stat needs. It also tells you which stat mods you have to use! "),t._UZ(10,"br")(11,"br"),t._uU(12," You have to log in to enable this tool to grab your armor from the API."),t._UZ(13,"br"),t._uU(14," If you like my tools and want to support me, head to "),t.TgZ(15,"a",1),t._uU(16,"ko-fi.com"),t.qZA(),t._uU(17," and buy me a coffee! \u2764 "),t._UZ(18,"br"),t._uU(19," If you found a bug or have a feature request, please open an issue "),t.TgZ(20,"a",2),t._uU(21,"in the Github Repository"),t.qZA(),t._uU(22,"! "),t.qZA(),t.TgZ(23,"p"),t._uU(24," D2ArmorPicker uses the Bungie.net api and it's OAuth authorization. You log in on an official Bungie.net page and D2ArmorPicker receives a temporary login token from Bungie. That means it does not receive your credentials. "),t.qZA()(),t.TgZ(25,"mat-card-actions")(26,"button",3),t.NdJ("click",function(){return o.startLogin()}),t._uU(27,"Login"),t.qZA()()(),t.TgZ(28,"mat-card")(29,"mat-card-title"),t._uU(30," Examples "),t.qZA(),t.TgZ(31,"mat-card-subtitle"),t._uU(32,"Some examples to show what D2ArmorPicker can do."),t.qZA(),t.TgZ(33,"mat-card-content")(34,"mat-accordion")(35,"mat-expansion-panel",4)(36,"mat-expansion-panel-header")(37,"mat-panel-title"),t._uU(38," Stat Selection "),t.qZA(),t.TgZ(39,"mat-panel-description"),t._uU(40," The heart of this tool. "),t.qZA()(),t.TgZ(41,"p"),t._uU(42," First, you are able to select the stats you want. The tool will automatically parse all your armor (including your vault and your postmaster), and then show you which stat selections are even possible with your current gear. The tool also shows you all possible loadouts with three or four stats at 100! "),t._UZ(43,"img",5)(44,"br")(45,"br"),t._uU(46," There are also additional settings. You can add stasis fragments and negative and positive stat mods to your builds. Also, you can select 0-waste builds (so only flat numbers). D2ArmorPicker will also add stat mods to reduce wasted stats wherever possible! "),t.qZA()(),t.TgZ(47,"mat-expansion-panel",4)(48,"mat-expansion-panel-header")(49,"mat-panel-title"),t._uU(50," Result Display "),t.qZA(),t.TgZ(51,"mat-panel-description"),t._uU(52," What you will get from this tool. "),t.qZA()(),t.TgZ(53,"p"),t._uU(54," D2ArmorPicker will show you a table with many results. You can sort and filter it, and then you click on one row to see which items are needed for your desired stats. "),t._UZ(55,"img",6)(56,"br")(57,"br"),t._uU(58," The page will also give you a detailed description of what you have to do in order to get to your desired build. The following screenshot shows one of the more detailed descriptions: "),t._UZ(59,"img",7),t.qZA()(),t.TgZ(60,"mat-expansion-panel",4)(61,"mat-expansion-panel-header")(62,"mat-panel-title"),t._uU(63," Armor Clustering "),t.qZA(),t.TgZ(64,"mat-panel-description"),t._uU(65," For the time when your vault is overflowing. "),t.qZA()(),t.TgZ(66,"div"),t._uU(67," Since version 2.0.14, D2ArmorPicker has an armor clustering feature. This means that it takes all your armor and groups it in 25 groups, where all items in one group has very similar stats. This can help you to clear out your vault, especially from duplicated armor rolls. "),t._UZ(68,"img",8)(69,"br")(70,"br"),t._uU(71," Take Cluster 1, for example. I copy the DIM-Query, enter it into DIM and see the following results: "),t.TgZ(72,"div",9),t._UZ(73,"img",10)(74,"img",11)(75,"img",12),t.qZA()()()()()())},dependencies:[ft.xw,ft.SQ,rt.lW,Y.a8,Y.dk,Y.dn,Y.n5,Y.$j,Y.hq,Y.kc,mt.pp,mt.ib,mt.yz,mt.yK,mt.u4],styles:["mat-card[_ngcontent-%COMP%]{max-width:600px;margin-bottom:4px;margin-left:auto;margin-right:auto}button[_ngcontent-%COMP%]{position:absolute;right:10px;bottom:10px}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}.example-header-image[_ngcontent-%COMP%]{background-image:url(superGreatLogo.5307f2494314b5e1.png);background-size:cover}.image-example[_ngcontent-%COMP%]{max-width:100%}.armor-image-container[_ngcontent-%COMP%]{overflow:auto}.armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{max-height:300px}"]}),n})();var Yt=_(8746);let f=(()=>{class n{constructor(e,o){this.auth=e,this.router=o}canActivate(e,o){return!!this.auth.isAuthenticated()||(this.router.navigate(["login"]),!1)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(ot.F0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),T=(()=>{class n{constructor(e,o){this.auth=e,this.router=o}canActivate(e,o){return!this.auth.isAuthenticated()||(this.router.navigate(["/"]),!1)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(ot.F0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var D=_(2289),k=_(4850),J=_(5154),L=_(13),R=_(8929),c=_(1043),P=_(3244),v=_(6471),U=_(8333),it=_(1650);function j(n){return{[c.WB.Mobility]:{fixed:!1,value:n},[c.WB.Resilience]:{fixed:!1,value:n},[c.WB.Recovery]:{fixed:!1,value:n},[c.WB.Discipline]:{fixed:!1,value:n},[c.WB.Intellect]:{fixed:!1,value:n},[c.WB.Strength]:{fixed:!1,value:n}}}class et{constructor(){this.characterClass=0,this.addConstent1Resilience=!1,this.assumeClassItemIsArtifice=!1,this.assumeEveryLegendaryIsArtifice=!1,this.assumeEveryExoticIsArtifice=!1,this.disabledItems=[],this.minimumStatTiers={[c.WB.Mobility]:{fixed:!1,value:0},[c.WB.Resilience]:{fixed:!1,value:0},[c.WB.Recovery]:{fixed:!1,value:0},[c.WB.Discipline]:{fixed:!1,value:0},[c.WB.Intellect]:{fixed:!1,value:0},[c.WB.Strength]:{fixed:!1,value:0}},this.maximumStatMods=5,this.allowExactStats=!1,this.maximumModSlots={[v.y.ArmorSlotHelmet]:{fixed:!1,value:5},[v.y.ArmorSlotGauntlet]:{fixed:!1,value:5},[v.y.ArmorSlotChest]:{fixed:!1,value:5},[v.y.ArmorSlotLegs]:{fixed:!1,value:5},[v.y.ArmorSlotClass]:{fixed:!1,value:5},[v.y.ArmorSlotNone]:{fixed:!1,value:5}},this.putArtificeMods=!0,this.useFotlArmor=!0,this.allowBlueArmorPieces=!0,this.ignoreSunsetArmor=!1,this.includeVendorRolls=!1,this.includeCollectionRolls=!1,this.assumeLegendariesMasterworked=!0,this.assumeExoticsMasterworked=!0,this.assumeClassItemMasterworked=!0,this.onlyUseMasterworkedExotics=!1,this.onlyUseMasterworkedLegendaries=!1,this.modOptimizationStrategy=it.w.None,this.limitParsedResults=!0,this.tryLimitWastedStats=!1,this.onlyShowResultsWithNoWastedStats=!1,this.showWastedStatsColumn=!1,this.showPotentialTierColumn=!1,this.selectedModElement=U.O.Stasis,this.enabledMods=[],this.selectedExotics=[],this.ignoreExistingExoticArtificeSlots=!1,this.armorPerks={[v.y.ArmorSlotHelmet]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotGauntlet]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotChest]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotLegs]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotClass]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotNone]:{fixed:!0,value:c.Pn.None}}}static buildEmptyConfiguration(){return{ignoreExistingExoticArtificeSlots:!1,allowExactStats:!1,enabledMods:[],disabledItems:[],addConstent1Resilience:!1,assumeEveryLegendaryIsArtifice:!1,assumeEveryExoticIsArtifice:!1,assumeClassItemIsArtifice:!1,putArtificeMods:!0,useFotlArmor:!1,maximumStatMods:P.Qj,onlyUseMasterworkedExotics:!1,onlyUseMasterworkedLegendaries:!1,ignoreSunsetArmor:!1,includeCollectionRolls:!1,includeVendorRolls:!1,allowBlueArmorPieces:!0,assumeLegendariesMasterworked:!0,assumeExoticsMasterworked:!0,assumeClassItemMasterworked:!0,limitParsedResults:!0,modOptimizationStrategy:it.w.None,tryLimitWastedStats:!1,onlyShowResultsWithNoWastedStats:!1,showWastedStatsColumn:!1,showPotentialTierColumn:!1,characterClass:0,selectedModElement:U.O.Stasis,selectedExotics:[],maximumModSlots:{[v.y.ArmorSlotHelmet]:{fixed:!1,value:5},[v.y.ArmorSlotGauntlet]:{fixed:!1,value:5},[v.y.ArmorSlotChest]:{fixed:!1,value:5},[v.y.ArmorSlotLegs]:{fixed:!1,value:5},[v.y.ArmorSlotClass]:{fixed:!1,value:5},[v.y.ArmorSlotNone]:{fixed:!1,value:5}},armorPerks:{[v.y.ArmorSlotHelmet]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotGauntlet]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotChest]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotLegs]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotClass]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotNone]:{fixed:!0,value:c.Pn.None}},minimumStatTiers:j(0)}}}var w=(()=>{return(n=w||(w={}))[n.Inventory=0]="Inventory",n[n.Collections=1]="Collections",n[n.Vendor=2]="Vendor",w;var n})();function Tt(n,i,e){if(!n)throw new Error("Missing manifest item");const o=Object.assign({id:-1,itemInstanceId:i,mayBeBugged:!1,masterworked:!1,energyLevel:0,mobility:0,resilience:0,recovery:0,discipline:0,intellect:0,strength:0,source:e,created_at:Date.now(),updated_at:Date.now()},n);return o.id=void 0,(2545426109==n.hash||199733460==n.hash||3224066584==n.hash)&&(o.slot=v.y.ArmorSlotHelmet),o}function vt(n,i){n.mobility=i[2996146975],n.resilience=i[392767087],n.recovery=i[1943323491],n.discipline=i[1735777505],n.intellect=i[144602215],n.strength=i[4244567218]}function _t(n){return n.mobility+n.resilience+n.recovery+n.discipline+n.intellect+n.strength}var Ot=_(6982),Zt=_(4682);let I=(()=>{class n extends Zt.v{constructor(e){var o;super(),o=this,this.auth=e,this.version(this.verno).upgrade(function(){var a=(0,x.Z)(function*(s){o.auth.clearManifestInfo()});return function(s){return a.apply(this,arguments)}}()),this.auth.logoutEvent.subscribe(function(){var a=(0,x.Z)(function*(s){yield o.clearDatabase()});return function(s){return a.apply(this,arguments)}}())}initialize(){this.open(),this.auth.clearManifestInfo()}writeManifestArmor(e,o){var a=this;return(0,x.Z)(function*(){yield a.manifestArmor.clear(),yield a.manifestArmor.bulkPut(e),localStorage.setItem("LastManifestUpdate",Date.now().toString()),localStorage.setItem("last-manifest-db-name",a.manifestArmor.db.name),localStorage.setItem("last-manifest-revision",g.N.revision),localStorage.setItem("last-manifest-version",o)})()}clearDatabase(){var e=this;return(0,x.Z)(function*(){localStorage.removeItem("LastManifestUpdate"),localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("last-manifest-revision"),localStorage.removeItem("last-manifest-db-name"),yield e.inventoryArmor.clear()})()}resetDatabase(e=!0){var o=this;return(0,x.Z)(function*(){localStorage.removeItem("LastManifestUpdate"),localStorage.removeItem("last-manifest-revision"),localStorage.removeItem("last-manifest-db-name"),localStorage.removeItem("vendor-next-refresh-time"),localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("last-armor-db-name"),yield o.delete(),e&&o.initialize()})()}lastManifestUpdate(){const e=localStorage.getItem("LastManifestUpdate"),o=localStorage.getItem("last-manifest-version"),a=localStorage.getItem("last-manifest-revision"),s=localStorage.getItem("last-manifest-db-name");return e&&a&&s&&o&&localStorage.getItem("last-manifest-revision")===g.N.revision&&s===this.inventoryArmor.db.name?{updatedAt:parseInt(e),version:o}:void 0}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var E=_(9598),N=_(443);const X={outputEncoding:"Base64"},lt={inputEncoding:"Base64",outputEncoding:"String"};let z=(()=>{class n{constructor(){this.__configuration=this.loadCurrentConfiguration(),this._configuration=new Mt.X(this.__configuration),this.configuration=this._configuration.asObservable(),this._storedConfigurations=new Mt.X(this.listSavedConfigurations()),this.storedConfigurations=this._storedConfigurations.asObservable()}get readonlyConfigurationSnapshot(){return Object.assign(this.__configuration,{})}modifyConfiguration(e){e(this.__configuration),this.saveCurrentConfiguration(this.__configuration)}saveConfiguration(e,o){let a=this.listSavedConfigurations(),s=this.listSavedConfigurations().map((m,p)=>[m,p]).filter(m=>m[0].name==e)[0];s&&a.splice(s[1],1),a.push({configuration:o,name:e,version:g.N.version}),a=a.sort((m,p)=>m.namep.name?1:0);const r=E.compress(JSON.stringify(a),X);localStorage.setItem("storedConfigurations",r),this._storedConfigurations.next(a)}doesSavedConfigurationExist(e){return this.listSavedConfigurations().filter(o=>o.name==e).length>0}loadSavedConfiguration(e){let o=this.listSavedConfigurations().filter(a=>a.name==e)[0];return!!o&&(this.saveCurrentConfiguration(o.configuration),!0)}checkAndFixOldSavedConfigurations(e){if(e.configuration=Object.assign(et.buildEmptyConfiguration(),e.configuration),e.configuration.hasOwnProperty("minimumStatTier")){let o=e.configuration.minimumStatTier;e.configuration.minimumStatTiers[c.WB.Mobility].value=o[c.WB.Mobility],e.configuration.minimumStatTiers[c.WB.Resilience].value=o[c.WB.Resilience],e.configuration.minimumStatTiers[c.WB.Recovery].value=o[c.WB.Recovery],e.configuration.minimumStatTiers[c.WB.Discipline].value=o[c.WB.Discipline],e.configuration.minimumStatTiers[c.WB.Intellect].value=o[c.WB.Intellect],e.configuration.minimumStatTiers[c.WB.Strength].value=o[c.WB.Strength],delete e.configuration.minimumStatTier}if(e.configuration.hasOwnProperty("selectedExoticHash")&&(e.configuration.selectedExotics=[e.configuration.selectedExoticHash],delete e.configuration.selectedExoticHash),e.configuration.hasOwnProperty("maximumStatMods")){for(let a=e.configuration.maximumStatMods;a<5;a++)e.configuration.maximumModSlots[1+a].value=0;delete e.configuration.maximumStatMods}e.configuration.enabledMods=e.configuration.enabledMods.filter(o=>!!N.F[o]),e.configuration.limitParsedResults=!0,e.configuration.addConstent1Resilience=!1}listSavedConfigurations(){let e;try{e=localStorage.getItem("storedConfigurations")||"[]","["!=e.substr(0,1)&&(e=E.decompress(e,lt))}catch{e=[]}let o=JSON.parse(e)||[];return o=o.sort((a,s)=>a.names.name?1:0),o.forEach(a=>this.checkAndFixOldSavedConfigurations(a)),o}deleteStoredConfiguration(e){let o=this.listSavedConfigurations(),a=this.listSavedConfigurations().map((s,r)=>[s,r]).filter(s=>s[0].name==e)[0];a&&o.splice(a[1],1),localStorage.setItem("storedConfigurations",E.compress(JSON.stringify(o),X)),this._storedConfigurations.next(o)}saveCurrentConfigurationToName(e){this.saveConfiguration(e,this.__configuration)}saveCurrentConfiguration(e){console.debug("write configuration",e),this.__configuration=Object.assign(et.buildEmptyConfiguration(),e),this.__configuration.enabledMods=[].concat(this.__configuration.enabledMods),this.__configuration.minimumStatTiers=Object.assign({},this.__configuration.minimumStatTiers);const o=E.compress(JSON.stringify(this.__configuration),X);localStorage.setItem("currentConfig",o),this._configuration.next(Object.assign({},this.__configuration))}loadCurrentConfiguration(){let e;try{e=localStorage.getItem("currentConfig")||"{}","{"!=e.substr(0,1)&&(e=E.decompress(e,lt))}catch{e={}}var o={name:"dummy",version:"1",configuration:JSON.parse(e)};return this.checkAndFixOldSavedConfigurations(o),o.configuration}getCurrentConfigBase64Compressed(){let e=localStorage.getItem("currentConfig")||"{}";return"{"==e.substr(0,1)&&(e=E.compress(e,{outputEncoding:"Base64"})),e}getAllStoredConfigurationsBase64Compressed(){let e=localStorage.getItem("storedConfigurations")||"[]";return"["==e.substr(0,1)&&(e=E.compress(e,{outputEncoding:"Base64"})),e}getStoredConfigurationBase64Compressed(e){let o=this.listSavedConfigurations().filter(a=>a.name==e)[0];return o?E.compress(JSON.stringify(o),{outputEncoding:"Base64"}):""}resetCurrentConfiguration(){this.saveCurrentConfiguration(et.buildEmptyConfiguration())}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var tt=_(8012),y=_(1016),q=_(9973);let H=(()=>{class n{constructor(e,o,a){this.authService=e,this.http=o,this.status=a}$httpWithoutBearerToken(e){var o=this;return(0,x.Z)(function*(){return o.$http(e,!0,!1,2)})()}$httpWithoutApiKey(e){var o=this;return(0,x.Z)(function*(){return o.$http(e,!1,!1,2)})()}$httpPost(e){var o=this;return(0,x.Z)(function*(){return o.http.post(e.url,e.body,{params:e.params,headers:{"X-API-Key":g.N.apiKey,Authorization:"Bearer "+o.authService.accessToken}}).pipe((0,q.X)(2)).toPromise().catch(function(){var a=(0,x.Z)(function*(s){console.error(s)});return function(s){return a.apply(this,arguments)}}())})()}$http(e,o=!0,a=!0,s=2){var r=this;return(0,x.Z)(function*(){let m={params:e.params,headers:{}};return o&&(m.headers["X-API-Key"]=g.N.apiKey),a&&(m.headers.Authorization="Bearer "+r.authService.accessToken),r.http.get(e.url,m).pipe((0,q.X)(s)).toPromise().then(p=>(r.status.clearApiError(),p)).catch(function(){var p=(0,x.Z)(function*(C){console.error(C),g.N.offlineMode?console.debug("Offline mode, ignoring API error"):("SystemDisabled"==C.error?.ErrorStatus&&(console.info("System is disabled. Revoking auth, must re-login"),r.status.setApiError()),"Internal Server Error"!=C.ErrorStatus&&console.info("API-Error"))});return function(C){return p.apply(this,arguments)}}())})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(Ut.eN),t.LFG(Ct))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var at=_(9891);let Dt=(()=>{class n{constructor(e,o,a){this.http=e,this.status=o,this.auth=a,this.auth.logoutEvent.subscribe(s=>this.clearCachedData())}clearCachedData(){localStorage.removeItem("auth-membershipInfo"),localStorage.removeItem("auth-membershipInfo-date")}getMembershipDataForCurrentUser(){var e=this;return(0,x.Z)(function*(){var o=JSON.parse(localStorage.getItem("auth-membershipInfo")||"null"),a=JSON.parse(localStorage.getItem("auth-membershipInfo-date")||"0");if(o&&Date.now()-a<864e5)return console.log("getMembershipDataForCurrentUser -> loading cached! "),o;console.info("BungieApiService","getMembershipDataForCurrentUser");let r=(yield(0,at.Rm)(p=>e.http.$http(p)))?.Response.destinyMemberships;console.info("Memberships:",r),r=r.filter(p=>0==p.crossSaveOverride||p.crossSaveOverride==p.membershipType),console.info("Filtered Memberships:",r);let m=null;if(1==r?.length)m=r?.[0];else{let p=0,C=0;for(let d in r){const S=r?.[d],F=yield(0,tt.Ai)(G=>e.http.$http(G),{components:[100],membershipType:S.membershipType,destinyMembershipId:S.membershipId});if(F&&F.Response?.profile.data?.dateLastPlayed){let G=Date.parse(F.Response?.profile.data?.dateLastPlayed);G>C&&(C=G,p=d)}}console.info("getMembershipDataForCurrentUser","Selected membership data for the last logged in membership."),m=r?.[p]}return localStorage.setItem("auth-membershipInfo",JSON.stringify(m)),localStorage.setItem("auth-membershipInfo-date",JSON.stringify(Date.now())),m})()}getCharacters(){var e=this;return(0,x.Z)(function*(){let o=yield e.getMembershipDataForCurrentUser();if(!o)return e.status.setApiError(),[];const a=yield(0,tt.Ai)(s=>e.http.$http(s),{components:[200],membershipType:o.membershipType,destinyMembershipId:o.membershipId});return a?.Response.characters.data&&e.status.clearApiError(),Object.values(a?.Response.characters.data||{}).map(s=>({characterId:s.characterId,clazz:s.classType,emblemUrl:s.emblemBackgroundPath,lastPlayed:Date.parse(s.dateLastPlayed)}))||[]})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(H),t.LFG(Ct),t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function kt(n,i,e,o){const a={2996146975:0,392767087:0,1943323491:0,1735777505:0,144602215:0,4244567218:0};for(let r of i)r.statTypeHash in a&&(a[r.statTypeHash]+=r.value);if(n.slot!=v.y.ArmorSlotClass){const r=[e[6],e[7],e[8],e[9]];n.statPlugHashes=r;var s=r.map(m=>o[m||""]).filter(m=>null!=m);for(let m of s)for(let p of m.investmentStats)p.statTypeHash in a&&(a[p.statTypeHash]+=p.value)}vt(n,a)}let bt=(()=>{class n{constructor(e,o,a,s,r){var m=this;this.status=e,this.http=o,this.db=a,this.config=s,this.membership=r,this.config_assumeEveryLegendaryIsArtifice=!1,this.config.configuration.subscribe(function(){var p=(0,x.Z)(function*(C){m.config_assumeEveryLegendaryIsArtifice=C.assumeEveryLegendaryIsArtifice});return function(C){return p.apply(this,arguments)}}())}transferItem(e,o,a=!1){var s=this;return(0,x.Z)(function*(){let r=yield s.membership.getMembershipDataForCurrentUser();if(!r)return s.status.setApiError(),!1;s.status.clearApiError();let m=yield(0,tt.rV)(C=>s.http.$http(C),{membershipType:r.membershipType,destinyMembershipId:r.membershipId,itemInstanceId:e,components:[307]}),p=!1;if(!m)return!1;if(m.Response.characterId!=o){2!=m.Response.item.data?.location&&(yield s.moveItemToVault(m.Response.item.data?.itemInstanceId||""),m=yield(0,tt.rV)(d=>s.http.$http(d),{membershipType:r.membershipType,destinyMembershipId:r.membershipId,itemInstanceId:e,components:[307]}));const C={characterId:o,membershipType:3,itemId:m?.Response.item.data?.itemInstanceId||"",itemReferenceHash:m?.Response.item.data?.itemHash||0,stackSize:1,transferToVault:!1};p=!!(yield(0,tt.ux)(d=>s.http.$httpPost(d),C))}if(a){let C={characterId:o,membershipType:3,stackSize:1,itemId:m?.Response.item.data?.itemInstanceId||"",itemReferenceHash:m?.Response.item.data?.itemHash||0};p=!!(yield(0,tt.DH)(d=>s.http.$httpPost(d),C))}return p})()}moveItemToVault(e){var o=this;return(0,x.Z)(function*(){console.info("moveItemToVault",e);let a=yield o.membership.getMembershipDataForCurrentUser();if(!a)return void o.status.setApiError();o.status.clearApiError();const s=yield(0,tt.rV)(m=>o.http.$http(m),{membershipType:a.membershipType,destinyMembershipId:a.membershipId,itemInstanceId:e,components:[307]}),r={characterId:s?.Response.characterId||"",membershipType:3,itemId:s?.Response.item.data?.itemInstanceId||"",itemReferenceHash:s?.Response.item.data?.itemHash||0,stackSize:1,transferToVault:!0};yield(0,tt.ux)(m=>o.http.$httpPost(m),r)})()}getUnlockedExoticArmor(e){var o=this;return(0,x.Z)(function*(){const a=(yield o.db.manifestCollectibles.toArray()).reduce((r,m)=>(r[m.hash]=m.itemHash,r),{}),s=Object.values(e).flatMap(r=>Object.entries(r.collectibles??{})).filter(([r,{state:m}])=>0==(1&m)&&a[parseInt(r)]).map(([r,m])=>a[parseInt(r)]);return new Set(s)})()}updateArmorItems(e=!1){var o=this;return(0,x.Z)(function*(){if(g.N.offlineMode)return void console.info("BungieApiService","updateArmorItems","offline mode, skipping");if(!e&&localStorage.getItem("LastArmorUpdate")&&localStorage.getItem("last-armor-db-name")==o.db.inventoryArmor.db.name&&Date.now()-Number.parseInt(localStorage.getItem("LastArmorUpdate")||"0")<18e5)return;let a=yield o.membership.getMembershipDataForCurrentUser();if(!a)return void o.status.setApiError();o.status.clearApiError(),console.info("BungieApiService","getProfile");let s=yield(0,tt.Ai)(b=>o.http.$http(b),{components:[205,201,103,102,304,300,302,305,308,800],membershipType:a.membershipType,destinyMembershipId:a.membershipId});const r=yield o.getUnlockedExoticArmor(s.Response.characterCollectibles.data??{});let m=s.Response.profileInventory.data?.items||[];for(let b in s.Response.characterEquipment.data)m=m.concat(s.Response.characterEquipment.data[b].items);for(let b in s.Response.characterInventories.data)m=m.concat(s.Response.characterInventories.data[b].items);var p=m.filter(b=>[3853748946,4257549984,4257549985,3467984096].indexOf(b.itemHash)>-1).reduce((b,ut)=>(ut.itemHash.toString()in b||(b[ut.itemHash]=0),b[ut.itemHash]+=ut.quantity,b),{});let C=s.Response.profileCurrencies.data?.items.filter(b=>3159615086==b.itemHash)||[];p[3159615086]=C.length>0?C[0].quantity:0,localStorage.setItem("stored-materials",JSON.stringify(p));const d=new Set(m.map(b=>b.itemHash));r.forEach(b=>d.add(b));let S=yield o.db.manifestArmor.toArray();const F=S.filter(b=>d.has(b.hash)),G=S.filter(b=>19==b.itemType);let K=Object.fromEntries(F.map(b=>[b.hash,b])),ct=Object.fromEntries(G.map(b=>[b.hash,b])),O=m.filter(b=>!!b.itemInstanceId).filter(b=>3284755031!==b.bucketHash).filter(b=>!!((s.Response.itemComponents.stats.data||{})[b.itemInstanceId||""]?.stats||{})[392767087]).filter(b=>!!((s.Response.itemComponents.instances.data||{})[b.itemInstanceId||""]||{}).energy).map(b=>{let nt=(s.Response.itemComponents.instances.data||{})[b.itemInstanceId||""]||{};if(!K[b.itemHash])return console.warn("Missing manifest item for item hash",b.itemHash),null;let V=Tt(K[b.itemHash],b.itemInstanceId||"",w.Inventory);V.masterworked=!!nt.energy&&10==nt.energy.energyCapacity,V.energyLevel=nt.energy?nt.energy.energyCapacity:0;const me=(s.Response.itemComponents.sockets.data||{})[b.itemInstanceId]?.sockets.map(Xt=>Xt.plugHash)??[];return kt(V,K[b.itemHash]?.investmentStats??[],me,ct),V.perk==c.Pn.SlotArtifice?(((s.Response.itemComponents.perks.data||{})[b.itemInstanceId||""]||{}).perks||[]).filter(ye=>229248542==ye.perkHash).length>0||(V.perk=c.Pn.None):V.isExotic&&me.filter(ie=>720825311==ie).length>0&&(V.perk=c.Pn.SlotArtifice),V}).filter(Boolean);const B=Array.from(r).map(b=>{const ut=K[b];if(!ut)return console.error("Couldn't find manifest item for exotic",b),null;const nt=Tt(ut,`c${ut.hash}`,w.Collections);return kt(nt,ut.investmentStats,ut.socketEntries.map(V=>V.singleInitialItemHash),ct),nt}).filter(Boolean);return O=O.concat(B),O=O.filter(b=>!b.statPlugHashes||null!=b.statPlugHashes[0]),yield o.updateDatabaseItems(O),localStorage.setItem("LastArmorUpdate",Date.now().toString()),localStorage.setItem("last-armor-db-name",o.db.inventoryArmor.db.name),o.status.clearApiError(),O})()}updateDatabaseItems(e){var o=this;return(0,x.Z)(function*(){yield o.db.inventoryArmor.filter(r=>r.source==w.Inventory).delete();const s=(yield o.db.inventoryArmor.toArray()).filter(r=>null==r.source||null==r.source).map(r=>r.id);yield o.db.inventoryArmor.bulkDelete(s),yield o.db.inventoryArmor.bulkAdd(e)})()}getArmorPerk(e){if(g.N.featureFlags.enableGuardianGamesFeatures&&(1013401891===e.hash||366019830===e.hash||537041732==e.hash))return c.Pn.GuardianGamesClassItem;const o=e.sockets?.socketEntries??[];if(o.find(a=>1402==a.reusablePlugSetHash)||o.find(a=>1403==a.reusablePlugSetHash))return c.Pn.SlotArtifice;for(const a of o){let s=a.singleInitialItemHash;if(!s)continue;s=c.ED[s]||s;const r=Object.entries(c.DH).find(m=>m[1]==s);if(r)return parseInt(r[0])}return c.Pn.None}updateVendorNames(e){var o=this;return(0,x.Z)(function*(){const s=Object.values(e.DestinyVendorDefinition).map(r=>({vendorId:r.hash,vendorName:r.displayProperties.name}));yield o.db.vendorNames.clear(),yield o.db.vendorNames.bulkAdd(s)})()}updateAbilities(e){return(0,x.Z)(function*(){const o=Object.values(e.DestinyInventoryItemDefinition).filter(a=>a.plug?.plugCategoryIdentifier?.match(/\.(supers|grenades|class_abilities|melee|aspects|fragments)$/));localStorage.setItem("allAbilities",JSON.stringify(o))})()}updateExoticCollectibles(e){var o=this;return(0,x.Z)(function*(){const a=Object.entries(e.DestinyCollectibleDefinition).filter(([s,r])=>{const m=e.DestinyInventoryItemDefinition[r.itemHash];return"Exotic"==m?.inventory?.tierTypeName&&2==m?.itemType}).map(([s,r])=>({hash:parseInt(s),itemHash:r.itemHash}));console.log("Storing",a.length,"exotic armor hashes"),yield o.db.manifestCollectibles.clear(),yield o.db.manifestCollectibles.bulkPut(a)})()}updateManifest(e=!1){var o=this;return(0,x.Z)(function*(){if(g.N.offlineMode)return void console.info("BungieApiService","updateManifest","offline mode, skipping");const a=o.db.lastManifestUpdate();let s=null;if(a&&!e){if(Date.now()-a.updatedAt>9e5&&(s=yield(0,tt.KN)(d=>o.http.$httpWithoutBearerToken(d)),a.version==s.Response.version))return void console.debug("bungieApiService - updateManifest","Abort updateManifest due to fitting ManifestVersion");if(Date.now()-a.updatedAt<864e5)return void console.debug("bungieApiService - updateManifest","Abort updateManifest due to fitting Date")}null==s&&(s=yield(0,tt.KN)(C=>o.http.$httpWithoutBearerToken(C)));const r=s.Response.version,m=yield(0,y.xG)(C=>o.http.$httpWithoutApiKey(C),{destinyManifest:s.Response,tableNames:["DestinyInventoryItemDefinition","DestinyCollectibleDefinition","DestinyVendorDefinition"],language:"en"});console.log("manifestTables.DestinyInventoryItemDefinition",m.DestinyInventoryItemDefinition),yield o.updateExoticCollectibles(m),yield o.updateVendorNames(m),yield o.updateAbilities(m);let p=Object.entries(m.DestinyInventoryItemDefinition).filter(([C,d])=>19==d.itemType||2==d.itemType||3448274439==d.inventory?.bucketTypeHash||3551918588==d.inventory?.bucketTypeHash||14239492==d.inventory?.bucketTypeHash||20886954==d.inventory?.bucketTypeHash||1585787867==d.inventory?.bucketTypeHash&&6==d.inventory.tierType).map(([C,d])=>{let S=v.y.ArmorSlotNone;(d.itemCategoryHashes?.indexOf(45)||-1)>-1&&(S=v.y.ArmorSlotHelmet),(d.itemCategoryHashes?.indexOf(46)||-1)>-1&&(S=v.y.ArmorSlotGauntlet),(d.itemCategoryHashes?.indexOf(47)||-1)>-1&&(S=v.y.ArmorSlotChest),(d.itemCategoryHashes?.indexOf(48)||-1)>-1&&(S=v.y.ArmorSlotLegs),(d.itemCategoryHashes?.indexOf(49)||-1)>-1&&(S=v.y.ArmorSlotClass);const F=(d.sockets?.socketEntries.filter(B=>2512726577==B.socketTypeHash||1108765570==B.socketTypeHash||959256494==B.socketTypeHash||2512726577==B.socketTypeHash||3219375296==B.socketTypeHash||968742181==B.socketTypeHash)||[]).length>0,G="Exotic"==d.inventory?.tierTypeName?1:0;let K=null;G&&(K=(d.sockets?.socketEntries.filter(b=>965959289==b.socketTypeHash).map(b=>b.singleInitialItemHash)||[])[0]);var ct=[1862490585,1862490584,1862490584,1862490583,2471437758],O=d.quality?.versions.filter(B=>ct.includes(B.powerCapHash)).length==d.quality?.versions.length;return{hash:d.hash,icon:d.displayProperties.icon,watermarkIcon:(d.quality?.displayVersionWatermarkIcons||[null])[0],name:d.displayProperties.name,description:d.displayProperties.description,clazz:d.classType,armor2:F,slot:S,isExotic:G,isSunset:O,rarity:d.inventory?.tierType,exoticPerkHash:K,itemType:d.itemType,itemSubType:d.itemSubType,investmentStats:d.investmentStats,perk:o.getArmorPerk(d),socketEntries:d.sockets?.socketEntries??[]}});return yield o.db.writeManifestArmor(p,r),m})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Ct),t.LFG(H),t.LFG(I),t.LFG(z),t.LFG(Dt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const Pt="vendor-next-refresh-time",Qt=[{vendorHash:"3751514131",parentHash:"2190858386"}];let ae=(()=>{class n{constructor(e,o,a,s){this.membership=e,this.http=o,this.db=a,this.auth=s,this.auth.logoutEvent.subscribe(r=>this.clearCachedData())}clearCachedData(){localStorage.removeItem(Pt),this.db.inventoryArmor.where({source:w.Vendor}).delete()}getVendorArmorItemsForCharacter(e,o,a){var s=this;return(0,x.Z)(function*(){const r=yield(0,tt.dH)(K=>s.http.$http(K),{components:[400,402],characterId:a,membershipType:o.membershipType,destinyMembershipId:o.membershipId,filter:0}),m=Object.entries(r.Response.vendors.data),p=new Map(m),d=m.filter(([K,ct])=>ct.enabled).filter(([K,ct])=>{const O=Qt.find(B=>B.vendorHash==K)?.parentHash;return null==O||(console.debug(`${K} has parent ${O} with value ${p.get(O)?.enabled}`),p.get(O)?.enabled??!1)}).filter(([K,ct])=>void 0!==Object.entries(r.Response.sales.data?.[K]?.saleItems??{}).find(([O,B])=>1==e[B.itemHash]?.armor2)).map(([K,ct])=>({vendorHash:K,refreshDate:new Date(ct.nextRefreshDate).getTime()})),S=[],F=Math.min(...d.map(K=>K.refreshDate)),G=d.map(K=>{let ct=K.vendorHash;return(0,tt.wZ)(O=>s.http.$http(O),{components:[304],characterId:a,membershipType:o.membershipType,destinyMembershipId:o.membershipId,vendorHash:parseInt(ct)}).then(O=>{const B=r.Response.sales.data?.[ct]?.saleItems??{},b=O.Response.itemComponents.stats.data??{};for(const[ut,nt]of Object.entries(B)){const V=e[nt.itemHash],xe=b[parseInt(ut)];if(128==(128&nt.augments)||!V||!xe)return;const me=Object.values(xe.stats).reduce((ie,{statHash:Pe,value:ye})=>(ie[Pe]=ye,ie),{}),Xt=Tt(V,`v${ct}-${nt.itemHash}`,w.Vendor);vt(Xt,me),S.push(Xt)}},O=>{console.error(`Failed to get vendor: ${O}`)})});return yield Promise.all(G),console.log(`Collected ${S.length} vendor armor items for character ${a}`),{items:S,nextRefreshDate:F}})()}isVendorCacheValid(){const e=localStorage.getItem(Pt);if(!e)return!1;const o=new Date(e);return!!isFinite(o.getTime())&&(console.log("VENDOR C",{nextVendorRefresh:o,finite:isFinite(o.getTime()),ok:o>new Date,now:new Date}),o>new Date)}writeVendorCache(e,o){var a=this;return(0,x.Z)(function*(){console.log(`Writing new vendor cache (${e.length} items), valid until ${o.toISOString()}`),yield a.db.inventoryArmor.where({source:w.Vendor}).delete(),yield a.db.inventoryArmor.bulkPut(e),localStorage.setItem(Pt,o.toISOString())})()}updateVendorArmorItemsCache(){var e=this;return(0,x.Z)(function*(){if(e.isVendorCacheValid())return console.log("Using vendor items cache"),!1;const o=yield e.membership.getMembershipDataForCurrentUser(),a=yield e.membership.getCharacters(),s=(yield e.db.manifestArmor.toArray()).filter(r=>2==r.itemType).reduce((r,m)=>(r[m.hash]=m,r),{});try{const r=yield Promise.all(a.map(({characterId:C})=>e.getVendorArmorItemsForCharacter(s,o,C))),m=r.flatMap(({items:C})=>C),p=Math.max(Math.min(...r.map(({nextRefreshDate:C})=>C)),Date.now()+6e5);return e.writeVendorCache(m,new Date(p)),!0}catch(r){console.error("Failed to update vendor armor items cache",r);const m=new Date;return m.setMinutes(m.getMinutes()+5),e.writeVendorCache([],new Date(m)),!1}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Dt),t.LFG(H),t.LFG(I),t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),At=(()=>{class n{constructor(e,o,a,s,r,m,p){var C=this;this.db=e,this.config=o,this.status=a,this.api=s,this.auth=r,this.router=m,this.vendors=p,this.allArmorResults=[],this.currentClass=3,this._calculationProgress=new R.xQ,this.calculationProgress=this._calculationProgress.asObservable(),this._config=et.buildEmptyConfiguration(),this.results=[],this.totalPermutationCount=0,this.resultMaximumTiers=[],this.resultStatCombo3x100=new Set,this.resultStatCombo4x100=new Set,this.selectedExotics=[],this.itemz=[],this.items=[],this.endResults=[],this.refreshing=!1,this._inventory=new A.t(1),this.inventory=this._inventory.asObservable(),this._manifest=new A.t(1),this.manifest=this._manifest.asObservable(),this._armorResults=new Mt.X({results:this.allArmorResults}),this.armorResults=this._armorResults.asObservable(),this.workers=[];let d=!1;m.events.pipe((0,L.b)(5)).subscribe(function(){var S=(0,x.Z)(function*(F){C.auth.refreshTokenExpired||(yield C.auth.autoRegenerateTokens()),r.isAuthenticated()&&F instanceof ot.m2&&(C.killWorkers(),C.clearResults(),console.debug("Trigger refreshAll due to router.events"),yield C.refreshAll(!d),d=!0)});return function(F){return S.apply(this,arguments)}}()),this.config.configuration.pipe((0,L.b)(500)).subscribe(function(){var S=(0,x.Z)(function*(F){C.auth.refreshTokenExpired||(yield C.auth.autoRegenerateTokens()),r.isAuthenticated()&&(C._config=F,console.debug("Trigger refreshAll due to config change"),yield C.refreshAll(!d),d=!0)});return function(F){return S.apply(this,arguments)}}())}clearResults(){this.allArmorResults=[],this._armorResults.next({results:this.allArmorResults,totalResults:0,totalTime:0,itemCount:0,maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:[],statCombo4x100:[]})}shouldCalculateResults(){return"/"==this.router.url}refreshAll(e=!1,o=!1){var a=this;return(0,x.Z)(function*(){if(!a.refreshing){console.debug("Execute refreshAll");try{a.refreshing=!0;let s=!1;try{let r=yield a.updateManifest(o);s=yield a.updateInventoryItems(r||e),a.updateVendorsAsync()}catch(r){console.error(r)}yield a.triggerArmorUpdateAndUpdateResults(s)}finally{a.refreshing=!1}}})()}triggerArmorUpdateAndUpdateResults(e=!1,o=!0){var a=this;return(0,x.Z)(function*(){e&&a._inventory.next(null),a.shouldCalculateResults()&&(yield a.updateResults())})()}updateVendorsAsync(){this.status.getStatus().updatingVendors||this.vendors.isVendorCacheValid()||(this.status.modifyStatus(e=>e.updatingVendors=!0),this.vendors.updateVendorArmorItemsCache().then(e=>{!e||this.triggerArmorUpdateAndUpdateResults(e,this._config.includeVendorRolls)}).finally(()=>{this.status.modifyStatus(e=>e.updatingVendors=!1)}))}killWorkers(){console.log("killing workers"),this.workers.forEach(e=>{e.terminate()}),this.workers=[]}estimateCombinationsToBeChecked(e,o,a,s){let r=0;const m=e.filter(ct=>ct.isExotic).length,p=e.length-m,C=o.filter(ct=>ct.isExotic).length,d=o.length-C,S=a.filter(ct=>ct.isExotic).length,F=a.length-S,G=s.filter(ct=>ct.isExotic).length,K=s.length-G;return r+=m*d*F*K,r+=p*C*F*K,r+=p*d*S*K,r+=p*d*F*G,r+=p*d*F*K,r}updateResults(e=3){var o=this;return(0,x.Z)(function*(){o.clearResults(),o.killWorkers();try{console.time("updateResults with WebWorker"),o.status.modifyStatus(d=>d.calculatingResults=!0);let a=0;o.results=[],o.totalPermutationCount=0,o.resultMaximumTiers=[],o.resultStatCombo3x100=new Set,o.resultStatCombo4x100=new Set;const s=Date.now();let r=o._config;o.selectedExotics=yield Promise.all(r.selectedExotics.filter(d=>d!=P.Io).map(function(){var d=(0,x.Z)(function*(S){return yield o.db.manifestArmor.where("hash").equals(S).first()});return function(S){return d.apply(this,arguments)}}())),o.selectedExotics=o.selectedExotics.filter(d=>!!d),o.itemz=yield o.db.inventoryArmor.where("clazz").equals(r.characterClass).distinct().toArray(),o.itemz=o.itemz.filter(d=>d.slot!=v.y.ArmorSlotNone).filter(d=>-1==r.disabledItems.indexOf(d.itemInstanceId)).filter(d=>{switch(d.source){case w.Collections:return r.includeCollectionRolls;case w.Vendor:return r.includeVendorRolls;default:return!0}}).filter(d=>-1==r.selectedExotics.indexOf(P.Io)||!d.isExotic).filter(d=>1!=o.selectedExotics.length||d.isExotic&&o.selectedExotics[0].hash==d.hash||!d.isExotic&&o.selectedExotics[0].slot!=d.slot).filter(d=>!r.onlyUseMasterworkedExotics||!(6==d.rarity&&!d.masterworked)).filter(d=>!r.onlyUseMasterworkedLegendaries||!(5==d.rarity&&!d.masterworked)).filter(d=>r.allowBlueArmorPieces||6==d.rarity||5==d.rarity).filter(d=>!r.ignoreSunsetArmor||!d.isSunset).filter(d=>d.isExotic||!r.armorPerks[d.slot].fixed||r.armorPerks[d.slot].value==c.Pn.None||r.armorPerks[d.slot].value==d.perk),o.itemz=o.itemz.filter(d=>d.source===w.Inventory||void 0===o.itemz.find(F=>F.source===w.Inventory&&function $(n,i){return n.slot===i.slot&&n.hash===i.hash&&n.mobility===i.mobility&&n.resilience===i.resilience&&n.recovery===i.recovery&&n.discipline===i.discipline&&n.intellect===i.intellect&&n.strength===i.strength}(d,F))),o.items=o.itemz.map(d=>({id:d.id,hash:d.hash,slot:d.slot,clazz:d.clazz,perk:d.perk,isExotic:!!d.isExotic,rarity:d.rarity,isSunset:d.isSunset,masterworked:d.masterworked,mobility:d.mobility,resilience:d.resilience,recovery:d.recovery,discipline:d.discipline,intellect:d.intellect,strength:d.strength,source:d.source})),e=o.estimateRequiredThreads(),console.log("nthreads for calculation",e);const m=[...Array(e).keys()].map(()=>0),p=[...Array(e).keys()].map(()=>0);let C=0;o.items=o.items.sort((d,S)=>_t(S)-_t(d)),o._calculationProgress.next(0);for(let d=0;dO+B,0),ct=p.reduce((O,B)=>O+B,0);if(p[0]>0&&p[1]>0&&p[2]>0){const O=ct/K*100;O>C+.25&&(C=O,o._calculationProgress.next(O))}if(null!=G.runtime){if(o.results.push(...G.results),1==G.done){a++,o.totalPermutationCount+=G.stats.permutationCount,o.resultMaximumTiers.push(G.runtime.maximumPossibleTiers);for(let O of G.runtime.statCombo3x100)o.resultStatCombo3x100.add(O);for(let O of G.runtime.statCombo4x100)o.resultStatCombo4x100.add(O)}if(1==G.done&&a==e){o.status.modifyStatus(O=>O.calculatingResults=!1),o._calculationProgress.next(0),o.endResults=[];for(let O of o.results){let B=O.armor.map(nt=>o.itemz.find(V=>V.id==nt)),b=B.find(nt=>nt.isExotic),ut={exotic:null==b?[]:[{icon:b?.icon,watermark:b?.watermarkIcon,name:b?.name,hash:b?.hash}],artifice:O.usedArtifice,modCount:O.usedMods.length,modCost:O.usedMods.reduce((nt,V)=>nt+c.K9[V][2],0),mods:O.usedMods,stats:O.statsWithMods,statsNoMods:O.statsWithoutMods,tiers:(0,Ot.jG)(O.statsWithMods),waste:(0,Ot._1)(O.statsWithMods),items:B.reduce((nt,V)=>(nt[V.slot-1].push({energyLevel:V.energyLevel,hash:V.hash,itemInstanceId:V.itemInstanceId,name:V.name,exotic:!!V.isExotic,masterworked:V.masterworked,mayBeBugged:V.mayBeBugged,slot:V.slot,perk:V.perk,transferState:0,stats:[V.mobility,V.resilience,V.recovery,V.discipline,V.intellect,V.strength],source:V.source}),nt),[[],[],[],[],[]]),classItem:O.classItemPerk,usesCollectionRoll:B.some(nt=>nt.source===w.Collections),usesVendorRoll:B.some(nt=>nt.source===w.Vendor)};o.endResults.push(ut)}o._armorResults.next({results:o.endResults,totalResults:o.totalPermutationCount,itemCount:G.stats.itemCount,totalTime:Date.now()-s,maximumPossibleTiers:o.resultMaximumTiers.reduce((O,B)=>{for(let b=0;b<6;b++)O[b]Math.floor(Math.min(100,O)/10)),statCombo3x100:Array.from(o.resultStatCombo3x100).map(O=>{let B=[];for(let b=0;b<6;b++)(O&1<0&&B.push(b);return B})||[],statCombo4x100:Array.from(o.resultStatCombo4x100).map(O=>{let B=[];for(let b=0;b<6;b++)(O&1<0&&B.push(b);return B},[])||[]}),console.timeEnd("updateResults with WebWorker"),o.workers[d].terminate()}else 1==G.done&&a!=e&&o.workers[d].terminate()}});return function(F){return S.apply(this,arguments)}}(),o.workers[d].onerror=S=>{o.workers[d].terminate()},o.workers[d].postMessage({currentClass:o.currentClass,config:o._config,threadSplit:{count:e,current:d},items:o.items,selectedExotics:o.selectedExotics})}finally{}})()}estimateRequiredThreads(){const e=this.items.filter(F=>F.slot==v.y.ArmorSlotHelmet),o=this.items.filter(F=>F.slot==v.y.ArmorSlotGauntlet),a=this.items.filter(F=>F.slot==v.y.ArmorSlotChest),s=this.items.filter(F=>F.slot==v.y.ArmorSlotLegs),r=this.estimateCombinationsToBeChecked(e,o,a,s),m=Math.max(e.length,o.length,a.length,s.length);let p=1;this._config.tryLimitWastedStats&&this._config.modOptimizationStrategy!=it.w.None&&(p=.7);let d=25e4*p;return Math.max(3,Math.min(Math.max(1,Math.ceil(r/(5e4*p))),Math.ceil(r/d),Math.floor(.75*(navigator.hardwareConcurrency||2)),20,m))}getItemCountForClass(e,o){var a=this;return(0,x.Z)(function*(){let s=yield a.db.inventoryArmor.where("clazz").equals(e).toArray();return o&&(s=s.filter(r=>r.slot==o)),s=s.filter(r=>r.source==w.Inventory),s.length})()}getExoticsForClass(e,o){var a=this;return(0,x.Z)(function*(){let s=yield a.db.inventoryArmor.where("isExotic").equals(1).toArray();s=s.filter(m=>m.clazz==e&&m.armor2&&(!o||m.slot==o));let r=yield a.db.manifestArmor.where("isExotic").equals(1).toArray();return r=r.filter(m=>m.clazz==e&&m.armor2&&(!o||m.slot==o)),r.map(m=>{const p=s.filter(C=>C.hash==m.hash);return{item:m,inCollection:void 0!==p.find(C=>C.source===w.Collections),inInventory:void 0!==p.find(C=>C.source===w.Inventory),inVendor:void 0!==p.find(C=>C.source===w.Vendor)}})})()}updateManifest(e=!1){var o=this;return(0,x.Z)(function*(){if(o.status.getStatus().updatingManifest)return console.error("Already updating the manifest - abort"),!1;o.status.modifyStatus(s=>s.updatingManifest=!0);let a=yield o.api.updateManifest(e).finally(()=>{o.status.modifyStatus(s=>s.updatingManifest=!1)});return a&&o._manifest.next(null),!!a})()}updateInventoryItems(e=!1,o=0){var a=this;return(0,x.Z)(function*(){a.status.modifyStatus(s=>s.updatingInventory=!0);try{return!!(yield a.api.updateArmorItems(e).finally(()=>{a.status.modifyStatus(r=>r.updatingInventory=!1)}))}catch(s){return o>3?(alert("You encountered a strange error with the inventory update. Please log out and log in again. If that does not fix it, please message Mijago."),!1):(a.status.modifyStatus(r=>r.updatingInventory=!1),console.error(s),yield a.updateManifest(!0),yield a.updateInventoryItems(!0,o++))}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(I),t.LFG(z),t.LFG(Ct),t.LFG(bt),t.LFG(gt),t.LFG(ot.F0),t.LFG(ae))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const te="https://Database-Clarity.github.io/Character-Stats",Q=`${te}/versions/1.9/CharacterStatInfo-NI.json`,Jt=`${te}/update.json`,Ht="clarity-character-stats-version",Wt="clarity-character-stats";let jt=(()=>{class n{constructor(e,o){this.http=e,this.inv=o,this._characterStats=new Mt.X(null),this.characterStats=this._characterStats.asObservable(),this.inv.manifest.subscribe(a=>this.load())}load(){var e=this;return(0,x.Z)(function*(){try{yield e.loadCharacterStats()}catch(o){console.warn("Error loading Clarity data",o)}})()}fetchUpdateData(){var e=this;return(0,x.Z)(function*(){return e.http.get(Jt).toPromise()})()}loadCharacterStats(){var e=this;return(0,x.Z)(function*(){const o=localStorage.getItem(Wt);o&&e._characterStats.next(JSON.parse(o));const a=yield e.fetchUpdateData(),s=parseInt(localStorage.getItem(Ht)||"0");a&&a.lastUpdate>s&&("1.9"!==a.schemaVersion?console.warn("Unsupported live character stats schema version",a.schemaVersion):a&&void 0!==a.lastUpdate&&(yield e.fetchLiveCharacterStats().then(r=>{localStorage.setItem(Wt,JSON.stringify(r)),localStorage.setItem(Ht,a.lastUpdate.toString()),e._characterStats.next(r)})))})()}fetchLiveCharacterStats(){var e=this;return(0,x.Z)(function*(){return e.http.get(Q).toPromise()})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Ut.eN),t.LFG(At))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var dt=(()=>{return(n=dt||(dt={}))[n.Speed=1]="Speed",n[n.Percentage=2]="Percentage",n[n.Time=3]="Time",n[n.TimeMMSS=4]="TimeMMSS",n[n.PercentagePerSecond=5]="PercentagePerSecond",dt;var n})();let Gt=(()=>{class n{constructor(e){this.clarity=e,this.allStatEntries={},this.overrides=[],this.clarity.characterStats.subscribe(o=>{o&&this.updateCharacterStats(o)})}loadCharacterStats(){this.clarity.load()}updateCharacterStats(e){const o=(JSON.parse(window.localStorage.getItem("allAbilities"))||[]).reduce((a,s)=>(a.set(s.hash,s),a),new Map);this.overrides=Object.values(e).map(a=>a.Overrides).flat(),this.allStatEntries={Mobility:this.generateEntries(e.Mobility,o,[{key:"WalkSpeed",name:"Walk Speed",valueType:dt.Speed},{key:"StrafeSpeed",name:"Strafe Speed",valueType:dt.Speed},{key:"CrouchSpeed",name:"Crouch Speed",valueType:dt.Speed}]),Resilience:this.generateEntries(e.Resilience,o,[{key:"ShieldHP",name:"Shield HP"},{key:"PvEDamageResistance",name:"PvE Damage Resistance",valueType:dt.Percentage},{key:"FlinchResistance",name:"Flinch Resistance",valueType:dt.Percentage}]),Recovery:this.generateEntries(e.Recovery,o,[{key:"TotalRegenTime",name:"Total Regen Time",valueType:dt.Time},{key:"HealthRegenDelay",name:"Health Regen Delay",valueType:dt.Time},{key:"HealthRegenSpeed",name:"Health Regen Speed",valueType:dt.PercentagePerSecond},{key:"ShieldRegenDelay",name:"Shield Regen Delay",valueType:dt.Time},{key:"ShieldRegenSpeed",name:"Shield Regen Speed",valueType:dt.PercentagePerSecond}]),Discipline:this.generateEntries(e.Discipline,o),Intellect:this.generateEntries(e.Intellect,o),Strength:this.generateEntries(e.Strength,o)}}get(e,o,a,s=[]){const r=this.allStatEntries[e]??[],m=this.overrides.filter(p=>s.includes(p.Hash));return r.filter(p=>!(void 0!==o&&void 0!==p.characterClass&&p.characterClass!==o||void 0!==a&&void 0!==p.element&&p.element!==a)).map(p=>m.reduce((C,d)=>function Ce(n,i){if(!n.hash||!i.Requirements.includes(n.hash))return n;const e={...n,overrideIcons:[...n.overrideIcons??[],i.Hash]};if(i.CooldownOverride)return{...e,values:i.CooldownOverride};if(i.Scalar){const o=i.Requirements.indexOf(n.hash),a=i.Scalar[o];return{...e,values:e.values.map(s=>s*a)}}return console.log("Unhandled override",i),n}(C,d),p))}generateEntries(e,o,a=[]){const s=a.map(({key:m,...p})=>({values:e[m].Array,...p}));return("Abilities"in e?e.Abilities:"SuperAbilities"in e?e.SuperAbilities:[]).forEach(m=>{const p=o.get(m.Hash);if(!p)return;const{characterClass:C,element:d}=function de(n){let i,e;const o=n.plug?.plugCategoryIdentifier?.split(".");if(3!==o?.length)return{characterClass:i,element:e};const[a,s,r]=o;return"warlock"===a?i=2:"hunter"===a?i=1:"titan"===a&&(i=0),"arc"===s?e=U.O.Arc:"solar"===s?e=U.O.Solar:"void"===s?e=U.O.Void:"stasis"===s?e=U.O.Stasis:"strand"===s?e=U.O.Strand:"prism"===s&&(e=U.O.Prismatic),{characterClass:i,element:e}}(p);s.push({hash:p.hash,name:p.displayProperties.name,icon:p.displayProperties.icon,values:m.Cooldowns,valueType:dt.TimeMMSS,characterClass:C,element:d})}),s}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(jt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var l=(()=>{return(n=l||(l={}))[n.ADD=0]="ADD",n[n.REMOVE=1]="REMOVE",n[n.MODIFIED=2]="MODIFIED",l;var n})();const Te=[{version:"2.6.3",date:"July 16, 2024",entries:[{type:l.MODIFIED,text:"Minor bugfix for issues with the manifest retrieval. This should fix issues where the items or characters are not loading correctly.",issues:[]},{type:l.MODIFIED,text:"Updated the 'Download Results as JSON' button to reflect required changes for Final Shape.",issues:[]}]},{version:"2.6.2",date:"July 7, 2024",entries:[{type:l.ADD,text:"Added option to ignore existing exotic artifice slots. This is useful for the exotic class item.",issues:[]},{type:l.MODIFIED,text:"Prismatic fragments are now correctly added to the DIM export.",issues:[]},{type:l.MODIFIED,text:"The 'Ignored Items' section is now filtered by the selected class, grouped into armor slots and ordered by item type.",issues:[]},{type:l.MODIFIED,text:"Minor change for the vendor API handling. Thanks nznaza!",issues:[]},{type:l.MODIFIED,text:"Minor change for the manifest API handling.",issues:[]},{type:l.MODIFIED,text:"Mostly minor bugfixes and code improvements.",issues:[]}]},{version:"2.6.1",date:"June 17, 2024",entries:[{type:l.ADD,text:"Add exotic class items.",issues:[]},{type:l.ADD,text:"Added Salvation's Edge Raid modslot and the Echoes of Glory perk.",issues:[]},{type:l.MODIFIED,text:"Changed the way minor mods are displayed. Minor mods are now 25% smaller.",issues:[]},{type:l.MODIFIED,text:"Corrected the description of Facet of Grace.",issues:[]},{type:l.MODIFIED,text:"Added Whisper of Torment, as it now has a -10 in Discipline.",issues:[]},{type:l.REMOVE,text:"Removed old armor modslots (and perks) that no longer exist or function.",issues:[]}]},{version:"2.6.0",date:"June 4, 2024",entries:[{type:l.ADD,text:"Added prismatic fragments.",issues:[]},{type:l.ADD,text:"Added a progressbar that shows the progress of the calculation process.",issues:[]},{type:l.ADD,text:"Added an advanced setting to replace the stat selection boxes with text fields. While it does not look quite nice (as of now), it will allow you to select any value you want. Go get your 6x69 builds done (but don't forget, D2AP still does not add fragments by itself ....YET?!? BUT VERY SOON!)!",issues:[]},{type:l.ADD,text:"Added an 'Assume every exotic has an artifice slot' setting in preparation for the changes in the upcoming expansion. Real artifice exotics should work out-of-the-box at the first day of the expansion, BUT it may happen that I need to update some internal structures. Have fun exploring your options, though!",issues:[]},{type:l.ADD,text:"Added an 'Assume every legendary class item is an artifice armor' setting to allow finer control over the artifice armor assumption.",issues:[]},{type:l.MODIFIED,text:"You will no longer be logged out when the API is offline. The app will use the last known data until the API is back online.",issues:[]},{type:l.MODIFIED,text:"Reworked how calculation workers are spawned, thus improving performance. Thanks to nznaza.",issues:[]},{type:l.MODIFIED,text:"Improved Mod optimisation, leading in drastically reduced runtime when paired with 'Add mods to reduce waste'.",issues:[]},{type:l.MODIFIED,text:"Improved 'Reduce Waste' optimisation. Smarter, better, faster, stronger.",issues:[]},{type:l.MODIFIED,text:"Changing the configuration during a running calculation now restarts the calculation process. Outdated results are a thing of the past!",issues:[]},{type:l.MODIFIED,text:"The amount of workers is now variable and depends on the workload at hand. This should help the insane armor hoarders to reduce the calculation time.",issues:[]},{type:l.MODIFIED,text:"Prepared the vendor API for upcoming Bungie API changes. Thanks to nznaza.",issues:[]},{type:l.MODIFIED,text:"Added 'Exotic Cipher' to the resource overview and removed legendary shards.",issues:[]},{type:l.MODIFIED,text:"Modified the inventory update procedure to be more efficient. This may result in a few hiccups in the first stage - if you encounter any issues, please let me know!",issues:[]},{type:l.MODIFIED,text:"Vendor data is now updated asynchronously. This means that the page will load faster, but the vendor data may be outdated for a few seconds.",issues:[]},{type:l.MODIFIED,text:"The progress notifications are now color-coded and on the right. If there are multiple notifications, then they are stacked.",issues:[]},{type:l.MODIFIED,text:"The display of the used mods is now color-coded to make it easier to distinguish between the different mod types in a single glance.",issues:[]},{type:l.MODIFIED,text:"Locked locks are now red. Mainly because adisypher wouldn't stop asking.",issues:[]},{type:l.MODIFIED,text:"Minor bugfixes and performance optimisation.",issues:[]}]},{version:"2.5.4",date:"April 10, 2024",entries:[{type:l.MODIFIED,text:"Fixed a minor issue where the vendor api may be disabled and block the entire page.",issues:[]}]},{version:"2.5.3",date:"April 5, 2024",entries:[{type:l.MODIFIED,text:"Adapted the logic to parse the new Clarity data format. Thanks to ciar\xe1n!",issues:[]}]},{version:"2.5.2",date:"November 29, 2023",entries:[{type:l.ADD,text:"Split the 'Assume all items are masterworked' switch into 'legendary' and 'exotic' switches. Thanks to Mojo!",issues:[]},{type:l.ADD,text:"Added the 'Ascendant Protector' Perk. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Fixed artifice mods, again. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Fixed 'Ghost Items' from the vendor import. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Updated the values and descriptions for Subclass Fragments. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Artifice Mods are now correctly added to the DIM export. Thanks to nznaza!",issues:[]}]},{version:"2.5.1",date:"October 29, 2023",entries:[{type:l.ADD,text:"Added the 'Exhumed Excess' Perk. The modslot limitations are now ordered. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Added a solution for the stat distances 63, 64 and 65. You probably won't ever see it, as this is 'five artifice and five major mods'.",issues:[]},{type:l.MODIFIED,text:"'Fix wasted points' is now ignored for stats that are locked.",issues:[]}]},{version:"2.5.0",date:"October 14, 2023",entries:[{type:l.ADD,text:"The stat cooldowns and values are now automatically updated from the Clarity database. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"The new modslots/perks are now available in the dropdown.",issues:[]},{type:l.MODIFIED,text:"The stat cooldowns now show icons. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"The fragments now show their icons. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Minor internal updates for DIM references. Thanks to bhollis!",issues:[]},{type:l.MODIFIED,text:"Improved the wasted stats selection, again!",issues:[]}]},{version:"2.4.2",date:"July 11, 2023",entries:[{type:l.ADD,text:"Added the ability to use collection roll armor. This is disabled by default. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"Added the ability to use vendor armor, including Xur. This is disabled by default. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"Added the ability to select the optimisation strategy. You can now choose between 'Reduce waste', 'Reduce used mods' and 'Reduce used modslots'. The default is 'Reduce waste'.",issues:[]},{type:l.ADD,text:"Re-added the reduce wasted stats feature. It is now disabled by default. It is a bit slower and not really necessary for most people.",issues:[]},{type:l.MODIFIED,text:"Zero Waste is no longer dependent on the 'Reduce wasted stats' setting. In fact, it practically overwrites it.",issues:[]},{type:l.REMOVE,text:"Removed the 'Extra optimisation steps' setting. It is now always enabled.",issues:[]}]},{version:"2.4.0",date:"May 23, 2023",entries:[{type:l.MODIFIED,text:"Rewrote the internal algorithm. It makes stuff faster and gives better results.",issues:[]},{type:l.ADD,text:"Added a 'Perform further optimisation' setting. This will give you better results, but it will take a bit longer.",issues:[]},{type:l.ADD,text:"Added Icons to the Stat Selection to make it easier to see which row is which perk.",issues:[]},{type:l.ADD,text:"Added button to download results as JSON.",issues:[]},{type:l.ADD,text:"Added Sonar Amplifier perk.",issues:[]},{type:l.MODIFIED,text:"Enabled Modslot limitation.",issues:[]},{type:l.MODIFIED,text:"Enabled the 3x100 and 4x100 buttons.",issues:[]},{type:l.MODIFIED,text:"Enabled Zero-Waste mode.",issues:[]},{type:l.MODIFIED,text:"Temporarily disabled 'Reduce Wasted Stats'. It will be back soon.",issues:[]}]},{version:"2.3.2",date:"May 7, 2023",entries:[{type:l.ADD,text:"Feature: Added 'Guardian Games' class item type to the dropdown. ",issues:[]},{type:l.MODIFIED,text:"Reformatted every file in the codebase and improved the code workflow. You should not really see this on your end, but it will allow everyone to easily contribute to this open source project!",issues:[]}]},{version:"2.3.1",date:"April 2, 2023",entries:[{type:l.ADD,text:"Feature: Added the possibility to only show builds that contain an exotic.",issues:[]},{type:l.ADD,text:"Added 'Root of Nightmares' modslot filter.",issues:[]},{type:l.ADD,text:"Added 'Queen's Favor' seasonal perk filter.",issues:[]},{type:l.ADD,text:"Added text indicating that only fragments that affect stats are shown.",issues:[]},{type:l.MODIFIED,text:"Fixed deprecated mods being sent when opening the loadout in DIM. Also adds artifice mods now.",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where the tool did not put artifice mods on the class item if you forced the class item to be artifice.....",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where the default selection was the titan class, even if you had no titan characters.",issues:[]}]},{version:"2.3.0",date:"March 14, 2023",entries:[{type:l.ADD,text:"Automatically adds artifice mods to your armor. This replaces minor and major mods where possible.",issues:[]},{type:l.ADD,text:"Added the amount of used artifice mods to the result table overview (next to the mods). They are not calculated into the 'mod cost' column.",issues:[]},{type:l.ADD,text:"Added new fragments, including Strand.",issues:[]},{type:l.MODIFIED,text:"Adapted modslot cost of Resilience and Recovery mods.",issues:[]},{type:l.MODIFIED,text:"Introduced more modules for asynchronous loading. This is more a speed improvement than a feature.",issues:[]},{type:l.MODIFIED,text:"Reduced the maximum limit of reported results from 50,000 to 30,000. Note that D2AP still calculates every result, it just does not report them. This is a major speedup, and you usually should not even realize the change.",issues:[]},{type:l.MODIFIED,text:"Increased the visual contrast of major mods in the results table. This means it is now easier to distinguish major from minor mods.",issues:[]},{type:l.REMOVE,text:"Removed the elemental affinity completely.",issues:[]},{type:l.REMOVE,text:"DISABLED the 'Zero Waste' feature. It will be re-enabled in the future.",issues:[]},{type:l.REMOVE,text:"DISABLED the 'Modslot Limitation' feature. It will be re-enabled in the future.",issues:[]}]},{version:"2.2.16",date:"December 7, 2022",entries:[{type:l.ADD,text:"Added Ember of Torches (with -10 Discipline).",issues:[]},{type:l.ADD,text:"Added Retrofit mods (mobility and resilience).",issues:[]},{type:l.ADD,text:"Added armor perk 'Seraph Sensor Array' to the dropdown.",issues:[]},{type:l.ADD,text:"Added a Game2Give message. Let's support the little lights together!",issues:[]},{type:l.MODIFIED,text:"Fixed artifice modslot.",issues:[]},{type:l.MODIFIED,text:"Membership data is cached longer to make things faster and to ease the Bungie API.",issues:[]}]},{version:"2.2.15",date:"October 18, 2022",entries:[{type:l.ADD,text:"Added FOTL masks.",issues:[]}]},{version:"2.2.13",date:"September 23, 2022",entries:[{type:l.ADD,text:"Added an advanced setting to replace the 'Tiers' column with a 'Max Tiers' column. This is adds the amount of open modslots to the column, but ignores mod limitations at the moment. A T32 build without mods will now show T37.",issues:[]}]},{version:"2.2.12",date:"September 11, 2022",entries:[{type:l.MODIFIED,text:"Changed the layout to force the settings (left) and results (right) to be next to each other. This means that the page is more mobile approachable. This is also the first step to a more flexible layout.",issues:[]}]},{version:"2.2.11",date:"September 10, 2022",entries:[{type:l.ADD,text:"Added a display for your owned upgrade materials in the character overview.",issues:[]},{type:l.ADD,text:"Added a notification to warn you when you create a modslot limitation that yields no results. Note that this will not (yet) show invalid combinations over all armor, just for the given slot you selected it in.",issues:[]},{type:l.MODIFIED,text:"Reduced size of exotic icons so that the left side will not grow on Titan class.",issues:[]},{type:l.MODIFIED,text:"The 'Performance Optimisation' settings will now always re-enable after a reload to prevent your browser being stuck in a crash-loop. (This is for you, iOS Safari users)",issues:[]},{type:l.MODIFIED,text:"Changed wording of the 'Performance Optimisation' setting to prevent people from using it incorrectly.",issues:[]}]},{version:"2.2.10",date:"September 2, 2022",entries:[{type:l.MODIFIED,text:"Updated Artifice Modslot Hash after the most recent hotfix.",issues:[]}]},{version:"2.2.9",date:"September 1, 2022",entries:[{type:l.MODIFIED,text:"Tooltips do now not obstruct the clicks of stats. This fixes the iOS stat selection issue.",issues:[]}]},{version:"2.2.8c",date:"August 24, 2022",entries:[{type:l.MODIFIED,text:"The manifest is now (again) automatically updated on version changes. This fixes your artifice problems at the beginning of a new season.",issues:[]},{type:l.MODIFIED,text:"Added subclass hashes for Arc. This means that it now transfers to DIM.",issues:[]}]},{version:"2.2.8b",date:"August 24, 2022",entries:[{type:l.MODIFIED,text:"Fixed Artifice modslots. You might need to wait a bit, alternatively delete the database (Account section) or re-log.",issues:[]}]},{version:"2.2.8a",date:"August 23, 2022",entries:[{type:l.MODIFIED,text:"Updated grenade and melee cooldowns for arc.",issues:[]}]},{version:"2.2.8",date:"August 23, 2022",entries:[{type:l.ADD,text:"Added Arc 3.0 fragments.",issues:[]},{type:l.MODIFIED,text:"Fixed tooltip issues on iOS devices.",issues:[]},{type:l.MODIFIED,text:"Fixed an infinite loading issue.",issues:[]}]},{version:"2.2.7",date:"June 25, 2022",entries:[{type:l.ADD,text:"Added a link to my Discord bot Crayon.",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where a large number of stored configurations would drastically slow down the app.",issues:[]}]},{version:"2.2.6",date:"June 8, 2022",entries:[{type:l.MODIFIED,text:"Fixed an issue where the elemental selection would not give the correct results under very specific conditions.",issues:[]}]},{version:"2.2.5",date:"June 7, 2022",entries:[{type:l.ADD,text:"Added all of the new ability cooldowns.",issues:[]},{type:l.MODIFIED,text:"Completely reworked the ability cooldown tooltips. They now show the difference to the currently selected tier.",issues:[]}]},{version:"2.2.4",date:"June 3, 2022",entries:[{type:l.MODIFIED,text:"Fixed the export to DIM. Thanks to bhollis for the fix!",issues:[]},{type:l.MODIFIED,text:"The manifest now automatically updates when Bungie updated it too, except just after a fixed timespan.",issues:[]}]},{version:"2.2.3",date:"May 24, 2022",entries:[{type:l.ADD,text:"Added Solar 3.0",issues:[]},{type:l.MODIFIED,text:"Adapted artifice armor to the new Season.",issues:[]}]},{version:"2.2.2",date:"Mar 9, 2022",entries:[{type:l.ADD,text:"See what mods do by hovering over their name.",issues:["D2AP-41"]},{type:l.ADD,text:"Added Vow of the Disciple armor.",issues:["D2AP-35"]},{type:l.ADD,text:"Added 'Uniformed Officer' armor.",issues:["D2AP-35"]},{type:l.MODIFIED,text:"Fixed Scatter grenades being Tier 3 (were T4 before).",issues:["D2AP-39"]},{type:l.MODIFIED,text:"Changed the color of the login button.",issues:["D2AP-37"]},{type:l.MODIFIED,text:"When a selected character class does not exist, the tool will now select the first available class as default."}]},{version:"2.2.1",date:"Feb 22, 2022",entries:[{type:l.ADD,text:"Added a switch to select between Stasis and Void 3.0 fragments. Stasis is enabled per default to ensure backwards compatibility of saved configurations.",issues:["D2AP-10"]},{type:l.ADD,text:"Added a debug section to the (new) account settings page. The account settings page does not do much yet, I just wanted to deploy the debug functions.",issues:["D2AP-23"]},{type:l.MODIFIED,text:"Modified super cooldowns for Witch Queen."},{type:l.MODIFIED,text:"Added a minor text to the exotic overview that explains that exotics not in the inventory are shown in grayscale. You can also no longer select those.",issues:["D2AP-17"]},{type:l.MODIFIED,text:"Minor changes in how the database behaves on logout. It now deletes the inventory when you log out, but still keeps the manifest.",issues:["D2AP-27"]},{type:l.MODIFIED,text:"Users are now logged out when the Bungie.Net API is down.",issues:["D2AP-34"]},{type:l.MODIFIED,text:"Fixed Charge Harvester and Echo of Persistence incorrectly reducing Discipline instead of recovery when used on a Warlock."}]},{version:"2.2.0",date:"Feb 09, 2022",entries:[{type:l.ADD,text:"Added the ability to select armor perks and 5th slots. Just like the elements you can optionally enforce it to be on a certain slot. Useful if you want to build Iron Banner armor or utilize artifice modslots."},{type:l.ADD,text:"Added the ability to limit the available points on each armor item for stat mods. This allows you to limit the kind of stat mods that are usable. You can now say 'do not use major intellect mods'."},{type:l.ADD,text:"Added the ability to lock stat tiers. Previously you could only set 'Use Tier 3 or higher', now you can optionally set 'Enforce Tier 3'. This is useful for example if you want to enforce T3 mobility on a Titan."},{type:l.ADD,text:"Added a summary of important configuration choices to the result header to improve readability."},{type:l.ADD,text:"Added a button to open the DIM Loadout Builder with the current settings."},{type:l.ADD,text:"Added an option that forces the correct element on non-masterworked armor pieces. This is per default enabled."},{type:l.ADD,text:"Added cooldowns for class abilities (Dodge, Barricade, Rift)."},{type:l.ADD,text:"Added visual indicators for minor and major mods in the overview table. The whole visualization is also more compact now."},{type:l.ADD,text:"Added visual cursor indicator to every clickable input, e.g. in the exotic, element and perk/mod selection."},{type:l.ADD,text:"Added a (very basic) item tooltip."},{type:l.ADD,text:"Show the required material cost for each item. Note that this ignores your class item."},{type:l.ADD,text:"Added a stat summary table to the stat detail view. This allows you to easily share a stat distribution with others."},{type:l.ADD,text:"Added 'Clear this section' button to each configuration section."},{type:l.ADD,text:"Added support for your class items. You won't see a lot of this, except when you use the slot and element limitation in specific ways."},{type:l.ADD,text:"Detailed information is now in expandable containers to improve readability."},{type:l.ADD,text:"Show the seasonal icon for every item too."},{type:l.ADD,text:"Added info text to the table headers."},{type:l.ADD,text:"The character selection now shows the existing characters - and their emblems too!"},{type:l.ADD,text:"Added Discord and another Ko-Fi link. You can find them in the character selection."},{type:l.ADD,text:"Added a changelog popup right at the start of the page. It only appears when a new update occured. You can always trigger it by clicking the current version number."},{type:l.ADD,text:"Now utilizes three webworkers instead of one. The process is simple, but generally speeds up the results by a huge margin."},{type:l.ADD,text:"Added an Armor Investigation tab for data scientists."},{type:l.ADD,text:"Added a sidenav for smaller devices and reworked the top menubar."},{type:l.ADD,text:"The detailed result table now shows the perk of an selected item, if it has one. This also applies to class items, if necessary."},{type:l.ADD,text:"Hovering over exotics in the exotic selection now displays their perk description."},{type:l.ADD,text:"Added an advanced setting to disable white, green and blue armor."},{type:l.ADD,text:"Added an advanced setting to ignore sunset armor."},{type:l.MODIFIED,text:"Changed the word 'Permutation' to 'Combination' wherever it has been used."},{type:l.MODIFIED,text:"Clicking on a setting that is already set does not re-trigger the calculation now. For example, selecting T3 recovery when it is already at T3 now does nothing."},{type:l.MODIFIED,text:"The default for all stats is now tier 0 instead of tier 1, to make it consistent with the clear buttons."},{type:l.MODIFIED,text:"The default setting for 'ignore non masterworked elements' is now 'off'."},{type:l.MODIFIED,text:"The 'time required' number now measures the time from before the webworkers are spawned until all webworkers are done. Previously it only monitored the time required INSIDE the webworker, so it may show slower times."},{type:l.MODIFIED,text:"Fixed the width of the 'Exotic' header in the results table. This means that it is now farther away from the 'Mobility' column."},{type:l.MODIFIED,text:"Completely reworked the elemental affinity selection. Per default it is now not fixed to a certain armor slot, but using a toggle button you can simply do so again."},{type:l.MODIFIED,text:"The results header now screams at you in bright red letters when no results are found."},{type:l.MODIFIED,text:"The alternating rows of the results details table have now a lighter color to make it easier to read."},{type:l.MODIFIED,text:"Fixed ability cooldowns for melee and grenade at tier 7 and tier 8."},{type:l.MODIFIED,text:"Cooldowns now are shown in MM:SS instead of plain seconds."},{type:l.MODIFIED,text:"Completely rewrote the core logic of D2ArmorPicker for the changes mentioned above."},{type:l.MODIFIED,text:"Exotics you do not have in your vault or inventory are now greyed out."},{type:l.MODIFIED,text:"Fixed an issue where exotics were not shown at your first login."},{type:l.MODIFIED,text:"Changed the color of important buttons so that they are easier to read."},{type:l.MODIFIED,text:"The icons of items in the results are now loaded asynchronous from their hashes. This saves a lot of memory, as I do not have to send two icon URLs for each item - for each result. I will further improve this in a later version."},{type:l.MODIFIED,text:"Maximum table output is now limited to 50 results (instead of 200). It still defaults to 20.}"},{type:l.MODIFIED,text:"Completely reworked the visuals of the changelog. It is now more pleasing to the eye."}]},{version:"2.1.4",date:"Dec 29, 2021",entries:[{type:l.MODIFIED,text:"Item stats are now built from their plugs and InvestmentStats (in case of some exotics). This fixes potentially invalid item stats when you use mods like Powerful Friends or Protective Light. A big thanks to u/deangaudet for reminding me that the API also reports the plugs of an item."},{type:l.MODIFIED,text:"Only save necessary item types of the manifest (namely mods and armor). Also, save twhe investmentStats now."},{type:l.MODIFIED,text:"Sped up the item update step."}]},{version:"2.1.3",date:"Dec 16, 2021",entries:[{type:l.MODIFIED,text:"Added new stat cooldowns"}]},{version:"2.1.2",date:"Dec 1, 2021",entries:[{type:l.MODIFIED,text:"The changelog is now in a scrollable box."},{type:l.MODIFIED,text:"Changed buymeacoffee to a ko-fi link. This way we can keep the PayPal support!"}]},{version:"2.1.1",date:"Nov 3, 2021",entries:[{type:l.REMOVE,text:"Removed the HALLOWEEN SPECIAL feature. Maybe something like this will return some day?"},{type:l.ADD,text:"Added tooltip to the item icons in the detailed overview to show the name of the item."},{type:l.MODIFIED,text:"Fixed an issue where the list of exotics did not load at the first login."},{type:l.MODIFIED,text:"Saved configurations now contain the current software version for future reference."},{type:l.MODIFIED,text:"Minor code quality improvements"}]},{version:"2.1.0 (major)",date:"Oct 29, 2021",entries:[{type:l.REMOVE,text:"Completely removed V1 of the tool. If you had any problems with V2, you had over three months to report them."},{type:l.ADD,text:"The stat selection now displays which stat tiers are added by stat mods (PF/RL) or stasis fragments in the configuration."},{type:l.ADD,text:"You can now export (and import) individual configurations as well as all stored configurations at once."},{type:l.ADD,text:"Added a navigation bar to the title bar. On smaller screens it is replaced by two buttons in the character selection."},{type:l.ADD,text:"Added more details to the last step of the 'What to do now?' section. It now lists the fragments and mods you selected."},{type:l.MODIFIED,text:"Optimized code and reduced overall page size."}]},{version:"2.0.16",date:"Oct 26, 2021",entries:[{type:l.MODIFIED,text:"Completely rewrote the core logic in order to fix the memory issues. The tool will now no longer crash when you have many armor items, but it's slightly slower than the previous approach. I tested it with 600 items - it works and does not crash, but takes up to a minute. Make sure to never get that much armor and to lock an exotic right away."},{type:l.MODIFIED,text:"The rewrite also fixed the issue where the tool did not work in Safari, or more generally, on Mac and iPhone."},{type:l.MODIFIED,text:"The rewrite also fixed an issue where items could not be found when an result update was triggered while the inventory was updated."}]},{version:"2.0.15",date:"Oct 24, 2021",entries:[{type:l.MODIFIED,text:"Updated the visual display of the cluster page. It displays the stats in a better way now."},{type:l.MODIFIED,text:"Fixed an issue with login, where you were automatically logged in again and could not switch accounts."}]},{version:"2.0.14",date:"Oct 21, 2021",entries:[{type:l.MODIFIED,text:"Updated URLs to the mobility, resilience and recovery images, as Bungie decided to change their URLs in today's hotfix."}]},{version:"2.0.13",date:"Oct 20, 2021",entries:[{type:l.ADD,text:"Added a chart to the armor clustering page, showing each clusters average stats."},{type:l.MODIFIED,text:"Stats over 100 are now seen as wasted."}]},{version:"2.0.12",date:"Oct 18, 2021",entries:[{type:l.ADD,text:"Added an experimental armor clustering feature."}]},{version:"2.0.11",date:"Oct 13, 2021",entries:[{type:l.ADD,text:"HALLOWEEN SPECIAL! Added (temporary) filter for halloween masks! This will be removed after the event."},{type:l.MODIFIED,text:"Fix: Clear the results if you switch character and no possible permutations can be found."}]},{version:"2.0.10",date:"Oct 10, 2021",entries:[{type:l.ADD,text:"Added 'Equip Items' button to the detailed item overview."}]},{version:"2.0.9",date:"Oct 6, 2021",entries:[{type:l.ADD,text:"Added a detailed description of the steps required to build a selected result."},{type:l.ADD,text:"Added a button to disable all four armor pieces at once."},{type:l.MODIFIED,text:"Fixed an issue where the permutations were not updated after 'Ignore armor elemental affinities on masterworked armor' was changed."}]},{version:"2.0.8",date:"Oct 5, 2021",entries:[{type:l.ADD,text:"Added this changelog to the help page."},{type:l.ADD,text:"Added 'Move to Inventory' button (beta)."},{type:l.ADD,text:"Split up 'Assume items are masterworked' into three settings: Class Items, Legendaries, Exotics"},{type:l.MODIFIED,text:"'Try to optimize wasted stats' is now active per default."},{type:l.MODIFIED,text:"Introduced an item buffer in the results component to further reduce memory usage."}]}];let ve=(()=>{class n{constructor(e){this.changelog=e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(re))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-dialog"]],decls:9,vars:2,consts:[["mat-dialog-title","",1,"title"],[1,"mat-typography"],["align","end"],["cdkFocusInitial","","color","primary","mat-raised-button","",3,"mat-dialog-close"]],template:function(e,o){1&e&&(t.TgZ(0,"h2",0),t._uU(1),t.qZA(),t.TgZ(2,"mat-dialog-content",1)(3,"div"),t._uU(4," Hi! There has been a new version of D2ArmorPicker! The following list shows all the relevant changes. Note that you can always look at the changelogs in the Help tab. "),t.qZA(),t._UZ(5,"app-changelog-list"),t.qZA(),t.TgZ(6,"mat-dialog-actions",2)(7,"button",3),t._uU(8,"Thanks, I saw it!"),t.qZA()()),2&e&&(t.xp6(1),t.hij("D2ArmorPicker Changelog for Version ",o.changelog.changelogData[0].version,""),t.xp6(6),t.Q6J("mat-dialog-close",!0))},styles:[".title[_ngcontent-%COMP%]{text-decoration:underline;-webkit-text-decoration-color:#0059ff;text-decoration-color:#0059ff}"]}),n})();var Et=_(5412);let re=(()=>{class n{constructor(e){this.dialog=e}setChangelogSeenFlag(){return localStorage.setItem("last-changelog-version",this.changelogData[0].version)}get lastViewedChangelog(){return localStorage.getItem("last-changelog-version")}get mustShowChangelog(){return this.changelogData[0].version!==this.lastViewedChangelog}get changelogData(){return Te}openChangelogDialog(){this.dialog.open(ve).afterClosed().subscribe(o=>{this.setChangelogSeenFlag()})}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Et.uw))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var pt=_(266),Re=_(3162),St=_(7392),zt=_(6338),be=_(3848),Ne=_(3267);let Kt=(()=>{class n{constructor(e,o){this.templateRef=e,this.vcRef=o,this.context={$implicit:null,ngVar:null},this.hasView=!1}set ngVar(e){this.context.$implicit=this.context.ngVar=e,this.hasView||(this.vcRef.createEmbeddedView(this.templateRef,this.context),this.hasView=!0)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.Rgc),t.Y36(t.s_b))},n.\u0275dir=t.lG2({type:n,selectors:[["","ngVar",""]],inputs:{ngVar:"ngVar"}}),n})(),qe=(()=>{class n{constructor(e){this.changelog=e}ngAfterViewInit(){this.changelog.mustShowChangelog&&this.changelog.openChangelogDialog()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(re))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-dialog-controller"]],decls:0,vars:0,template:function(e,o){},encapsulation:2}),n})();function Fe(n,i){1&n&&(t.TgZ(0,"mat-toolbar",31),t._UZ(1,"span",20),t._uU(2," The API is unavailable. The app will work with the data it has available right now. "),t._UZ(3,"span",20),t.qZA())}function Je(n,i){1&n&&(t.TgZ(0,"mat-toolbar",31),t._UZ(1,"span",20),t._uU(2," There was an error with the authentication. The API may be down, or your session timed out. "),t._UZ(3,"span",20),t.qZA())}function Le(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Je,4,0,"mat-toolbar",1),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.authError)}}function Ye(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"a",32),t.NdJ("click",function(){t.CHM(e),t.oxw();const a=t.MAs(5);return t.KtG(a.toggle())}),t._uU(1),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw(2);t.ekj("active",a.activeLinkIndex===o),t.Q6J("routerLink",e.link),t.xp6(1),t.hij(" ",e.name," ")}}function Be(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",33),t.NdJ("click",function(){t.CHM(e),t.oxw();const a=t.MAs(5);return t.KtG(a.toggle())}),t.TgZ(1,"mat-icon",5),t._uU(2,"menu"),t.qZA()()}}function Ve(n,i){if(1&n&&(t.TgZ(0,"a",34),t._uU(1),t.qZA()),2&n){const e=i.$implicit,o=i.index,a=t.oxw(2);t.Q6J("active",a.activeLinkIndex===o)("routerLink",e.link),t.xp6(1),t.hij(" ",e.name," ")}}function Qe(n,i){1&n&&t._UZ(0,"mat-progress-bar",36)}function He(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Qe,1,0,"mat-progress-bar",35),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.updatingResultsTable||e.calculatingResults||e.calculatingPermutations||e.updatingInventory||e.updatingVendors||e.updatingManifest)}}function We(n,i){1&n&&(t.TgZ(0,"mat-card",43),t._uU(1," Updating vendor information inventory in the background. "),t.qZA())}function je(n,i){1&n&&(t.TgZ(0,"mat-card",44),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Updating the cached manifest."),t.qZA())}function Ge(n,i){1&n&&(t.TgZ(0,"mat-card",45),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Updating the cached inventory."),t.qZA())}function ze(n,i){if(1&n&&(t.TgZ(0,"mat-card",46),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Calculating possible results. "),t._UZ(4,"mat-progress-bar",47),t.qZA()),2&n){const e=t.oxw(3);t.xp6(4),t.Q6J("value",e.computationProgress)}}function Ke(n,i){1&n&&(t.TgZ(0,"mat-card",48),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3,"Updating the result display table."),t.qZA())}function $e(n,i){if(1&n&&(t.TgZ(0,"div",37),t.YNc(1,We,2,0,"mat-card",38),t.YNc(2,je,4,0,"mat-card",39),t.YNc(3,Ge,4,0,"mat-card",40),t.YNc(4,ze,5,1,"mat-card",41),t.YNc(5,Ke,4,0,"mat-card",42),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.updatingVendors),t.xp6(1),t.Q6J("ngIf",e.updatingManifest),t.xp6(1),t.Q6J("ngIf",e.updatingInventory),t.xp6(1),t.Q6J("ngIf",e.calculatingResults),t.xp6(1),t.Q6J("ngIf",e.updatingResultsTable)}}function Xe(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div"),t.YNc(1,Fe,4,0,"mat-toolbar",1),t.YNc(2,Le,2,1,"div",0),t.ALo(3,"async"),t.TgZ(4,"mat-sidenav",2,3),t.ALo(6,"async"),t.TgZ(7,"mat-toolbar")(8,"button",4),t.NdJ("click",function(){t.CHM(e);const a=t.MAs(5);return t.KtG(a.toggle())}),t.TgZ(9,"mat-icon",5),t._uU(10,"menu"),t.qZA(),t._uU(11," Close Menu "),t.qZA()(),t._UZ(12,"hr"),t.TgZ(13,"mat-nav-list"),t.YNc(14,Ye,2,4,"a",6),t._UZ(15,"hr"),t.TgZ(16,"a",7)(17,"a",8)(18,"mat-icon",9),t._uU(19,"attach_money"),t.qZA(),t._uU(20," Buy me a coffee! "),t.qZA()(),t.TgZ(21,"a",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.changelog.openChangelogDialog())}),t.TgZ(22,"a",11),t._uU(23," Open changelog "),t.qZA()(),t._UZ(24,"hr"),t.qZA()(),t.TgZ(25,"mat-toolbar",12),t.YNc(26,Be,3,0,"button",13),t.ALo(27,"async"),t.TgZ(28,"span"),t._uU(29,"D2ArmorPicker "),t.TgZ(30,"small"),t._uU(31," by Mijago"),t.qZA(),t.TgZ(32,"a",14),t._UZ(33,"img",15),t.qZA(),t.TgZ(34,"a",16),t._UZ(35,"img",17),t.qZA(),t.TgZ(36,"a",18),t._UZ(37,"img",19),t.qZA()(),t._UZ(38,"span",20),t.TgZ(39,"div",21)(40,"nav",22),t.YNc(41,Ve,2,3,"a",23),t.qZA()(),t._UZ(42,"span",20),t.TgZ(43,"div",24)(44,"span",25)(45,"a",26),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.changelog.openChangelogDialog())}),t._uU(46),t.qZA()(),t.TgZ(47,"a",27)(48,"mat-icon",9),t._uU(49,"attach_money"),t.qZA(),t._uU(50," Buy me a coffee! "),t.qZA(),t.TgZ(51,"button",28),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.refreshAll(!0))}),t.TgZ(52,"mat-icon"),t._uU(53,"refresh"),t.qZA()(),t.TgZ(54,"button",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.logout())}),t.TgZ(55,"mat-icon"),t._uU(56,"logout"),t.qZA()()()(),t._UZ(57,"router-outlet"),t.YNc(58,He,2,1,"span",0),t.ALo(59,"async"),t.YNc(60,$e,6,5,"div",30),t.ALo(61,"async"),t._UZ(62,"app-changelog-dialog-controller"),t.qZA()}if(2&n){const e=i.ngVar,o=t.oxw();t.xp6(1),t.Q6J("ngIf",e.apiError),t.xp6(1),t.Q6J("ngVar",t.lcZ(3,10,o.status.status)),t.xp6(2),t.Q6J("opened",!1),t.uIk("role",t.lcZ(6,12,o.isHandset$)?"dialog":"navigation"),t.xp6(10),t.Q6J("ngForOf",o.navLinks),t.xp6(12),t.Q6J("ngIf",t.lcZ(27,14,o.isHandset$)),t.xp6(15),t.Q6J("ngForOf",o.navLinks),t.xp6(5),t.hij("v",o.version,"\xa0"),t.xp6(12),t.Q6J("ngVar",t.lcZ(59,16,o.status.status)),t.xp6(2),t.Q6J("ngVar",t.lcZ(61,18,o.status.status))}}let tn=(()=>{class n{constructor(e,o,a,s,r,m,p){this.status=e,this.breakpointObserver=o,this.inv=a,this.auth=s,this.router=r,this.characterStats=m,this.changelog=p,this.version=g.N.version,this.activeLinkIndex=0,this.computationProgress=0,this.navLinks=[{link:"/",name:"Home"},{link:"/cluster",name:"Clustering"},{link:"/help",name:"Help"},{link:"/investigate",name:"Armor Investigation"},{link:"/account",name:"Account"}],this.isHandset$=this.breakpointObserver.observe([D.u3.Handset,D.u3.Small,D.u3.XSmall]).pipe((0,k.U)(C=>C.matches),(0,J.d)())}ngOnInit(){this.activeLinkIndex=this.navLinks.indexOf(this.navLinks.find(e=>e.link===this.router.url)),this.router.events.subscribe(e=>{e instanceof ot.m2&&(this.activeLinkIndex=this.navLinks.indexOf(this.navLinks.find(o=>o.link===this.router.url)))}),this.characterStats.loadCharacterStats(),this.inv.calculationProgress.subscribe(e=>{this.computationProgress=e})}refreshAll(e){var o=this;return(0,x.Z)(function*(){console.debug("Trigger refreshAll due to button press"),yield o.inv.refreshAll(e)})()}logout(){this.auth.logout()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Ct),t.Y36(D.Yg),t.Y36(At),t.Y36(gt),t.Y36(ot.F0),t.Y36(Gt),t.Y36(re))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-app-v2-core"]],decls:2,vars:3,consts:[[4,"ngVar"],["color","warn","class","bar-api-warn",4,"ngIf"],["fixedInViewport","","mode","over",1,"sidenav",3,"opened"],["drawer",""],["aria-label","Toggle sidenav","mat-stroked-button","","type","button",3,"click"],["aria-label","Side nav toggle icon"],["mat-list-item","",3,"active","routerLink","click",4,"ngFor","ngForOf"],["href","https://ko-fi.com/mijago","mat-list-item",""],["color","primary","mat-raised-button","","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["inline",""],["mat-list-item","",3,"click"],["mat-raised-button",""],["id","header","role","heading"],["aria-label","Toggle sidenav","mat-icon-button","","type","button",3,"click",4,"ngIf"],["href","https://twitter.com/MijagoCoding/","matTooltip","Birb App","target","_blank"],["alt","Me on twitter","src","assets/logo-twitter.png",1,"logo-twitter"],["href","https://ko-fi.com/mijago","matTooltip","If you like my work, you can always buy me a coffee!","target","_blank"],["alt","Ko-Fi","src","assets/logo-kofi.png",1,"logo-twitter"],["href","http://discord.d2armorpicker.com/","matTooltip","Visit me at the development & support discord.","target","_blank"],["alt","Discord","src","assets/logo-discord.png",1,"logo-twitter"],[1,"header-spacer"],["fxHide.lt-md","true","fxShow","true"],["id","navbar","mat-tab-nav-bar",""],["mat-tab-link","",3,"active","routerLink",4,"ngFor","ngForOf"],["id","buttonContainer"],["fxShow","false","fxShow.gt-md","true","matTooltip","Click to show the changelog dialog.",1,"changelogText"],[3,"click"],["color","accent","fxHide.lt-md","true","fxShow","true","href","https://ko-fi.com/mijago","mat-stroked-button","","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["aria-label","Refresh","mat-icon-button","","matTooltip","Reload all items from the API.",1,"example-icon",3,"click"],["aria-label","Logout","color","warn","mat-icon-button","","matTooltip","Logout",1,"example-icon",3,"click"],["class","info-container",4,"ngVar"],["color","warn",1,"bar-api-warn"],["mat-list-item","",3,"routerLink","click"],["aria-label","Toggle sidenav","mat-icon-button","","type","button",3,"click"],["mat-tab-link","",3,"active","routerLink"],["id","loading","mode","indeterminate",4,"ngIf"],["id","loading","mode","indeterminate"],[1,"info-container"],["class","info info-updating-vendor",4,"ngIf"],["class","info info-updating-manifest",4,"ngIf"],["class","info info-updating-inventory",4,"ngIf"],["class","info info-calculating-results",4,"ngIf"],["class","info info-updating-results",4,"ngIf"],[1,"info","info-updating-vendor"],[1,"info","info-updating-manifest"],[1,"info","info-updating-inventory"],[1,"info","info-calculating-results"],[3,"value"],[1,"info","info-updating-results"]],template:function(e,o){1&e&&(t.YNc(0,Xe,63,20,"div",0),t.ALo(1,"async")),2&e&&t.Q6J("ngVar",t.lcZ(1,1,o.status.status))},dependencies:[Z.sg,Z.O5,M.b8,rt.lW,rt.zs,Y.a8,pt.gM,Re.pW,St.Hw,It.Ye,zt.Hk,zt.Tg,be.BU,be.Nj,Ne.JX,ot.lC,ot.yS,Kt,qe,Z.Ov],styles:[".loading[_ngcontent-%COMP%]{cursor:progress}.info-container[_ngcontent-%COMP%]{z-index:1000;position:fixed;top:37px;right:0;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-wrap:wrap;padding:10px;overflow:auto;pointer-events:none}@media (min-width: 1650px){.info-container[_ngcontent-%COMP%]{left:1380px;right:auto}}.info[_ngcontent-%COMP%]{width:200px;margin-bottom:5px;border:antiquewhite 1px solid}.info.info-updating-manifest[_ngcontent-%COMP%]{border-color:#f09c4e}.info.info-updating-inventory[_ngcontent-%COMP%]{border-color:#f0ad4e}.info.info-updating-vendor[_ngcontent-%COMP%]{border-color:#f0e54e}.info.info-calculating-permutations[_ngcontent-%COMP%]{border-color:#5cb85c}.info.info-calculating-results[_ngcontent-%COMP%]{border-color:#89b85c}.info.info-updating-results[_ngcontent-%COMP%]{border-color:#5cb85c}.sidenav-container[_ngcontent-%COMP%]{position:fixed;top:0;left:0;height:100%;z-index:20}.sidenav[_ngcontent-%COMP%]{width:200px;position:fixed;top:0;left:0;height:100%;z-index:20}.sidenav[_ngcontent-%COMP%] .mat-toolbar[_ngcontent-%COMP%]{background:inherit}.sidenav[_ngcontent-%COMP%] .active[_ngcontent-%COMP%]{background-color:#ffffff12;color:#b8c4dc}.mat-toolbar.mat-primary[_ngcontent-%COMP%]{position:sticky;top:0;z-index:1}#header[_ngcontent-%COMP%]{position:relative;height:42px;margin-bottom:5px}.header-spacer[_ngcontent-%COMP%]{flex:1 1 auto}.changelogText[_ngcontent-%COMP%]{cursor:pointer}#loading[_ngcontent-%COMP%]{position:fixed;top:0;width:100%;z-index:1000}.d2ap-router-link[_ngcontent-%COMP%]{cursor:pointer}[_nghost-%COMP%] .mat-tab-link{min-width:75px;opacity:1}.bar-api-warn[_ngcontent-%COMP%]{background-color:#f0894e;position:relative;height:20px;margin-bottom:2px;font-size:16px}"]}),n})();var W=_(2143),Ae=_(8739),ue=_(6308),xt=_(7340),yt=_(7625);function en(n,i){1&n&&(t.ynx(0),t._uU(1," Click on a row to expand it and to see the list of the items required for this build."),t._UZ(2,"br"),t.BQk())}function nn(n,i){1&n&&(t.ynx(0),t.TgZ(1,"div",59),t._UZ(2,"img",60),t._uU(3,"\xa0 "),t.qZA(),t.TgZ(4,"span",61)(5,"b"),t._uU(6,"No combinations found."),t.qZA()(),t._uU(7," You should loosen your settings a bit. "),t.BQk())}function on(n,i){if(1&n&&(t.TgZ(0,"mat-icon",62,63),t.ALo(2,"number"),t._uU(3,"report_problem "),t.qZA()),2&n){const e=t.oxw();t.MGl("matTooltip","Note: To speed up the whole process, only ",t.lcZ(2,1,e.parsedResults)," results are listed in this table.\n If you need more entries, disable the limitation in the advanced settings.")}}function an(n,i){if(1&n&&(t.TgZ(0,"mat-icon",62,63),t.ALo(2,"number"),t._uU(3,"report_problem "),t.qZA()),2&n){const e=t.oxw();t.MGl("matTooltip","Note: To prevent Out-Of-Memory crashes, only ",t.lcZ(2,1,e.parsedResults)," results are listed in this table.\n You should narrow down your settings a bit.")}}function sn(n,i){1&n&&(t.TgZ(0,"mat-chip",64,63),t._uU(2,"No Exotic "),t.qZA())}function rn(n,i){1&n&&(t.TgZ(0,"mat-chip",65,63),t._uU(2,"Exotic "),t.qZA())}function ln(n,i){1&n&&(t.TgZ(0,"mat-chip",66,63),t._uU(2," Multiple Exotics "),t.qZA())}function cn(n,i){1&n&&(t.TgZ(0,"mat-chip",67,63),t._uU(2,"No stat mods "),t.qZA())}function mn(n,i){1&n&&(t.TgZ(0,"mat-chip",68,63),t._uU(2,"Reduce wasted stats "),t.qZA())}function dn(n,i){1&n&&(t.TgZ(0,"mat-chip",69,63),t._uU(2,"Stat Mod Limitation "),t.qZA())}function un(n,i){1&n&&(t.TgZ(0,"mat-chip",70,63),t._uU(2," Armor Perk or Slot "),t.qZA())}function pn(n,i){1&n&&(t.TgZ(0,"mat-chip",71,63),t._uU(2,"Zero Waste "),t.qZA())}function gn(n,i){1&n&&(t.TgZ(0,"mat-chip",72,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Assume legendaries are artifice\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function _n(n,i){1&n&&(t.TgZ(0,"mat-chip",74,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Assume exotics are artifice\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function fn(n,i){1&n&&(t.TgZ(0,"mat-chip",75,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Ignoring existing artifice slots on exotic items\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function hn(n,i){1&n&&(t.TgZ(0,"mat-chip",76,63),t._uU(2," Masterworked Exotics Only "),t.qZA())}function xn(n,i){1&n&&(t.TgZ(0,"mat-chip",77,63),t._uU(2," Masterworked Legendaries Only "),t.qZA())}function yn(n,i){1&n&&(t.TgZ(0,"mat-chip",78,63),t._uU(2," Masterwork Assumption "),t.qZA())}function Cn(n,i){1&n&&(t.TgZ(0,"mat-chip",79,63),t._uU(2," Include Collection Rolls "),t.qZA())}function Tn(n,i){1&n&&(t.TgZ(0,"mat-chip",80,63),t._uU(2," Include Vendor Items "),t.qZA())}function vn(n,i){1&n&&(t.TgZ(0,"th",81),t._uU(1,"Mobility "),t.qZA())}function bn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",83),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Mobility]," ")}}function An(n,i){1&n&&(t.TgZ(0,"th",84),t._uU(1," Resilience "),t.qZA())}function wn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",85),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Resilience]," ")}}function In(n,i){1&n&&(t.TgZ(0,"th",86),t._uU(1," Recovery "),t.qZA())}function Zn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",87),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Recovery]," ")}}function Sn(n,i){1&n&&(t.TgZ(0,"th",88),t._uU(1," Discipline "),t.qZA())}function Mn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",89),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Discipline]," ")}}function On(n,i){1&n&&(t.TgZ(0,"th",90),t._uU(1," Intellect "),t.qZA())}function kn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",91),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Intellect]," ")}}function En(n,i){1&n&&(t.TgZ(0,"th",92),t._uU(1,"Strength "),t.qZA())}function Un(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",93),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Strength]," ")}}function Dn(n,i){1&n&&(t.TgZ(0,"th",94),t._uU(1," Used Mods "),t.qZA())}function Pn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._UZ(1,"app-table-mod-display",96),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("mods",e.mods)("artifice",e.artifice)}}function Rn(n,i){1&n&&(t.TgZ(0,"th",97),t._uU(1," Exotic"),t.qZA())}function Nn(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",100,63)(3,"img",101),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.s9C("matTooltip",e.name),t.MGl("src","https://bungie.net/",e.icon,"",t.LSH),t.xp6(2),t.MGl("src","https://bungie.net/",e.watermark,"",t.LSH)}}function qn(n,i){1&n&&t._UZ(0,"img",102)}function Fn(n,i){if(1&n&&(t.TgZ(0,"td",95),t.YNc(1,Nn,4,3,"ng-container",98),t.YNc(2,qn,1,0,"img",99),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e.exotic),t.xp6(1),t.Q6J("ngIf",0===e.exotic.length)}}function Jn(n,i){1&n&&(t.TgZ(0,"th",97),t._uU(1,"Sources"),t.qZA())}function Ln(n,i){1&n&&t._UZ(0,"img",106)}function Yn(n,i){1&n&&t._UZ(0,"img",107)}function Bn(n,i){if(1&n&&(t.TgZ(0,"td",95)(1,"span",103),t.YNc(2,Ln,1,0,"img",104),t.YNc(3,Yn,1,0,"img",105),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.Q6J("ngIf",!!e.usesCollectionRoll),t.xp6(1),t.Q6J("ngIf",!!e.usesVendorRoll)}}function Vn(n,i){1&n&&t._UZ(0,"th",97)}function Qn(n,i){1&n&&(t.TgZ(0,"mat-icon",111),t._uU(1," expand_more "),t.qZA())}function Hn(n,i){1&n&&(t.TgZ(0,"mat-icon",112),t._uU(1," expand_less "),t.qZA())}function Wn(n,i){1&n&&(t.TgZ(0,"mat-icon",113,63),t._uU(2," report_problem "),t.qZA())}function jn(n,i){if(1&n&&(t.TgZ(0,"td",95),t.YNc(1,Qn,2,0,"mat-icon",108),t.YNc(2,Hn,2,0,"mat-icon",109),t.YNc(3,Wn,3,0,"mat-icon",110),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngIf",o.expandedElement!==e),t.xp6(1),t.Q6J("ngIf",o.expandedElement===e),t.xp6(1),t.Q6J("ngIf",o.checkIfAnyItemsMayBeInvalid(e))}}function Gn(n,i){1&n&&(t.TgZ(0,"th",114),t._uU(1,"Tiers "),t.qZA())}function zn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.tiers," ")}}function Kn(n,i){1&n&&(t.TgZ(0,"th",115),t._uU(1,"Max Tiers "),t.qZA())}function $n(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.tiers+(5-e.modCount)," ")}}function Xn(n,i){1&n&&(t.TgZ(0,"th",116),t._uU(1,"Wasted "),t.qZA())}function to(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.waste," ")}}function eo(n,i){if(1&n&&(t.TgZ(0,"td",95)(1,"div",117),t._UZ(2,"app-expanded-result-content",118),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw();t.uIk("colspan",o.shownColumns.length),t.xp6(1),t.Q6J("@detailExpand",e===o.expandedElement?"expanded":"collapsed"),t.xp6(1),t.Q6J("element",e)}}function no(n,i){1&n&&t._UZ(0,"tr",119)}function oo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr",120),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.expandedElement=r.expandedElement===s?null:s)}),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw();t.ekj("example-expanded-row",o.expandedElement===e)}}function io(n,i){1&n&&t._UZ(0,"tr",121)}function ao(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-card-actions"),t._UZ(1,"span",122),t.TgZ(2,"button",123),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.saveBuilds())}),t._uU(3,"Download results as JSON"),t.qZA()()}}const so=function(){return["expandedDetail"]},ro=function(){return[10,20,50]};var Bt=(()=>{return(n=Bt||(Bt={}))[n.TRANSFER_NONE=0]="TRANSFER_NONE",n[n.WAITING_FOR_TRANSFER=1]="WAITING_FOR_TRANSFER",n[n.TRANSFERRING=2]="TRANSFERRING",n[n.TRANSFERRED=3]="TRANSFERRED",n[n.ERROR_DURING_TRANSFER=4]="ERROR_DURING_TRANSFER",Bt;var n})();let we=(()=>{class n{constructor(e,o,a){this.inventory=e,this.config=o,this.status=a,this.ArmorStat=c.WB,this.StatModifier=c.iV,this._results=[],this._config_assumeLegendariesMasterworked=!1,this._config_assumeExoticsMasterworked=!1,this._config_assumeClassItemMasterworked=!1,this._config_maximumStatMods=5,this._config_selectedExotics=[],this._config_tryLimitWastedStats=!1,this._config_onlyUseMasterworkedExotics=!1,this._config_onlyUseMasterworkedLegendaries=!1,this._config_includeCollectionRolls=!1,this._config_includeVendorRolls=!1,this._config_onlyShowResultsWithNoWastedStats=!1,this._config_assumeEveryLegendaryIsArtifice=!1,this._config_assumeEveryExoticIsArtifice=!1,this._config_ignoreExistingExoticArtificeSlots=!1,this._config_modslotLimitation=[],this._config_armorPerkLimitation=[],this.tableDataSource=new W.by,this.paginator=null,this.sort=null,this.expandedElement=null,this.shownColumns=["exotic","mobility","resilience","recovery","discipline","intellect","strength","tiers","mods","dropdown"],this.selectedClass=3,this.totalTime=0,this.itemCount=0,this.totalResults=0,this.parsedResults=0,this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(o=>{this.selectedClass=o.characterClass,this._config_assumeLegendariesMasterworked=o.assumeLegendariesMasterworked,this._config_assumeExoticsMasterworked=o.assumeExoticsMasterworked,this._config_assumeClassItemMasterworked=o.assumeClassItemMasterworked,this._config_tryLimitWastedStats=o.tryLimitWastedStats,this._config_maximumStatMods=o.maximumStatMods,this._config_onlyUseMasterworkedExotics=o.onlyUseMasterworkedExotics,this._config_onlyUseMasterworkedLegendaries=o.onlyUseMasterworkedLegendaries,this._config_includeCollectionRolls=o.includeCollectionRolls,this._config_includeVendorRolls=o.includeVendorRolls,this._config_onlyShowResultsWithNoWastedStats=o.onlyShowResultsWithNoWastedStats,this._config_assumeEveryLegendaryIsArtifice=o.assumeEveryLegendaryIsArtifice,this._config_assumeEveryExoticIsArtifice=o.assumeEveryExoticIsArtifice,this._config_ignoreExistingExoticArtificeSlots=o.ignoreExistingExoticArtificeSlots,this._config_selectedExotics=o.selectedExotics,this._config_armorPerkLimitation=Object.entries(o.armorPerks).filter(s=>s[1].value!=c.Pn.None).map(s=>s[1]),this._config_modslotLimitation=Object.entries(o.maximumModSlots).filter(s=>s[1].value<5).map(s=>s[1]);let a=["exotic","mobility","resilience","recovery","discipline","intellect","strength",o.showPotentialTierColumn?"potential_tiers":"tiers","mods"];o.showWastedStatsColumn&&a.push("waste"),(o.includeVendorRolls||o.includeCollectionRolls)&&a.push("source"),a.push("dropdown"),this.shownColumns=a}),this.inventory.armorResults.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){e._results=a.results,e.itemCount=a.itemCount,e.totalTime=a.totalTime,e.totalResults=a.totalResults,e.parsedResults=e._results.length,e.status.modifyStatus(s=>s.updatingResultsTable=!0),yield e.updateData(),e.status.modifyStatus(s=>s.updatingResultsTable=!1)});return function(a){return o.apply(this,arguments)}}()),this.tableDataSource.paginator=this.paginator,this.tableDataSource.sort=this.sort,this.tableDataSource.sortingDataAccessor=(o,a)=>{switch(a){case"Mobility":return o.stats[c.WB.Mobility];case"Resilience":return o.stats[c.WB.Resilience];case"Recovery":return o.stats[c.WB.Recovery];case"Discipline":return o.stats[c.WB.Discipline];case"Intellect":return o.stats[c.WB.Intellect];case"Strength":return o.stats[c.WB.Strength];case"Tiers":return o.tiers;case"Max Tiers":return 10*(o.tiers+(5-o.modCount));case"Waste":return o.waste;case"Mods":return 100*o.modCount+o.modCost}return 0}}updateData(){var e=this;return(0,x.Z)(function*(){console.time("Update Table Data"),e.tableDataSource.paginator=e.paginator,e.tableDataSource.sort=e.sort,e.tableDataSource.data=e._results,console.timeEnd("Update Table Data")})()}checkIfAnyItemsMayBeInvalid(e){return(e?.items.filter(o=>o.filter(a=>a.mayBeBugged).length>0).length||0)>0}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}saveBuilds(){let e={configCompressed:this.config.getCurrentConfigBase64Compressed(),config:this.config.readonlyConfigurationSnapshot,results:this._results.map(r=>{let m=Object.assign({},r);return m.items=m.items.filter(p=>!!p[0]).map(p=>({hash:p[0].hash,instance:p[0].itemInstanceId})),delete m.exotic,m})};document.createElement("a").download="builds.json";const a=window.URL.createObjectURL(new Blob([JSON.stringify(e,null,2)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_results.json"),document.body.appendChild(s),s.click()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(At),t.Y36(z),t.Y36(Ct))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-results"]],viewQuery:function(e,o){if(1&e&&(t.Gf(Ae.NW,5),t.Gf(ue.YE,5)),2&e){let a;t.iGM(a=t.CRH())&&(o.paginator=a.first),t.iGM(a=t.CRH())&&(o.sort=a.first)}},decls:98,vars:37,consts:[["id","card-results"],[4,"ngIf"],["fxLayout","row","fxLayoutAlign","start center","fxLayoutGap","5px",1,"config-summary-box"],["appearance","outline","fxFlex","",1,"info-box"],["matInput","","readonly","",3,"value"],["class","report-problem-icon","matSuffix","",3,"matTooltip",4,"ngIf"],["appearance","outline","disabled","",1,"config-summary-box"],["matInput","","readonly","","value","\xa0",1,"hidden-input"],["aria-label","Configuration Summary"],["disableRipple","","matTooltip","This setting enforces that all exotics are ignored.",4,"ngIf"],["disableRipple","","matTooltip","This setting enforces that only one specific exotic is used.",4,"ngIf"],["disableRipple","","matTooltip","The tool will try to fulfill your settings for all the selected exotics. If you select exotics in different slots then it will search for legendary items to allow hotswapping with the same stats.",4,"ngIf"],["disableRipple","","matTooltip","You enforced that no stat mods are used.",4,"ngIf"],["disableRipple","","matTooltip","The tool will add minor stat mods to reduce wasted stats.",4,"ngIf"],["disableRipple","","matTooltip","This setting limits available stat mod types, like major Intellect or Recovery.",4,"ngIf"],["disableRipple","","matTooltip","This setting enforces an specific armor perk or modslot for a specific armor slot.",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only builds with no wasted stats are shown.","selected","",4,"ngIf"],["disableRipple","","matTooltip","EVERY legendary is assumed to be artifice.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","EVERY exotic is assumed to be artifice.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","Ignoring existing artifice slots on exotic items.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only exotic armor pieces that are already masterworked are used.","selected","",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only legendary armor pieces are already masterworked are used.","selected","",4,"ngIf"],["disableRipple","","matTooltip","Some masterwork assumptions are in place. This means that you may have to masterwork items. Look at your advanced settings to see which ones are activated.",4,"ngIf"],["disableRipple","","matTooltip","Collection Exotic rolls will be included in the search.",4,"ngIf"],["disableRipple","","matTooltip","Currently available Vendor items will be included in the search.",4,"ngIf"],[1,"hint-text"],["aria-hidden","false","inline",""],["mat-table","","matSort","","matSortActive","Mods","matSortDirection","asc","multiTemplateDataRows","",1,"result-table",3,"dataSource"],["matColumnDef","mobility"],["mat-header-cell","","mat-sort-header","Mobility","matTooltip","The mobility of this armor combination.",4,"matHeaderCellDef"],["class","statColumn","mat-cell","",4,"matCellDef"],["matColumnDef","resilience"],["mat-header-cell","","mat-sort-header","Resilience","matTooltip","The resilience of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","recovery"],["mat-header-cell","","mat-sort-header","Recovery","matTooltip","The recovery of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","discipline"],["mat-header-cell","","mat-sort-header","Discipline","matTooltip","The discipline of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","intellect"],["mat-header-cell","","mat-sort-header","Intellect","matTooltip","The intellect of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","strength"],["mat-header-cell","","mat-sort-header","Strength","matTooltip","The strength of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","mods"],["mat-header-cell","","mat-sort-header","Mods","matTooltip","The amount of mods required for each combination. Sorting after this takes the mod cost into account.",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","exotic"],["mat-header-cell","",4,"matHeaderCellDef"],["matColumnDef","source"],["matColumnDef","dropdown"],["matColumnDef","tiers"],["mat-header-cell","","mat-sort-header","Tiers","matTooltip","The amount of Tiers in this build. A tier is each successful 10-step of any stat.",4,"matHeaderCellDef"],["matColumnDef","potential_tiers"],["mat-header-cell","","mat-sort-header","Max Tiers","matTooltip","The potential reachable stat tiers with all N stat mods used. As of now, this does NOT take mod filters into consideration.",4,"matHeaderCellDef"],["matColumnDef","waste"],["mat-header-cell","","mat-sort-header","Waste","matTooltip","How many points are wasted. Any stat not ending in 0 adds to this value.",4,"matHeaderCellDef"],["matColumnDef","expandedDetail"],["mat-header-row","",4,"matHeaderRowDef"],["class","example-element-row","mat-row","",3,"example-expanded-row","click",4,"matRowDef","matRowDefColumns"],["class","example-detail-row","mat-row","",4,"matRowDef","matRowDefColumns"],["aria-label","Select page of periodic elements","pageSize","20","showFirstLastButtons","",3,"pageSizeOptions"],[1,"no-found-sadcat-container"],["src","assets/status/emoji/sadcat.png",1,"no-found-sadcat"],[1,"warning-none-found"],["matSuffix","",1,"report-problem-icon",3,"matTooltip"],["tooltip","matTooltip"],["disableRipple","","matTooltip","This setting enforces that all exotics are ignored."],["disableRipple","","matTooltip","This setting enforces that only one specific exotic is used."],["disableRipple","","matTooltip","The tool will try to fulfill your settings for all the selected exotics. If you select exotics in different slots then it will search for legendary items to allow hotswapping with the same stats."],["disableRipple","","matTooltip","You enforced that no stat mods are used."],["disableRipple","","matTooltip","The tool will add minor stat mods to reduce wasted stats."],["disableRipple","","matTooltip","This setting limits available stat mod types, like major Intellect or Recovery."],["disableRipple","","matTooltip","This setting enforces an specific armor perk or modslot for a specific armor slot."],["disableRipple","","matTooltip","This setting means that only builds with no wasted stats are shown.","selected",""],["disableRipple","","matTooltip","EVERY legendary is assumed to be artifice.","selected","","color","warn"],["inline","",2,"height","100%"],["disableRipple","","matTooltip","EVERY exotic is assumed to be artifice.","selected","","color","warn"],["disableRipple","","matTooltip","Ignoring existing artifice slots on exotic items.","selected","","color","warn"],["disableRipple","","matTooltip","This setting means that only exotic armor pieces that are already masterworked are used.","selected",""],["disableRipple","","matTooltip","This setting means that only legendary armor pieces are already masterworked are used.","selected",""],["disableRipple","","matTooltip","Some masterwork assumptions are in place. This means that you may have to masterwork items. Look at your advanced settings to see which ones are activated."],["disableRipple","","matTooltip","Collection Exotic rolls will be included in the search."],["disableRipple","","matTooltip","Currently available Vendor items will be included in the search."],["mat-header-cell","","mat-sort-header","Mobility","matTooltip","The mobility of this armor combination."],["mat-cell","",1,"statColumn"],["alt","Mobility","src","https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Resilience","matTooltip","The resilience of this armor combination."],["alt","Resilience","src","https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Recovery","matTooltip","The recovery of this armor combination."],["alt","Recovery","src","https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Discipline","matTooltip","The discipline of this armor combination."],["alt","Discipline","src","https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Intellect","matTooltip","The intellect of this armor combination."],["alt","Intellect","src","https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Strength","matTooltip","The strength of this armor combination."],["alt","Strength","src","https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Mods","matTooltip","The amount of mods required for each combination. Sorting after this takes the mod cost into account."],["mat-cell",""],[1,"modPreview",3,"mods","artifice"],["mat-header-cell",""],[4,"ngFor","ngForOf"],["class","itemIcon","src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",4,"ngIf"],[1,"itemIcon",3,"matTooltip","src"],[1,"itemIconWatermark",3,"src"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",1,"itemIcon"],[1,"source-column"],["matTooltip","This build uses a collection exotic. You have to collect it before you can use it.","class","collectionIcon","src","https://www.bungie.net/common/destiny2_content/icons/1d01287dd47af97fef16fa6acbac23ba.png",4,"ngIf"],["matTooltip","This build uses a vendor item. You have to collect it before you can use it.","class","vendorIcon","src","https://www.bungie.net/common/destiny2_content/icons/8ef4b5bd32277dba9aee7c368404ad5d.jpg",4,"ngIf"],["matTooltip","This build uses a collection exotic. You have to collect it before you can use it.","src","https://www.bungie.net/common/destiny2_content/icons/1d01287dd47af97fef16fa6acbac23ba.png",1,"collectionIcon"],["matTooltip","This build uses a vendor item. You have to collect it before you can use it.","src","https://www.bungie.net/common/destiny2_content/icons/8ef4b5bd32277dba9aee7c368404ad5d.jpg",1,"vendorIcon"],["matTooltip","Click to show details for this build.",4,"ngIf"],["matTooltip","Click to hide details for this build.",4,"ngIf"],["aria-hidden","false","aria-label","Error","class","report-problem-icon","inline","","matTooltip","The stats of this build may be incorrect. Make sure that you remove every positive or negative stat modifier from the marked items.",4,"ngIf"],["matTooltip","Click to show details for this build."],["matTooltip","Click to hide details for this build."],["aria-hidden","false","aria-label","Error","inline","","matTooltip","The stats of this build may be incorrect. Make sure that you remove every positive or negative stat modifier from the marked items.",1,"report-problem-icon"],["mat-header-cell","","mat-sort-header","Tiers","matTooltip","The amount of Tiers in this build. A tier is each successful 10-step of any stat."],["mat-header-cell","","mat-sort-header","Max Tiers","matTooltip","The potential reachable stat tiers with all N stat mods used. As of now, this does NOT take mod filters into consideration."],["mat-header-cell","","mat-sort-header","Waste","matTooltip","How many points are wasted. Any stat not ending in 0 adds to this value."],[1,"example-element-detail"],[3,"element"],["mat-header-row",""],["mat-row","",1,"example-element-row",3,"click"],["mat-row","",1,"example-detail-row"],[1,"flex-spacer"],["mat-raised-button","","color","primary",3,"click"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card",0)(1,"mat-card-title"),t._uU(2,"Results"),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t.YNc(4,en,3,0,"ng-container",1),t.YNc(5,nn,8,0,"ng-container",1),t.qZA(),t.TgZ(6,"mat-card-content")(7,"div")(8,"div",2)(9,"mat-form-field",3)(10,"mat-label"),t._uU(11,"Items Used"),t.qZA(),t._UZ(12,"input",4),t.ALo(13,"number"),t.qZA(),t.TgZ(14,"mat-form-field",3)(15,"mat-label"),t._uU(16,"Combinations generated"),t.qZA(),t._UZ(17,"input",4),t.ALo(18,"number"),t.YNc(19,on,4,3,"mat-icon",5),t.YNc(20,an,4,3,"mat-icon",5),t.qZA(),t.TgZ(21,"mat-form-field",3)(22,"mat-label"),t._uU(23,"Time required"),t.qZA(),t._UZ(24,"input",4),t.ALo(25,"number"),t.qZA()(),t.TgZ(26,"mat-form-field",6)(27,"mat-label"),t._uU(28,"Summary of important configuration choices"),t.qZA(),t._UZ(29,"input",7),t.TgZ(30,"mat-chip-list",8),t.YNc(31,sn,3,0,"mat-chip",9),t.YNc(32,rn,3,0,"mat-chip",10),t.YNc(33,ln,3,0,"mat-chip",11),t.YNc(34,cn,3,0,"mat-chip",12),t.YNc(35,mn,3,0,"mat-chip",13),t.YNc(36,dn,3,0,"mat-chip",14),t.YNc(37,un,3,0,"mat-chip",15),t.YNc(38,pn,3,0,"mat-chip",16),t.YNc(39,gn,7,0,"mat-chip",17),t.YNc(40,_n,7,0,"mat-chip",18),t.YNc(41,fn,7,0,"mat-chip",19),t.YNc(42,hn,3,0,"mat-chip",20),t.YNc(43,xn,3,0,"mat-chip",21),t.YNc(44,yn,3,0,"mat-chip",22),t.YNc(45,Cn,3,0,"mat-chip",23),t.YNc(46,Tn,3,0,"mat-chip",24),t.qZA()(),t.TgZ(47,"div",25)(48,"mat-icon",26),t._uU(49,"info"),t.qZA(),t._uU(50," Note that you can change the sort column and order of the table by clicking on the headers. "),t.qZA(),t.TgZ(51,"table",27),t.ynx(52,28),t.YNc(53,vn,2,0,"th",29),t.YNc(54,bn,3,1,"td",30),t.BQk(),t.ynx(55,31),t.YNc(56,An,2,0,"th",32),t.YNc(57,wn,3,1,"td",30),t.BQk(),t.ynx(58,33),t.YNc(59,In,2,0,"th",34),t.YNc(60,Zn,3,1,"td",30),t.BQk(),t.ynx(61,35),t.YNc(62,Sn,2,0,"th",36),t.YNc(63,Mn,3,1,"td",30),t.BQk(),t.ynx(64,37),t.YNc(65,On,2,0,"th",38),t.YNc(66,kn,3,1,"td",30),t.BQk(),t.ynx(67,39),t.YNc(68,En,2,0,"th",40),t.YNc(69,Un,3,1,"td",30),t.BQk(),t.ynx(70,41),t.YNc(71,Dn,2,0,"th",42),t.YNc(72,Pn,2,2,"td",43),t.BQk(),t.ynx(73,44),t.YNc(74,Rn,2,0,"th",45),t.YNc(75,Fn,3,2,"td",43),t.BQk(),t.ynx(76,46),t.YNc(77,Jn,2,0,"th",45),t.YNc(78,Bn,4,2,"td",43),t.BQk(),t.ynx(79,47),t.YNc(80,Vn,1,0,"th",45),t.YNc(81,jn,4,3,"td",43),t.BQk(),t.ynx(82,48),t.YNc(83,Gn,2,0,"th",49),t.YNc(84,zn,2,1,"td",43),t.BQk(),t.ynx(85,50),t.YNc(86,Kn,2,0,"th",51),t.YNc(87,$n,2,1,"td",43),t.BQk(),t.ynx(88,52),t.YNc(89,Xn,2,0,"th",53),t.YNc(90,to,2,1,"td",43),t.BQk(),t.ynx(91,54),t.YNc(92,eo,3,3,"td",43),t.BQk(),t.YNc(93,no,1,0,"tr",55),t.YNc(94,oo,1,2,"tr",56),t.YNc(95,io,1,0,"tr",57),t.qZA(),t._UZ(96,"mat-paginator",58),t.qZA()(),t.YNc(97,ao,4,0,"mat-card-actions",1),t.qZA()),2&e&&(t.xp6(4),t.Q6J("ngIf",o.totalResults>0),t.xp6(1),t.Q6J("ngIf",0===o.totalResults),t.xp6(7),t.s9C("value",t.lcZ(13,29,o.itemCount)),t.xp6(5),t.s9C("value",t.lcZ(18,31,o.totalResults)),t.xp6(2),t.Q6J("ngIf",o.parsedResults!==o.totalResults&&5e4===o.parsedResults),t.xp6(1),t.Q6J("ngIf",o.parsedResults!==o.totalResults&&1e6===o.parsedResults),t.xp6(4),t.MGl("value","",t.lcZ(25,33,o.totalTime),"ms"),t.xp6(7),t.Q6J("ngIf",o._config_selectedExotics.indexOf(-1)>-1),t.xp6(1),t.Q6J("ngIf",1===o._config_selectedExotics.length&&-1===o._config_selectedExotics.indexOf(-1)),t.xp6(1),t.Q6J("ngIf",o._config_selectedExotics.length>1&&-1===o._config_selectedExotics.indexOf(-1)),t.xp6(1),t.Q6J("ngIf",0===o._config_maximumStatMods),t.xp6(1),t.Q6J("ngIf",o._config_tryLimitWastedStats),t.xp6(1),t.Q6J("ngIf",o._config_modslotLimitation.length>0),t.xp6(1),t.Q6J("ngIf",o._config_armorPerkLimitation.length>0),t.xp6(1),t.Q6J("ngIf",o._config_onlyShowResultsWithNoWastedStats),t.xp6(1),t.Q6J("ngIf",o._config_assumeEveryLegendaryIsArtifice),t.xp6(1),t.Q6J("ngIf",o._config_assumeEveryExoticIsArtifice),t.xp6(1),t.Q6J("ngIf",o._config_ignoreExistingExoticArtificeSlots),t.xp6(1),t.Q6J("ngIf",o._config_onlyUseMasterworkedExotics),t.xp6(1),t.Q6J("ngIf",o._config_onlyUseMasterworkedLegendaries),t.xp6(1),t.Q6J("ngIf",!o._config_onlyUseMasterworkedExotics&&!o._config_onlyUseMasterworkedLegendaries&&(o._config_assumeLegendariesMasterworked||o._config_assumeExoticsMasterworked||o._config_assumeClassItemMasterworked)),t.xp6(1),t.Q6J("ngIf",o._config_includeCollectionRolls),t.xp6(1),t.Q6J("ngIf",o._config_includeVendorRolls),t.xp6(5),t.Q6J("dataSource",o.tableDataSource),t.xp6(42),t.Q6J("matHeaderRowDef",o.shownColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.shownColumns),t.xp6(1),t.Q6J("matRowDefColumns",t.DdM(35,so)),t.xp6(1),t.Q6J("pageSizeOptions",t.DdM(36,ro)),t.xp6(1),t.Q6J("ngIf",o.totalResults>0))},styles:["#card-results[_ngcontent-%COMP%]{display:inline-block;vertical-align:top;white-space:normal;width:-moz-fit-content;width:fit-content;margin-left:3px}.statColumn[_ngcontent-%COMP%]{position:relative}.statIcon[_ngcontent-%COMP%]{position:absolute;height:22px;margin-left:2px;top:11px}.itemIcon[_ngcontent-%COMP%]{width:32px;height:32px;margin-right:3px}.itemIconWatermark[_ngcontent-%COMP%]{width:32px;height:32px;margin-right:3px;margin-left:-35px;pointer-events:none}.source-column[_ngcontent-%COMP%]{float:left}.source-column[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:nth-of-type(2){margin-top:5px;margin-bottom:-3px}.collectionIcon[_ngcontent-%COMP%], .vendorIcon[_ngcontent-%COMP%]{width:32px;margin-left:3px;display:block}tr.example-element-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom-width:0}tr.example-detail-row[_ngcontent-%COMP%]{height:0!important}.example-element-detail[_ngcontent-%COMP%]{overflow:hidden;display:flex}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}.hint-text[_ngcontent-%COMP%]{font-size:small;color:#d5d5d5}[_nghost-%COMP%] .info-box .mat-form-field-wrapper{padding-bottom:5px!important;cursor:default}.hidden-input[_ngcontent-%COMP%]{display:none}.config-summary-box[_ngcontent-%COMP%]{width:100%}.result-table[_ngcontent-%COMP%] tr.example-element-row[_ngcontent-%COMP%]{cursor:pointer}.mat-row[_ngcontent-%COMP%]:nth-child(4n+3){background-color:#7474741a}.warning-none-found[_ngcontent-%COMP%]{color:red}.no-found-sadcat-container[_ngcontent-%COMP%]{width:20px;position:relative;display:inline-block}.no-found-sadcat[_ngcontent-%COMP%]{position:absolute;width:18px;top:-1px}.cdk-column-exotic[_ngcontent-%COMP%]{min-width:45px}.cdk-column-waste[_ngcontent-%COMP%]{padding-left:5px}"],data:{animation:[(0,xt.X$)("detailExpand",[(0,xt.SB)("collapsed, void",(0,xt.oB)({height:"0px"})),(0,xt.SB)("expanded",(0,xt.oB)({height:"*"})),(0,xt.eR)("expanded <=> collapsed",(0,xt.jt)("225ms cubic-bezier(0.4, 0.0, 0.2, 1)")),(0,xt.eR)("expanded <=> void",(0,xt.jt)("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"))])]}}),n})();const lo={2:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},3:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},4:{shards:2,glimmer:500,core:0,prism:0,ascshard:0},5:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},6:{shards:3,glimmer:1e3,core:1,prism:0,ascshard:0},7:{shards:3,glimmer:2500,core:2,prism:0,ascshard:0},8:{shards:4,glimmer:3e3,core:0,prism:1,ascshard:0},9:{shards:4,glimmer:3e3,core:0,prism:2,ascshard:0},10:{shards:5,glimmer:4e3,core:0,prism:0,ascshard:1}},co={2:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},3:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},4:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},5:{shards:3,glimmer:2500,core:0,prism:0,ascshard:0},6:{shards:3,glimmer:3e3,core:2,prism:0,ascshard:0},7:{shards:4,glimmer:3e3,core:3,prism:0,ascshard:0},8:{shards:4,glimmer:4e3,core:0,prism:2,ascshard:0},9:{shards:5,glimmer:4e3,core:0,prism:3,ascshard:0},10:{shards:6,glimmer:5e3,core:0,prism:0,ascshard:3}};var pe=_(7009),mo=_(1572),ee=_(4425),le=_(4080);const uo={[w.Inventory]:"Inventory",[w.Collections]:"Collections",[w.Vendor]:"Vendor"};let po=(()=>{class n{constructor(e){this.database=e}transform(e){var o=this;return(0,x.Z)(function*(){return(yield o.database.vendorNames.where("vendorId").equals(e).first())?.vendorName??"Unknown Vendor"})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(I,16))},n.\u0275pipe=t.Yjl({name:"getVendorName",type:n,pure:!0}),n})(),go=(()=>{class n{constructor(){}transform(e){if(!e||!e.startsWith("v"))return-1;const o=parseInt(e.substring(1).split("-")[0]);return isNaN(o)?-1:o}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275pipe=t.Yjl({name:"getVendorIdFromItemId",type:n,pure:!0}),n})();function _o(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Vendor"),t.qZA(),t.TgZ(3,"td",2),t._uU(4),t.ALo(5,"async"),t.ALo(6,"getVendorName"),t.ALo(7,"getVendorIdFromItemId"),t.qZA()()),2&n){const e=t.oxw();t.xp6(4),t.Oqu(t.lcZ(5,1,t.lcZ(6,3,t.lcZ(7,5,e.itemTooltip.itemInstanceId))))}}function fo(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e)}}function ho(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e+2)}}function xo(n,i){if(1&n&&(t.TgZ(0,"div",8),t._uU(1,"\xa0"),t.qZA()),2&n){const e=t.oxw(2);t.Udp("width",e.getWidth(2))}}function yo(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t.YNc(4,fo,2,1,"span",3),t.YNc(5,ho,2,1,"span",3),t.qZA(),t.TgZ(6,"td")(7,"div",5)(8,"div",6),t._uU(9,"\xa0"),t.qZA(),t.YNc(10,xo,2,2,"div",7),t.qZA()()()),2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.xp6(2),t.Oqu(a.getArmorStatName(o)),t.xp6(2),t.Q6J("ngIf",!(null!=a.itemTooltip&&a.itemTooltip.masterworked)),t.xp6(1),t.Q6J("ngIf",null==a.itemTooltip?null:a.itemTooltip.masterworked),t.xp6(3),t.Udp("width",a.getWidth(e)),t.xp6(2),t.Q6J("ngIf",null==a.itemTooltip?null:a.itemTooltip.masterworked)}}let Co=(()=>{class n{constructor(){}getSourceText(){return this.itemTooltip?uo[this.itemTooltip.source]:""}getArmorStatName(e){return c.Mi[e]}getWidth(e){return Math.min(100,e/32*100)+"%"}getTotalStats(){return this.itemTooltip?.stats.reduce((e,o)=>e+o,0)||0}get isVendorItem(){return this.itemTooltip?.source===w.Vendor}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-tooltip-component"]],inputs:{itemTooltip:"itemTooltip"},decls:21,vars:5,consts:[[1,"tooltip-container"],["colspan","3"],["colspan","2"],[4,"ngIf"],[4,"ngFor","ngForOf"],[1,"stat-display"],[1,"stat-display-bar"],["class","stat-display-bar masterwork",3,"width",4,"ngIf"],[1,"stat-display-bar","masterwork"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"td"),t._uU(8,"Source"),t.qZA(),t.TgZ(9,"td",2),t._uU(10),t.qZA()(),t.YNc(11,_o,8,7,"tr",3),t.TgZ(12,"tr")(13,"td"),t._uU(14,"Current stats:"),t.qZA()(),t.YNc(15,yo,11,6,"tr",4),t.TgZ(16,"tr")(17,"td"),t._uU(18,"Total base stats:"),t.qZA(),t.TgZ(19,"td"),t._uU(20),t.qZA()()()()()),2&e&&(t.xp6(5),t.Oqu(null==o.itemTooltip?null:o.itemTooltip.name),t.xp6(5),t.Oqu(o.getSourceText()),t.xp6(1),t.Q6J("ngIf",o.isVendorItem&&o.itemTooltip),t.xp6(4),t.Q6J("ngForOf",null==o.itemTooltip?null:o.itemTooltip.stats),t.xp6(5),t.hij(" ",o.getTotalStats()," "))},dependencies:[Z.sg,Z.O5,Z.Ov,go,po],styles:[".tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.stat-display[_ngcontent-%COMP%]{width:70px;height:20px;background-color:#2c2c2c}.stat-display-bar[_ngcontent-%COMP%]{height:100%;background-color:#a1a1a1;float:left}.masterwork[_ngcontent-%COMP%]{background-color:#eedb9e}"]}),n})();var Lt=_(8184);let To=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){this._overlayRef&&!this._overlayRef.hasAttached()&&(this._overlayRef.attach(new le.C5(Co)).instance.itemTooltip=this.itemTooltip)}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Lt.aV),t.Y36(Lt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","itemTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",itemTooltip:"itemTooltip",contentTemplate:"contentTemplate"}}),n})(),ge=(()=>{class n{constructor(e){this.db=e,this.itemLookup=new Map}getItemCached(e){var o=this;return(0,x.Z)(function*(){if(o.itemLookup.has(e))return o.itemLookup.get(e)||void 0;const a=yield o.db.manifestArmor.where("hash").equals(e).first();return o.itemLookup.set(e,a),a})()}getExoticPerkDescription(e){var o=this;return(0,x.Z)(function*(){return e.exoticPerkHash?(yield o.getItemCached(e.exoticPerkHash))??null:null})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(I))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function vo(n,i){if(1&n&&t._UZ(0,"img",6,7),2&n){const e=t.oxw(2);t.MGl("src","https://bungie.net/",e.item.icon,"",t.LSH),t.s9C("matTooltip",e.item.name)}}function bo(n,i){if(1&n&&t._UZ(0,"img",8),2&n){const e=t.oxw(2);t.MGl("src","https://bungie.net/",e.item.watermarkIcon,"",t.LSH)}}function Ao(n,i){if(1&n&&t._UZ(0,"div",9),2&n){const e=t.oxw(2);t.ekj("vendor-item",e.isFromVendor)("collection-item",e.isFromCollection)}}function wo(n,i){1&n&&t._UZ(0,"div",10)}function Io(n,i){if(1&n&&(t.TgZ(0,"div",1),t.YNc(1,vo,2,2,"img",2),t.YNc(2,bo,1,1,"img",3),t.YNc(3,Ao,1,4,"div",4),t.YNc(4,wo,1,0,"div",5),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.item.icon),t.xp6(1),t.Q6J("ngIf",e.item.watermarkIcon),t.xp6(1),t.Q6J("ngIf",e.isFromVendor||e.isFromCollection),t.xp6(1),t.Q6J("ngIf",e.masterworked)}}let _e=(()=>{class n{constructor(e){this.iconService=e,this.itemHash=0,this.masterworked=!1,this.source=w.Inventory,this.isFromVendor=!1,this.isFromCollection=!1,this.item=void 0}ngAfterViewInit(){var e=this;return(0,x.Z)(function*(){e.item=yield e.iconService.getItemCached(e.itemHash),e.isFromVendor=e.source===w.Vendor,e.isFromCollection=e.source===w.Collections})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(ge))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-item-icon"]],inputs:{itemHash:"itemHash",masterworked:"masterworked",source:"source"},decls:1,vars:1,consts:[["class","item-icon-container",4,"ngIf"],[1,"item-icon-container"],["class","item-icon",3,"src","matTooltip",4,"ngIf"],["class","item-icon-overlay",3,"src",4,"ngIf"],["class","item-source-overlay",3,"vendor-item","collection-item",4,"ngIf"],["class","item-icon-masterwork-overlay",4,"ngIf"],[1,"item-icon",3,"src","matTooltip"],["tooltip","matTooltip"],[1,"item-icon-overlay",3,"src"],[1,"item-source-overlay"],[1,"item-icon-masterwork-overlay"]],template:function(e,o){1&e&&t.YNc(0,Io,5,4,"div",0),2&e&&t.Q6J("ngIf",o.item)},dependencies:[Z.O5,pt.gM],styles:["[_nghost-%COMP%]{height:22px;width:22px;display:block}.item-icon-masterwork-overlay[_ngcontent-%COMP%]{pointer-events:none;box-sizing:border-box;top:-1px;left:-1px;border-width:0;height:24px;width:24px;position:absolute;background-repeat:no-repeat;background-position:center;background-size:22px 22px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAJgklEQVR4AWI8t87oBYCd8rBuGAZi6N1JUQbIrJkiY6bM4EoE1EHvqb+WHsPvG5AJU522JQ/znpY03GzJ3YTovcvcVFcO5WbU8eH/OZ8R91B241c6wEzowJUUZnqlXMiZufrJSs1XUjNBUb6OcvUFF8190fzkGxS2J0ChGPQZDnYAQObJWHbNlCvZIXKxqvHN8KBp22SubByb9EKFGM2hzgyNa47vUzvKvnUToHPOINMFHG6Oo6hb6lhmMump4wROtxSMee8yjC6YI9jOnBYcGn5TZnTdBMB7d0+HB52AeKEb5QL2hQKx8RLk5IkE6eymz9CJFPJIQKxdWZKO5M1u+gw9kPvVJUjqyAt5Z98OMBAI4igO9x97koAAnSY6YHSaAB2nAiyswTbMq+/HAiHv0+4k3Ww1pOvnOvYews1Ow2rGnldEAAAIAAABACAAAAQAgAAAEAAAAgAgPwACAEAAAKiyAfJ7AXALEgAAAuAU5BMgAADki9j/BQCAlkN459OlNu6v0/V43vsAocOvq9kh1n/LX35h+B6EU9DI8fuVh/D48WMRWv742Qgtf/xshBY+fm1cMQgtefwdI5ffA/a9+frC68ox9M3enehIkvJAAC5D9vs/8F+Z/HugkfXJrOfec6QSJBi6O8IO2znX1zdZro39if/K0B8ftp2Hxxfa/vcu6DO8P5x/AaDrvwj4/uDPJDtjP09+ntDze9L+i4DRSEqwtgoQZ9rL3r9Ye/51L+Pw9tF6YuHFPJ/uWBDk2eXZvfb8YyMAwHvg673Z7AvmSF4POeSHmtDnb0xAD3qzN5gLfHsHIOvhktBJ4vOXJqABvJcZnqs5z54R7FF5ODaRiOkIGcXX+OZG7PqJnh6Ev3uOI52Z7tdRUCbdB6AFXHCDcZ3kkf2fGwEN+HGe+3xcE5yBB3umIvk5JnVIggDtnx/1u27XD5CajhBt8tqj9gMahDSan+7C629sxx6DiGmTcxOF304AwOud/SuABnTsZtNABWfaygUynjR3Ld+/GokZp4TO/JsJsEON1uN7OTEPaO9nVFHhHXizTdcN8Fl6BlER5gHk6lghYV8Tgd31DeCPL2icmhISYGsS9P7R9AErAT9JwlWCnuyFsmRuEQurKcBuqyBB72WkXtfmTCD7Au4a4/H7yYAl0N9VY0eERBqRr+Ov51yqCkTEYuuqjL4A+D4p1nvazLzOncHLt1dByhIwqpsHDzcShpIEkM4HZ5+zDEtoRLoKAgrwvwF41/WuAeg+z/1hDzk6VyGPkYW8aLfwarEwr0RJCDr/LUm4+42N8WX6z76Am3R9RoIkGGDvRN7i677TupIhqVZI7vmzPnr+1xLgwT6Bek6QtOE89rMmAGk6d8PhaG9ghSOgeLaAW1FFmYz9viLitcgBCFAgQ2dJ6dcEyLvcKxMuH2za3wW7AeOpqh/k6raz9l49XOIlQozX6pNwNCDnfde6Ckfb2SdeSejLUCXp+L3SPyAlj9FghVVHWV2etlVQ482MNfBHzwe4igSAj7T+4VnmtfdvwBJ5dxoXay/6hrc5gqrnyQCzX5H3fHYVhNd35eOrIWD4zDjZG2ntSmt8CpKTzCAnSEmp6Y7TDthyE9vbjhz7OOYAODg3THqfwEmMIJ29f1TaDwkX+8ckTCf8JAl6EjBviFo70m7v0vtTdD72EqzNgjwIgCJBr+aMRoTzbQMxzBlHIoY5JFCrA9xIZedIZLzZiwScpe1ij/vLyDu8b9p5IH2/V/4hfg+SGIUHr7oSAVhIwgbwIALpgYgLcvokvLU9gfsmgv+37117brJ90PrlHKAtWY24OWLO5/WORGWYAyJeQy8fjceHoOYz5gkTLeAPgL7YU57mHzRBQwA2Cff+5L3s1e9kn8Cuy1hAf9D/EN5YYySVKyQo4tyNSog6XucApWOZeA+Vz6UMNaXotLEiCZsgY4M9KVc/9lmBffwNHSonyQp1H/kpknDEiFeM/U2UybWRmcuEe5IcSPgAqOuQB2b3OiKBMrLumzy33dzy86HG84Z0KCtp/wL4kc7NfFdEDIucK9em8eskRl3q4bUAYc6YXalZJue6/LwkoClD9cYsP5G8d5pkT/U+Cfdd5gpI4jn2EL87eEQiID5tboPq9e+rBLvOA47D/doGj6+lKJpiQC+88WDP33h8JMADL36naIUYJYocsO+NGLOIAJJEjJnWhx7fyM0obAXLta7hmjxfp3dB5IF3AvRJwL3tzG3cjKJ8PkncBPgBocPyNXYEHAkI/md8CFA+eu8/jMiOVc1lpQRBEq38rKTNN/khkJHJXtjE8TW8T50fJO6RxvXaOSBer1j594Rjf5HfNyMSCCFoR43HBtKsirSFSCXILrh/G1p0vRdVSX4vdJvEkZYK+EVu4W0qtluCYtvGHq89MQImAApsLUHniBC0cbjXuclXcvR+o2Dq9ThXzhl3AtCcoabnHPBRdL1vCEwR30hQRAw985hwAZR1IyVcJ3o8p97HqSnE0xz1zpszAfgvSKm634e5tf9HVfaOGNcTJwLiUye2BJrnSk5OEiVZ3unv/7o/zvLT/sGshRy8i4hdyVtvk6mlaNoz4f6/dGvJkRqKgVXuDyuWLLkSZ+CiXIQVZ2CF0h0XbblkRU+hESIjq+yqZ2emJtKbZNK54vlfUBRAgl1A0BUuiyAvmdo/ff/x7QsZF5PsYY2uKw20EKA1NLpuzaNnBmddSCIZqrxIz2ydiEpprucWzrk8WzrZAGQQ5LyL4hJCqhCQ+zOVLFP5Cslzrc88KeGk0LWam1mSprc196WeH8mY/QZcngWxZ3/Y9fhsiiRjcpCzdKjhHSTHqDnCdatee/wFzF40+ph85GP9Ht7969BGjXlj0nBjbkoZJBPAbv+WB2sqWitvZXLrkrGprgluPsf5HvBr+/l1CpD4+8F/4NdnIreI64MMgFf0PUrhDRE3FjLuYLy4y9184Z1eY73w6rr7e2bNu4gvBE9fim7ftEOZkJ5I7TfkY1M+oHyiMF/R9YbcNzW3QfuLk/leIzXWLM/cgcp19FzCemU6cIz/MB9890UWjBGadM7N9QMtlCqqJiFwOjUhdaDQXQCdEwNOpzhYwMpBDrfcFpEXIsjiGJw+9jqidHo7O3+3QVO7+QpIf7ji9cbst7ogrVf8UXTDBslUgkxCCSilwjFdSAkBkSo1EcjSIBXWWvsN9SxF5ebWH3woEIS629sLNhsPabYekYTY/VR0znB/jBdcErKAavL8+A1ICXvgoqroDgAAAABJRU5ErkJggg==)}.item-icon-container[_ngcontent-%COMP%]{position:relative;transition:opacity .2s,transform .2s;width:100%;--icon-size: 22px}.item-icon-overlay[_ngcontent-%COMP%], .item-icon[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:100%;pointer-events:none}.item-source-overlay[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:0;pointer-events:none;border-top:calc(var(--icon-size) / 2) solid transparent;border-right:calc(var(--icon-size) / 2) solid transparent}.item-source-overlay.vendor-item[_ngcontent-%COMP%]{border-top-color:#00f}.item-source-overlay.collection-item[_ngcontent-%COMP%]{border-top-color:#90ee90}"]}),n})();function Zo(n,i){if(1&n&&t._UZ(0,"img",5),2&n){const e=t.oxw(2);t.s9C("src",e.url,t.LSH)}}function So(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",2,3),t.YNc(3,Zo,1,1,"img",4),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.s9C("matTooltip",e.name),t.xp6(2),t.Q6J("ngIf",e.customIconMods.indexOf(e.perk)>-1)}}function Mo(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",6,3),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.s9C("matTooltip",e.name),t.s9C("src",e.url,t.LSH)}}let fe=(()=>{class n{constructor(){this.ArmorPerkOrSlot=c.Pn,this.customIconMods=[c.Pn.SlotCrotasEnd,c.Pn.SlotRootOfNightmares,c.Pn.SlotKingsFall,c.Pn.SlotVowOfTheDisciple,c.Pn.SlotArtifice],this.perk=c.Pn.None}get name(){return c.cM[this.perk]}get url(){return c.X9[this.perk]}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-perk-icon"]],inputs:{perk:"perk"},decls:3,vars:2,consts:[[1,"overlay-icon-container"],[4,"ngIf"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",1,"element-icon",3,"matTooltip"],["tooltip","matTooltip"],["class","overlay-icon",3,"src",4,"ngIf"],[1,"overlay-icon",3,"src"],[1,"element-icon",3,"matTooltip","src"]],template:function(e,o){1&e&&(t.TgZ(0,"span",0),t.YNc(1,So,4,2,"ng-container",1),t.YNc(2,Mo,3,2,"ng-container",1),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",o.customIconMods.indexOf(o.perk)>-1),t.xp6(1),t.Q6J("ngIf",-1===o.customIconMods.indexOf(o.perk)))},dependencies:[Z.O5,pt.gM],styles:[".element-icon[_ngcontent-%COMP%]{height:100%;width:100%}.element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;pointer-events:none}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:66%;position:absolute;left:17%;top:17%;pointer-events:none}[_nghost-%COMP%]{display:inline-flex;height:30px;width:30px}"]}),n})(),Ie=(()=>{class n{transform(e,o=null){return e.filter(a=>null==o||a==o).length}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275pipe=t.Yjl({name:"count",type:n,pure:!0}),n})();function Oo(n,i){1&n&&(t.TgZ(0,"mat-toolbar",24),t._uU(1," Warning: The stats of one or more items used for this build may be invalid."),t._UZ(2,"br"),t._uU(3," Please remove all negative/positive stat modifiers from the marked items. "),t.qZA())}function ko(n,i){if(1&n&&(t.TgZ(0,"u",34,35),t._uU(2),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(2),t.Oqu(e.name)}}function Eo(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e.name)}}function Uo(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"td",36)(2,"span",37),t._uU(3),t.qZA()(),t.TgZ(4,"td",36)(5,"span",37),t._uU(6),t.qZA()(),t.TgZ(7,"td",36)(8,"span",37),t._uU(9),t.qZA()(),t.TgZ(10,"td",36)(11,"span",37),t._uU(12),t.qZA()(),t.TgZ(13,"td",36)(14,"span",37),t._uU(15),t.qZA()(),t.TgZ(16,"td",36)(17,"span",37),t._uU(18),t.qZA()(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().$implicit,a=t.oxw(2);t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Mobility]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Resilience]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Recovery]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Discipline]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Intellect]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Strength]+e)}}function Do(n,i){1&n&&(t.TgZ(0,"td",27),t._UZ(1,"mat-progress-spinner",38),t.qZA())}function Po(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",39,35),t._uU(3," check_circle_outline "),t.qZA()())}function Ro(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",40,35),t._uU(3," error_outline "),t.qZA()())}function No(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",41,35),t._uU(3," report_problem "),t.qZA()())}function qo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t.YNc(2,ko,3,1,"u",26),t.YNc(3,Eo,2,1,"span",3),t.qZA(),t.YNc(4,Uo,19,18,"ng-container",8),t.TgZ(5,"td",27)(6,"div",28),t._UZ(7,"app-item-icon",29),t.qZA()(),t.TgZ(8,"td",27)(9,"div",30),t._UZ(10,"app-armor-perk-icon",31),t.qZA()(),t.TgZ(11,"td",27)(12,"button",32),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(2);return t.KtG(r.disableItem(s.itemInstanceId))}),t.TgZ(13,"mat-icon"),t._uU(14,"block"),t.qZA()()(),t.YNc(15,Do,2,0,"td",33),t.YNc(16,Po,4,0,"td",3),t.YNc(17,Ro,4,0,"td",3),t.YNc(18,No,4,0,"td",3),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw().$implicit,a=t.oxw();t.ekj("highlight-row",o[0].slot%2==0),t.xp6(2),t.Q6J("ngIf",e.masterworked),t.xp6(1),t.Q6J("ngIf",!e.masterworked),t.xp6(1),t.Q6J("ngVar",e.masterworked||!e.exotic&&a.config_assumeLegendariesMasterworked||e.exotic&&a.config_assumeExoticsMasterworked?2:0),t.xp6(2),t.Q6J("itemTooltip",e),t.xp6(1),t.Q6J("itemHash",e.hash)("masterworked",e.masterworked)("source",e.source),t.xp6(3),t.Q6J("perk",e.perk||0),t.xp6(5),t.Q6J("ngIf",1===e.transferState||2===e.transferState),t.xp6(1),t.Q6J("ngIf",3===e.transferState),t.xp6(1),t.Q6J("ngIf",4===e.transferState),t.xp6(1),t.Q6J("ngIf",e.mayBeBugged)}}function Fo(n,i){if(1&n&&(t.ynx(0),t.YNc(1,qo,19,14,"tr",25),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Jo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td",42,35),t._uU(3,"Any Class Item"),t.qZA(),t.TgZ(4,"td",43),t._uU(5),t.qZA(),t.TgZ(6,"td",43),t._uU(7),t.qZA(),t.TgZ(8,"td",43),t._uU(9),t.qZA(),t.TgZ(10,"td",43),t._uU(11),t.qZA(),t.TgZ(12,"td",43),t._uU(13),t.qZA(),t.TgZ(14,"td",43),t._uU(15),t.qZA(),t._UZ(16,"td"),t.TgZ(17,"td")(18,"div",30),t._UZ(19,"app-armor-perk-icon",31),t.qZA()(),t.TgZ(20,"td")(21,"button",44),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllItems())}),t.TgZ(22,"mat-icon"),t._uU(23,"block"),t.qZA()()()()}if(2&n){const e=t.oxw();t.xp6(5),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(4),t.Q6J("perk",(null==e.element||null==e.element.classItem?null:e.element.classItem.perk)||0)}}function Lo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t._uU(2,"Any Class Item"),t.qZA(),t.TgZ(3,"td",45),t._uU(4,"You chose to use non-masterworked class items."),t.qZA(),t._UZ(5,"td")(6,"td"),t.TgZ(7,"td")(8,"button",44),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllItems())}),t.TgZ(9,"mat-icon"),t._uU(10,"block"),t.qZA()()()()}}function Yo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",47),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Mobility]," ")}}function Bo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",48),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Resilience]," ")}}function Vo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",49),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Recovery]," ")}}function Qo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",50),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Discipline]," ")}}function Ho(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",51),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Intellect]," ")}}function Wo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",52),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Strength]," ")}}function jo(n,i){if(1&n&&(t.TgZ(0,"tr",46)(1,"td"),t._uU(2,"Total (armor)"),t.qZA(),t.YNc(3,Yo,3,1,"td",3),t.YNc(4,Bo,3,1,"td",3),t.YNc(5,Vo,3,1,"td",3),t.YNc(6,Qo,3,1,"td",3),t.YNc(7,Ho,3,1,"td",3),t.YNc(8,Wo,3,1,"td",3),t.qZA()),2&n){const e=i.ngVar;t.xp6(3),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e)}}function Go(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function zo(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Go,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Mobility]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Mobility]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Mobility]," ")}}function Ko(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function $o(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Ko,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Resilience]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Resilience]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Resilience]," ")}}function Xo(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ti(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Xo,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Recovery]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Recovery]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Recovery]," ")}}function ei(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ni(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ei,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Discipline]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Discipline]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Discipline]," ")}}function oi(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ii(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,oi,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Intellect]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Intellect]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Intellect]," ")}}function ai(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function si(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ai,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Strength]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Strength]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Strength]," ")}}function ri(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function li(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ri,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function ci(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function mi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ci,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function di(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function ui(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,di,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function pi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function gi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,pi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function _i(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function fi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,_i,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function hi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function xi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,hi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function yi(n,i){if(1&n&&(t.TgZ(0,"tr",53)(1,"td"),t._uU(2,"Minor Mods"),t.qZA(),t.YNc(3,li,2,1,"td",8),t.ALo(4,"count"),t.YNc(5,mi,2,1,"td",8),t.ALo(6,"count"),t.YNc(7,ui,2,1,"td",8),t.ALo(8,"count"),t.YNc(9,gi,2,1,"td",8),t.ALo(10,"count"),t.YNc(11,fi,2,1,"td",8),t.ALo(12,"count"),t.YNc(13,xi,2,1,"td",8),t.ALo(14,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(3),t.Q6J("ngVar",t.xi3(4,6,e,o.StatModifier.MINOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,9,e,o.StatModifier.MINOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,12,e,o.StatModifier.MINOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,15,e,o.StatModifier.MINOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,18,e,o.StatModifier.MINOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(14,21,e,o.StatModifier.MINOR_STRENGTH))}}function Ci(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Ti(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ci,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function vi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function bi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,vi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ai(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function wi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ai,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ii(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Zi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ii,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Si(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Mi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Si,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Oi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function ki(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Oi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ei(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Major Mods"),t.qZA(),t.YNc(3,Ti,2,1,"td",8),t.ALo(4,"count"),t.YNc(5,bi,2,1,"td",8),t.ALo(6,"count"),t.YNc(7,wi,2,1,"td",8),t.ALo(8,"count"),t.YNc(9,Zi,2,1,"td",8),t.ALo(10,"count"),t.YNc(11,Mi,2,1,"td",8),t.ALo(12,"count"),t.YNc(13,ki,2,1,"td",8),t.ALo(14,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(3),t.Q6J("ngVar",t.xi3(4,6,e,o.StatModifier.MAJOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,9,e,o.StatModifier.MAJOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,12,e,o.StatModifier.MAJOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,15,e,o.StatModifier.MAJOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,18,e,o.StatModifier.MAJOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(14,21,e,o.StatModifier.MAJOR_STRENGTH))}}function Ui(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Di(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ui,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Pi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Ri(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Pi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ni(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function qi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ni,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Fi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Ji(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Fi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Li(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Yi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Li,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Bi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Vi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Bi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Qi(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"tr")(2,"td"),t._uU(3,"Artifice Mods"),t.qZA(),t.YNc(4,Di,2,1,"td",8),t.ALo(5,"count"),t.YNc(6,Ri,2,1,"td",8),t.ALo(7,"count"),t.YNc(8,qi,2,1,"td",8),t.ALo(9,"count"),t.YNc(10,Ji,2,1,"td",8),t.ALo(11,"count"),t.YNc(12,Yi,2,1,"td",8),t.ALo(13,"count"),t.YNc(14,Vi,2,1,"td",8),t.ALo(15,"count"),t.qZA(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(4),t.Q6J("ngVar",t.xi3(5,6,e,o.StatModifier.ARTIFICE_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(7,9,e,o.StatModifier.ARTIFICE_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(9,12,e,o.StatModifier.ARTIFICE_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(11,15,e,o.StatModifier.ARTIFICE_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(13,18,e,o.StatModifier.ARTIFICE_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(15,21,e,o.StatModifier.ARTIFICE_STRENGTH))}}function Hi(n,i){if(1&n&&(t.TgZ(0,"tr",56)(1,"td"),t._uU(2,"Total"),t.qZA(),t.TgZ(3,"td"),t._uU(4),t._UZ(5,"img",47),t.qZA(),t.TgZ(6,"td"),t._uU(7),t._UZ(8,"img",48),t.qZA(),t.TgZ(9,"td"),t._uU(10),t._UZ(11,"img",49),t.qZA(),t.TgZ(12,"td"),t._uU(13),t._UZ(14,"img",50),t.qZA(),t.TgZ(15,"td"),t._uU(16),t._UZ(17,"img",51),t.qZA(),t.TgZ(18,"td"),t._uU(19),t._UZ(20,"img",52),t.qZA()()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(4),t.hij(" ",e[o.ArmorStat.Mobility]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Resilience]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Recovery]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Discipline]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Intellect]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Strength]," ")}}function Wi(n,i){if(1&n&&(t.TgZ(0,"span",63),t._UZ(1,"img",64),t._uU(2),t.ALo(3,"number"),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",t.lcZ(3,1,e.glimmer)," ")}}function ji(n,i){if(1&n&&(t.TgZ(0,"span",65),t._UZ(1,"img",66),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.core," ")}}function Gi(n,i){if(1&n&&(t.TgZ(0,"span",67),t._UZ(1,"img",68),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.prism," ")}}function zi(n,i){if(1&n&&(t.TgZ(0,"span",69),t._UZ(1,"img",70),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.ascshard," ")}}function Ki(n,i){if(1&n&&(t.TgZ(0,"div",58),t._uU(1," Total material cost: "),t.YNc(2,Wi,4,3,"span",59),t.YNc(3,ji,3,1,"span",60),t.YNc(4,Gi,3,1,"span",61),t.YNc(5,zi,3,1,"span",62),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(2),t.Q6J("ngIf",e.glimmer>0),t.xp6(1),t.Q6J("ngIf",e.core>0),t.xp6(1),t.Q6J("ngIf",e.prism>0),t.xp6(1),t.Q6J("ngIf",e.ascshard>0)}}function $i(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ki,6,4,"div",57),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.total>0)}}function Xi(n,i){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"button",71),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.openSnackBar("Copied the DIM search query to your clipboard."))}),t._uU(2," Copy DIM query to clipboard "),t.qZA(),t.BQk()}if(2&n){const e=i.ngVar;t.xp6(1),t.Q6J("cdkCopyToClipboard",e)}}function ta(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1," and use a masterworked class item"),t.qZA())}function ea(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.name," ")}}function na(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1," Masterwork these items: "),t.TgZ(2,"ul"),t.YNc(3,ea,2,1,"li",2),t.qZA()()),2&n){const e=t.oxw().ngVar;t.xp6(3),t.Q6J("ngForOf",e)}}function oa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,na,4,1,"li",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.length>0)}}function ia(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function aa(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function sa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function ra(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function la(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,ia,2,1,"span",3),t.YNc(2,aa,2,0,"ng-container",3),t.YNc(3,sa,2,1,"span",3),t._uU(4," Mobility Mod"),t.YNc(5,ra,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function ca(n,i){if(1&n&&(t.ynx(0),t.YNc(1,la,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ma(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ca,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_MOBILITY))}}function da(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function ua(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function pa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function ga(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function _a(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,da,2,1,"span",3),t.YNc(2,ua,2,0,"ng-container",3),t.YNc(3,pa,2,1,"span",3),t._uU(4," Resilience Mod"),t.YNc(5,ga,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function fa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,_a,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ha(n,i){if(1&n&&(t.ynx(0),t.YNc(1,fa,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_RESILIENCE))}}function xa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function ya(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Ca(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Ta(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function va(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,xa,2,1,"span",3),t.YNc(2,ya,2,0,"ng-container",3),t.YNc(3,Ca,2,1,"span",3),t._uU(4," Recovery Mod"),t.YNc(5,Ta,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function ba(n,i){if(1&n&&(t.ynx(0),t.YNc(1,va,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Aa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ba,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_RECOVERY))}}function wa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Ia(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Za(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Sa(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ma(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,wa,2,1,"span",3),t.YNc(2,Ia,2,0,"ng-container",3),t.YNc(3,Za,2,1,"span",3),t._uU(4," Discipline Mod"),t.YNc(5,Sa,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Oa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ma,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ka(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Oa,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_DISCIPLINE))}}function Ea(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Ua(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Da(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Pa(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ra(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,Ea,2,1,"span",3),t.YNc(2,Ua,2,0,"ng-container",3),t.YNc(3,Da,2,1,"span",3),t._uU(4," Intellect Mod"),t.YNc(5,Pa,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Na(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ra,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function qa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Na,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_INTELLECT))}}function Fa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Ja(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function La(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Ya(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ba(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,Fa,2,1,"span",3),t.YNc(2,Ja,2,0,"ng-container",3),t.YNc(3,La,2,1,"span",3),t._uU(4," Strength Mod"),t.YNc(5,Ya,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Va(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ba,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Qa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Va,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_STRENGTH))}}function Ha(n,i){if(1&n&&(t.TgZ(0,"ul"),t.YNc(1,ma,3,4,"ng-container",8),t.ALo(2,"count"),t.YNc(3,ha,3,4,"ng-container",8),t.ALo(4,"count"),t.YNc(5,Aa,3,4,"ng-container",8),t.ALo(6,"count"),t.YNc(7,ka,3,4,"ng-container",8),t.ALo(8,"count"),t.YNc(9,qa,3,4,"ng-container",8),t.ALo(10,"count"),t.YNc(11,Qa,3,4,"ng-container",8),t.ALo(12,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,6,e,o.StatModifier.MINOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(4,9,e,o.StatModifier.MINOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,12,e,o.StatModifier.MINOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,15,e,o.StatModifier.MINOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,18,e,o.StatModifier.MINOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,21,e,o.StatModifier.MINOR_STRENGTH))}}function Wa(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1,"Equip the following stat mods: "),t.YNc(2,Ha,13,24,"ul",8),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngVar",null==e.element?null:e.element.mods)}}function ja(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij(" Equip the mod ",e.name," ")}}function Ga(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ja,2,1,"li",3),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(3);t.xp6(1),t.Q6J("ngIf",e.type===o.ModifierType.CombatStyleMod)}}function za(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ga,2,1,"ng-container",8),t.BQk()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",o.ModInformation[e])}}function Ka(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij(" Equip the stasis fragment ",e.name," ")}}function $a(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ka,2,1,"li",3),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(3);t.xp6(1),t.Q6J("ngIf",e.type===o.ModifierType.Stasis)}}function Xa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,$a,2,1,"ng-container",8),t.BQk()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",o.ModInformation[e])}}function ts(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1," Equip any mods and fragments that you enabled in the configuration: "),t.TgZ(2,"ul"),t.YNc(3,za,2,1,"ng-container",2),t.YNc(4,Xa,2,1,"ng-container",2),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngForOf",e.config_enabledMods),t.xp6(1),t.Q6J("ngForOf",e.config_enabledMods)}}function es(n,i){if(1&n&&t._UZ(0,"div",75),2&n){const e=t.oxw().$implicit;t.Tol(e)}}function ns(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,es,1,2,"div",74),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",!!e)}}function os(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._UZ(4,"img",72),t.qZA(),t.YNc(5,ns,2,1,"td",2),t.TgZ(6,"td",73),t._uU(7),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.Oqu(o.ArmorStatNames[e]),t.xp6(2),t.s9C("alt",o.ArmorStatNames[e]),t.s9C("src",o.ArmorStatIconUrls[e],t.LSH),t.xp6(1),t.Q6J("ngForOf",o.getColumnForStat(e)),t.xp6(2),t.Oqu(o.getTiersForStat(e))}}function is(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Exotic:"),t.qZA(),t.TgZ(3,"td",76),t._uU(4),t.qZA(),t.TgZ(5,"td",77)(6,"div",78),t._UZ(7,"img",79)(8,"img",80),t.qZA()()()),2&n){const e=t.oxw().ngVar;t.xp6(4),t.Oqu(e[0].name),t.xp6(3),t.MGl("src","https://bungie.net/",e[0].icon,"",t.LSH),t.xp6(1),t.MGl("src","https://bungie.net/",e[0].watermark,"",t.LSH)}}function as(n,i){if(1&n&&(t.ynx(0),t.YNc(1,is,9,3,"tr",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e[0])}}let ss=(()=>{class n{constructor(e,o,a,s){this.config=e,this._snackBar=o,this.bungieApi=a,this.membership=s,this.showGenericClassItemRow=!1,this.armorStatIds=[0,1,2,3,4,5],this.ModifierType=U.O,this.ModInformation=N.F,this.ArmorStatNames=c.Mi,this.ArmorStatIconUrls=c.lp,this.ArmorStat=c.WB,this.StatModifier=c.iV,this.config_characterClass=0,this.config_assumeLegendariesMasterworked=!1,this.config_assumeExoticsMasterworked=!1,this.config_assumeClassItemMasterworked=!1,this.config_enabledMods=[],this.DIMUrl="",this.configValues=[0,0,0,0,0,0],this.element=null,this.ngUnsubscribe=new R.xQ}buildItemIdString(e){if(!e)return"";let o=e.items.flat().filter(r=>r.slot!=v.y.ArmorSlotClass).map(r=>`id:'${r.itemInstanceId}'`).join(" or "),a=["is:classitem"],s=e.items.flat().filter(r=>r.slot==v.y.ArmorSlotClass).map(r=>`exactname:'${r.name}'`).join(" or ");return s.length>0&&(a=[s]),e.classItem.perk!=c.Pn.None&&e.classItem.perk!=c.Pn.COUNT&&a.push(c.ID[e.classItem.perk||0]),a.length>1&&(o+=` or (${a.join(" ")})`),o}openSnackBar(e){this._snackBar.open(e,"",{duration:2500,politeness:"polite"})}ngOnInit(){this.showGenericClassItemRow=(this.element?.items.filter(e=>e.length>0).length||0)<=4,this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{this.config_characterClass=e.characterClass,this.config_assumeLegendariesMasterworked=e.assumeLegendariesMasterworked,this.config_assumeExoticsMasterworked=e.assumeExoticsMasterworked,this.config_assumeClassItemMasterworked=e.assumeClassItemMasterworked,this.config_enabledMods=e.enabledMods,this.configValues=e.enabledMods.reduce((o,a)=>o.concat(N.F[a].bonus),[]).reduce((o,a)=>(a.stat==c.AR.ClassAbilityRegenerationStat?o[[1,0,2][e.characterClass]]+=a.value:o[a.stat]+=a.value,o),[0,0,0,0,0,0]),this.DIMUrl=this.generateDIMLink(e)})}disableAllItems(){this.config.modifyConfiguration(e=>{for(let o of this.element?.items.flat())e.disabledItems.push(o.itemInstanceId)})}disableItem(e){this.config.modifyConfiguration(o=>{o.disabledItems.push(e)})}get mayAnyItemBeBugged(){return(this.element?.items.flat().filter(e=>e.mayBeBugged).length||0)>0}getCharacterId(){var e=this;return(0,x.Z)(function*(){let o=yield e.membership.getCharacters();return o=o.filter(a=>a.clazz==e.config_characterClass),0==o.length?(e.openSnackBar("Error: Could not find a character to move the items to."),null):o[0].characterId})()}moveItems(e=!1){var o=this;return(0,x.Z)(function*(){for(let m of(o.element?.items||[]).flat())m.transferState=Bt.WAITING_FOR_TRANSFER;let a=yield o.getCharacterId();if(!a)return;let s=!0,r=(o.element?.items||[]).flat().sort(m=>m.exotic?1:-1);for(let m of r){m.transferState=Bt.TRANSFERRING;let p=yield o.bungieApi.transferItem(m.itemInstanceId,a,e);m.transferState=p?Bt.TRANSFERRED:Bt.ERROR_DURING_TRANSFER,p||(s=!1)}o.openSnackBar(s?"Success! Moved all the items.":"Some of the items could not be moved. Make sure that there is enough space in the specific slot. This tool will not move items out of your inventory.")})()}getItemsThatMustBeMasterworked(){return this.element?.items.flat().filter(e=>!(e.masterworked||e.exotic&&!this.config_assumeExoticsMasterworked||!e.exotic&&!this.config_assumeLegendariesMasterworked))}calculateRequiredMasterworkCost(){let e={shards:0,glimmer:0,core:0,prism:0,ascshard:0,total:0},o=this.element?.items.flat()||[];o=o.filter(a=>a.energyLevel<10&&(a.exotic&&this.config_assumeExoticsMasterworked||!a.exotic&&this.config_assumeLegendariesMasterworked));for(let a of o){let s=a.exotic?co:lo;for(let r=a.energyLevel;r<10;r++)for(let m in s[r+1])e[m]+=s[r+1][m],e.total++}return e}generateDIMLink(e){const o=[],a=[];for(let d of this.config_enabledMods){const S=N.F[d];S.type===U.O.CombatStyleMod?o.push(S.hash):a.push(S.hash)}if(this.element){for(let d of this.element?.mods||[])o.push(c.K9[d][3]);for(let d of this.element?.artifice||[])o.push(c.K9[d][3])}var s={statConstraints:[],mods:o,assumeArmorMasterwork:e.assumeLegendariesMasterworked?e.assumeExoticsMasterworked?3:2:1};for(let d of this.armorStatIds)s.statConstraints.push({statHash:c.kw[d],minTier:e.minimumStatTiers[d].value,maxTier:e.minimumStatTiers[d].fixed?e.minimumStatTiers[d].value:10});if(1==e.selectedExotics.length)s.exoticArmorHash=e.selectedExotics[0];else{var r=this.element?.exotic;if(r&&1==r.length){var m=r[0].hash;m&&(s.exoticArmorHash=parseInt(m,10))}}const p={id:"d2ap",name:"D2ArmorPicker Loadout",classType:e.characterClass,parameters:s,equipped:(this.element?.items||[]).filter(d=>d.length>0).map(([d])=>({id:d.itemInstanceId,hash:d.hash})),unequipped:[],clearSpace:!1};if(a.length){const d=a.reduce((S,F,G)=>(S[G+7]=F,S),{});if(3!=e.characterClass&&e.selectedModElement!=U.O.CombatStyleMod){const F=c.Bd[e.characterClass][e.selectedModElement];F&&p.equipped.push({id:"12345",hash:F,socketOverrides:d})}}return"https://app.destinyitemmanager.com/loadouts?loadout="+encodeURIComponent(JSON.stringify(p))}goToDIM(){window.open(this.DIMUrl,"blank")}getTiersForStat(e){return Math.floor((this.element?.stats[e]||0)/10)}getColumnForStat(e){var o=Math.floor(this.configValues[e]/10);let a=[],s=0,r=Math.ceil((5*(this.element?.mods.filter(p=>p==1+2*e)||[]).length+10*(this.element?.mods.filter(p=>p==2+2*e)||[]).length)/10);var m=this.getTiersForStat(e)-o-r;for(let p=0;p10?" over100":""));for(let p=0;p10?" over100":""));for(let p=0;p10?" over100":""));for(;s++<10;)a.push("");return a}getRequiredMasterworkBonus(){return 2*(this.element?.items.filter(e=>!e[0].masterworked&&!e[0].exotic&&this.config_assumeLegendariesMasterworked||e[0].exotic&&this.config_assumeExoticsMasterworked)||[]).length}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(pe.ux),t.Y36(bt),t.Y36(Dt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-expanded-result-content"]],inputs:{element:"element"},decls:124,vars:26,consts:[["class","invalid-item-box mat-elevation-z4","color","warn",4,"ngIf"],[1,"specificStatTable"],[4,"ngFor","ngForOf"],[4,"ngIf"],["class","result-total-gear result-total highlight-row",4,"ngVar"],[1,"result-config"],[3,"class",4,"ngIf"],["class","highlight-row",4,"ngVar"],[4,"ngVar"],["class","result-total-all result-total highlight-row",4,"ngVar"],[1,"buttonContainer"],["color","primary","mat-raised-button","","matTooltip","Use this button to open this build as a DIM Loadout.",3,"click"],["mat-stroked-button","","matTooltip","Click this button to move Items to your inventory. Make sure that you have enough space in your inventory. This tool will not move any items out of your inventory.",3,"click"],["mat-stroked-button","","matTooltip","Click this button to equip the Items. Make sure that you have enough space in your inventory. This tool will not move any items out of your inventory.",3,"click"],[1,"mat-elevation-z6"],[1,"stat-preview"],["colspan","2"],[1,"tier-column"],[1,"legend"],[1,"energy-bar","normal"],["colspan","3"],[1,"energy-bar","mod"],["colspan","4"],[1,"energy-bar","config"],["color","warn",1,"invalid-item-box","mat-elevation-z4"],[3,"highlight-row",4,"ngFor","ngForOf"],["class","item-name-mw","matTooltip","This item is already masterworked.",4,"ngIf"],[1,"icon-column"],[1,"item-icon-container",3,"itemTooltip"],[1,"item-icon",3,"itemHash","masterworked","source"],[2,"position","relative","width","25px"],[3,"perk"],["mat-icon-button","","matTooltip","Disable this item from the results. It will not be used to generate results anymore, but you can always undo this.",1,"item-info-menu-btn",3,"click"],["class","icon-column",4,"ngIf"],["matTooltip","This item is already masterworked.",1,"item-name-mw"],["tooltip","matTooltip"],[1,"item-stat-container"],[1,"item-stat-value"],["color","primary","diameter","22","mode","indeterminate",1,"item-loading-spinner"],["aria-hidden","false","aria-label","Success","inline","","matTooltip","Item successfully moved to inventory.",1,"item-moved-icon"],["aria-hidden","false","aria-label","Error","inline","","matTooltip","This item could not be moved. Make sure that there is enough space on your character. This tool will not move items out of your inventory.",1,"report-problem-icon"],["aria-hidden","false","aria-label","Error","inline","","matTooltip","The stats of this item may be incorrect. Make sure that you remove every positive or negative stat modifier from this item.",1,"report-problem-icon"],["matTooltip","Class item should be masterworked.",1,"item-name-mw"],[1,"text-mw"],["mat-icon-button","","matTooltip","Disable all four items above from the results. They will not be used to generate results anymore, but you can always undo this.",1,"item-info-menu-btn","report-problem-icon",3,"click"],["colspan","6",1,"text-centered"],[1,"result-total-gear","result-total","highlight-row"],["alt","Mobility","src","https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",1,"statIcon"],["alt","Resilience","src","https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",1,"statIcon"],["alt","Recovery","src","https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",1,"statIcon"],["alt","Discipline","src","https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",1,"statIcon"],["alt","Intellect","src","https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",1,"statIcon"],["alt","Strength","src","https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png",1,"statIcon"],[1,"highlight-row"],["class","positive",4,"ngIf"],[1,"positive"],[1,"result-total-all","result-total","highlight-row"],["style","margin-top: 10px",4,"ngIf"],[2,"margin-top","10px"],["class","currency-icon-container","matTooltip","Glimmer",4,"ngIf"],["class","currency-icon-container","matTooltip","Enhancement Cores",4,"ngIf"],["class","currency-icon-container","matTooltip","Enhancement Prism",4,"ngIf"],["class","currency-icon-container","matTooltip","Ascendant Shard",4,"ngIf"],["matTooltip","Glimmer",1,"currency-icon-container"],["alt","Glimmer","src","https://www.bungie.net/common/destiny2_content/icons/88993eaeedad32f42072df6f77f47311.png",1,"currency-icon"],["matTooltip","Enhancement Cores",1,"currency-icon-container"],["alt","Enhancement Cores","src","https://www.bungie.net/common/destiny2_content/icons/0a4eb695ed55b4e720ddc401460cc0f9.jpg",1,"currency-icon"],["matTooltip","Enhancement Prism",1,"currency-icon-container"],["alt","Enhancement Prism","src","https://www.bungie.net/common/destiny2_content/icons/dea2a35badf7466d4c2c2697ce6e8d87.jpg",1,"currency-icon"],["matTooltip","Ascendant Shard",1,"currency-icon-container"],["alt","Ascendant Shard","src","https://www.bungie.net/common/destiny2_content/icons/0271d214fc3ec91b3def799a4b286b46.jpg",1,"currency-icon"],["color","primary","mat-raised-button","","matTooltip","Use this button to copy a DIM search query to your clip board. It allows you to search the given items in DIM.",3,"cdkCopyToClipboard","click"],[2,"height","18px",3,"alt","src"],[1,"sum-tiers"],["class","energy-bar",3,"class",4,"ngIf"],[1,"energy-bar"],["colspan","10"],["colspan","1"],[1,"item-icon-container"],[1,"item-icon",3,"src"],[1,"item-icon-overlay",3,"src"]],template:function(e,o){1&e&&(t.TgZ(0,"div"),t.YNc(1,Oo,4,0,"mat-toolbar",0),t._uU(2," This table shows you the expected stats of any item: "),t.TgZ(3,"table",1)(4,"thead")(5,"tr")(6,"th"),t._uU(7,"Name"),t.qZA(),t.TgZ(8,"th"),t._uU(9,"Mobility"),t.qZA(),t.TgZ(10,"th"),t._uU(11,"Resilience"),t.qZA(),t.TgZ(12,"th"),t._uU(13,"Recovery"),t.qZA(),t.TgZ(14,"th"),t._uU(15,"Discipline"),t.qZA(),t.TgZ(16,"th"),t._uU(17,"Intellect"),t.qZA(),t.TgZ(18,"th"),t._uU(19,"Strength"),t.qZA(),t._UZ(20,"th")(21,"th"),t.qZA()(),t.YNc(22,Fo,2,1,"ng-container",2),t.YNc(23,Jo,24,7,"tr",3),t.YNc(24,Lo,11,0,"tr",3),t.YNc(25,jo,9,6,"tr",4),t.TgZ(26,"tr",5)(27,"td"),t._uU(28,"Configuration"),t.qZA(),t.TgZ(29,"td"),t.YNc(30,zo,3,4,"span",6),t.qZA(),t.TgZ(31,"td"),t.YNc(32,$o,3,4,"span",6),t.qZA(),t.TgZ(33,"td"),t.YNc(34,ti,3,4,"span",6),t.qZA(),t.TgZ(35,"td"),t.YNc(36,ni,3,4,"span",6),t.qZA(),t.TgZ(37,"td"),t.YNc(38,ii,3,4,"span",6),t.qZA(),t.TgZ(39,"td"),t.YNc(40,si,3,4,"span",6),t.qZA()(),t.YNc(41,yi,15,24,"tr",7),t.YNc(42,Ei,15,24,"tr",8),t.YNc(43,Qi,16,24,"ng-container",8),t.YNc(44,Hi,21,6,"tr",9),t.qZA()(),t.YNc(45,$i,2,1,"ng-container",8),t.TgZ(46,"div",10),t.YNc(47,Xi,3,1,"ng-container",8),t.TgZ(48,"button",11),t.NdJ("click",function(){return o.goToDIM()}),t._uU(49," Open Loadout in DIM "),t.qZA(),t._UZ(50,"br"),t.TgZ(51,"small"),t._uU(52,"The following two buttons may not work for some at the moment:"),t.qZA(),t._UZ(53,"br"),t.TgZ(54,"button",12),t.NdJ("click",function(){return o.moveItems()}),t._uU(55," Move items to inventory (beta) "),t.qZA(),t.TgZ(56,"button",13),t.NdJ("click",function(){return o.moveItems(!0)}),t._uU(57," Equip Items (beta) "),t.qZA()(),t.TgZ(58,"mat-accordion")(59,"mat-expansion-panel",14)(60,"mat-expansion-panel-header")(61,"mat-panel-title"),t._uU(62," What to do now? "),t.qZA(),t.TgZ(63,"mat-panel-description"),t._uU(64," Detailed Instructions of to get your loadout ready. "),t.qZA()(),t.TgZ(65,"div")(66,"ol")(67,"li"),t._uU(68," Move all related items into your inventory "),t.YNc(69,ta,2,0,"span",3),t._uU(70,". "),t.qZA(),t.YNc(71,oa,2,1,"ng-container",8),t.YNc(72,Wa,3,1,"li",3),t.ALo(73,"count"),t.YNc(74,ts,5,2,"li",3),t.qZA()()(),t.TgZ(75,"mat-expansion-panel",14)(76,"mat-expansion-panel-header")(77,"mat-panel-title"),t._uU(78," Stat overview "),t.qZA(),t.TgZ(79,"mat-panel-description"),t._uU(80," Shows a summary of all the stats and where they come from. "),t.qZA()(),t.TgZ(81,"table",15)(82,"tr")(83,"td",16),t._uU(84,"Stat"),t.qZA(),t.TgZ(85,"td",17),t._uU(86,"1"),t.qZA(),t.TgZ(87,"td",17),t._uU(88,"2"),t.qZA(),t.TgZ(89,"td",17),t._uU(90,"3"),t.qZA(),t.TgZ(91,"td",17),t._uU(92,"4"),t.qZA(),t.TgZ(93,"td",17),t._uU(94,"5"),t.qZA(),t.TgZ(95,"td",17),t._uU(96,"6"),t.qZA(),t.TgZ(97,"td",17),t._uU(98,"7"),t.qZA(),t.TgZ(99,"td",17),t._uU(100,"8"),t.qZA(),t.TgZ(101,"td",17),t._uU(102,"9"),t.qZA(),t.TgZ(103,"td",17),t._uU(104,"10"),t.qZA(),t.TgZ(105,"td"),t._uU(106,"Tiers"),t.qZA()(),t.YNc(107,os,8,5,"tr",2),t.TgZ(108,"tr",18)(109,"td",16),t._uU(110,"Armor"),t.qZA(),t.TgZ(111,"td"),t._UZ(112,"div",19),t.qZA(),t.TgZ(113,"td",20),t._uU(114,"Stat Mod"),t.qZA(),t.TgZ(115,"td"),t._UZ(116,"div",21),t.qZA(),t.TgZ(117,"td",22),t._uU(118,"Fragments & Mods"),t.qZA(),t.TgZ(119,"td"),t._UZ(120,"div",23),t.qZA()(),t.YNc(121,as,2,1,"ng-container",8),t.qZA()()(),t._UZ(122,"br")(123,"br")),2&e&&(t.xp6(1),t.Q6J("ngIf",o.mayAnyItemBeBugged),t.xp6(21),t.Q6J("ngForOf",null==o.element?null:o.element.items),t.xp6(1),t.Q6J("ngIf",o.showGenericClassItemRow&&o.config_assumeClassItemMasterworked),t.xp6(1),t.Q6J("ngIf",o.showGenericClassItemRow&&!o.config_assumeClassItemMasterworked),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.statsNoMods),t.xp6(5),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Mobility]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Resilience]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Recovery]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Discipline]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Intellect]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Strength]),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.mods),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.mods),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.artifice),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.stats),t.xp6(1),t.Q6J("ngVar",o.calculateRequiredMasterworkCost()),t.xp6(2),t.Q6J("ngVar",o.buildItemIdString(o.element)),t.xp6(22),t.Q6J("ngIf",o.config_assumeClassItemMasterworked),t.xp6(2),t.Q6J("ngVar",o.getItemsThatMustBeMasterworked()),t.xp6(1),t.Q6J("ngIf",(null==o.element?null:o.element.mods).length>0&&t.xi3(73,23,null==o.element?null:o.element.mods,o.StatModifier.NONE)<5),t.xp6(2),t.Q6J("ngIf",o.config_enabledMods.length>0),t.xp6(33),t.Q6J("ngForOf",o.armorStatIds),t.xp6(14),t.Q6J("ngVar",null==o.element?null:o.element.exotic))},dependencies:[Z.sg,Z.O5,rt.lW,pt.gM,St.Hw,It.Ye,mt.pp,mt.ib,mt.yz,mt.yK,mt.u4,mo.Ou,ee.i3,Kt,To,_e,fe,Z.JJ,Ie],styles:[".element-icon[_ngcontent-%COMP%]{width:22px}.element-icon-mini[_ngcontent-%COMP%]{height:12px}.item-loading-spinner[_ngcontent-%COMP%]{width:22px;height:22px;margin-bottom:6px}.item-icon[_ngcontent-%COMP%]{width:22px}.item-icon-overlay[_ngcontent-%COMP%]{width:22px;margin-left:-22px}.item-icon-container[_ngcontent-%COMP%]{position:relative;contain:layout paint style;box-sizing:border-box;width:var(--item-size);transition:opacity .2s,transform .2s;margin-top:-4px}.item-icon-masterwork-overlay[_ngcontent-%COMP%]{pointer-events:none;box-sizing:border-box;top:-1px;left:-1px;border-width:0;height:24px;width:24px;position:absolute;background-repeat:no-repeat;background-position:center;background-size:22px 22px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAJgklEQVR4AWI8t87oBYCd8rBuGAZi6N1JUQbIrJkiY6bM4EoE1EHvqb+WHsPvG5AJU522JQ/znpY03GzJ3YTovcvcVFcO5WbU8eH/OZ8R91B241c6wEzowJUUZnqlXMiZufrJSs1XUjNBUb6OcvUFF8190fzkGxS2J0ChGPQZDnYAQObJWHbNlCvZIXKxqvHN8KBp22SubByb9EKFGM2hzgyNa47vUzvKvnUToHPOINMFHG6Oo6hb6lhmMump4wROtxSMee8yjC6YI9jOnBYcGn5TZnTdBMB7d0+HB52AeKEb5QL2hQKx8RLk5IkE6eymz9CJFPJIQKxdWZKO5M1u+gw9kPvVJUjqyAt5Z98OMBAI4igO9x97koAAnSY6YHSaAB2nAiyswTbMq+/HAiHv0+4k3Ww1pOvnOvYews1Ow2rGnldEAAAIAAABACAAAAQAgAAAEAAAAgAgPwACAEAAAKiyAfJ7AXALEgAAAuAU5BMgAADki9j/BQCAlkN459OlNu6v0/V43vsAocOvq9kh1n/LX35h+B6EU9DI8fuVh/D48WMRWv742Qgtf/xshBY+fm1cMQgtefwdI5ffA/a9+frC68ox9M3enehIkvJAAC5D9vs/8F+Z/HugkfXJrOfec6QSJBi6O8IO2znX1zdZro39if/K0B8ftp2Hxxfa/vcu6DO8P5x/AaDrvwj4/uDPJDtjP09+ntDze9L+i4DRSEqwtgoQZ9rL3r9Ye/51L+Pw9tF6YuHFPJ/uWBDk2eXZvfb8YyMAwHvg673Z7AvmSF4POeSHmtDnb0xAD3qzN5gLfHsHIOvhktBJ4vOXJqABvJcZnqs5z54R7FF5ODaRiOkIGcXX+OZG7PqJnh6Ev3uOI52Z7tdRUCbdB6AFXHCDcZ3kkf2fGwEN+HGe+3xcE5yBB3umIvk5JnVIggDtnx/1u27XD5CajhBt8tqj9gMahDSan+7C629sxx6DiGmTcxOF304AwOud/SuABnTsZtNABWfaygUynjR3Ld+/GokZp4TO/JsJsEON1uN7OTEPaO9nVFHhHXizTdcN8Fl6BlER5gHk6lghYV8Tgd31DeCPL2icmhISYGsS9P7R9AErAT9JwlWCnuyFsmRuEQurKcBuqyBB72WkXtfmTCD7Au4a4/H7yYAl0N9VY0eERBqRr+Ov51yqCkTEYuuqjL4A+D4p1nvazLzOncHLt1dByhIwqpsHDzcShpIEkM4HZ5+zDEtoRLoKAgrwvwF41/WuAeg+z/1hDzk6VyGPkYW8aLfwarEwr0RJCDr/LUm4+42N8WX6z76Am3R9RoIkGGDvRN7i677TupIhqVZI7vmzPnr+1xLgwT6Bek6QtOE89rMmAGk6d8PhaG9ghSOgeLaAW1FFmYz9viLitcgBCFAgQ2dJ6dcEyLvcKxMuH2za3wW7AeOpqh/k6raz9l49XOIlQozX6pNwNCDnfde6Ckfb2SdeSejLUCXp+L3SPyAlj9FghVVHWV2etlVQ482MNfBHzwe4igSAj7T+4VnmtfdvwBJ5dxoXay/6hrc5gqrnyQCzX5H3fHYVhNd35eOrIWD4zDjZG2ntSmt8CpKTzCAnSEmp6Y7TDthyE9vbjhz7OOYAODg3THqfwEmMIJ29f1TaDwkX+8ckTCf8JAl6EjBviFo70m7v0vtTdD72EqzNgjwIgCJBr+aMRoTzbQMxzBlHIoY5JFCrA9xIZedIZLzZiwScpe1ij/vLyDu8b9p5IH2/V/4hfg+SGIUHr7oSAVhIwgbwIALpgYgLcvokvLU9gfsmgv+37117brJ90PrlHKAtWY24OWLO5/WORGWYAyJeQy8fjceHoOYz5gkTLeAPgL7YU57mHzRBQwA2Cff+5L3s1e9kn8Cuy1hAf9D/EN5YYySVKyQo4tyNSog6XucApWOZeA+Vz6UMNaXotLEiCZsgY4M9KVc/9lmBffwNHSonyQp1H/kpknDEiFeM/U2UybWRmcuEe5IcSPgAqOuQB2b3OiKBMrLumzy33dzy86HG84Z0KCtp/wL4kc7NfFdEDIucK9em8eskRl3q4bUAYc6YXalZJue6/LwkoClD9cYsP5G8d5pkT/U+Cfdd5gpI4jn2EL87eEQiID5tboPq9e+rBLvOA47D/doGj6+lKJpiQC+88WDP33h8JMADL36naIUYJYocsO+NGLOIAJJEjJnWhx7fyM0obAXLta7hmjxfp3dB5IF3AvRJwL3tzG3cjKJ8PkncBPgBocPyNXYEHAkI/md8CFA+eu8/jMiOVc1lpQRBEq38rKTNN/khkJHJXtjE8TW8T50fJO6RxvXaOSBer1j594Rjf5HfNyMSCCFoR43HBtKsirSFSCXILrh/G1p0vRdVSX4vdJvEkZYK+EVu4W0qtluCYtvGHq89MQImAApsLUHniBC0cbjXuclXcvR+o2Dq9ThXzhl3AtCcoabnHPBRdL1vCEwR30hQRAw985hwAZR1IyVcJ3o8p97HqSnE0xz1zpszAfgvSKm634e5tf9HVfaOGNcTJwLiUye2BJrnSk5OEiVZ3unv/7o/zvLT/sGshRy8i4hdyVtvk6mlaNoz4f6/dGvJkRqKgVXuDyuWLLkSZ+CiXIQVZ2CF0h0XbblkRU+hESIjq+yqZ2emJtKbZNK54vlfUBRAgl1A0BUuiyAvmdo/ff/x7QsZF5PsYY2uKw20EKA1NLpuzaNnBmddSCIZqrxIz2ydiEpprucWzrk8WzrZAGQQ5LyL4hJCqhCQ+zOVLFP5Cslzrc88KeGk0LWam1mSprc196WeH8mY/QZcngWxZ3/Y9fhsiiRjcpCzdKjhHSTHqDnCdatee/wFzF40+ph85GP9Ht7969BGjXlj0nBjbkoZJBPAbv+WB2sqWitvZXLrkrGprgluPsf5HvBr+/l1CpD4+8F/4NdnIreI64MMgFf0PUrhDRE3FjLuYLy4y9184Z1eY73w6rr7e2bNu4gvBE9fim7ftEOZkJ5I7TfkY1M+oHyiMF/R9YbcNzW3QfuLk/leIzXWLM/cgcp19FzCemU6cIz/MB9890UWjBGadM7N9QMtlCqqJiFwOjUhdaDQXQCdEwNOpzhYwMpBDrfcFpEXIsjiGJw+9jqidHo7O3+3QVO7+QpIf7ji9cbst7ogrVf8UXTDBslUgkxCCSilwjFdSAkBkSo1EcjSIBXWWvsN9SxF5ebWH3woEIS629sLNhsPabYekYTY/VR0znB/jBdcErKAavL8+A1ICXvgoqroDgAAAABJRU5ErkJggg==)}.negative[_ngcontent-%COMP%]{color:#f08080}.positive[_ngcontent-%COMP%]{color:#6495ed}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{text-align:right}table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:not(:last-child) td[_ngcontent-%COMP%]{border-bottom:rgba(240,248,255,.08) solid .5px}.result-total-gear[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:aliceblue solid 1px!important}.result-total-all[_ngcontent-%COMP%] > td[_ngcontent-%COMP%], .result-total-gear[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{border-top:aliceblue double}.buttonContainer[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:10px}.buttonContainer[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(:last-of-type){margin-right:6px;margin-bottom:3px}.result-total[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{position:relative;padding-right:14px}.statIcon[_ngcontent-%COMP%]{position:absolute;height:14px;margin-left:2px;top:3px}.item-info-menu-btn[_ngcontent-%COMP%]{height:22px!important;width:22px!important;line-height:22px!important;top:-4px;left:-4px}.item-info-menu-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:22px}.item-moved-icon[_ngcontent-%COMP%]{color:#7fffd4}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}.invalid-item-box[_ngcontent-%COMP%]{text-align:center;margin-right:auto;margin-left:auto;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;font-size:15px;line-height:20px}.text-centered[_ngcontent-%COMP%]{text-align:center!important}.specificStatTable[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0 0}.highlight-row[_ngcontent-%COMP%]{background-color:#6e6e6e21}tr.legend[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:3px}.tier-column[_ngcontent-%COMP%]{min-width:27px}.energy-bar[_ngcontent-%COMP%]{width:25px;height:10px;border:white solid 2px;position:relative}.energy-bar.normal[_ngcontent-%COMP%]{background-color:#fff}.energy-bar.mod[_ngcontent-%COMP%]{background-color:gray;border:white ridge 2px}.energy-bar.config[_ngcontent-%COMP%]{background-color:#a3b1c2;border:white ridge 2px}.energy-bar.over100[_ngcontent-%COMP%]{border-color:#ff5e5e;width:10px}.item-stat-container[_ngcontent-%COMP%]{position:relative}.item-stat-bonus[_ngcontent-%COMP%]{position:absolute;right:20px;font-size:x-small}.item-name-mw[_ngcontent-%COMP%]{text-decoration:underline;-webkit-text-decoration-color:#ffbc00;text-decoration-color:#ffbc00}.text-mw[_ngcontent-%COMP%], .item-stat-bonus[_ngcontent-%COMP%]{color:#ffd86a}app-armor-perk-icon[_ngcontent-%COMP%]{width:23px;height:23px;position:absolute;top:-14px;left:0}td.sum-tiers[_ngcontent-%COMP%]{text-align:center!important;border-left:#6e6e6e solid 1px}.currency-icon[_ngcontent-%COMP%]{width:16px;position:absolute;left:0}.currency-icon-container[_ngcontent-%COMP%]{position:relative;padding-left:19px;padding-right:10px}.icon-column[_ngcontent-%COMP%]{padding-left:4px}"]}),n})();var Ze=_(3238),rs=_(8729);function ls(n,i){1&n&&(t.TgZ(0,"mat-icon",6),t._uU(1,"add_circle_outline "),t.qZA())}function cs(n,i){1&n&&(t.TgZ(0,"mat-icon",7),t._uU(1,"remove_circle_outline "),t.qZA())}function ms(n,i){1&n&&(t.TgZ(0,"mat-icon",8),t._uU(1,"change_history "),t.qZA())}function ds(n,i){if(1&n&&(t.TgZ(0,"mat-list-item"),t.YNc(1,ls,2,0,"mat-icon",2),t.YNc(2,cs,2,0,"mat-icon",3),t.YNc(3,ms,2,0,"mat-icon",4),t.TgZ(4,"div",5)(5,"p"),t._uU(6),t.qZA()()()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",0===e.type),t.xp6(1),t.Q6J("ngIf",1===e.type),t.xp6(1),t.Q6J("ngIf",2===e.type),t.xp6(3),t.Oqu(e.text)}}function us(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"div",1),t._uU(2),t.qZA(),t.YNc(3,ds,7,4,"mat-list-item",0),t.TgZ(4,"mat-list-item"),t._UZ(5,"br")(6,"mat-divider"),t.qZA(),t.BQk()),2&n){const e=i.$implicit;t.xp6(2),t.AsE("",e.version,", released on ",e.date,""),t.xp6(1),t.Q6J("ngForOf",e.entries)}}let Se=(()=>{class n{constructor(e){this.changelog=e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(re))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-list"]],decls:2,vars:1,consts:[[4,"ngFor","ngForOf"],["mat-subheader","",1,"title"],["mat-list-icon","","matTooltip","A new function has been added.",4,"ngIf"],["mat-list-icon","","matTooltip","A function has been removed.",4,"ngIf"],["mat-list-icon","","matTooltip","Something has been modified.",4,"ngIf"],["mat-line","",1,"e"],["mat-list-icon","","matTooltip","A new function has been added."],["mat-list-icon","","matTooltip","A function has been removed."],["mat-list-icon","","matTooltip","Something has been modified."]],template:function(e,o){1&e&&(t.TgZ(0,"mat-list"),t.YNc(1,us,7,3,"ng-container",0),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngForOf",o.changelog.changelogData))},dependencies:[Z.sg,Z.O5,pt.gM,St.Hw,zt.i$,zt.Tg,Ze.X2,zt.Nh,zt.gs,rs.d],styles:["[_nghost-%COMP%] .mat-line{word-wrap:break-word!important;white-space:pre-wrap!important}[_nghost-%COMP%] .mat-list .mat-list-item{height:initial!important}.title[_ngcontent-%COMP%]{text-decoration:underline;font-size:20px}.e[_ngcontent-%COMP%] > p[_ngcontent-%COMP%]:first-child{padding-top:12px}"]}),n})();function ps(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Oqu(e)}}let gs=(()=>{class n{constructor(){this.knownIssues=["When you click buttons on the page too fast are able to select an invalid state with no results. Just undo your changed settings. And be patient - the calculation is an expensive task.","Sometimes duplicate results are given. This happens when the inventory got updated twice (Race Condition). Only reported once, and not really a problem."],this.changelog=Te}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-help-page"]],decls:116,vars:1,consts:[["id","help-container"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-raised-button","","routerLink","/",1,"returnbutton"],["href","https://twitter.com/MijagoCoding/","target","_blank","matTooltip","Birb App"],["alt","Me on twitter","src","assets/logo-twitter.png",1,"logo-twitter"],["href","https://ko-fi.com/mijago","target","_blank","matTooltip","If you like my work, you can always buy me a coffee!"],["alt","Ko-Fi","src","assets/logo-kofi.png",1,"logo-twitter"],["href","http://discord.d2armorpicker.com/","target","_blank","matTooltip","Visit me at the development & support discord."],["alt","Discord","src","assets/logo-discord.png",1,"logo-twitter"],["href","https://github.com/Mijago/D2-Gear-Calculator","target","_blank"],["href","https://mijago.github.io/D2GearCalculator/","target","_blank"],["href","https://twitter.com/MijagoCoding/","target","_blank"],["href","https://ko-fi.com/mijago","target","_blank"],[1,"preview-image-container"],["alt","Preview of the results table","src","assets/armor-images/preview_result_details.png",1,"preview-image"],["fxLayout","row","id","armor-image-container"],["src","assets/armor-images/kabrs_battlecage.png"],["src","assets/armor-images/lightkin_gauntlets.png"],["src","assets/armor-images/phobos_warden_helm.png"],["src","assets/armor-images/wild_hunt_vest.png"],[4,"ngFor","ngForOf"],[1,"changelog-table-container"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"a",1),t._uU(2," Return to D2ArmorPicker "),t.qZA(),t.TgZ(3,"mat-card")(4,"mat-card-title")(5,"span"),t._uU(6,"About D2ArmorPicker "),t.TgZ(7,"small"),t._uU(8," by Mijago"),t.qZA(),t.TgZ(9,"a",2),t._UZ(10,"img",3),t.qZA(),t.TgZ(11,"a",4),t._UZ(12,"img",5),t.qZA(),t.TgZ(13,"a",6),t._UZ(14,"img",7),t.qZA()()(),t.TgZ(15,"mat-card-content"),t._uU(16," D2ArmorPicker (or short D2AP) is a small web-app to quickly find armor that fits your desired stat requirements. It uses the armor in your vault, inventory and postmaster, calculates every possible variation and shows only those that fulfill the given requirements. "),t._UZ(17,"br")(18,"br"),t._uU(19," As I raided a lot and I mainly play meme builds, I wanted to be able to switch exotics and have decent stats without being a burden on my team. That's why I developed the "),t.TgZ(20,"a",8),t._uU(21,"first version of this tool"),t.qZA(),t._uU(22," in Python. After a few days I started to translate this tool "),t.TgZ(23,"a",9),t._uU(24,"into a webpage"),t.qZA(),t._uU(25,". My friends liked it, but it didn't have API access. Thus I created the first version of D2ArmorPicker, and after people started using and liking it, I started to completely rewrite it - that's Version\xa02! "),t._UZ(26,"br")(27,"br"),t._uU(28," I keep updating and improving this tool, but beware that it takes a bit, as I work on it on my spare time. Feel free to follow me on Twitter "),t.TgZ(29,"a",10),t._UZ(30,"img",3),t.qZA(),t._uU(31,", I occasionally post updates there. If you like my tools and want to support me, head to "),t.TgZ(32,"a",11),t._uU(33,"ko-fi.com"),t.qZA(),t._uU(34," and buy me a coffee! \u2764 "),t.qZA()(),t.TgZ(35,"mat-card")(36,"mat-card-title"),t._uU(37," How do I use D2ArmorPicker? "),t.qZA(),t.TgZ(38,"mat-card-content"),t._uU(39," Follow these few steps: "),t.TgZ(40,"ol")(41,"li"),t._uU(42,"Login. You already did this!"),t.qZA(),t.TgZ(43,"li"),t._uU(44," [Optional] Pick an exotic you want to use. The tool will only display results for this exotic. You can always undo this. "),t.qZA(),t.TgZ(45,"li"),t._uU(46," [Optional] Select additional mods/fragments that give a bonus (or penalty). These are important if you want certain stat combinations even if you have penalties on your gear. "),t.qZA(),t.TgZ(47,"li"),t._uU(48," Select the stat distribution you seek. This is the heart of D2ArmorPicker. You just click 100 recovery and it will display you builds that have 100 recovery. "),t.TgZ(49,"i"),t._uU(50,"Note that it automatically adds stat mods if necessary."),t.qZA()(),t.TgZ(51,"li"),t._uU(52," Now look to the result table. On a normal desktop it should be on the right, on smaller devices it might move below the configuration. The table lists multiple results and you can sort it by your requirements."),t._UZ(53,"br"),t.TgZ(54,"b"),t._uU(55,"Click"),t.qZA(),t._uU(56," on an entry to open look the detailed view: "),t.TgZ(57,"div",12),t._UZ(58,"img",13),t.qZA(),t._uU(59," The example above shows a build that utilizes Dunemarchers and a zero-waste-build. To achieve it, I have to move all the items in my inventory and equip them. After this, I "),t.TgZ(60,"i"),t._uU(61,"masterwork"),t.qZA(),t._uU(62," them and "),t.TgZ(63,"i"),t._uU(64,"add the mods"),t.qZA(),t._uU(65," as the table displays them: "),t.TgZ(66,"ul")(67,"li")(68,"b"),t._uU(69,"Discipline:"),t.qZA(),t._uU(70," One major mod, one minor mod;"),t.qZA(),t.TgZ(71,"li")(72,"b"),t._uU(73,"Intellect:"),t.qZA(),t._uU(74," One major mod, one minor mod;"),t.qZA(),t.TgZ(75,"li")(76,"b"),t._uU(77,"Strength:"),t.qZA(),t._uU(78," One major mod;"),t.qZA(),t.TgZ(79,"li"),t._uU(80,"I also add Powerful Friends and Radiant Light, as I chose them in the configuration."),t.qZA()()()()()(),t.TgZ(81,"mat-card")(82,"mat-card-title"),t._uU(83," Where can I grind high stat armor? "),t.qZA(),t.TgZ(84,"mat-card-content"),t._uU(85," There are many spots that give you mediocre armor, but for the really good builds you need the correct armor. Here I provide a list of high-stat armor sources. It may not be complete, but a good starting point. "),t.TgZ(86,"i"),t._uU(87,"Last updated February 8, 2022."),t.qZA(),t.TgZ(88,"ul")(89,"li"),t._uU(90," Farm legendary Dares!"),t.qZA(),t.TgZ(91,"li"),t._uU(92," Clear Pit of Heresy Dungeon, the boss drop guarantees two stats to be 16 (or higher)."),t.qZA(),t.TgZ(93,"li"),t._uU(94," Farm a bunch of Spoils, go into Master Vault of Glass and buy armor at the final chest."),t.qZA(),t.TgZ(95,"li"),t._uU(96," The list will be extended sometime in Witch Queen!"),t.qZA()(),t._uU(97," Some good armor rolls may look like these: "),t.TgZ(98,"div",14),t._UZ(99,"img",15)(100,"img",16)(101,"img",17)(102,"img",18),t.qZA()()(),t.TgZ(103,"mat-card")(104,"mat-card-title"),t._uU(105,"Known Issues"),t.qZA(),t.TgZ(106,"mat-card-content")(107,"ul"),t.YNc(108,ps,2,1,"li",19),t.qZA()()(),t.TgZ(109,"mat-card")(110,"mat-card-title"),t._uU(111,"Changelog"),t.qZA(),t.TgZ(112,"mat-card-content",20),t._UZ(113,"app-changelog-list"),t.qZA()(),t.TgZ(114,"a",1),t._uU(115," Return to D2ArmorPicker "),t.qZA()()),2&e&&(t.xp6(108),t.Q6J("ngForOf",o.knownIssues))},dependencies:[Z.sg,ft.xw,M.b8,rt.zs,Y.a8,Y.dn,Y.n5,pt.gM,ot.yS,Se],styles:["#help-container[_ngcontent-%COMP%]{max-width:800px;margin-left:auto;margin-right:auto}.changelog-table-container[_ngcontent-%COMP%]{max-height:700px;overflow-y:scroll}mat-card[_ngcontent-%COMP%]{margin-bottom:8px}#armor-image-container[_ngcontent-%COMP%]{overflow:auto}#armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]:not(:last-of-type){margin-right:20px}#armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{max-height:300px}.preview-image-container[_ngcontent-%COMP%]{max-width:600px}.preview-image[_ngcontent-%COMP%]{max-width:100%}.returnbutton[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:15px;width:100%}.changelog-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:first-of-type{min-width:80px}.changelog-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:nth-of-type(2){min-width:40px}.changelog-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-top:#6e6e6e solid 1px}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})();var wt=_(4006),ne=_(455),$t=_(3217),Rt=_(811),Nt=_(9549),oe=_(4144);function hs(n,i){if(1&n&&(t.TgZ(0,"th",5),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("\u2206 Tier ",e.differenceTier,"")}}function xs(n,i){if(1&n&&t._UZ(0,"img",9),2&n){const e=t.oxw(3).$implicit;t.MGl("src","https://www.bungie.net/",e.icon,"",t.LSH)}}function ys(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=i.ngVar,o=t.oxw(6).$implicit,a=t.oxw();t.ekj("good",a.differenceTiera.tier),t.xp6(1),t.AsE(" ",e>0?"+":"","",a.formatEntry(o,e)," ")}}function Cs(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ys,2,6,"span",10),t.qZA()),2&n){const e=t.oxw(2).ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngVar",-(e-o))}}function Ts(n,i){if(1&n&&(t.TgZ(0,"td")(1,"span"),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw(5);t.xp6(1),t.ekj("good",o.differenceTiero.tier),t.xp6(1),t.AsE(" (",e>0?"+":"","",t.xi3(3,6,100*e,"1.0-0"),"%) ")}}function vs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Cs,2,1,"td",6),t.YNc(2,Ts,4,9,"td",6),t.BQk()),2&n){const e=t.oxw(5);t.xp6(1),t.Q6J("ngIf",e.differenceTier!==e.tier),t.xp6(1),t.Q6J("ngIf",e.differenceTier!==e.tier)}}function bs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,vs,3,2,"ng-container",7),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar,a=t.oxw(3);t.xp6(1),t.Q6J("ngVar",a.getPercentageDifference(o,e))}}function As(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"app-item-icon",11),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("itemHash",e)}}function ws(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"td"),t.YNc(2,xs,1,1,"img",8),t._uU(3),t.qZA(),t.TgZ(4,"td"),t._uU(5),t.qZA(),t.YNc(6,bs,2,1,"ng-container",7),t.TgZ(7,"td"),t.YNc(8,As,2,1,"ng-container",4),t._uU(9),t.qZA(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(2).$implicit,a=t.oxw();t.xp6(2),t.Q6J("ngIf",o.icon),t.xp6(1),t.hij(" ",o.name," "),t.xp6(2),t.Oqu(a.formatEntry(o,e)),t.xp6(1),t.Q6J("ngVar",a.valueFunction(o,a.differenceTier)),t.xp6(2),t.Q6J("ngForOf",o.overrideIcons),t.xp6(1),t.hij(" ",o.description," ")}}function Is(n,i){if(1&n&&(t.TgZ(0,"tr"),t.YNc(1,ws,10,6,"ng-container",7),t.qZA()),2&n){const e=t.oxw().$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngVar",o.valueFunction(e,o.tier))}}function Zs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Is,2,1,"tr",6),t.BQk()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngIf",null==e.description||!!e.description[o.characterClass])}}let ks=(()=>{class n{constructor(e,o){this.config=e,this.characterStats=o,this.ArmorStatNames=c.Mi,this.tier=0,this.differenceTier=0,this.stat=c.WB.Mobility,this.entries=[]}get characterClass(){return this.config.readonlyConfigurationSnapshot.characterClass}ngOnInit(){this.entries=this.characterStats.get(c.Mi[this.stat],this.config.readonlyConfigurationSnapshot.characterClass,this.config.readonlyConfigurationSnapshot.selectedModElement,this.config.readonlyConfigurationSnapshot.selectedExotics)}formatEntry(e,o){return o=parseFloat(o.toFixed(2)),e.valueType===dt.Speed?(n=>(Math.round(100*n)/100).toFixed(2)+"m/s")(o):e.valueType===dt.Percentage?`${o}%`:e.valueType===dt.PercentagePerSecond?`${o}%/s`:e.valueType===dt.TimeMMSS?function Ms(n){var i=function _s(n){n=Math.abs(n);var i=Math.floor(n/60),e=Math.floor(n-60*i);return`${i}:${e<10?"0":""}${e}`}(n);return n<0&&(i="- "+i),i}(o):e.valueType===dt.Time?function Os(n){var i=function fs(n){n=Math.abs(n);var i=Math.floor(10*n%10),e=Math.floor(n/60),o=Math.floor(n-60*e);let a=`${o}s`;return i>0&&(a=`${o}.${i}s`),e>0&&(a=`${e}m ${a}`),a}(n);return n<0&&(i="- "+i),i}(o):o}valueFunction(e,o){return e.values[o]}getPercentageDifference(e,o){return(e-o)/Math.max(1,o)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(Gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-stat-cooldown-tooltip"]],inputs:{tier:"tier",differenceTier:"differenceTier",stat:"stat"},decls:13,vars:5,consts:[[1,"tooltip-container"],["colspan","3",1,"exotic-name"],[2,"min-width","50px"],["style","min-width: 50px","colspan","2",4,"ngIf"],[4,"ngFor","ngForOf"],["colspan","2",2,"min-width","50px"],[4,"ngIf"],[4,"ngVar"],[3,"src",4,"ngIf"],[3,"src"],[3,"good","bad",4,"ngVar"],[3,"itemHash"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"th",2),t._uU(8,"Stat"),t.qZA(),t.TgZ(9,"th",2),t._uU(10),t.qZA(),t.YNc(11,hs,2,1,"th",3),t.qZA(),t.YNc(12,Zs,2,1,"ng-container",4),t.qZA()()()),2&e&&(t.xp6(5),t.AsE("",o.ArmorStatNames[o.stat]," at Tier ",o.tier,""),t.xp6(5),t.hij("Tier ",o.tier,""),t.xp6(1),t.Q6J("ngIf",o.differenceTier!==o.tier),t.xp6(1),t.Q6J("ngForOf",o.entries))},dependencies:[Z.sg,Z.O5,Kt,_e,Z.JJ],styles:["[_nghost-%COMP%]{max-width:420px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}.good[_ngcontent-%COMP%]{color:#58b458}.bad[_ngcontent-%COMP%]{color:#ff6b6b}table[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:7px 3px}th[_ngcontent-%COMP%]{white-space:nowrap}img[_ngcontent-%COMP%]{width:24px;height:24px;float:left;margin-right:3px}tr[_ngcontent-%COMP%]{line-height:24px}"]}),n})(),Es=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0,this.tooltipTier=0,this.tooltipStat=c.WB.Mobility,this.tooltipDifferenceTier=0}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){if(this._overlayRef&&!this._overlayRef.hasAttached()){const e=this._overlayRef.attach(new le.C5(ks));e.instance.tier=this.tooltipTier,e.instance.differenceTier=this.tooltipDifferenceTier,e.instance.stat=this.tooltipStat}}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Lt.aV),t.Y36(Lt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","statCooldownTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",tooltipTier:"tooltipTier",tooltipStat:"tooltipStat",tooltipDifferenceTier:"tooltipDifferenceTier",contentTemplate:"contentTemplate"}}),n})();function Us(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-button-toggle",5),t.NdJ("click",function(){const s=t.CHM(e).index,r=t.oxw(2);return t.KtG(r.setValue(s))}),t.TgZ(1,"div",6),t._uU(2),t.qZA()()}if(2&n){const e=i.index,o=t.oxw(2);t.ekj("isFromMod",o.isAddedByConfigMods(e))("mat-button-toggle-checked",o.selectedTier>=e)("not-checked",o.selectedTier{class n{constructor(){this.TierRange=new Array(11),this.allowExactStats=!1,this.stat=c.WB.Mobility,this.statsByMods=0,this.maximumAvailableTier=10,this.selectedTier=0,this.locked=!1,this.selectedTierChange=new t.vpe,this.lockedChange=new t.vpe}setValue(e){e<=this.maximumAvailableTier&&(this.selectedTier=e,this.selectedTierChange.emit(e))}setValueMob(e){let o=parseInt(e.target.value);o=Math.min(Math.max(o,0),100),this.setValue(o/10)}isAddedByConfigMods(e){return e>0&&(this.selectedTier-e>=0&&this.selectedTier-e{class n{constructor(){this.ArmorStatNames=c.Mi,this.ArmorStatIconUrls=c.lp,this.stat=c.WB.Mobility}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-stat-icon"]],inputs:{stat:"stat"},decls:2,vars:2,consts:[[1,"statContainerWrapper"],[1,"dialogStatIcon",3,"src","alt"]],template:function(e,o){1&e&&(t.TgZ(0,"span",0),t._UZ(1,"img",1),t.qZA()),2&e&&(t.xp6(1),t.Q6J("src",o.ArmorStatIconUrls[o.stat],t.LSH)("alt",o.ArmorStatNames[o.stat]))},styles:[".dialogStatIcon[_ngcontent-%COMP%]{position:relative;width:25px;margin-right:3px;top:4px}"]}),n})();function Fs(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._UZ(4,"app-stat-icon",15),t.qZA(),t.TgZ(5,"td")(6,"app-stat-tier-selection",16),t.NdJ("selectedTierChange",function(a){const r=t.CHM(e).$implicit,m=t.oxw();return t.KtG(m.setSelectedTier(r.value,a))})("lockedChange",function(a){const r=t.CHM(e).$implicit,m=t.oxw();return t.KtG(m.setLockState(r.value,a))}),t.qZA()()()}if(2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.hij(" ",e.name," "),t.xp6(2),t.Q6J("stat",e.value),t.xp6(2),t.Q6J("stat",e.value)("allowExactStats",o.config_allowExactStats)("statsByMods",o.statsByMods[e.value])("maximumAvailableTier",o.maximumPossibleTiers[e.value])("selectedTier",o.minimumStatTiers[e.value].value)("locked",o.minimumStatTiers[e.value].fixed)}}function Js(n,i){1&n&&t._UZ(0,"app-stat-icon",19),2&n&&t.Q6J("stat",i.$implicit)}function Ls(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.useStatPreset(s))}),t.YNc(1,Js,1,1,"app-stat-icon",18),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Ys(n,i){1&n&&t._UZ(0,"app-stat-icon",19),2&n&&t.Q6J("stat",i.$implicit)}function Bs(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.useStatPreset(s))}),t.YNc(1,Ys,1,1,"app-stat-icon",18),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Me(n){let i=0;for(let e of n)i+=Math.pow(10,6-e);return i}let Vs=(()=>{class n{constructor(e,o){this.config=e,this.inventory=o,this.minimumStatTiers=j(1),this.maximumPossibleTiers=[10,10,10,10,10,10],this.statsByMods=[0,0,0,0,0,0],this._statCombo4x100=[],this._statCombo3x100=[],this.config_zero_waste=!1,this.config_mod_strategy=it.w.None,this.config_reduce_waste=!1,this.config_allowExactStats=!1,this.ngUnsubscribe=new R.xQ,this.stats=Object.keys(c.WB).filter(a=>!isNaN(Number(a))).map(a=>({name:c.WB[a],value:+a}))}ngOnInit(){this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{const o=[0,0,0,0,0,0];for(let a of e.enabledMods)for(let s of N.F[a].bonus)o[s.stat]+=s.value/10;this.statsByMods=o,this.minimumStatTiers=e.minimumStatTiers,this.config_zero_waste=e.onlyShowResultsWithNoWastedStats,this.config_mod_strategy=e.modOptimizationStrategy,this.config_reduce_waste=e.tryLimitWastedStats,this.config_allowExactStats=e.allowExactStats}),this.inventory.armorResults.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{const o=e.maximumPossibleTiers||[10,10,10,10,10,10];console.log("d.maximumPossibleTiers",o),o.filter(a=>0==a).length<6&&(this.maximumPossibleTiers=o),this._statCombo3x100=(e.statCombo3x100||[]).sort((a,s)=>Me(s)-Me(a)),this._statCombo4x100=e.statCombo4x100||[]})}setSelectedTier(e,o){this.config.modifyConfiguration(a=>{a.minimumStatTiers[e].value=o})}clearStatSelection(){this.config.modifyConfiguration(e=>{for(let o=0;o<6;o++)e.minimumStatTiers[o]={fixed:!1,value:0}})}useStatPreset(e){0!=e.filter(o=>10!=this.config.readonlyConfigurationSnapshot.minimumStatTiers[o].value).length&&this.config.modifyConfiguration(o=>{for(let a of e)o.minimumStatTiers[a].value=10})}setLockState(e,o){this.config.modifyConfiguration(a=>{a.minimumStatTiers[e].fixed=o})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}setModOptimizationStrategy(){this.config.modifyConfiguration(e=>{e.modOptimizationStrategy=this.config_mod_strategy})}toggleReduceWaste(){this.config.modifyConfiguration(e=>{e.tryLimitWastedStats=!this.config_reduce_waste})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(At))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-stat-selection"]],decls:43,vars:12,consts:[[4,"ngFor","ngForOf"],["id","tierSelectButtonContainer"],[1,"tierSelectButton"],["mat-stroked-button","","color","warn","id","clearStatButton",3,"click"],["mat-stroked-button","","aria-label","Select builds with three stats at tier 10.",1,"selectStatDistributionButton",3,"matMenuTriggerFor","disabled"],["menu",""],["menu1","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["mat-stroked-button","","aria-label","Select builds with four stats at tier 10.",3,"matMenuTriggerFor","disabled"],["menu2","matMenu"],[3,"ngModel","ngModelChange","change"],["matTooltip","Fast. Will result in good and fast results. Some better results *may* be skipped.",3,"value"],["matTooltip","Slower. Reduces the amount of used mods. This means that it will try to give you 4 mods instead of 5 whenever possible.",3,"value"],["matTooltip","Slower. Reduces the total cost of mods. This will result in less Intellect mods, for example.",3,"value"],["color","primary",3,"checked","change"],[3,"stat"],[3,"stat","allowExactStats","statsByMods","maximumAvailableTier","selectedTier","locked","selectedTierChange","lockedChange"],["mat-menu-item","",3,"click"],["class","dialogStatIcon",3,"stat",4,"ngFor","ngForOf"],[1,"dialogStatIcon",3,"stat"]],template:function(e,o){if(1&e&&(t.TgZ(0,"table"),t.YNc(1,Fs,7,8,"tr",0),t.qZA(),t.TgZ(2,"span",1)(3,"span",2)(4,"button",3),t.NdJ("click",function(){return o.clearStatSelection()}),t._uU(5,"Clear"),t.qZA()(),t.TgZ(6,"span",2)(7,"button",4)(8,"mat-icon"),t._uU(9,"expand_more"),t.qZA(),t._uU(10," Select 3x T10 Builds "),t.qZA(),t.TgZ(11,"mat-menu",5,6),t.YNc(13,Ls,2,1,"button",7),t.qZA()(),t.TgZ(14,"span",2)(15,"button",8)(16,"mat-icon"),t._uU(17,"expand_more"),t.qZA(),t._uU(18," Select 4x T10 Builds "),t.qZA(),t.TgZ(19,"mat-menu",null,9),t.YNc(21,Bs,2,1,"button",7),t.qZA()()(),t._UZ(22,"br")(23,"br"),t.TgZ(24,"div")(25,"div")(26,"b"),t._uU(27,"Mod optimization strategy:"),t.qZA()(),t.TgZ(28,"div"),t._uU(29,"You can choose if the algorithm should keep an eye on amount or the cost of mods."),t.qZA(),t.TgZ(30,"div"),t._uU(31,"These settings are extremely expensive when paired with the reduced waste feature."),t.qZA(),t.TgZ(32,"mat-button-toggle-group",10),t.NdJ("ngModelChange",function(s){return o.config_mod_strategy=s})("change",function(){return o.setModOptimizationStrategy()}),t.TgZ(33,"mat-button-toggle",11),t._uU(34,"No extra logic (fast)"),t.qZA(),t.TgZ(35,"mat-button-toggle",12),t._uU(36,"Fewer mods, high cost (slow)"),t.qZA(),t.TgZ(37,"mat-button-toggle",13),t._uU(38,"Many mods, low cost (slow)"),t.qZA()()(),t._UZ(39,"br"),t.TgZ(40,"div")(41,"mat-slide-toggle",14),t.NdJ("change",function(){return o.toggleReduceWaste()}),t._uU(42," Add mods to reduce wasted stats (slower) "),t.qZA()()),2&e){const a=t.MAs(12),s=t.MAs(20);t.xp6(1),t.Q6J("ngForOf",o.stats),t.xp6(6),t.Q6J("matMenuTriggerFor",a)("disabled",0===o._statCombo3x100.length),t.xp6(6),t.Q6J("ngForOf",o._statCombo3x100),t.xp6(2),t.Q6J("matMenuTriggerFor",s)("disabled",0===o._statCombo4x100.length),t.xp6(6),t.Q6J("ngForOf",o._statCombo4x100),t.xp6(11),t.Q6J("ngModel",o.config_mod_strategy),t.xp6(1),t.Q6J("value",0),t.xp6(2),t.Q6J("value",1),t.xp6(2),t.Q6J("value",2),t.xp6(4),t.Q6J("checked",o.config_reduce_waste)}},dependencies:[Z.sg,wt.JJ,wt.On,rt.lW,ne.Rr,pt.gM,St.Hw,$t.VK,$t.OP,$t.p6,Rt.A9,Rt.Yi,qs,he],styles:["#tierSelectButtonContainer[_ngcontent-%COMP%] > .tierSelectButton[_ngcontent-%COMP%]:not(:last-child){margin-right:5px}.dialogStatIcon[_ngcontent-%COMP%]{height:35px}.warn[_ngcontent-%COMP%]{background-color:#8b0000;padding-left:15px;padding-right:15px}"]}),n})();function Qs(n,i){if(1&n&&(t.TgZ(0,"div",4,5),t._UZ(2,"img",6),t.TgZ(3,"span",7),t._uU(4),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(2),t.Q6J("src",o.artificeUrl,t.LSH),t.xp6(2),t.hij("\xd7",e,"")}}function Hs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Qs,5,2,"div",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ws(n,i){if(1&n&&(t.TgZ(0,"div",9,5),t._UZ(2,"img",10),t.TgZ(3,"span",11),t._uU(4),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw().$implicit,a=t.oxw().$implicit,s=t.oxw();t.Q6J("matTooltip",s.getStatName(a)),t.xp6(2),t.Gre("modIcon modIcon_",s.getStatName(a),""),t.ekj("minor",1===o),t.Q6J("src",s.ModUrl[o+3*a],t.LSH),t.xp6(1),t.ekj("minor",1===o),t.xp6(1),t.hij("\xd7",e,"")}}function js(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ws,5,10,"div",8),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Gs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,js,2,1,"ng-container",1),t.ALo(2,"count"),t.BQk()),2&n){const e=i.$implicit,o=t.oxw().$implicit,a=t.oxw();t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,a.mods,e+3*o))}}function zs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Gs,3,4,"ng-container",2),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.modTypeIndex)}}const Oe={[c.iV.MINOR_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/a5d9a778feddb2a9036588490a4818b0.png",[c.iV.MAJOR_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/db4b34c79c834d3cf36b592c688ed22d.png",[c.iV.ARTIFICE_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/a5d9a778feddb2a9036588490a4818b0.png",[c.iV.MINOR_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/1b4eec255df03ae088db1eb251654316.png",[c.iV.MAJOR_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/db6c438e9ff1a21b03a1f0488560e6a3.png",[c.iV.ARTIFICE_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/1b4eec255df03ae088db1eb251654316.png",[c.iV.MINOR_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/51d46295defdf93d77a62e3e895df5cd.png",[c.iV.MAJOR_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/f42cc43389f147d25f0ee2946f1ff1bd.png",[c.iV.ARTIFICE_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/51d46295defdf93d77a62e3e895df5cd.png",[c.iV.MINOR_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/9ba335d570610d1ae9cffa071d5bcb8e.png",[c.iV.MAJOR_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/e54f6af6a4577e4d66396e5285bb73c0.png",[c.iV.ARTIFICE_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/9ba335d570610d1ae9cffa071d5bcb8e.png",[c.iV.MINOR_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/a8808e7528b16474f8c9c65b4e53b52b.png",[c.iV.MAJOR_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/2399dff2dc6952ea65c2b8c594d00658.png",[c.iV.ARTIFICE_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/a8808e7528b16474f8c9c65b4e53b52b.png",[c.iV.MINOR_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/6b45221fccade87ee39f3a03efc6e9b9.png",[c.iV.MAJOR_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/66714f030b79a1517c657f1378216cca.png",[c.iV.ARTIFICE_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/6b45221fccade87ee39f3a03efc6e9b9.png"};let Ks=(()=>{class n{constructor(){this.artificeUrl=c.X9[c.Pn.SlotArtifice],this.modIndex=[0,1,2,3,4,5],this.modTypeIndex=[1,2],this.ModUrl=Oe,this.mods=[],this.artifice=[]}getStatName(e){return c.Mi[e]}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-table-mod-display"]],inputs:{mods:"mods",artifice:"artifice"},decls:4,vars:4,consts:[[1,"row-mod"],[4,"ngVar"],[4,"ngFor","ngForOf"],["class","container","matTooltip","Artifice",4,"ngIf"],["matTooltip","Artifice",1,"container"],["tooltip","matTooltip"],[1,"artificeIcon","artifice",3,"src"],[1,"modText","artifice"],["class","container",3,"matTooltip",4,"ngIf"],[1,"container",3,"matTooltip"],[3,"src"],[1,"modText"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Hs,2,1,"ng-container",1),t.ALo(2,"count"),t.YNc(3,zs,2,1,"ng-container",2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngVar",t.lcZ(2,2,o.artifice)),t.xp6(2),t.Q6J("ngForOf",o.modIndex))},dependencies:[Z.sg,Z.O5,pt.gM,Kt,Ie],styles:[".container[_ngcontent-%COMP%]{display:inline-block;width:32px;height:30px;position:relative}.modIcon[_ngcontent-%COMP%]{position:absolute;top:-12px;left:-12px;width:50px;height:50px;filter:contrast(2.3);border:#00000000 solid 2px;-webkit-mask-image:url(modmask.f03dde91561a62d6.svg);mask-image:image(url(modmask.f03dde91561a62d6.svg),black)}.modIcon_Mobility[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(0deg) brightness(100%) saturate(320%)}.modIcon_Resilience[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(60deg) brightness(100%) saturate(320%)}.modIcon_Recovery[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(120deg) brightness(100%) saturate(320%)}.modIcon_Discipline[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(180deg) brightness(100%) saturate(320%)}.modIcon_Intellect[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(240deg) brightness(100%) saturate(320%)}.modIcon_Strength[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(300deg) brightness(100%) saturate(320%)}.modIcon.minor[_ngcontent-%COMP%]{opacity:.8;scale:.75}.artificeIcon[_ngcontent-%COMP%]{height:28px;width:28px;filter:saturate(40) hue-rotate(40deg)}.selected[_ngcontent-%COMP%]{border:red solid 2px}[_nghost-%COMP%]{position:relative}.modText[_ngcontent-%COMP%]{position:absolute;text-shadow:0 0 6px #000000;font-size:smaller;color:#f5f5f5;bottom:-6px;right:-1px}"]}),n})();function $s(n,i){if(1&n&&(t.TgZ(0,"div")(1,"div",22),t._UZ(2,"img",23)(3,"img",24),t.O4$(),t.TgZ(4,"svg",25)(5,"text",26),t._uU(6,"3"),t.qZA()(),t.TgZ(7,"svg",27)(8,"text",26),t._uU(9,"1"),t.qZA()(),t.kcU(),t._UZ(10,"div",28),t.qZA(),t.TgZ(11,"div",22),t._UZ(12,"img",23)(13,"img",24),t.O4$(),t.TgZ(14,"svg",25)(15,"text",26),t._uU(16,"4"),t.qZA()(),t.TgZ(17,"svg",27)(18,"text",26),t._uU(19,"2"),t.qZA()(),t.kcU(),t._UZ(20,"div",28),t.qZA(),t.TgZ(21,"div",22),t._UZ(22,"img",23)(23,"img",24),t.O4$(),t.TgZ(24,"svg",25)(25,"text",26),t._uU(26,"3"),t.qZA()(),t.TgZ(27,"svg",27)(28,"text",26),t._uU(29,"1"),t.qZA()(),t.kcU(),t._UZ(30,"div",28),t.qZA(),t.TgZ(31,"div",22),t._UZ(32,"img",23)(33,"img",24),t.O4$(),t.TgZ(34,"svg",25)(35,"text",26),t._uU(36,"3"),t.qZA()(),t.TgZ(37,"svg",27)(38,"text",26),t._uU(39,"1"),t.qZA()(),t.kcU(),t._UZ(40,"div",28),t.qZA(),t.TgZ(41,"div",22),t._UZ(42,"img",23)(43,"img",24),t.O4$(),t.TgZ(44,"svg",25)(45,"text",26),t._uU(46,"4"),t.qZA()(),t.TgZ(47,"svg",27)(48,"text",26),t._uU(49,"2"),t.qZA()(),t.kcU(),t._UZ(50,"div",28),t.qZA(),t.TgZ(51,"div",22),t._UZ(52,"img",23)(53,"img",24),t.O4$(),t.TgZ(54,"svg",25)(55,"text",26),t._uU(56,"4"),t.qZA()(),t.TgZ(57,"svg",27)(58,"text",26),t._uU(59,"2"),t.qZA()(),t.kcU(),t._UZ(60,"div",28),t.qZA()()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(1),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_MOBILITY],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_MOBILITY],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_RESILIENCE],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_RESILIENCE],t.LSH),t.xp6(8),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_DISCIPLINE],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_DISCIPLINE],t.LSH),t.xp6(8),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_STRENGTH],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_STRENGTH],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_RECOVERY],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_RECOVERY],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_INTELLECT],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_INTELLECT],t.LSH)}}function Xs(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-button-toggle",29),t.NdJ("click",function(){const s=t.CHM(e).index,r=t.oxw();return t.KtG(r.setValue(s))}),t._uU(1),t.qZA()}if(2&n){const e=i.index,o=t.oxw();t.Gre("select-button ",o.selection>=e?"mat-button-toggle-checked":"",""),t.Q6J("value",e),t.xp6(1),t.Oqu(e)}}function tr(n,i){1&n&&(t.TgZ(0,"mat-icon"),t._uU(1,"lock_open"),t.qZA())}function er(n,i){1&n&&(t.TgZ(0,"mat-icon"),t._uU(1,"lock"),t.qZA())}function nr(n,i){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"button",30),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.setArmorPerk(s))}),t._UZ(2,"app-armor-perk-icon",31),t.TgZ(3,"span",32),t._uU(4),t.qZA()(),t.BQk()}if(2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.ekj("selected-menu",e===o.armorPerk),t.xp6(1),t.Q6J("perk",e),t.xp6(2),t.Oqu(o.ArmorPerkOrSlotNames[e])}}function or(n,i){if(1&n&&t._UZ(0,"img",33,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function ir(n,i){if(1&n&&t._UZ(0,"img",35,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function ar(n,i){if(1&n&&t._UZ(0,"img",36,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function sr(n,i){if(1&n&&t._UZ(0,"img",37,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function rr(n,i){if(1&n&&t._UZ(0,"img",38,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}let lr=(()=>{class n{constructor(e,o,a,s){this.config=e,this.inventory=o,this.iconService=a,this.db=s,this.featureDisabled=!g.N.featureFlags.enableModslotLimitation,this.ModUrls=Oe,this.StatModifier=c.iV,this.ArmorSlot=v.y,this.ArmorPerkOrSlotNames=c.cM,this.ArmorPerkOrSlot=c.Pn,this.ModRange=new Array(P.Qj+1),this.selection=P.Qj,this.slot=v.y.ArmorSlotHelmet,this.possible=new t.vpe,this.fixedExoticInThisSlot=!1,this.isPossible=!0,this.configSelectedClass=0,this.configAssumeLegendaryIsArtifice=!1,this.configSelectedExoticSum=0,this.configSelectedExotic=[],this.configAssumeClassItemIsArtifice=!1,this.configAssumeExoticIsArtifice=!1,this.armorPerk=c.Pn.None,this.armorPerkLock=!1,this.maximumModSlots=5,this.hoveredSlot=-1,this.disabled=!1,this.availableArmorPerks=[c.Pn.None,c.Pn.SlotSalvationsEdge,c.Pn.SlotCrotasEnd,c.Pn.SlotRootOfNightmares,c.Pn.SlotKingsFall,c.Pn.SlotVowOfTheDisciple,c.Pn.SlotVaultOfGlass,c.Pn.SlotDeepStoneCrypt,c.Pn.SlotGardenOfSalvation,c.Pn.SlotLastWish,c.Pn.SlotArtifice,c.Pn.PerkEchoesOfGlory,c.Pn.PerkIronBanner,c.Pn.SlotNightmare],this.ngUnsubscribe=new R.xQ}runPossibilityCheck(){var e=this;return(0,x.Z)(function*(){if(e.configAssumeLegendaryIsArtifice||e.slot==v.y.ArmorSlotClass&&e.configAssumeClassItemIsArtifice)e.isPossible=!0;else{let a=0;e.armorPerkLock&&e.armorPerk!=c.Pn.None?e.fixedExoticInThisSlot?e.armorPerk==c.Pn.SlotArtifice&&e.configAssumeExoticIsArtifice?a+=1:e.configSelectedExotic.forEach(function(){var s=(0,x.Z)(function*(r){var m=yield e.db.inventoryArmor.where("clazz").equals(e.configSelectedClass).and(p=>p.perk==e.armorPerk).and(p=>p.hash==r).and(p=>1==p.isExotic).count();a+=m,e.isPossible=a>0,e.possible.next(e.isPossible)});return function(r){return s.apply(this,arguments)}}()):(a+=(yield e.db.inventoryArmor.where("clazz").equals(e.configSelectedClass).and(s=>0==e.configSelectedExoticSum||0==s.isExotic).and(s=>s.slot==e.slot).and(s=>s.perk==e.armorPerk).count()),e.isPossible=a>0):e.isPossible=!0}e.possible.next(e.isPossible)})()}get slotName(){switch(this.slot){case v.y.ArmorSlotHelmet:return"Helmet";case v.y.ArmorSlotGauntlet:return"Gauntlet";case v.y.ArmorSlotChest:return"Chest";case v.y.ArmorSlotLegs:return"Leg";case v.y.ArmorSlotClass:return"Class Item";default:return""}}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){const s=a.selectedExotics.reduce((m,p)=>m+p,0);var r=e.configSelectedClass!=a.characterClass||e.configAssumeLegendaryIsArtifice!=a.assumeEveryLegendaryIsArtifice||e.configAssumeExoticIsArtifice!=a.assumeEveryExoticIsArtifice||e.configAssumeClassItemIsArtifice!=a.assumeClassItemIsArtifice||e.selection!=a.maximumModSlots[e.slot].value||e.armorPerk!=a.armorPerks[e.slot].value||e.armorPerkLock!=a.armorPerks[e.slot].fixed||e.configSelectedExoticSum!=s||e.maximumModSlots!=a.maximumModSlots[e.slot].value;e.configAssumeLegendaryIsArtifice=a.assumeEveryLegendaryIsArtifice,e.configAssumeExoticIsArtifice=a.assumeEveryExoticIsArtifice,e.configAssumeClassItemIsArtifice=a.assumeClassItemIsArtifice,e.configSelectedClass=a.characterClass,e.selection=a.maximumModSlots[e.slot].value,e.armorPerk=a.armorPerks[e.slot].value,e.armorPerkLock=a.armorPerks[e.slot].fixed,e.maximumModSlots=a.maximumModSlots[e.slot].value,e.configSelectedExoticSum=s,e.configSelectedExotic=a.selectedExotics,e.fixedExoticInThisSlot=(yield e.inventory.getExoticsForClass(a.characterClass)).filter(m=>a.selectedExotics.indexOf(m.item.hash)>-1).map(m=>m.item.slot).indexOf(e.slot)>-1,r&&(yield e.runPossibilityCheck())});return function(a){return o.apply(this,arguments)}}())}ngAfterViewInit(){g.N.featureFlags.enableGuardianGamesFeatures&&this.slot===v.y.ArmorSlotClass&&this.availableArmorPerks.splice(1,0,c.Pn.GuardianGamesClassItem)}toggleArmorPerkLock(){this.config.modifyConfiguration(e=>{e.armorPerks[this.slot].fixed=!e.armorPerks[this.slot].fixed})}setArmorPerk(e){this.armorPerk!=e&&this.config.modifyConfiguration(o=>{o.armorPerks[this.slot].value=e})}setValue(e){this.featureDisabled||this.maximumModSlots!=e&&(this.maximumModSlots=e,this.config.modifyConfiguration(o=>o.maximumModSlots[this.slot].value=e))}getStatIconUrl(e){var o=this;return(0,x.Z)(function*(){return(yield o.iconService.getItemCached(e))?.icon})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(At),t.Y36(ge),t.Y36(I))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-slot-limitation-selection"]],inputs:{slot:"slot"},outputs:{possible:"possible"},decls:35,vars:58,consts:[[1,"container"],[1,"energy"],[1,"energy-container",3,"mouseout"],[1,"energy-bar","blocked",3,"click","mouseover"],[1,"energy-bar",3,"click","mouseover"],[4,"ngVar"],["appearance","standard","name","fontStyle",2,"display","none"],[3,"value","class","click",4,"ngFor","ngForOf"],[1,"selector-slots"],["value","bold",3,"matMenuTriggerFor"],[3,"perk"],["disabled","",3,"disabled","matTooltip","click"],[4,"ngIf"],[1,"modslot-select-scroll-menu"],["dropdownArmorModslot","matMenu"],[4,"ngFor","ngForOf"],[1,"slot-icon-container"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M40.1 30.03c.39-.47.59-1.11.42-1.8-.18-.76-.81-1.39-1.58-1.55-.81-.17-1.54.14-2.01.68 0 0-.03.04-.05.07l-.12.15c-.47.61-1.95 2.37-3.29 2.45-1.62.1 2.51-16.14 2.51-16.14h-.01c.04-.15.07-.31.07-.48 0-.98-.79-1.77-1.77-1.77-.81 0-1.49.55-1.69 1.29h-.01s-.01.03-.01.05l-.03.15c-.24 1.21-1.68 8.2-2.81 8.89-1.24.75-1.22-13.23-1.22-13.23 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 0-.35 12.85-1.73 12.73-1.37-.12-2.47-10.67-2.47-10.67 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 .15.02.28.06.42.27 2.06 1.36 11.12-.06 11.12-1.6 0-3.68-6.35-3.68-6.35a1.62 1.62 0 0 0-3.14.56c0 .09.01.17.03.25l-.03.01s.02.07.07.19c.02.09.05.17.09.25.99 2.71 6.28 17.46 7.26 26.23.03.25.24.44.49.44H30.5a.5.5 0 0 0 .5-.45c.1-1.04.52-3.68 2.09-5.54 1.8-2.14 6.06-6.89 6.86-7.79.02-.02.03-.04.05-.06.07-.06.11-.1.1-.1z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M42.49 13.55c-1.06-1.51-4.05-5.05-9.52-6.49a.635.635 0 0 0-.78.5c-.35 2.04-1.78 8.08-6.69 8.08s-6.34-6.04-6.69-8.08a.635.635 0 0 0-.78-.5c-5.47 1.44-8.46 4.98-9.52 6.49-.24.34-.09.8.3.94 2.01.7 7.34 2.94 7.34 7.01 0 4.24-4.47 6.89-5.87 7.61-.25.13-.38.4-.33.67 1.44 7.62 7.55 13.09 8.67 14.04.11.1.25.15.4.15h12.94c.15 0 .29-.05.4-.15 1.12-.95 7.23-6.42 8.67-14.04a.624.624 0 0 0-.33-.67c-1.4-.72-5.87-3.37-5.87-7.61 0-4.08 5.33-6.32 7.34-7.01.41-.14.56-.61.32-.94z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M13 7.6h13.96c1.73 0 2.99 1.64 2.54 3.32l-5.44 20.46c-.07.28.03.57.28.72.99.62 4.64 2.57 8.15 5.78.12.11 2.92-.03 3.09-.01 2.31.2 3.97-.08 5.05 4.7.09.42-.21.82-.64.82H11.82c-.34 0-.63-.26-.66-.61-.15-1.82-.4-7.23 1.74-9.32a.62.62 0 0 0 .2-.6c-.39-1.74-2.09-9.83-2.74-22.48-.07-1.5 1.12-2.78 2.64-2.78z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M43.12 7.12c-4.13 2.33-17.62 1.9-17.62 1.9s-13.49.43-17.62-1.9c-.37-.21-.85-.03-.94.39-.36 1.49-.87 4.42.09 5.86.09.13.22.21.38.25 1.23.3 7.36 1.65 18.09 1.65s16.86-1.35 18.09-1.65c.15-.04.29-.12.38-.25.96-1.44.45-4.37.1-5.86-.1-.42-.58-.6-.95-.39zM9.27 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.73c-1.93-.22-3.45-.45-4.55-.65v13.26zM16.3 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.24c-1.66-.06-3.18-.16-4.55-.27V34.8zM37.18 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.08c-1.09.2-2.61.44-4.55.65v12.61zM30.15 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.97c-1.36.11-2.88.21-4.55.27V34.8zM23.23 16.31v25.31s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.31c-.74.01-1.49.02-2.27.02-.78.01-1.54 0-2.27-.02z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],[1,"mod-info"],[1,"mod-icon","mod-major",3,"src"],[1,"mod-icon","mod-minor",3,"src"],["viewBox","0 0 100 100",1,"mod-number","mod-major"],["font-size","25px","text-anchor","end","x","87","y","30"],["viewBox","0 0 100 100",1,"mod-number","mod-minor"],[1,"overlay"],[3,"value","click"],["mat-menu-item","",3,"click"],[1,"menuArmorIcon",3,"perk"],[1,"menuArmorText"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["tooltip","matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M40.1 30.03c.39-.47.59-1.11.42-1.8-.18-.76-.81-1.39-1.58-1.55-.81-.17-1.54.14-2.01.68 0 0-.03.04-.05.07l-.12.15c-.47.61-1.95 2.37-3.29 2.45-1.62.1 2.51-16.14 2.51-16.14h-.01c.04-.15.07-.31.07-.48 0-.98-.79-1.77-1.77-1.77-.81 0-1.49.55-1.69 1.29h-.01s-.01.03-.01.05l-.03.15c-.24 1.21-1.68 8.2-2.81 8.89-1.24.75-1.22-13.23-1.22-13.23 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 0-.35 12.85-1.73 12.73-1.37-.12-2.47-10.67-2.47-10.67 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 .15.02.28.06.42.27 2.06 1.36 11.12-.06 11.12-1.6 0-3.68-6.35-3.68-6.35a1.62 1.62 0 0 0-3.14.56c0 .09.01.17.03.25l-.03.01s.02.07.07.19c.02.09.05.17.09.25.99 2.71 6.28 17.46 7.26 26.23.03.25.24.44.49.44H30.5a.5.5 0 0 0 .5-.45c.1-1.04.52-3.68 2.09-5.54 1.8-2.14 6.06-6.89 6.86-7.79.02-.02.03-.04.05-.06.07-.06.11-.1.1-.1z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M42.49 13.55c-1.06-1.51-4.05-5.05-9.52-6.49a.635.635 0 0 0-.78.5c-.35 2.04-1.78 8.08-6.69 8.08s-6.34-6.04-6.69-8.08a.635.635 0 0 0-.78-.5c-5.47 1.44-8.46 4.98-9.52 6.49-.24.34-.09.8.3.94 2.01.7 7.34 2.94 7.34 7.01 0 4.24-4.47 6.89-5.87 7.61-.25.13-.38.4-.33.67 1.44 7.62 7.55 13.09 8.67 14.04.11.1.25.15.4.15h12.94c.15 0 .29-.05.4-.15 1.12-.95 7.23-6.42 8.67-14.04a.624.624 0 0 0-.33-.67c-1.4-.72-5.87-3.37-5.87-7.61 0-4.08 5.33-6.32 7.34-7.01.41-.14.56-.61.32-.94z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M13 7.6h13.96c1.73 0 2.99 1.64 2.54 3.32l-5.44 20.46c-.07.28.03.57.28.72.99.62 4.64 2.57 8.15 5.78.12.11 2.92-.03 3.09-.01 2.31.2 3.97-.08 5.05 4.7.09.42-.21.82-.64.82H11.82c-.34 0-.63-.26-.66-.61-.15-1.82-.4-7.23 1.74-9.32a.62.62 0 0 0 .2-.6c-.39-1.74-2.09-9.83-2.74-22.48-.07-1.5 1.12-2.78 2.64-2.78z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M43.12 7.12c-4.13 2.33-17.62 1.9-17.62 1.9s-13.49.43-17.62-1.9c-.37-.21-.85-.03-.94.39-.36 1.49-.87 4.42.09 5.86.09.13.22.21.38.25 1.23.3 7.36 1.65 18.09 1.65s16.86-1.35 18.09-1.65c.15-.04.29-.12.38-.25.96-1.44.45-4.37.1-5.86-.1-.42-.58-.6-.95-.39zM9.27 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.73c-1.93-.22-3.45-.45-4.55-.65v13.26zM16.3 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.24c-1.66-.06-3.18-.16-4.55-.27V34.8zM37.18 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.08c-1.09.2-2.61.44-4.55.65v12.61zM30.15 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.97c-1.36.11-2.88.21-4.55.27V34.8zM23.23 16.31v25.31s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.31c-.74.01-1.49.02-2.27.02-.78.01-1.54 0-2.27-.02z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"]],template:function(e,o){if(1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"div",2),t.NdJ("mouseout",function(){return o.hoveredSlot=-1}),t.TgZ(3,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(4,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(5,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(6,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(7,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(8,"div",4),t.NdJ("click",function(){return o.setValue(4)})("mouseover",function(){return o.hoveredSlot=1}),t.qZA(),t.TgZ(9,"div",4),t.NdJ("click",function(){return o.setValue(3)})("mouseover",function(){return o.hoveredSlot=2}),t.qZA(),t.TgZ(10,"div",4),t.NdJ("click",function(){return o.setValue(2)})("mouseover",function(){return o.hoveredSlot=3}),t.qZA(),t.TgZ(11,"div",4),t.NdJ("click",function(){return o.setValue(1)})("mouseover",function(){return o.hoveredSlot=4}),t.qZA(),t.TgZ(12,"div",4),t.NdJ("click",function(){return o.setValue(0)})("mouseover",function(){return o.hoveredSlot=5}),t.qZA()(),t._UZ(13,"br"),t.YNc(14,$s,61,36,"div",5),t.qZA(),t.TgZ(15,"mat-button-toggle-group",6),t.YNc(16,Xs,2,5,"mat-button-toggle",7),t.qZA(),t.TgZ(17,"div",8)(18,"mat-button-toggle-group")(19,"mat-button-toggle",9),t._UZ(20,"app-armor-perk-icon",10),t.TgZ(21,"mat-icon"),t._uU(22,"arrow_drop_down"),t.qZA()(),t.TgZ(23,"mat-button-toggle",11),t.NdJ("click",function(s){return o.toggleArmorPerkLock(),s.stopPropagation()}),t.YNc(24,tr,2,0,"mat-icon",12),t.YNc(25,er,2,0,"mat-icon",12),t.qZA()(),t.TgZ(26,"mat-menu",13,14),t.YNc(28,nr,5,4,"ng-container",15),t.qZA()(),t.TgZ(29,"span",16),t.YNc(30,or,2,1,"img",17),t.YNc(31,ir,2,1,"img",18),t.YNc(32,ar,2,1,"img",19),t.YNc(33,sr,2,1,"img",20),t.YNc(34,rr,2,1,"img",21),t.qZA()()),2&e){const a=t.MAs(27);t.ekj("disabled",o.disabled),t.xp6(8),t.ekj("active",5-o.maximumModSlots>=1)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<1)("hovered",o.hoveredSlot>=1)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=2)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<2)("hovered",o.hoveredSlot>=2)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=3)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<3)("hovered",o.hoveredSlot>=3)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=4)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<4)("hovered",o.hoveredSlot>=4)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots==5)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<5)("hovered",5===o.hoveredSlot)("blocked",o.featureDisabled),t.xp6(2),t.Q6J("ngVar",o.hoveredSlot>-1?5-o.hoveredSlot:o.maximumModSlots),t.xp6(2),t.Q6J("ngForOf",o.ModRange),t.xp6(2),t.ekj("impossible",!o.isPossible),t.xp6(1),t.Q6J("matMenuTriggerFor",a),t.xp6(1),t.Q6J("perk",o.armorPerk),t.xp6(3),t.MGl("matTooltip","Force the selected perk or slot to be on a ",o.slotName,"."),t.Q6J("disabled",o.disabled),t.xp6(1),t.Q6J("ngIf",!o.armorPerkLock),t.xp6(1),t.Q6J("ngIf",o.armorPerkLock),t.xp6(3),t.Q6J("ngForOf",o.availableArmorPerks),t.xp6(2),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotHelmet),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotGauntlet),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotChest),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotLegs),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotClass)}},dependencies:[Z.sg,Z.O5,pt.gM,St.Hw,$t.VK,$t.OP,$t.p6,Rt.A9,Rt.Yi,Kt,fe],styles:[".slot-icon-container[_ngcontent-%COMP%]{float:right;position:relative}.slot-icon-container[_ngcontent-%COMP%] .slot-icon[_ngcontent-%COMP%]{height:30px;position:absolute;left:-30px;filter:invert(1) drop-shadow(1px 1px 3px rgba(0,0,0,.25))!important}.container[_ngcontent-%COMP%]{height:60px}.select-button[_ngcontent-%COMP%]{min-width:40px}.selector-element[_ngcontent-%COMP%]{position:relative;float:right;width:90px;height:70px;top:-21px}.selector-element[_ngcontent-%COMP%] .lock[_ngcontent-%COMP%]{position:absolute;bottom:2px;left:60px}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%]{float:left;width:70px;padding-left:5px}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]{border:rgba(0,0,0,0) solid 2px;height:26px;width:26px;margin-right:1px;margin-bottom:1px;margin-top:1px;cursor:pointer;filter:grayscale(.4)}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]:hover{filter:grayscale(.2)}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon.selected[_ngcontent-%COMP%]{filter:grayscale(0)}[_nghost-%COMP%] .selector-slots .mat-button-toggle{background-color:inherit}.modslot-selection[_ngcontent-%COMP%]{width:180px}.selector-slots[_ngcontent-%COMP%]{position:relative;float:right;top:-10px}.selector-slots[_ngcontent-%COMP%] .lock[_ngcontent-%COMP%]{position:absolute;bottom:2px;left:140px}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%]{float:left;height:70px;width:175px;padding-left:5px}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]{height:30px;width:30px;border:rgba(0,0,0,0) solid 2px;margin-right:1px;margin-top:-2px;cursor:pointer}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;border:rgba(0,0,0,0) solid 2px!important}.impossible[_ngcontent-%COMP%]{background-color:#ff00004d;cursor:help}.left_line[_ngcontent-%COMP%]{pointer-events:none;height:15px;width:100%;border-left:1px solid white;border-bottom:1px solid white;position:absolute;bottom:0px;left:0}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:20px;position:absolute;left:7px;bottom:11px;pointer-events:none}.element-icon[_ngcontent-%COMP%]:hover{border:cornflowerblue solid 2px!important}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%]:hover{background-color:#89b2ff3d;border:#0059ff solid 2px!important}.energy-container[_ngcontent-%COMP%] .energy-bar[_ngcontent-%COMP%]{float:left;margin-right:3px;width:20px;height:10px;border:white solid 2px;cursor:pointer}.energy-container[_ngcontent-%COMP%] .energy-bar.none[_ngcontent-%COMP%]{border:indianred solid 2px}.energy-container[_ngcontent-%COMP%] .energy-bar[_ngcontent-%COMP%]:hover, .energy-container[_ngcontent-%COMP%] .hovered[_ngcontent-%COMP%]{background-color:#6e6e6e}.energy-container[_ngcontent-%COMP%] .hovered-higher[_ngcontent-%COMP%]{background-color:#0000!important}.energy-container[_ngcontent-%COMP%] .energy-bar.active[_ngcontent-%COMP%]{background-color:#fff}.energy-container[_ngcontent-%COMP%] .energy-bar.blocked[_ngcontent-%COMP%]{border:#606060 solid 2px;background-color:#6e6e6e}.mod-info[_ngcontent-%COMP%]{position:relative;float:left;height:40px;width:40px;margin-right:5px}.mod-info[_ngcontent-%COMP%] .mod-number[_ngcontent-%COMP%]{position:absolute;top:1px;bottom:1px;right:1px;left:1px;pointer-events:none;fill:#e0e0e0}.mod-info[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{display:none}.mod-info[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%]{position:absolute;top:0px;width:100%;height:100%;background:linear-gradient(to top left,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),rgb(0,0,0) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%),linear-gradient(to top right,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),rgb(0,0,0) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%)}.mod-info[_ngcontent-%COMP%] .mod-icon[_ngcontent-%COMP%]{width:40px;height:40px}.mod-info[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{border:rgba(0,0,0,0) solid 3px;width:34px;height:34px}.mod-info.major[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%], .mod-info.minor[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%]{display:none}.mod-info.minor[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{display:block}.mod-info.minor[_ngcontent-%COMP%] .mod-major[_ngcontent-%COMP%]{display:none}.menuArmorIcon[_ngcontent-%COMP%]{position:absolute;top:8px}.menuArmorText[_ngcontent-%COMP%]{padding-left:35px}.selected-menu[_ngcontent-%COMP%]{background-color:#89b2ff3d}.selected-menu[_ngcontent-%COMP%]:hover{background-color:#89b2ff4d} .modslot-select-scroll-menu{overflow-y:auto;max-height:250px!important}"]}),n})(),cr=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-slot-limitation-title"]],decls:5,vars:0,consts:[[1,"energy"],[1,"selector-slots"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0),t._uU(2," Energy "),t.qZA(),t.TgZ(3,"span",1),t._uU(4," Modslots "),t.qZA()())},styles:[".energy[_ngcontent-%COMP%]{border-bottom:#a1a1a1 1px solid;margin-bottom:6px}.selector-element[_ngcontent-%COMP%]{position:relative;float:right;width:90px;top:-26px}.selector-slots[_ngcontent-%COMP%]{position:relative;float:right;width:155px;top:-26px;text-align:center}"]}),n})();function mr(n,i){1&n&&(t.TgZ(0,"mat-toolbar",13),t._uU(1," Some of your chosen limitations contain no armor pieces and will yield no results.\n"),t.qZA())}function dr(n,i){1&n&&(t.TgZ(0,"mat-toolbar",13),t._uU(1," The mod cost limitation is currently disabled. Modslot filtering still works.\n"),t.qZA())}let ur=(()=>{class n{constructor(e){this.config=e,this.ArmorSlot=v.y,this.ArmorPerkOrSlot=c.Pn,this.possibilityList=[!0,!0,!0,!0,!0],this.allPossible=!0,this.disabledSlotLimitation=!g.N.featureFlags.enableModslotLimitation}updatePossibility(e,o){this.possibilityList[e]=o,this.allPossible=5==this.possibilityList.filter(a=>!!a).length}clear(){this.config.modifyConfiguration(e=>{for(let o=0;o<5;o++)e.armorPerks[o+1]={fixed:!0,value:0},e.maximumModSlots[o+1]={fixed:!0,value:5}})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-mod-selection"]],decls:129,vars:16,consts:[["color","warn","class","mat-elevation-z4 impossible-container",4,"ngIf"],[1,"container"],[3,"slot","possible"],["id","clear-container"],["color","warn","mat-stroked-button","",3,"click"],[1,"minispace"],[1,"mat-elevation-z6"],["aria-hidden","false","inline",""],["id","explanation-description"],[1,"text-highlight"],[1,"example-usecase"],[1,"modslot-legend"],[3,"perk"],["color","warn",1,"mat-elevation-z4","impossible-container"]],template:function(e,o){1&e&&(t.YNc(0,mr,2,0,"mat-toolbar",0),t.TgZ(1,"div",1),t._UZ(2,"app-slot-limitation-title"),t.TgZ(3,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(0,s)}),t.qZA(),t._UZ(4,"br"),t.TgZ(5,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(1,s)}),t.qZA(),t._UZ(6,"br"),t.TgZ(7,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(2,s)}),t.qZA(),t._UZ(8,"br"),t.TgZ(9,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(3,s)}),t.qZA(),t._UZ(10,"br"),t.TgZ(11,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(4,s)}),t.qZA()(),t.TgZ(12,"div",3)(13,"button",4),t.NdJ("click",function(){return o.clear()}),t._uU(14,"Clear the whole selection"),t.qZA()(),t._UZ(15,"div",5),t.YNc(16,dr,2,0,"mat-toolbar",0),t._UZ(17,"div",5),t.TgZ(18,"mat-accordion")(19,"mat-expansion-panel",6)(20,"mat-expansion-panel-header")(21,"mat-panel-title")(22,"mat-icon",7),t._uU(23,"info"),t.qZA(),t._uU(24," Explanation "),t.qZA(),t.TgZ(25,"mat-panel-description"),t._uU(26," Detailed instructions for this section. "),t.qZA()(),t.TgZ(27,"div",8),t._uU(28," This section allows you to further finetune the results to your requirements."),t._UZ(29,"br")(30,"div",5),t.TgZ(31,"u"),t._uU(32,"Limitation of available stat mod types"),t.qZA(),t._UZ(33,"br"),t._uU(34," First off, you are able to "),t.TgZ(35,"span",9),t._uU(36,"select the kind and amount of stat mods"),t.qZA(),t._uU(37," you want. By filling the bars you "),t.TgZ(38,"span",9),t._uU(39,"specify how many modslots are already occupied"),t.qZA(),t._uU(40," and thus the tool knows how much space it is able to use for your builds. Hover over the bars, it will show you which mods are available after you changed your selection. "),t._UZ(41,"div",5),t.TgZ(42,"div",10),t._uU(43,' Example Use Case: "On one item I can only use up to four recovery mods, no major intellect mod. One item can not hold any mods". In this scenario you would set one slot to 10 used slots, and the rest to 6. '),t.qZA(),t._UZ(44,"br"),t.TgZ(45,"u"),t._uU(46,"Filter for Elemental Affinity and Armor Perk/Slot"),t.qZA(),t._UZ(47,"br"),t._uU(48," This allows you to super-finetune your elemental and armor-perk requirements. You can change the settings for "),t.TgZ(49,"span",9),t._uU(50,"each armor slot"),t.qZA(),t._uU(51,". There are two modes per armor slot: "),t.TgZ(52,"span",9),t._uU(53,"Locked"),t.qZA(),t._uU(54," and "),t.TgZ(55,"span",9),t._uU(56,"Unlocked"),t.qZA(),t._uU(57,". Per default each entry is in the "),t.TgZ(58,"span",9),t._uU(59,"Locked"),t.qZA(),t._uU(60," mode. "),t._UZ(61,"div",5),t.TgZ(62,"span",9),t._uU(63,"Locked"),t.qZA(),t._uU(64," means that "),t.TgZ(65,"span",9),t._uU(66,"this armor slot must have"),t.qZA(),t._uU(67," the selected element or perk. "),t._UZ(68,"div",5),t.TgZ(69,"span",9),t._uU(70,"Unlocked"),t.qZA(),t._uU(71," means that the perk must exist, but "),t.TgZ(72,"span",9),t._uU(73,"the exact armor slot is irrelevant"),t.qZA(),t._uU(74,". That means that the tool can decide where it puts the desired element or perk. "),t._UZ(75,"div",5),t.TgZ(76,"div",10),t._uU(77,' Example Use Case: "The Class Item and Gauntlet '),t.TgZ(78,"span",9),t._uU(79,"must be stasis"),t.qZA(),t._uU(80,'. Oh, and I need two solar and one arc modslots, but the position does not matter". In this scenario, Class Item and Gauntlet would be '),t.TgZ(81,"span",9),t._uU(82,"Locked"),t.qZA(),t._uU(83," and the rest would be "),t.TgZ(84,"span",9),t._uU(85,"Unlocked"),t.qZA(),t._uU(86,". "),t.qZA(),t._UZ(87,"br"),t._uU(88," Legend: "),t.TgZ(89,"table",11)(90,"tr")(91,"td"),t._UZ(92,"app-armor-perk-icon",12),t.qZA(),t.TgZ(93,"td"),t._uU(94,"Vault of Glass"),t.qZA(),t.TgZ(95,"td"),t._UZ(96,"app-armor-perk-icon",12),t.qZA(),t.TgZ(97,"td"),t._uU(98,"Deep Stone Crypt"),t.qZA(),t.TgZ(99,"td"),t._UZ(100,"app-armor-perk-icon",12),t.qZA(),t.TgZ(101,"td"),t._uU(102,"Garden of Salvation"),t.qZA()(),t.TgZ(103,"tr")(104,"td"),t._UZ(105,"app-armor-perk-icon",12),t.qZA(),t.TgZ(106,"td"),t._uU(107,"Last Wish"),t.qZA(),t.TgZ(108,"td"),t._UZ(109,"app-armor-perk-icon",12),t.qZA(),t.TgZ(110,"td"),t._uU(111,"Vow of the Disciple"),t.qZA(),t.TgZ(112,"td"),t._UZ(113,"app-armor-perk-icon",12),t.qZA(),t.TgZ(114,"td"),t._uU(115,"Nightmare Modslot"),t.qZA()(),t.TgZ(116,"tr")(117,"td"),t._UZ(118,"app-armor-perk-icon",12),t.qZA(),t.TgZ(119,"td"),t._uU(120,"Artifice Modslot"),t.qZA(),t.TgZ(121,"td"),t._UZ(122,"app-armor-perk-icon",12),t.qZA(),t.TgZ(123,"td"),t._uU(124,"Iron Banner Perk"),t.qZA(),t.TgZ(125,"td"),t._UZ(126,"app-armor-perk-icon",12),t.qZA(),t.TgZ(127,"td"),t._uU(128,"Echoes of Glory Perk"),t.qZA()()()()()()),2&e&&(t.Q6J("ngIf",!o.allPossible),t.xp6(3),t.Q6J("slot",o.ArmorSlot.ArmorSlotHelmet),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotGauntlet),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotChest),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotLegs),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotClass),t.xp6(5),t.Q6J("ngIf",o.disabledSlotLimitation),t.xp6(76),t.Q6J("perk",o.ArmorPerkOrSlot.SlotVaultOfGlass),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotDeepStoneCrypt),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotGardenOfSalvation),t.xp6(5),t.Q6J("perk",o.ArmorPerkOrSlot.SlotLastWish),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotVowOfTheDisciple),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotNightmare),t.xp6(5),t.Q6J("perk",o.ArmorPerkOrSlot.SlotArtifice),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.PerkIronBanner),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.PerkEchoesOfGlory))},dependencies:[Z.O5,rt.lW,St.Hw,It.Ye,mt.pp,mt.ib,mt.yz,mt.yK,mt.u4,lr,fe,cr],styles:[".container[_ngcontent-%COMP%]{margin-bottom:10px}.impossible-container[_ngcontent-%COMP%]{text-align:center;margin-right:auto;margin-left:auto;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;font-size:15px;line-height:20px;margin-bottom:10px}.element-icon[_ngcontent-%COMP%]{height:30px;width:30px}.element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;pointer-events:none}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:20px;position:absolute;left:5px;bottom:9px;pointer-events:none}.modslot-legend[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0 0;width:100%}.modslot-legend[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#explanation-description[_ngcontent-%COMP%]{width:520px}.minispace[_ngcontent-%COMP%]{height:7px}.text-highlight[_ngcontent-%COMP%]{color:#cddcef}.example-usecase[_ngcontent-%COMP%]{font-size:small;line-height:normal}"]}),n})();function pr(n,i){if(1&n&&t._UZ(0,"img",6),2&n){const e=t.oxw();t.s9C("alt",e.exoticPerk.name),t.MGl("src","https://bungie.net/",e.exoticPerk.icon,"",t.LSH)}}function gr(n,i){1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Loading exotic perk.."),t.qZA()())}function _r(n,i){1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"No (fixed) exotic perk available."),t.qZA()())}function fr(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td")(2,"span"),t._uU(3),t.qZA()()()),2&n){const e=t.oxw();t.xp6(3),t.Oqu(e.exoticPerk.name)}}function hr(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td",7),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.hij(" ",e.exoticPerk.description," ")}}function xr(n,i){1&n&&(t.ynx(0),t._uU(1," and "),t.BQk())}function yr(n,i){if(1&n&&(t.ynx(0),t._uU(1," in your collection "),t.YNc(2,xr,2,0,"ng-container",4),t.BQk()),2&n){const e=t.oxw(2);t.xp6(2),t.Q6J("ngIf",e.vendor)}}function Cr(n,i){1&n&&(t.ynx(0),t._uU(1,"available at a vendor"),t.BQk())}function Tr(n,i){if(1&n&&(t.TgZ(0,"tr",8)(1,"td",7),t._uU(2," This exotic is not in your inventory but it is "),t.YNc(3,yr,3,1,"ng-container",4),t.YNc(4,Cr,2,0,"ng-container",4),t._uU(5,". You can still generate a loadout with this exotic, but you will have to grab it by yourself. "),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngIf",e.collection),t.xp6(1),t.Q6J("ngIf",e.vendor)}}let vr=(()=>{class n{constructor(e,o){this.inv=e,this.iconService=o,this.vendor=!1,this.collection=!1,this.exoticPerkNotThere=!1}ngOnInit(){var e=this;return(0,x.Z)(function*(){e.exoticPerk=yield e.iconService.getItemCached(e.armor?.exoticPerkHash??0),e.exoticPerkNotThere=null==e.exoticPerk})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(At),t.Y36(ge))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-exotic-perk-tooltip"]],inputs:{armor:"armor",vendor:"vendor",collection:"collection"},decls:13,vars:7,consts:[[1,"tooltip-container"],["rowspan","2",1,"perk-icon-col"],["class","perk-icon",3,"alt","src",4,"ngIf"],[1,"exotic-name"],[4,"ngIf"],["class","collection-roll-info",4,"ngIf"],[1,"perk-icon",3,"alt","src"],["colspan","2"],[1,"collection-roll-info"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t.YNc(5,pr,1,2,"img",2),t.qZA(),t.TgZ(6,"td",3),t._uU(7),t.qZA()(),t.YNc(8,gr,3,0,"tr",4),t.YNc(9,_r,3,0,"tr",4),t.YNc(10,fr,4,1,"tr",4),t.YNc(11,hr,3,1,"tr",4),t.YNc(12,Tr,6,2,"tr",5),t.qZA()()()),2&e&&(t.xp6(5),t.Q6J("ngIf",o.exoticPerk),t.xp6(2),t.Oqu(null==o.armor?null:o.armor.name),t.xp6(1),t.Q6J("ngIf",!o.exoticPerk&&!o.exoticPerkNotThere),t.xp6(1),t.Q6J("ngIf",!o.exoticPerk&&o.exoticPerkNotThere),t.xp6(1),t.Q6J("ngIf",o.exoticPerk),t.xp6(1),t.Q6J("ngIf",o.exoticPerk),t.xp6(1),t.Q6J("ngIf",o.collection||o.vendor))},dependencies:[Z.O5],styles:["[_nghost-%COMP%]{width:350px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.perk-icon[_ngcontent-%COMP%]{width:50px;height:50px}.perk-icon-col[_ngcontent-%COMP%]{width:55px}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}.collection-roll-info[_ngcontent-%COMP%]{color:#5cc3ec;font-size:12px;margin-top:5px}"]}),n})(),br=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0,this.exoticTooltipInVendor=!1,this.exoticTooltipInCollection=!1}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){if(this._overlayRef&&!this._overlayRef.hasAttached()){const e=this._overlayRef.attach(new le.C5(vr));e.instance.collection=this.exoticTooltipInCollection,e.instance.vendor=this.exoticTooltipInVendor,e.instance.armor=this.exoticTooltip}}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Lt.aV),t.Y36(Lt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","exoticTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",exoticTooltip:"exoticTooltip",exoticTooltipInVendor:"exoticTooltipInVendor",exoticTooltipInCollection:"exoticTooltipInCollection",contentTemplate:"contentTemplate"}}),n})();function Ar(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"img",7,8),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.selectExotic(-2,a))}),t.qZA()}if(2&n){const e=t.oxw(2);t.Gre("exoticIcon ",e.selectedExotics.indexOf(-2)>-1?"selected":"","")}}function wr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"img",9,8),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.selectExotic(-1,a))}),t.qZA()}if(2&n){const e=t.oxw(2);t.Gre("exoticIcon ",e.selectedExotics.indexOf(-1)>-1?"selected":"","")}}function Ir(n,i){if(1&n&&t._UZ(0,"img",14),2&n){const e=t.oxw().$implicit;t.MGl("src","https://www.bungie.net/",e.item.watermarkIcon,"",t.LSH)}}function Zr(n,i){if(1&n&&t._UZ(0,"div",15),2&n){const e=t.oxw().$implicit,o=t.oxw(2);t.ekj("vendor-item",o.includeVendorRolls&&e.inVendor)("collection-item",o.includeCollectionRolls&&e.inCollection)}}function Sr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",10)(1,"img",11),t.NdJ("click",function(a){const r=t.CHM(e).$implicit,m=t.oxw(2);return t.KtG((r.inInventory||m.includeCollectionRolls&&r.inCollection)&&m.selectExotic(r.item.hash,a))}),t.qZA(),t.YNc(2,Ir,1,1,"img",12),t.YNc(3,Zr,1,4,"div",13),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Gre("exoticIcon ",o.selectedExotics.indexOf(e.item.hash)>-1?"selected":"",""),t.ekj("vendor-item",!e.inInventory&&o.includeVendorRolls&&e.inVendor)("collection-item",!e.inInventory&&o.includeCollectionRolls&&e.inCollection)("disabled",!(e.inInventory||o.includeCollectionRolls&&e.inCollection||o.includeVendorRolls&&e.inVendor)),t.MGl("src","https://www.bungie.net/",e.item.icon,"",t.LSH),t.Q6J("exoticTooltip",e.item)("exoticTooltipInVendor",!e.inInventory&&o.includeVendorRolls&&e.inVendor)("exoticTooltipInCollection",!e.inInventory&&o.includeCollectionRolls&&e.inCollection),t.xp6(1),t.Q6J("ngIf",e.item.watermarkIcon),t.xp6(1),t.Q6J("ngIf",!e.inInventory)}}function Mr(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Ar,2,3,"img",4),t.YNc(2,wr,2,3,"img",5),t.YNc(3,Sr,4,15,"span",6),t.qZA()),2&n){const e=i.$implicit,o=i.index;t.Q6J("@listAnimation",e.length),t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngForOf",e)}}function Or(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",16),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.refreshAll())}),t._uU(1," Manually refresh manifest and inventory "),t.qZA()}}const kr=(0,xt.X$)("listAnimation",[(0,xt.eR)("* <=> *",[(0,xt.IO)(":enter",[(0,xt.oB)({opacity:0}),(0,xt.EY)("30ms",(0,xt.jt)("350ms ease-out",(0,xt.oB)({opacity:1})))],{optional:!0})])]);let Er=(()=>{class n{constructor(e,o){this.inventory=e,this.config=o,this.selectedExotics=[],this.includeCollectionRolls=!1,this.includeVendorRolls=!1,this.ignoreSunsetArmor=!1,this.ignoreExistingExoticArtificeSlots=!1,this.allowBlueArmorPieces=!1,this.currentClass=0,this.exotics=[],this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){(a.characterClass!=e.currentClass||0==e.exotics.length)&&(e.currentClass=a.characterClass,yield e.updateExoticsForClass()),e.includeCollectionRolls=a.includeCollectionRolls,e.includeVendorRolls=a.includeVendorRolls,e.selectedExotics=a.selectedExotics,e.ignoreSunsetArmor=a.ignoreSunsetArmor,e.allowBlueArmorPieces=a.allowBlueArmorPieces,e.ignoreExistingExoticArtificeSlots=a.ignoreExistingExoticArtificeSlots});return function(a){return o.apply(this,arguments)}}()),this.inventory.manifest.pipe((0,L.b)(10),(0,yt.R)(this.ngUnsubscribe)).subscribe((0,x.Z)(function*(){yield e.updateExoticsForClass()})),this.inventory.inventory.pipe((0,L.b)(10),(0,yt.R)(this.ngUnsubscribe)).subscribe((0,x.Z)(function*(){yield e.updateExoticsForClass()}))}updateExoticsForClass(){var e=this;return(0,x.Z)(function*(){const o=yield e.inventory.getExoticsForClass(e.currentClass);function a(s){var r={};return s.filter(function(m){var p=m.item.hash;return!r.hasOwnProperty(p)&&(r[p]=!0)})}e.exotics=[a(o.filter(s=>s.item.slot==v.y.ArmorSlotHelmet)),a(o.filter(s=>s.item.slot==v.y.ArmorSlotGauntlet)),a(o.filter(s=>s.item.slot==v.y.ArmorSlotChest)),a(o.filter(s=>s.item.slot==v.y.ArmorSlotLegs)),a(o.filter(s=>s.item.slot==v.y.ArmorSlotClass))]})()}setAllowCollectionRolls(e){this.config.modifyConfiguration(o=>{o.includeCollectionRolls=e})}setAllowVendorItems(e){this.config.modifyConfiguration(o=>{o.includeVendorRolls=e})}setAllowBlueArmorPieces(e){this.config.modifyConfiguration(o=>{o.allowBlueArmorPieces=e})}setIgnoreSunsetArmor(e){this.config.modifyConfiguration(o=>{o.ignoreSunsetArmor=e})}setIgnoreExistingExoticArtificeSlots(e){this.config.modifyConfiguration(o=>{o.ignoreExistingExoticArtificeSlots=e})}selectExotic(e,o){const a=this.selectedExotics.indexOf(e);a>-1?this.selectedExotics.splice(a,1):e==P.Io?this.selectedExotics=[P.Io]:(0==this.selectedExotics.length||!o.shiftKey)&&(this.selectedExotics=[e]),this.config.modifyConfiguration(s=>{s.selectedExotics=this.selectedExotics})}refreshAll(){var e=this;return(0,x.Z)(function*(){yield e.inventory.refreshAll(!0,!0)})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(At),t.Y36(z))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-exotic-selection"]],decls:24,vars:7,consts:[[4,"ngFor","ngForOf"],["mat-raised-button","","color","warn",3,"click",4,"ngIf"],["color","primary",3,"checked","change"],["color","warn",3,"checked","change"],["src","https://www.bungie.net/common/destiny2_content/icons/763634b78eb22168ac707500588b7333.jpg","matTooltip","Force to use ANY exotic (that is NOT a class item)",3,"class","click",4,"ngIf"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png","matTooltip","Force to use NO exotic at all",3,"class","click",4,"ngIf"],["class","container",4,"ngFor","ngForOf"],["src","https://www.bungie.net/common/destiny2_content/icons/763634b78eb22168ac707500588b7333.jpg","matTooltip","Force to use ANY exotic (that is NOT a class item)",3,"click"],["tooltip","matTooltip"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png","matTooltip","Force to use NO exotic at all",3,"click"],[1,"container"],[3,"src","exoticTooltip","exoticTooltipInVendor","exoticTooltipInCollection","click"],["class","watermarkIcon",3,"src",4,"ngIf"],["class","item-source-overlay",3,"vendor-item","collection-item",4,"ngIf"],[1,"watermarkIcon",3,"src"],[1,"item-source-overlay"],["mat-raised-button","","color","warn",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Mr,4,4,"div",0),t.TgZ(1,"div"),t.YNc(2,Or,2,0,"button",1),t.qZA(),t.TgZ(3,"div")(4,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowCollectionRolls(s.checked)}),t._uU(5," Include "),t.TgZ(6,"u"),t._uU(7,"exotic"),t.qZA(),t._uU(8," collection rolls "),t.qZA()(),t.TgZ(9,"div")(10,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowVendorItems(s.checked)}),t._uU(11," Include "),t.TgZ(12,"u"),t._uU(13,"legendary and exotic"),t.qZA(),t._uU(14," vendor armor (slower) "),t.qZA()(),t.TgZ(15,"div")(16,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowBlueArmorPieces(s.checked)}),t._uU(17," Include white, blue and green items "),t.qZA()(),t.TgZ(18,"div")(19,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setIgnoreSunsetArmor(!s.checked)}),t._uU(20," Include sunset armor "),t.qZA()(),t.TgZ(21,"div")(22,"mat-slide-toggle",3),t.NdJ("change",function(s){return o.setIgnoreExistingExoticArtificeSlots(s.checked)}),t._uU(23," Ignore existing artifice slots on exotics (useful for the exotic class item) "),t.qZA()()),2&e&&(t.Q6J("ngForOf",o.exotics),t.xp6(2),t.Q6J("ngIf",0===o.exotics.length||0===o.exotics[0].length),t.xp6(2),t.Q6J("checked",o.includeCollectionRolls),t.xp6(6),t.Q6J("checked",o.includeVendorRolls),t.xp6(6),t.Q6J("checked",o.allowBlueArmorPieces),t.xp6(3),t.Q6J("checked",!o.ignoreSunsetArmor),t.xp6(3),t.Q6J("checked",o.ignoreExistingExoticArtificeSlots))},dependencies:[Z.sg,Z.O5,rt.lW,ne.Rr,pt.gM,br],styles:[".container[_ngcontent-%COMP%]{display:inline-block;position:relative;--icon-size: 36px}.exoticIcon[_ngcontent-%COMP%]{width:36px;height:36px;margin-right:3px;border:rgba(0,0,0,0) solid 2px;cursor:pointer}.watermarkIcon[_ngcontent-%COMP%]{width:36px;height:36px;margin-left:-41px;margin-top:2px;position:absolute;pointer-events:none}.exoticIcon[_ngcontent-%COMP%]:hover{border:cornflowerblue solid 2px}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%]:hover{border:#0059ff solid 2px}[_nghost-%COMP%]{position:relative}.exoticText[_ngcontent-%COMP%]{position:absolute;text-shadow:0 0 6px #000000;background:rgba(33,33,33,.51);color:#f5f5f5;bottom:4px;right:5px}.disabled[_ngcontent-%COMP%]{filter:grayscale(1) contrast(.6)}.disabled[_ngcontent-%COMP%]:hover{cursor:default}.item-source-overlay[_ngcontent-%COMP%]{margin:2px}.item-source-overlay[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:0;pointer-events:none;border-top:calc(var(--icon-size) / 2) solid transparent;border-right:calc(var(--icon-size) / 2) solid transparent}.item-source-overlay.vendor-item[_ngcontent-%COMP%]{border-top-color:#00f}.item-source-overlay.collection-item[_ngcontent-%COMP%]{border-top-color:#90ee90}"],data:{animation:[kr]}}),n})(),Ur=(()=>{class n{constructor(e,o,a){var s=this;this.auth=e,this.membership=o,this.inventory=a,this.characters=[],this.loadCachedData(),this.auth.logoutEvent.subscribe(r=>this.clearCachedData()),this.inventory.inventory.subscribe((0,x.Z)(function*(){yield s.updateCharacterData()}))}clearCachedData(){this.characters=[],localStorage.removeItem("cachedCharacters")}loadCachedData(){let e=localStorage.getItem("cachedCharacters")||"[]";this.characters=JSON.parse(e)}updateCharacterData(){var e=this;return(0,x.Z)(function*(){e.characters=yield e.membership.getCharacters(),localStorage.setItem("cachedCharacters",JSON.stringify(e.characters))})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(Dt),t.LFG(At))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function Dr(n,i){1&n&&(t.TgZ(0,"div",11),t._uU(1," Loading characters.. "),t.qZA())}function Pr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Rr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Nr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function qr(n,i){if(1&n&&(t.TgZ(0,"div"),t._UZ(1,"img",14),t.TgZ(2,"span",15),t._uU(3),t.qZA()()),2&n){const e=t.oxw().$implicit,o=t.oxw();t.xp6(3),t.hij("\xd7",o.itemCounts[e.clazz],"")}}function Fr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",12),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.selectClass(s.clazz))}),t.TgZ(1,"div",13),t.YNc(2,Pr,2,0,"span",3),t.YNc(3,Rr,2,0,"span",3),t.YNc(4,Nr,2,0,"span",3),t.qZA(),t.YNc(5,qr,4,1,"div",3),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.Udp("background-image","url(https://bungie.net/"+e.emblemUrl+")"),t.ekj("selected",a.selectedClass===e.clazz),t.xp6(2),t.Q6J("ngIf",0===e.clazz),t.xp6(1),t.Q6J("ngIf",1===e.clazz),t.xp6(1),t.Q6J("ngIf",2===e.clazz),t.xp6(1),t.Q6J("ngIf",!!a.itemCounts[o])}}function Jr(n,i){if(1&n&&(t.TgZ(0,"div")(1,"span",16),t._UZ(2,"img",17),t._uU(3),t.ALo(4,"number"),t.qZA(),t.TgZ(5,"span",16),t._UZ(6,"img",18),t._uU(7),t.ALo(8,"number"),t.qZA(),t.TgZ(9,"span",16),t._UZ(10,"img",19),t._uU(11),t.ALo(12,"number"),t.qZA(),t.TgZ(13,"span",16),t._UZ(14,"img",20),t._uU(15),t.ALo(16,"number"),t.qZA(),t.TgZ(17,"span",16),t._UZ(18,"img",21),t._uU(19),t.ALo(20,"number"),t.qZA()()),2&n){const e=t.oxw();t.xp6(1),t.MGl("matTooltip","Exotic Cipher: ",e.storedMaterials[3467984096],""),t.xp6(2),t.hij(" ",t.xi3(4,10,e.storedMaterials[3467984096],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Ascendant Shards: ",e.storedMaterials[4257549985],""),t.xp6(2),t.hij(" ",t.xi3(8,13,e.storedMaterials[4257549985],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Enhancement Prisms: ",e.storedMaterials[4257549984],""),t.xp6(2),t.hij(" ",t.xi3(12,16,e.storedMaterials[4257549984],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Enhancement Cores: ",e.storedMaterials[3853748946],""),t.xp6(2),t.hij(" ",t.xi3(16,19,e.storedMaterials[3853748946],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Glimmer: ",e.storedMaterials[3159615086],""),t.xp6(2),t.hij(" ",t.xi3(20,22,e.storedMaterials[3159615086],"1.0-0")," ")}}let Lr=(()=>{class n{constructor(e,o,a){this.config=e,this.userdata=o,this.inv=a,this.itemCounts=[null,null,null],this.selectedClass=-1,this.storedMaterials=null,this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(o=>{this.selectedClass=o.characterClass;const a=-1!=this.userdata.characters.findIndex(s=>s.clazz==o.characterClass);this.userdata.characters.length>0&&!a&&this.config.modifyConfiguration(s=>{s.characterClass=this.userdata.characters[0].clazz,s.selectedExotics=[]})}),this.inv.inventory.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){yield e.loadStoredMaterials(),yield e.updateItemCount()});return function(a){return o.apply(this,arguments)}}())}selectClass(e){this.config.readonlyConfigurationSnapshot.characterClass!=e&&this.config.modifyConfiguration(o=>{o.characterClass=e,o.selectedExotics=[]})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}updateItemCount(){var e=this;return(0,x.Z)(function*(){for(let o=0;o<3;o++)e.itemCounts[o]=yield e.inv.getItemCountForClass(o)})()}loadStoredMaterials(){var e=this;return(0,x.Z)(function*(){var o=JSON.parse(localStorage.getItem("stored-materials")||"{}");"3853748946"in o||(o[3853748946]=0),"4257549984"in o||(o[4257549984]=0),"4257549985"in o||(o[4257549985]=0),"3159615086"in o||(o[3159615086]=0),"3467984096"in o||(o[3467984096]=0),e.storedMaterials=o})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(Ur),t.Y36(At))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-class-selection"]],decls:22,vars:3,consts:[[1,"character-container"],["class","character-entry",4,"ngIf"],["class","character-entry","style","float: left",3,"selected","background-image","click",4,"ngFor","ngForOf"],[4,"ngIf"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-flat-button","","routerLink","/help",2,"margin-left","15px"],["inline",""],["color","accent","href","https://ko-fi.com/mijago","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["color","accent","href","http://discord.d2armorpicker.com","target","_blank"],[1,"crayon_logo_container"],["alt","","src","https://cdn.discordapp.com/emojis/917423317139480586.webp?size=96&quality=lossless",1,"crayon_logo"],["href","https://mijago.github.io/Crayon","target","_blank"],[1,"character-entry"],[1,"character-entry",2,"float","left",3,"click"],[1,"class-text"],["matTooltip","Amount of armor pieces for this class.","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",1,"head-icon"],["matTooltip","Amount of armor pieces for this class.",1,"armor-text"],[1,"material-listing",3,"matTooltip"],["src","https://www.bungie.net/common/destiny2_content/icons/9970631fe1052642c268132dfc30e16b.jpg","alt","Exotic Cipher"],["src","https://www.bungie.net/common/destiny2_content/icons/0271d214fc3ec91b3def799a4b286b46.jpg","alt","Ascendant Shard"],["src","https://www.bungie.net/common/destiny2_content/icons/dea2a35badf7466d4c2c2697ce6e8d87.jpg","alt","Enhancement Prism"],["src","https://www.bungie.net/common/destiny2_content/icons/0a4eb695ed55b4e720ddc401460cc0f9.jpg","alt","Enhancement Core"],["src","https://www.bungie.net/common/destiny2_content/icons/88993eaeedad32f42072df6f77f47311.png","alt","Glimmer"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Dr,2,0,"div",1),t.YNc(2,Fr,6,8,"div",2),t.qZA(),t.YNc(3,Jr,21,25,"div",3),t.TgZ(4,"a",4)(5,"mat-icon",5),t._uU(6,"help"),t.qZA(),t._uU(7," Help and Information about D2ArmorPicker\n"),t.qZA(),t.TgZ(8,"div"),t._uU(9," If you like my work, you can "),t.TgZ(10,"a",6),t._uU(11," support me here."),t.qZA(),t._uU(12," You can also "),t.TgZ(13,"a",7),t._uU(14," join my dev Discord! "),t.qZA(),t.TgZ(15,"div"),t._uU(16," Also check out my Discord-Bot "),t.TgZ(17,"div",8),t._UZ(18,"img",9),t.qZA(),t.TgZ(19,"a",10),t._uU(20,"Crayon"),t.qZA(),t._uU(21,", for all your item information needs! "),t.qZA()()),2&e&&(t.xp6(1),t.Q6J("ngIf",0===o.userdata.characters.length),t.xp6(1),t.Q6J("ngForOf",o.userdata.characters),t.xp6(1),t.Q6J("ngIf",null!==o.storedMaterials))},dependencies:[Z.sg,Z.O5,M.b8,rt.zs,pt.gM,St.Hw,ot.yS,Z.JJ],styles:[".discord-btn[_ngcontent-%COMP%]{margin-left:15px}.material-listing[_ngcontent-%COMP%]{position:relative;padding-left:22px;padding-right:10px}.material-listing[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:20px;position:absolute;top:-2px;left:0}.crayon_logo_container[_ngcontent-%COMP%]{position:relative;width:22px;display:inline-block;margin-right:3px}.crayon_logo_container[_ngcontent-%COMP%] .crayon_logo[_ngcontent-%COMP%]{position:absolute;width:22px;top:-14px} .mat-option-text{color:#fff}.character-container[_ngcontent-%COMP%]{height:50px}.character-entry[_ngcontent-%COMP%]{color:#fff;background-size:cover;background-position:left center;background-repeat:no-repeat;width:180px;height:36px;position:relative;margin-right:7px;margin-bottom:7px;border:rgba(255,255,255,0) solid 2px;opacity:.75;cursor:pointer}.character-entry[_ngcontent-%COMP%]:hover{border:rgba(255,255,255,.41) solid 2px;opacity:.98}.character-entry.selected[_ngcontent-%COMP%]{cursor:default;opacity:1;border:white solid 2px}.class-text[_ngcontent-%COMP%]{position:absolute;left:35px;top:8px;font-size:x-large;text-shadow:0 0 6px #000000}.head-icon[_ngcontent-%COMP%]{height:25px;top:6px;right:30px;position:absolute;filter:invert(1) drop-shadow(1px 1px 3px rgba(0,0,0,.25))!important}.armor-text[_ngcontent-%COMP%]{position:absolute;right:4px;top:9px;text-shadow:0 0 6px #000000;font-size:small}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})();var Yr=_(7580);let Br=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-mod-description-tooltip"]],inputs:{mod:"mod"},decls:9,vars:2,consts:[[1,"tooltip-container"],[1,"exotic-name"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"td"),t._uU(8),t.qZA()()()()()),2&e&&(t.xp6(5),t.Oqu(null==o.mod?null:o.mod.name),t.xp6(3),t.Oqu(null==o.mod?null:o.mod.description))},styles:["[_nghost-%COMP%]{width:350px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}"]}),n})(),Vr=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a}ngOnInit(){const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){this._overlayRef&&!this._overlayRef.hasAttached()&&(this._overlayRef.attach(new le.C5(Br)).instance.mod=this.mod)}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Lt.aV),t.Y36(Lt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","modTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{mod:["modTooltip","mod"]}}),n})();function Qr(n,i){if(1&n){const e=t.EpF();t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"mat-button-toggle-group",4)(3,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Arc))}),t._uU(4," Arc "),t.qZA(),t.TgZ(5,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Solar))}),t._uU(6," Solar "),t.qZA(),t.TgZ(7,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Void))}),t._uU(8," Void "),t.qZA(),t.TgZ(9,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Stasis))}),t._uU(10," Stasis "),t.qZA(),t.TgZ(11,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Strand))}),t._uU(12," Strand "),t.qZA(),t.TgZ(13,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Prismatic))}),t._uU(14," Prismatic "),t.qZA()(),t.BQk()}if(2&n){const e=t.oxw(2);t.xp6(2),t.Q6J("value",e.selectedElement),t.xp6(1),t.Q6J("value",e.ModifierType.Arc),t.xp6(2),t.Q6J("value",e.ModifierType.Solar),t.xp6(2),t.Q6J("value",e.ModifierType.Void),t.xp6(2),t.Q6J("value",e.ModifierType.Stasis),t.xp6(2),t.Q6J("value",e.ModifierType.Strand),t.xp6(2),t.Q6J("value",e.ModifierType.Prismatic)}}function Hr(n,i){if(1&n&&(t.TgZ(0,"h3",8),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).$implicit;t.xp6(1),t.Oqu(e.name)}}function Wr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"There are no fragments configured yet. Please be patient."),t.qZA())}function jr(n,i){1&n&&(t.TgZ(0,"th",22),t._uU(1,"Name"),t.qZA())}function Gr(n,i){if(1&n&&(t.TgZ(0,"td",23)(1,"mat-slide-toggle",24),t._UZ(2,"app-item-icon",25),t._uU(3),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw(4);t.Q6J("modTooltip",e),t.xp6(1),t.Q6J("checked",o.selectedMods.indexOf(e.id)>-1),t.xp6(1),t.Q6J("itemHash",e.hash),t.xp6(1),t.hij(" ",e.name," ")}}function zr(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",0))}function Kr(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function $r(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function Xr(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Kr,2,1,"span",29),t.YNc(2,$r,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function tl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,Xr,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,0))}}function el(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",1))}function nl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function ol(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function il(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,nl,2,1,"span",29),t.YNc(2,ol,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function al(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,il,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,1))}}function sl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",2))}function rl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function ll(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function cl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,rl,2,1,"span",29),t.YNc(2,ll,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function ml(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,cl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,2))}}function dl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",3))}function ul(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function pl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function gl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ul,2,1,"span",29),t.YNc(2,pl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function _l(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,gl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,3))}}function fl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",4))}function hl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function xl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function yl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,hl,2,1,"span",29),t.YNc(2,xl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function Cl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,yl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,4))}}function Tl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",5))}function vl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function bl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function Al(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,vl,2,1,"span",29),t.YNc(2,bl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function wl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,Al,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,5))}}function Il(n,i){1&n&&t._UZ(0,"tr",33)}function Zl(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr",34),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(4);return t.KtG(r.handleRowClick(s))}),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(4);t.ekj("selected",o.selectedMods.indexOf(e.id)>-1)}}function Sl(n,i){if(1&n&&(t.TgZ(0,"table",9),t.ynx(1,10),t.YNc(2,jr,2,0,"th",11),t.YNc(3,Gr,4,4,"td",12),t.BQk(),t.ynx(4,13),t.YNc(5,zr,2,1,"th",11),t.YNc(6,tl,2,1,"td",14),t.BQk(),t.ynx(7,15),t.YNc(8,el,2,1,"th",11),t.YNc(9,al,2,1,"td",14),t.BQk(),t.ynx(10,16),t.YNc(11,sl,2,1,"th",11),t.YNc(12,ml,2,1,"td",14),t.BQk(),t.ynx(13,17),t.YNc(14,dl,2,1,"th",11),t.YNc(15,_l,2,1,"td",14),t.BQk(),t.ynx(16,18),t.YNc(17,fl,2,1,"th",11),t.YNc(18,Cl,2,1,"td",14),t.BQk(),t.ynx(19,19),t.YNc(20,Tl,2,1,"th",11),t.YNc(21,wl,2,1,"td",14),t.BQk(),t.YNc(22,Il,1,0,"tr",20),t.YNc(23,Zl,1,2,"tr",21),t.qZA()),2&n){const e=t.oxw(2).$implicit,o=t.oxw();t.Q6J("dataSource",e.data),t.xp6(22),t.Q6J("matHeaderRowDef",o.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns)}}function Ml(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Hr,2,1,"h3",6),t.YNc(2,Wr,2,0,"span",3),t.YNc(3,Sl,24,3,"table",7),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngIf",!e.group),t.xp6(1),t.Q6J("ngIf",0===e.data.length),t.xp6(1),t.Q6J("ngIf",e.data.length>0)}}function Ol(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Qr,15,7,"ng-container",3),t.YNc(2,Ml,4,3,"ng-container",3),t.qZA()),2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngIf",!e.group||e.type===a.selectedElement)}}let kl=(()=>{class n{constructor(e){this.config=e,this.ModifierType=U.O,this.ModOrAbility=Yr.U,this.displayedColumns=["name","mobility","resilience","recovery","discipline","intellect","strength"],this.selectedClass=3,this.selectedMods=[],this.selectedElement=U.O.Solar,this.ngUnsubscribe=new R.xQ;const o=Object.values(N.F).sort((a,s)=>a.name.toLowerCase()s.name.toLowerCase()?1:0);this.data=[{name:"Stasis Fragments",data:o.filter(a=>a.type==U.O.Stasis),group:!0,type:U.O.Stasis},{name:"Void Fragments",data:o.filter(a=>a.type==U.O.Void),group:!0,type:U.O.Void},{name:"Solar Fragments",data:o.filter(a=>a.type==U.O.Solar),group:!0,type:U.O.Solar},{name:"Arc Fragments",data:o.filter(a=>a.type==U.O.Arc),group:!0,type:U.O.Arc},{name:"Strand Fragments",data:o.filter(a=>a.type==U.O.Strand),group:!0,type:U.O.Strand},{name:"Prismatic Fragments",data:o.filter(a=>a.type==U.O.Prismatic),group:!0,type:U.O.Prismatic}],this.dataSource=o}ngOnInit(){this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{this.selectedMods=e.enabledMods,this.selectedClass=e.characterClass,this.selectedElement=e.selectedModElement})}getModifierTextForValue(e,o){return e.filter(a=>a.stat==o||a.stat==c.AR.ClassAbilityRegenerationStat&&(0==this.selectedClass&&o==c.WB.Resilience||1==this.selectedClass&&o==c.WB.Mobility||2==this.selectedClass&&o==c.WB.Recovery)).reduce((a,s)=>a+s.value,0)}handleRowClick(e){this.config.modifyConfiguration(o=>{const a=o.enabledMods.indexOf(e.id);a>-1?o.enabledMods.splice(a,1):o.enabledMods.push(e.id)})}clear(){this.config.modifyConfiguration(e=>{e.enabledMods=[]})}setElement(e){this.selectedElement!=e&&this.config.modifyConfiguration(o=>{const a=o.enabledMods.filter(s=>N.F[s].type!=U.O.CombatStyleMod&&N.F[s].type!=e);o.selectedModElement=e;for(let s of a){const r=o.enabledMods.indexOf(s);o.enabledMods.splice(r,1)}})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-mods-selection"]],features:[t._Bn([{provide:ne.HT,useValue:{disableToggleValue:!1,disableDragValue:!0}}])],decls:4,vars:1,consts:[[4,"ngFor","ngForOf"],["id","clear-container"],["color","warn","mat-stroked-button","",3,"click"],[4,"ngIf"],[3,"value"],[3,"value","click"],["class","stat-part-title",4,"ngIf"],["mat-table","",3,"dataSource",4,"ngIf"],[1,"stat-part-title"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",3,"modTooltip",4,"matCellDef"],["matColumnDef","mobility"],["mat-cell","",4,"matCellDef"],["matColumnDef","resilience"],["matColumnDef","recovery"],["matColumnDef","discipline"],["matColumnDef","intellect"],["matColumnDef","strength"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"selected","click",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell","",3,"modTooltip"],["color","primary","disabled","",2,"cursor","pointer !important",3,"checked"],[3,"itemHash"],[3,"stat"],["mat-cell",""],[4,"ngVar"],["class","stat-positive",4,"ngIf"],["class","stat-negative",4,"ngIf"],[1,"stat-positive"],[1,"stat-negative"],["mat-header-row",""],["mat-row","",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Ol,3,2,"span",0),t.TgZ(1,"div",1)(2,"button",2),t.NdJ("click",function(){return o.clear()}),t._uU(3,"Clear the whole selection"),t.qZA()()),2&e&&t.Q6J("ngForOf",o.data)},dependencies:[Z.sg,Z.O5,rt.lW,ne.Rr,W.BZ,W.fO,W.as,W.w1,W.Dz,W.nj,W.ge,W.ev,W.XQ,W.Gk,Rt.A9,Rt.Yi,he,Kt,_e,Vr],styles:[".mat-slide-toggle.mat-disabled[_ngcontent-%COMP%]{opacity:1}.stat-part-title[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:5px}.modTable[_ngcontent-%COMP%]{width:100%}.mat-header-row[_ngcontent-%COMP%], .mat-row[_ngcontent-%COMP%]{height:30px}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-resilience[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-discipline[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%], .mat-column-strength[_ngcontent-%COMP%], .mat-column-cost[_ngcontent-%COMP%]{min-width:40px;text-align:center}.mat-row[_ngcontent-%COMP%]:hover{background-color:#494949}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%]{background-color:#464646}.mat-column-name[_ngcontent-%COMP%]{padding-right:4px;border-right:1px solid currentColor;min-width:150px}.mat-column-name[_ngcontent-%COMP%] app-item-icon[_ngcontent-%COMP%]{float:left;margin-right:5px}.mat-row[_ngcontent-%COMP%]{cursor:pointer}th.mat-header-cell[_ngcontent-%COMP%]:last-of-type, td.mat-cell[_ngcontent-%COMP%]:last-of-type, td.mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.mat-cell[_ngcontent-%COMP%]:last-of-type, .mat-header-cell[_ngcontent-%COMP%]:last-of-type, .mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.stat-negative[_ngcontent-%COMP%], .stat-positive[_ngcontent-%COMP%]{margin-right:3px}.stat-negative[_ngcontent-%COMP%]{color:#f08080}.stat-positive[_ngcontent-%COMP%]{color:#b6cbfc}.stat-display[_ngcontent-%COMP%]{width:60px;float:left;align-content:end;text-align:right}.mat-row[_ngcontent-%COMP%]:hover, .mat-row[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#494949}.mat-row.selected[_ngcontent-%COMP%]:hover, .mat-row.selected[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#89b2ff30}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-mobility[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-recovery[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-intellect[_ngcontent-%COMP%]{background-color:#89b2ff1c}.mat-column-name[_ngcontent-%COMP%]{min-width:190px}.element-icon[_ngcontent-%COMP%]{width:22px}#clear-container[_ngcontent-%COMP%]{padding-top:10px}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%]{width:22px;display:inline-block}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{position:relative}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%] app-stat-icon[_ngcontent-%COMP%]{position:absolute;top:-22px;left:-10px}"]}),n})();function El(n,i){if(1&n&&(t.TgZ(0,"mat-icon",8,9),t._uU(2," help "),t.qZA()),2&n){const e=t.oxw().$implicit;t.s9C("matTooltip",e.help)}}function Ul(n,i){1&n&&(t.TgZ(0,"mat-icon",10,9),t._uU(2," report_problem "),t.qZA())}function Dl(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",4)(1,"mat-slide-toggle",5),t.NdJ("change",function(a){const r=t.CHM(e).$implicit;return t.KtG(r.cp(a.checked))}),t._uU(2),t.qZA(),t.YNc(3,El,3,1,"mat-icon",6),t.YNc(4,Ul,3,0,"mat-icon",7),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("disabled",e.disabled)("checked",e.value),t.xp6(1),t.hij(" ",e.name," "),t.xp6(1),t.Q6J("ngIf",e.help),t.xp6(1),t.Q6J("ngIf",e.impactsResultCount)}}function Pl(n,i){if(1&n&&(t.TgZ(0,"div")(1,"span",1),t._uU(2),t.qZA(),t.YNc(3,Dl,5,5,"div",2),t._UZ(4,"div",3),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.Oqu(e),t.xp6(1),t.Q6J("ngForOf",o.fields2[e])}}let Rl=(()=>{class n{constructor(e){this.config=e,this.fields2={},this.fieldKeys=[],this.ngUnsubscribe=new R.xQ}ngOnInit(){this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{this.fields2={Events:[{name:"Enforce the usage of a Festival of the Lost Mask.",cp:o=>this.config.modifyConfiguration(a=>a.useFotlArmor=o),value:e.useFotlArmor,disabled:!1,impactsResultCount:!0,help:"Only use a FotL masks. You will not get results if you do not own the mask."}],Masterwork:[{name:"Assume all legendary items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeLegendariesMasterworked=o),value:e.assumeLegendariesMasterworked,disabled:!1,impactsResultCount:!1,help:void 0},{name:"Assume all legendary class items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeClassItemMasterworked=o),value:e.assumeClassItemMasterworked,disabled:!1,impactsResultCount:!1,help:"If this setting is enabled, a plain +2 is added to every stat. This means that your Class Item must be masterworked. Ignored if you select an exotic class item."},{name:"Assume all exotic items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeExoticsMasterworked=o),value:e.assumeExoticsMasterworked,disabled:!1,impactsResultCount:!1,help:"If this setting is enabled, the tool will treat non-masterworked exotic armor as if it were masterworked-."},{name:"Only use already masterworked exotic items",cp:o=>this.config.modifyConfiguration(a=>a.onlyUseMasterworkedExotics=o),value:e.onlyUseMasterworkedExotics,disabled:!1,impactsResultCount:!0,help:void 0},{name:"Only use already masterworked legendary items",cp:o=>this.config.modifyConfiguration(a=>a.onlyUseMasterworkedLegendaries=o),value:e.onlyUseMasterworkedLegendaries,disabled:!1,impactsResultCount:!0,help:void 0}],"Artifice Slots":[{name:"Assume every legendary class item is an artifice armor.",cp:o=>this.config.modifyConfiguration(a=>a.assumeClassItemIsArtifice=o),value:e.assumeClassItemIsArtifice||e.assumeEveryLegendaryIsArtifice,disabled:e.assumeEveryLegendaryIsArtifice,impactsResultCount:!0,help:"This is for debugging purposes. No support if you enable this."},{name:"Assume every legendary is an artifice armor.",cp:o=>this.config.modifyConfiguration(a=>a.assumeEveryLegendaryIsArtifice=o),value:e.assumeEveryLegendaryIsArtifice,disabled:!1,impactsResultCount:!0,help:"This is for debugging purposes. No support if you enable this."},{name:"Assume every exotic has an artifice slot.",cp:o=>this.config.modifyConfiguration(a=>a.assumeEveryExoticIsArtifice=o),value:e.assumeEveryExoticIsArtifice,disabled:!1,impactsResultCount:!0,help:"Preparation for the upcoming Artifice Mod Slot for exotics."}],"Performance Optimization":[{name:"Use security features to prevent app crashes (resets on reload).",cp:o=>this.config.modifyConfiguration(a=>a.limitParsedResults=o),value:e.limitParsedResults,disabled:!1,impactsResultCount:!0,help:"Only parse the first 30,000 results. Deactivating this may crash your browser. The results will still be limited to 1,000,000 entries. Note that you will not miss any significant results by leaving this enabled."}],"Extra Columns":[{name:"Show maximum reachable tiers in the Tiers-Column instead of real Tiers.",cp:o=>this.config.modifyConfiguration(a=>a.showPotentialTierColumn=o),value:e.showPotentialTierColumn,disabled:!1,impactsResultCount:!1,help:"Shows an additional column in the table that shows how many tiers this build would have, if all stat mods were used. This is important when builds do not use all 5 stat mods."},{name:"Show the wasted stats in an extra column.",cp:o=>this.config.modifyConfiguration(a=>a.showWastedStatsColumn=o),value:e.showWastedStatsColumn,disabled:!1,impactsResultCount:!1,help:"Shows an additional column in the table that shows how many stats are wasted in a build."}],"Wasted Stats":[{name:"Try to optimize wasted stats (slower)",cp:o=>this.config.modifyConfiguration(a=>a.tryLimitWastedStats=o),value:e.tryLimitWastedStats,disabled:!1,impactsResultCount:!1,help:"The tool will try to add minor stat mods to minimize wasted stats. This only works for combinations that fulfill your desired stat combination with enough mods so at least one mod slot is still open."},{name:"Only show builds with no wasted stats",cp:o=>this.config.modifyConfiguration(a=>a.onlyShowResultsWithNoWastedStats=o),value:g.N.featureFlags.enableZeroWaste&&e.onlyShowResultsWithNoWastedStats,disabled:!g.N.featureFlags.enableZeroWaste,impactsResultCount:!0,help:"Only show builds with zero wasted stats - this means, its highly likely that you won't get any results."}],"Data-Science":[{name:"Add a constant +1 resilience to the results with non-exotic chests (resets on reload).",cp:o=>this.config.modifyConfiguration(a=>a.addConstent1Resilience=o),value:e.addConstent1Resilience,disabled:!1,impactsResultCount:!1,help:"You usually do not want to use this."},{name:"Replace the tier selection with text fields for exact stat values.",cp:o=>this.config.modifyConfiguration(a=>{if(a.allowExactStats=o,!o)for(let s of Object.values(a.minimumStatTiers))s.value=Math.floor(s.value)}),value:e.allowExactStats,disabled:!1,impactsResultCount:!0,help:"This is a beta feature. Usability and quality may vary a lot."}]},this.fieldKeys=Object.keys(this.fields2)})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-advanced-settings"]],decls:1,vars:1,consts:[[4,"ngFor","ngForOf"],[1,"category-header"],["class","adv-settings",4,"ngFor","ngForOf"],[1,"category-spacer"],[1,"adv-settings"],["color","primary",3,"disabled","checked","change"],["inline","","aria-hidden","false","aria-label","Help",3,"matTooltip",4,"ngIf"],["inline","","aria-hidden","false","aria-label","Help","class","report-problem-icon","matTooltip","This setting might impact the amount of results. It may happen that you won't get any results if you change this setting. In this case, simply switch it back to its default state.",4,"ngIf"],["inline","","aria-hidden","false","aria-label","Help",3,"matTooltip"],["tooltip","matTooltip"],["inline","","aria-hidden","false","aria-label","Help","matTooltip","This setting might impact the amount of results. It may happen that you won't get any results if you change this setting. In this case, simply switch it back to its default state.",1,"report-problem-icon"]],template:function(e,o){1&e&&t.YNc(0,Pl,5,2,"div",0),2&e&&t.Q6J("ngForOf",o.fieldKeys)},dependencies:[Z.sg,Z.O5,ne.Rr,pt.gM,St.Hw],styles:[".category-spacer[_ngcontent-%COMP%]{height:3px}.category-header[_ngcontent-%COMP%]{font-style:italic}.adv-settings[_ngcontent-%COMP%]{margin-left:20px}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}"]}),n})(),ce=(()=>{class n{constructor(e,o){this.dialogRef=e,this.data=o}onNoClick(){this.dialogRef.close()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Et.so),t.Y36(Et.WI))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-confirm-dialog"]],decls:10,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions",""],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"mat-dialog-close"]],template:function(e,o){1&e&&(t.TgZ(0,"h1",0),t._uU(1,"Confirm"),t.qZA(),t.TgZ(2,"div",1)(3,"p"),t._uU(4),t.qZA()(),t.TgZ(5,"div",2)(6,"button",3),t.NdJ("click",function(){return o.onNoClick()}),t._uU(7,"No Thanks"),t.qZA(),t.TgZ(8,"button",4),t._uU(9,"Ok"),t.qZA()()),2&e&&(t.xp6(4),t.Oqu(o.data.description),t.xp6(4),t.Q6J("mat-dialog-close",!0))},dependencies:[rt.lW,Et.ZT,Et.uh,Et.xY,Et.H8]}),n})();var Nl=_(4385);function ql(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Fl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Jl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function Ll(n,i){if(1&n&&(t.TgZ(0,"mat-option",30)(1,"span"),t._uU(2,"("),t.YNc(3,ql,2,0,"span",26),t.YNc(4,Fl,2,0,"span",26),t.YNc(5,Jl,2,0,"span",26),t._uU(6,") "),t.qZA(),t.TgZ(7,"span"),t._uU(8),t.qZA()()),2&n){const e=i.$implicit;t.Q6J("value",e.name),t.xp6(3),t.Q6J("ngIf",0===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",1===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",2===e.configuration.characterClass),t.xp6(3),t.hij(" ",e.name,"")}}function Yl(n,i){1&n&&(t.TgZ(0,"th",31),t._uU(1,"Name"),t.qZA())}function Bl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij("",e.name," ")}}function Vl(n,i){1&n&&(t.TgZ(0,"th",31),t._uU(1," Class "),t.qZA())}function Ql(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Hl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Wl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function jl(n,i){if(1&n&&(t.TgZ(0,"td",32),t.YNc(1,Ql,2,0,"span",26),t.YNc(2,Hl,2,0,"span",26),t.YNc(3,Wl,2,0,"span",26),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",0===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",1===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",2===e.configuration.characterClass)}}function Gl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",0))}function zl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[0].value," ")}}function Kl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",1))}function $l(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[1].value," ")}}function Xl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",2))}function tc(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[2].value," ")}}function ec(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",3))}function nc(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[3].value," ")}}function oc(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",4))}function ic(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[4].value," ")}}function ac(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",5))}function sc(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[5].value," ")}}function rc(n,i){1&n&&t._UZ(0,"th",31)}function lc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"td",32)(1,"button",34),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.delete(s.name))}),t.TgZ(2,"mat-icon"),t._uU(3,"delete_forever"),t.qZA()(),t.TgZ(4,"button",35),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.load(s.name))}),t.TgZ(5,"mat-icon"),t._uU(6,"check_circle_outline"),t.qZA()(),t.TgZ(7,"button",36),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.copySingleSettingToClipboard(s))}),t.TgZ(8,"mat-icon"),t._uU(9,"get_app"),t.qZA()()()}}function cc(n,i){1&n&&t._UZ(0,"tr",37)}function mc(n,i){1&n&&t._UZ(0,"tr",38)}function dc(n,i){if(1&n){const e=t.EpF();t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"button",39),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.copyAllSettingsToClipboard())}),t._uU(3," Copy all saved configurations to the clipboard "),t.qZA(),t.BQk()}}let uc=(()=>{class n{constructor(e,o,a,s,r){this.config=e,this.formBuilder=o,this.dialog=a,this._snackBar=s,this.clipboard=r,this.selectedEntry="",this.storedConfigs=[],this.displayedColumns=["name","class","mobility","resilience","recovery","discipline","intellect","strength","delete"],this.ngUnsubscribe=new R.xQ,this.settingsNameForm=this.formBuilder.group({name:[null]}),this.importTextForm=this.formBuilder.group({content:[null]})}ngOnInit(){this.config.storedConfigurations.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>this.storedConfigs=e)}submit(){const e=this.settingsNameForm.get("name")?.value;!e||(this.config.doesSavedConfigurationExist(e)?this.dialog.open(ce,{width:"300px",data:{description:"Do you want to overwrite this configuration?"}}).afterClosed().subscribe(a=>{a&&(this.config.saveCurrentConfigurationToName(e),this.settingsNameForm.reset(),this.selectedEntry=e)}):(this.config.saveCurrentConfigurationToName(e),this.settingsNameForm.reset(),this.selectedEntry=e))}delete(e){this.dialog.open(ce,{width:"300px",data:{description:"Do you want to delete this configuration?"}}).afterClosed().subscribe(a=>{a&&this.config.deleteStoredConfiguration(e)})}clearEverything(){this.dialog.open(ce,{width:"300px",data:{description:"Do you want to clear all settings?"}}).afterClosed().subscribe(o=>{o&&this.config.resetCurrentConfiguration()})}load(e){this.dialog.open(ce,{width:"300px",data:{description:"Do you want to load this preset?"}}).afterClosed().subscribe(a=>{a&&this.config.loadSavedConfiguration(e)})}runImport(){const e=this.importTextForm.get("content")?.value;if(!e)return this.openSnackBar("Invalid input.");try{const o=E.decompress(e,{inputEncoding:"Base64"}),a="["==o.substr(0,1);let s=JSON.parse(o);a||(s=[s]),console.log("Incoming json:",s);for(let r of s)this.config.checkAndFixOldSavedConfigurations(r),r.hasOwnProperty("name")?a?this.config.saveConfiguration(r.name,r.configuration):this.config.saveCurrentConfiguration(r.configuration):this.config.saveCurrentConfiguration(r);this.openSnackBar("Successfully loaded this configuration"),this.importTextForm.get("content")?.reset()}catch(o){this.openSnackBar("Invalid input."),console.error(o)}}copySingleSettingToClipboard(e){this.clipboard.copy(this.config.getStoredConfigurationBase64Compressed(e.name)),this.openSnackBar("Copied the configuration to your clipboard. You can share it with your friends.")}copyAllSettingsToClipboard(){this.clipboard.copy(this.config.getAllStoredConfigurationsBase64Compressed()),this.openSnackBar("Exported all configurations to the clipboard. You can then save and share them.")}openSnackBar(e){this._snackBar.open(e,"",{duration:2500,politeness:"polite"})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(wt.QS),t.Y36(Et.uw),t.Y36(pe.ux),t.Y36(ee.TU))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-load-and-save-settings"]],decls:78,vars:13,consts:[[3,"formGroup","submit"],["id","settings"],["appearance","outline"],["formControlName","name","matInput","","maxlength","30","minlength","4","placeholder","Awesome Discipline Build 4"],["color","primary","mat-raised-button","","type","submit",3,"disabled"],["color","warn","mat-raised-button","","matTooltip","Clears the ENTIRE configuration and uses the default settings. Use with caution.",3,"click"],["color","primary","mat-raised-button","","matTooltip","Copy your current configuration into your clipboard. You will be able to share it with others and import it later.",3,"cdkCopyToClipboard","click"],[2,"display","none"],[3,"value","disabled","valueChange"],[3,"value",4,"ngFor","ngForOf"],["color","primary","mat-raised-button","","matTooltip","Load the currently selected configuration.",3,"disabled","click"],["color","warn","mat-stroked-button","","matTooltip","Delete the currently selected configuration. Can not be undone.",3,"disabled","click"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","class"],["matColumnDef","mobility"],["matColumnDef","resilience"],["matColumnDef","recovery"],["matColumnDef","discipline"],["matColumnDef","intellect"],["matColumnDef","strength"],["matColumnDef","delete"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[4,"ngIf"],[3,"formGroup"],["formControlName","content","matInput",""],["color","primary","mat-raised-button","","matTooltip","Import the given configuration",3,"click"],[3,"value"],["mat-header-cell",""],["mat-cell",""],[3,"stat"],["color","warn","mat-icon-button","","matTooltip","Delete this configuration permanently.",3,"click"],["color","primary","mat-icon-button","","matTooltip","Load this configuration. Your current settings will be overwritten.",3,"click"],["color","primary","mat-icon-button","","matTooltip","Copy this configuration into your clipboard. You will be able to share it with others and import it later.",3,"click"],["mat-header-row",""],["mat-row",""],["color","primary","mat-raised-button","","matTooltip","Export all configurations to the clipboard. You can then save and share them.",3,"click"]],template:function(e,o){if(1&e&&(t.TgZ(0,"form",0),t.NdJ("submit",function(){return o.submit()}),t.TgZ(1,"table",1)(2,"tr")(3,"td")(4,"mat-form-field",2)(5,"mat-label"),t._uU(6,"Name to save the configuration"),t.qZA(),t._UZ(7,"input",3),t.qZA()(),t.TgZ(8,"td")(9,"button",4),t._uU(10," Save current "),t.qZA()(),t.TgZ(11,"td")(12,"button",5),t.NdJ("click",function(){return o.clearEverything()}),t._uU(13,"Clear everything "),t.qZA()(),t.TgZ(14,"td")(15,"button",6),t.NdJ("click",function(){return o.openSnackBar("Copied the configuration to your clipboard. You can share it with your friends.")}),t._uU(16," Copy Current "),t.qZA()()(),t.TgZ(17,"tr",7)(18,"td")(19,"mat-form-field",2)(20,"mat-label"),t._uU(21,"Load saved configuration"),t.qZA(),t.TgZ(22,"mat-select",8),t.NdJ("valueChange",function(s){return o.selectedEntry=s}),t.YNc(23,Ll,9,5,"mat-option",9),t.qZA()()(),t.TgZ(24,"td")(25,"button",10),t.NdJ("click",function(){return o.load(o.selectedEntry)}),t._uU(26,"Load "),t.qZA()(),t.TgZ(27,"td")(28,"button",11),t.NdJ("click",function(){return o.delete(o.selectedEntry)}),t._uU(29,"Delete "),t.qZA()()()()(),t._UZ(30,"br"),t.TgZ(31,"table",12),t.ynx(32,13),t.YNc(33,Yl,2,0,"th",14),t.YNc(34,Bl,2,1,"td",15),t.BQk(),t.ynx(35,16),t.YNc(36,Vl,2,0,"th",14),t.YNc(37,jl,4,3,"td",15),t.BQk(),t.ynx(38,17),t.YNc(39,Gl,2,1,"th",14),t.YNc(40,zl,2,1,"td",15),t.BQk(),t.ynx(41,18),t.YNc(42,Kl,2,1,"th",14),t.YNc(43,$l,2,1,"td",15),t.BQk(),t.ynx(44,19),t.YNc(45,Xl,2,1,"th",14),t.YNc(46,tc,2,1,"td",15),t.BQk(),t.ynx(47,20),t.YNc(48,ec,2,1,"th",14),t.YNc(49,nc,2,1,"td",15),t.BQk(),t.ynx(50,21),t.YNc(51,oc,2,1,"th",14),t.YNc(52,ic,2,1,"td",15),t.BQk(),t.ynx(53,22),t.YNc(54,ac,2,1,"th",14),t.YNc(55,sc,2,1,"td",15),t.BQk(),t.ynx(56,23),t.YNc(57,rc,1,0,"th",14),t.YNc(58,lc,10,0,"td",15),t.BQk(),t.YNc(59,cc,1,0,"tr",24),t.YNc(60,mc,1,0,"tr",25),t.qZA(),t.YNc(61,dc,4,0,"ng-container",26),t._UZ(62,"br"),t.TgZ(63,"div"),t._UZ(64,"hr"),t.TgZ(65,"h2"),t._uU(66,"Import a previously exported configuration"),t.qZA(),t.TgZ(67,"form",27)(68,"table")(69,"tr")(70,"td")(71,"mat-form-field",2)(72,"mat-label"),t._uU(73,"Copied configuration"),t.qZA(),t._UZ(74,"input",28),t.qZA()(),t.TgZ(75,"td")(76,"button",29),t.NdJ("click",function(){return o.runImport()}),t._uU(77," Start the import "),t.qZA()()()()()()),2&e){let a;t.Q6J("formGroup",o.settingsNameForm),t.xp6(9),t.Q6J("disabled",!(null!=(a=o.settingsNameForm.get("name"))&&a.value)||(null==(a=o.settingsNameForm.get("name"))?null:a.value.length)<4||(null==(a=o.settingsNameForm.get("name"))?null:a.value.length)>30),t.xp6(6),t.Q6J("cdkCopyToClipboard",o.config.getCurrentConfigBase64Compressed()),t.xp6(7),t.Q6J("value",o.selectedEntry)("disabled",0===o.storedConfigs.length),t.xp6(1),t.Q6J("ngForOf",o.storedConfigs),t.xp6(2),t.Q6J("disabled",!o.selectedEntry||0===o.storedConfigs.length),t.xp6(3),t.Q6J("disabled",!o.selectedEntry||0===o.storedConfigs.length),t.xp6(3),t.Q6J("dataSource",o.storedConfigs),t.xp6(28),t.Q6J("matHeaderRowDef",o.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns),t.xp6(1),t.Q6J("ngIf",o.storedConfigs.length>0),t.xp6(6),t.Q6J("formGroup",o.importTextForm)}},dependencies:[Z.sg,Z.O5,wt._Y,wt.Fj,wt.JJ,wt.JL,wt.wO,wt.nD,wt.sg,wt.u,rt.lW,Nt.KE,Nt.hX,Nl.gD,Ze.ey,oe.Nt,W.BZ,W.fO,W.as,W.w1,W.Dz,W.nj,W.ge,W.ev,W.XQ,W.Gk,pt.gM,St.Hw,ee.i3,he],styles:[".modTable[_ngcontent-%COMP%]{width:100%}.mat-header-row[_ngcontent-%COMP%], .mat-row[_ngcontent-%COMP%]{height:30px}.mat-column-class[_ngcontent-%COMP%]{min-width:55px;padding-right:2px;padding-left:2px;text-align:center;border-right:1px solid currentColor}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-resilience[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-discipline[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%], .mat-column-strength[_ngcontent-%COMP%]{min-width:40px;text-align:center}.mat-row[_ngcontent-%COMP%]:hover{background-color:#494949}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%]{background-color:#464646}.mat-column-name[_ngcontent-%COMP%]{padding-right:4px;border-right:1px solid currentColor;min-width:150px}th.mat-header-cell[_ngcontent-%COMP%]:last-of-type, td.mat-cell[_ngcontent-%COMP%]:last-of-type, td.mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.mat-cell[_ngcontent-%COMP%]:last-of-type, .mat-header-cell[_ngcontent-%COMP%]:last-of-type, .mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.stat-negative[_ngcontent-%COMP%], .stat-positive[_ngcontent-%COMP%]{margin-right:3px}.stat-negative[_ngcontent-%COMP%]{color:#f08080}.stat-positive[_ngcontent-%COMP%]{color:#6495ed}.stat-display[_ngcontent-%COMP%]{width:60px;float:left;align-content:end;text-align:right}.mat-row[_ngcontent-%COMP%]:hover, .mat-row[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#494949}.mat-row.selected[_ngcontent-%COMP%]:hover, .mat-row.selected[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#89b2ff30}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-mobility[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-recovery[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-intellect[_ngcontent-%COMP%]{background-color:#89b2ff1c}.mat-column-load[_ngcontent-%COMP%], .mat-column-delete[_ngcontent-%COMP%]{padding-left:3px;padding-right:3px}[_nghost-%COMP%] .mat-form-field-wrapper{margin:0!important;padding:0}"]}),n})();function pc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Helmets"),t.qZA())}function gc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Gauntlets"),t.qZA())}function _c(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Chest Pieces"),t.qZA())}function fc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Legs"),t.qZA())}function hc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Class Items"),t.qZA())}function xc(n,i){1&n&&t._UZ(0,"br")}function yc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",5)(1,"img",6),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(3);return t.KtG(r.enableItem(s.itemInstanceId))}),t.qZA(),t.YNc(2,xc,1,0,"br",3),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw(3);t.xp6(1),t.MGl("src","https://bungie.net/",e.icon,"",t.LSH),t.Q6J("matTooltip",a.generateTooltip(e)),t.xp6(1),t.Q6J("ngIf",(o+1)%10==0)}}function Cc(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,pc,2,0,"div",3),t.YNc(2,gc,2,0,"div",3),t.YNc(3,_c,2,0,"div",3),t.YNc(4,fc,2,0,"div",3),t.YNc(5,hc,2,0,"div",3),t.YNc(6,yc,3,3,"span",4),t.qZA()),2&n){const e=i.$implicit,o=i.index;t.xp6(1),t.Q6J("ngIf",1===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",2===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",3===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",4===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",5===o&&e.length>0),t.xp6(1),t.Q6J("ngForOf",e)}}function Tc(n,i){if(1&n&&(t.TgZ(0,"div",1),t.YNc(1,Cc,7,6,"div",2),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.disabledItems)}}let vc=(()=>{class n{constructor(e,o){this.config=e,this.db=o,this.disabledItems=[],this.characterClass=null,this.ngUnsubscribe=new R.xQ}enableItem(e){this.config.modifyConfiguration(o=>{o.disabledItems.splice(o.disabledItems.indexOf(e),1)})}generateTooltip(e){return"Click this icon to activate this item again.\r\n"+e.name+" "+(e.mobility+(e.masterworked?2:0))+"/"+(e.resilience+(e.masterworked?2:0))+"/"+(e.recovery+(e.masterworked?2:0))+"/"+(e.discipline+(e.masterworked?2:0))+"/"+(e.intellect+(e.masterworked?2:0))+"/"+(e.strength+(e.masterworked?2:0))}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){e.characterClass=null;const s=[[],[],[],[],[],[]];let r=[];for(let m of a.disabledItems){let p=yield e.db.inventoryArmor.where("itemInstanceId").equals(m).first();p&&r.push(p)}for(let m of r)s[m.slot].push(m);e.characterClass=a.characterClass;for(let m of s)m.sort((p,C)=>p.hash-C.hash);e.disabledItems=s});return function(a){return o.apply(this,arguments)}}())}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(I))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-ignored-items-list"]],decls:1,vars:1,consts:[["class","item-icon-container",4,"ngIf"],[1,"item-icon-container"],[4,"ngFor","ngForOf"],[4,"ngIf"],["class","item-sub",4,"ngFor","ngForOf"],[1,"item-sub"],["matTooltipClass","allow-cr",1,"item-icon",3,"src","matTooltip","click"]],template:function(e,o){1&e&&t.YNc(0,Tc,2,1,"div",0),2&e&&t.Q6J("ngIf",null!==o.characterClass)},dependencies:[Z.sg,Z.O5,pt.gM],styles:[".item-icon[_ngcontent-%COMP%]{width:40px}.item-icon[_ngcontent-%COMP%]:hover{filter:brightness(.8) hue-rotate(350deg) saturate(3) blur(2px) contrast(.6);cursor:not-allowed}.item-sub[_ngcontent-%COMP%]{margin-right:3px}.item-icon-container[_ngcontent-%COMP%]{position:relative;contain:layout paint style;box-sizing:border-box;width:var(--item-size);transition:opacity .2s,transform .2s}"]}),n})(),bc=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-settings"]],decls:71,vars:0,consts:[["id","card-config"],["id","content-char-selection"],["inline","","aria-hidden","false","aria-label","Help","matTooltip","Cooldowns and Stats provided by Clarity."],["tooltip","matTooltip"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"mat-card")(2,"mat-card-title"),t._uU(3,"Character Selection"),t.qZA(),t.TgZ(4,"mat-card-content",1),t._UZ(5,"app-desired-class-selection"),t.qZA()(),t.TgZ(6,"mat-card")(7,"mat-card-title"),t._uU(8,"Select the stats you want to achieve"),t.qZA(),t.TgZ(9,"mat-card-subtitle"),t._uU(10,"The heart of this tool. Select the stats you want! "),t.TgZ(11,"mat-icon",2,3),t._uU(13," info "),t.qZA()(),t.TgZ(14,"mat-card-content"),t._UZ(15,"app-desired-stat-selection"),t.qZA()(),t.TgZ(16,"mat-card")(17,"mat-card-title"),t._uU(18,"Armor Selection"),t.qZA(),t.TgZ(19,"mat-card-subtitle"),t._uU(20," This section allows you to limit the armor pieces that are used in the buildcrafting process."),t._UZ(21,"br"),t._uU(22," If you want, limit all results to one exotic. "),t._UZ(23,"br"),t._uU(24," Exotics you do not have in the inventory or vault are grayed out. "),t.qZA(),t.TgZ(25,"mat-card-content"),t._UZ(26,"app-desired-exotic-selection"),t.qZA()(),t.TgZ(27,"mat-card")(28,"mat-card-title"),t._uU(29,"Armor limitation"),t.qZA(),t.TgZ(30,"mat-card-subtitle"),t._uU(31," This section allows you to further specify what kind of armor and mods you want. "),t.qZA(),t.TgZ(32,"mat-card-content"),t._UZ(33,"app-desired-mod-selection"),t.qZA()(),t.TgZ(34,"mat-card")(35,"mat-card-title"),t._uU(36,"Stat-Boost Selection"),t.qZA(),t.TgZ(37,"mat-card-subtitle"),t._uU(38,"Select Mods and Skills that affect your overall stats."),t._UZ(39,"br"),t._uU(40," Please note that D2AP also allows theoretical, but impossible input."),t._UZ(41,"br"),t.TgZ(42,"b"),t._uU(43,"Only fragments that affect stats are shown."),t.qZA()(),t.TgZ(44,"mat-card-content"),t._UZ(45,"app-desired-mods-selection"),t.qZA()(),t.TgZ(46,"mat-card")(47,"mat-card-title"),t._uU(48,"Advanced Settings"),t.qZA(),t.TgZ(49,"mat-card-subtitle"),t._uU(50,"More settings! Use them to fine-tune your buildcrafting process."),t.qZA(),t.TgZ(51,"mat-card-content"),t._UZ(52,"app-advanced-settings"),t.qZA()(),t.TgZ(53,"mat-card")(54,"mat-card-title"),t._uU(55,"Disabled Armor Pieces"),t.qZA(),t.TgZ(56,"mat-card-subtitle"),t._uU(57," These armor pieces are disabled. Click them to enable them again."),t._UZ(58,"br"),t._uU(59," They won't show up in any results."),t._UZ(60,"br"),t._uU(61," You can disable items in the detailed result overview. "),t.qZA(),t.TgZ(62,"mat-card-content"),t._UZ(63,"app-ignored-items-list"),t.qZA()(),t.TgZ(64,"mat-card")(65,"mat-card-title"),t._uU(66,"Configuration Management"),t.qZA(),t.TgZ(67,"mat-card-subtitle"),t._uU(68,"Save and load your buildcrafting settings for another day!"),t.qZA(),t.TgZ(69,"mat-card-content"),t._UZ(70,"app-load-and-save-settings"),t.qZA()()())},dependencies:[Y.a8,Y.dn,Y.n5,Y.$j,pt.gM,St.Hw,Vs,ur,Er,Lr,kl,Rl,uc,vc],styles:["#card-config[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;display:inline-block;vertical-align:top;white-space:normal;margin-bottom:20px;margin-left:3px;margin-right:3px}#card-config[_ngcontent-%COMP%] > mat-card[_ngcontent-%COMP%]{margin-bottom:4px}#content-char-selection[_ngcontent-%COMP%]{margin-bottom:0}"]}),n})(),Ac=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-picker-page"]],decls:3,vars:0,consts:[["id","container"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"app-settings")(2,"app-results"),t.qZA())},dependencies:[bc,we],styles:["#container[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;margin-right:3px;white-space:nowrap}"]}),n})();const ke=function(){return["","Mobility","Resilience","Recovery","Discipline","Intellect","Strength"]};function wc(n,i){if(1&n&&(t.TgZ(0,"tr",27)(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td",22)(4,"div",28),t._UZ(5,"div",29),t.TgZ(6,"span",30),t._uU(7),t.ALo(8,"number"),t.qZA()()()()),2&n){const e=t.oxw().index,o=t.oxw(2).index,a=t.oxw();t.Q6J("matTooltip",t.DdM(9,ke)[e]),t.xp6(2),t.hij(" ",t.DdM(10,ke)[e]," "),t.xp6(3),t.Jzz("width:",a.clusterInformation[o].mean[e]/32*100,"%"),t.xp6(2),t.hij(" ",t.xi3(8,6,a.clusterInformation[o].mean[e],"1.0-0")," ")}}function Ic(n,i){if(1&n&&(t.ynx(0),t.YNc(1,wc,9,11,"tr",26),t.BQk()),2&n){const e=i.index;t.xp6(1),t.Q6J("ngIf",e>0)}}function Zc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-card",21)(1,"mat-card-title"),t._uU(2),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t._uU(4),t.qZA(),t.TgZ(5,"mat-card-content")(6,"div")(7,"table",22),t.YNc(8,Ic,2,1,"ng-container",18),t.qZA()(),t.TgZ(9,"mat-form-field",23)(10,"mat-label"),t._uU(11,"DIM Search Query"),t.qZA(),t._UZ(12,"input",24),t.qZA(),t.TgZ(13,"button",25),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.openSnackBar("Copied the DIM search query to your clipboard."))}),t._uU(14," Copy DIM query to clipboard "),t.qZA()()()}if(2&n){const e=t.oxw(),o=e.index,a=e.$implicit,s=t.oxw();t.xp6(2),t.hij(" Cluster ",o+1," "),t.xp6(2),t.AsE(" Contains ",a.length," item",a.length>1?"s":""," "),t.xp6(4),t.Q6J("ngForOf",s.clusterInformation[o].mean),t.xp6(4),t.Q6J("value",s.getDIMStringForCluster(a)),t.xp6(1),t.Q6J("cdkCopyToClipboard",s.getDIMStringForCluster(a))}}function Sc(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Zc,15,6,"mat-card",20),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",e.length>0)}}var Ee=[{id:0,size:214,centroids:[5.242990654205609,3.4392523364485994,23.074766355140188,4.52336448598131,17.99532710280374,8.074766355140188],std:[3.262185500658884,3.137958193527344,2.0745611905196912,3.223158380401712,2.6478649185881147,3.356022774004607,3.3823650213485315],mean:[62.350467289719624,5.242990654205608,3.439252336448598,23.074766355140188,4.5233644859813085,17.99532710280374,8.074766355140186]},{id:1,size:264,centroids:[13.613636363636365,3.060606060606063,14.431818181818182,6.731060606060606,12.575757575757574,10.575757575757576],std:[4.915624932359143,2.735897756946947,1.897597343200423,3.036390647550984,3.2253188618447473,3.0097969617389406,3.1372197425220545],mean:[60.98863636363637,13.613636363636363,3.0606060606060606,14.431818181818182,6.731060606060606,12.575757575757576,10.575757575757576]},{id:2,size:220,centroids:[5.209090909090909,15.586363636363636,10.936363636363636,13.281818181818181,13.604545454545452,3.8818181818181836],std:[3.3631090204013643,2.931782865076046,2.9200605883727038,3.289049973803757,2.6349662061268395,2.6591750828428204,2.395703224398619],mean:[62.5,5.209090909090909,15.586363636363636,10.936363636363636,13.281818181818181,13.604545454545455,3.881818181818182]},{id:3,size:230,centroids:[8.6,15.330434782608698,6.943478260869563,6.408695652173913,5.578260869565216,18.26086956521739],std:[4.27370926113142,3.855014315301441,3.2487061290912984,3.5081098914433078,3.559587955581114,3.1761194803539676,3.596667444705349],mean:[61.12173913043478,8.6,15.330434782608696,6.943478260869565,6.408695652173913,5.578260869565217,18.26086956521739]},{id:4,size:261,centroids:[11.74712643678161,5.655172413793104,13.873563218390803,11.022988505747126,16.57088122605364,3.0038314176245224],std:[3.5878146263573103,2.8197860971981994,2.9890605143791737,2.9825309245974925,2.7497287061744258,2.8324620286123516,1.8428616632651005],mean:[61.87356321839081,11.74712643678161,5.655172413793103,13.873563218390805,11.022988505747126,16.57088122605364,3.003831417624521]},{id:5,size:249,centroids:[6.598393574297189,7.2289156626506035,7.674698795180722,6.831325301204822,5.995983935742974,7.425702811244981],std:[12.188382924990831,3.7780346472852226,3.7855581933977014,3.9659084518463055,3.2508780840166134,2.4288222155150856,3.23718036285365],mean:[41.75502008032129,6.598393574297189,7.228915662650603,7.674698795180723,6.831325301204819,5.995983935742972,7.42570281124498]},{id:6,size:241,centroids:[4.580912863070541,10.62655601659751,15.72199170124481,20.186721991701248,5.7634854771784205,4.8672199170124495],std:[4.0360666526825675,2.5776864620318327,2.726712032141287,2.7236414380869185,3.4135743182998106,3.164594939982558,2.8952195061747896],mean:[61.74688796680498,4.580912863070539,10.62655601659751,15.721991701244812,20.186721991701244,5.763485477178423,4.867219917012448]},{id:7,size:352,centroids:[4.96875,10.849431818181818,15.676136363636362,5.085227272727275,13.079545454545453,12.113636363636365],std:[3.864447558701623,2.876694966732471,2.825917840642513,2.8500410080793133,2.604753041986593,2.753797030174534,3.084495990290069],mean:[61.77272727272727,4.96875,10.849431818181818,15.676136363636363,5.0852272727272725,13.079545454545455,12.113636363636363]},{id:8,size:219,centroids:[21.401826484018265,4.529680365296804,4.954337899543379,14.022831050228312,7.168949771689496,6.8036529680365305],std:[7.654498360234386,3.856746305047457,3.0774088630224354,3.486239910130717,4.509361233853425,3.691515724130434,3.433882092856456],mean:[58.881278538812786,21.401826484018265,4.529680365296803,4.954337899543379,14.02283105022831,7.168949771689498,6.80365296803653]},{id:9,size:183,centroids:[4.448087431693989,22.114754098360656,4.868852459016392,7.459016393442623,11.240437158469945,9.765027322404372],std:[7.900837110469869,3.265921971202623,3.896032191192026,3.424902708986657,3.3556927380910535,3.7206143627650876,3.9564220813839577],mean:[59.89617486338798,4.448087431693989,22.114754098360656,4.868852459016393,7.459016393442623,11.240437158469945,9.765027322404372]},{id:10,size:197,centroids:[13.563451776649746,10.761421319796954,6.527918781725887,20.654822335025383,4.934010152284262,5.18274111675127],std:[4.239153654030002,3.3077343290831713,2.8924486501981233,2.9338771160608355,3.5098461495889413,3.192898794854312,2.920215710334156],mean:[61.6243654822335,13.563451776649746,10.761421319796954,6.527918781725888,20.65482233502538,4.934010152284264,5.182741116751269]},{id:11,size:176,centroids:[8.255681818181818,16.181818181818183,7.11931818181818,4.619318181818182,21.0625,5.505681818181819],std:[3.349621998445128,3.4620343467651815,3.3296776490755446,2.945693532873097,2.7583580190103967,3.126214049887545,3.078027492852078],mean:[62.74431818181818,8.255681818181818,16.181818181818183,7.119318181818182,4.619318181818182,21.0625,5.505681818181818]},{id:12,size:194,centroids:[3.5670103092783503,14.773195876288659,13.036082474226804,13.185567010309278,4.979381443298967,12.144329896907218],std:[3.89886364980042,2.255251632823776,2.5893570716174388,3.248552824613239,3.1004926799108317,2.8845824993776903,2.8864151735009584],mean:[61.68556701030928,3.5670103092783507,14.77319587628866,13.036082474226804,13.185567010309278,4.979381443298969,12.144329896907216]},{id:13,size:302,centroids:[5.311258278145695,4.4701986754966905,21.897350993377486,10.688741721854305,6.834437086092715,12.605960264900663],std:[5.1142628152416245,2.9920946350614983,2.6882491851253567,3.071581172564087,2.99431450280505,3.116626644660552,2.58548804104293],mean:[61.80794701986755,5.311258278145695,4.470198675496689,21.897350993377483,10.688741721854305,6.8344370860927155,12.605960264900663]},{id:14,size:364,centroids:[12.263736263736265,11.32967032967033,5.936813186813188,8.524725274725274,12.07142857142857,7.782967032967034],std:[6.666392881793753,2.8942239993391565,2.947866371540881,3.041289192757803,3.0876888182534996,2.4540644069260296,2.6803305558675676],mean:[57.90934065934066,12.263736263736265,11.32967032967033,5.936813186813187,8.524725274725276,12.071428571428571,7.782967032967033]},{id:15,size:219,centroids:[6.981735159817351,5.9908675799086755,18.127853881278536,4.97716894977169,5.182648401826483,20.89041095890411],std:[4.3335830659244685,3.5503759593138464,3.5270785628911785,4.123339305032141,2.7998081886699646,3.283747903424203,2.8311584355558064],mean:[62.15068493150685,6.981735159817352,5.9908675799086755,18.12785388127854,4.9771689497716896,5.1826484018264845,20.89041095890411]},{id:16,size:147,centroids:[6.285714285714285,20.836734693877553,4.8639455782312915,17.510204081632654,5.897959183673469,7.394557823129253],std:[3.358145469360083,3.4877476344546254,3.2245649941865486,3.0557367019327,4.0937094190209065,3.1136788219952605,3.842013283457479],mean:[62.7891156462585,6.285714285714286,20.836734693877553,4.863945578231292,17.510204081632654,5.8979591836734695,7.394557823129252]},{id:17,size:202,centroids:[18.425742574257423,6.871287128712871,6.678217821782177,5.06930693069307,20.40594059405941,5.876237623762377],std:[3.0226636827682554,3.292828132097339,3.518715749263091,3.4627255810748356,3.075363266145594,3.5804283293104753,3.315804113390658],mean:[63.32673267326733,18.425742574257427,6.871287128712871,6.678217821782178,5.069306930693069,20.405940594059405,5.876237623762377]},{id:18,size:286,centroids:[11.22027972027972,7.073426573426573,12.65034965034965,12.594405594405593,4.209790209790211,13.220279720279722],std:[4.720510224882134,2.8685361372318168,2.6005789112305338,3.052197922484291,2.451602446915686,2.7244266014541174,2.7638787756329526],mean:[60.96853146853147,11.22027972027972,7.073426573426573,12.65034965034965,12.594405594405595,4.20979020979021,13.22027972027972]},{id:19,size:197,centroids:[6.263959390862944,8.568527918781726,16.80710659898477,4.000000000000003,22.593908629441625,4.883248730964468],std:[2.7333118141791917,3.3626657547151964,3.4540163497542435,2.646397291854302,2.565469285152567,3.018237668617547,2.8287109641017594],mean:[63.11675126903553,6.2639593908629445,8.568527918781726,16.80710659898477,4,22.593908629441625,4.883248730964467]},{id:20,size:279,centroids:[18.025089605734767,6.150537634408602,6.161290322580646,5.767025089605736,7.999999999999998,15.602150537634408],std:[6.590788110639117,3.6436721401086296,3.165505073725202,3.13700467469825,2.7769973891540207,3.4672154149710614,4.017425492621824],mean:[59.70609318996416,18.025089605734767,6.150537634408602,6.161290322580645,5.767025089605735,8,15.602150537634408]},{id:21,size:78,centroids:[15.96153846153846,16.85897435897436,16.807692307692307,3552713678800501e-30,5329070518200751e-30,-5329070518200751e-30],std:[2.095815090231219,7.438828122504502,7.482836393563639,8.12413063050432,0,0,0],mean:[49.62820512820513,15.961538461538462,16.858974358974358,16.807692307692307,0,0,0]},{id:22,size:137,centroids:[4.525547445255475,3.583941605839417,23.532846715328468,19.948905109489054,4.3576642335766405,6.248175182481752],std:[2.9351806639916567,2.7575572416084317,2.2707939003224227,2.908029186302962,3.3306093063017315,2.6644092885703916,3.4848010785869454],mean:[62.197080291970806,4.525547445255475,3.5839416058394162,23.532846715328468,19.94890510948905,4.357664233576642,6.248175182481752]},{id:23,size:194,centroids:[13.242268041237114,3.5103092783505163,14.675257731958762,19.55154639175258,6.139175257731957,5.092783505154641],std:[3.810494814771566,2.886105181640385,2.0818477512276696,2.6197152448917316,3.409818599464837,3.0311357231629183,2.9733966349516936],mean:[62.21134020618557,13.242268041237113,3.5103092783505154,14.675257731958762,19.551546391752577,6.139175257731959,5.092783505154639]},{id:24,size:239,centroids:[5.569037656903766,5.401673640167365,20.92468619246862,13.09205020920502,13.497907949790793,4.096234309623432],std:[3.8502204432228733,3.071015816571908,3.081143061480697,2.79904271710946,2.169280265760518,2.62802363192924,2.3450167178621983],mean:[62.58158995815899,5.569037656903766,5.401673640167364,20.92468619246862,13.092050209205022,13.497907949790795,4.096234309623431]}];let Mc=(()=>{class n{constructor(e,o,a){this.db=e,this._snackBar=o,this.inventory=a,this.clusterInformation=Ee,this.items=[],this.clusters=[],this.exoticFilter=0,this.masterworkFilter=0,this.classFilter=-1,this.clusterInformation=Ee.sort((s,r)=>r.mean[3]-s.mean[3])}ngAfterViewInit(){var e=this;return(0,x.Z)(function*(){e.inventory.inventory.pipe((0,L.b)(200)).subscribe((0,x.Z)(function*(){yield e.Update(),e.openSnackBar("Clusters were updated.")}))})()}Update(){var e=this;return(0,x.Z)(function*(){var o=(yield e.db.inventoryArmor.toArray()).filter(r=>r.source===w.Inventory),a=[];for(let r=0;r`id:'${o.itemInstanceId}'`).join(" or ")}vectorDistance(e,o){return Math.sqrt(e.reduce((a,s,r)=>a+Math.pow(s-o[r],2),0))}getClusterid(e){var o=Number.MAX_VALUE,a=-1;for(let r=0;r=3?3:0),"")}}const Ue=function(){return["Mobility","Resilience","Recovery","Discipline","Intellect","Strength"]};function Ec(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"tr",16)(2,"td"),t._uU(3),t.qZA(),t.TgZ(4,"td"),t._uU(5),t.ALo(6,"number"),t.qZA(),t.TgZ(7,"td",17)(8,"div",18),t.YNc(9,kc,1,6,"div",19),t.qZA()()(),t.BQk()),2&n){const e=i.$implicit,o=i.index,a=t.oxw().$implicit;t.xp6(1),t.Q6J("matTooltip",t.DdM(7,Ue)[o]),t.xp6(2),t.hij(" ",t.DdM(8,Ue)[o]," "),t.xp6(2),t.Oqu(t.xi3(6,4,a.totalStats[o],"1.0-0")),t.xp6(4),t.Q6J("ngForOf",e)}}function Uc(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td")(2,"a",20),t._UZ(3,"img",15),t.qZA(),t._uU(4),t.qZA(),t.TgZ(5,"td",21),t._uU(6),t.qZA(),t.TgZ(7,"td"),t._uU(8),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw(3);t.xp6(2),t.MGl("href","https://data.destinysets.com/i/InventoryItem:",e,"",t.LSH),t.xp6(2),t.hij(" ",e,""),t.xp6(2),t.Oqu(o.getPlugSum(e)),t.xp6(2),t.Oqu(o.getPlugString(e))}}const Dc=function(n,i,e,o,a,s){return[n,i,e,o,a,s]};function Pc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"mat-card",12)(2,"mat-card-title"),t._uU(3),t.qZA(),t.TgZ(4,"mat-card-content")(5,"table")(6,"tr")(7,"td",13),t._uU(8,"Hash:"),t.qZA(),t.TgZ(9,"td")(10,"a",14),t._UZ(11,"img",15),t.qZA(),t._uU(12),t.qZA()(),t.TgZ(13,"tr")(14,"td",13),t._uU(15,"ItemInstanceId:"),t.qZA(),t.TgZ(16,"td"),t._uU(17),t.qZA()(),t.TgZ(18,"tr")(19,"td",13),t._uU(20,"Sunset?"),t.qZA(),t.TgZ(21,"td"),t._uU(22),t.qZA()(),t.TgZ(23,"tr")(24,"td"),t._uU(25,"Total"),t.qZA(),t.TgZ(26,"td"),t._uU(27),t.qZA()(),t.YNc(28,Ec,10,9,"ng-container",10),t.qZA()(),t.TgZ(29,"mat-card-content"),t._uU(30," Plugs: "),t.TgZ(31,"table")(32,"tr")(33,"td"),t._uU(34,"Plug"),t.qZA(),t.TgZ(35,"td"),t._uU(36,"Total"),t.qZA(),t.TgZ(37,"td"),t._uU(38,"Values"),t.qZA()(),t.YNc(39,Uc,9,4,"tr",10),t.qZA()()(),t.BQk()),2&n){const e=i.$implicit;t.xp6(3),t.hij(" ",e.name," "),t.xp6(7),t.MGl("href","https://data.destinysets.com/i/InventoryItem:",e.hash,"",t.LSH),t.xp6(2),t.hij(" ",e.hash,""),t.xp6(5),t.Oqu(e.itemInstanceId),t.xp6(5),t.Oqu(e.isSunset),t.xp6(5),t.Oqu(e.totalSum),t.xp6(1),t.Q6J("ngForOf",t.HTZ(8,Dc,e.mobility,e.resilience,e.recovery,e.discipline,e.intellect,e.strength)),t.xp6(11),t.Q6J("ngForOf",e.statPlugHashes)}}function Rc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"mat-toolbar"),t._uU(2),t.qZA(),t._UZ(3,"br"),t.TgZ(4,"div",11),t.YNc(5,Pc,40,15,"ng-container",10),t.qZA(),t.BQk()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.hij(" ",o.getCategoryName(e.key)," "),t.xp6(3),t.Q6J("ngForOf",e.value)}}let Nc=(()=>{class n{constructor(e,o){this.inventory=e,this.db=o,this.minMobility=0,this.minResilience=0,this.minRecovery=0,this.minDiscipline=0,this.minIntellect=0,this.minStrength=0,this.anyPlugWithN=0,this.anyPlugBelowN=17,this.allPlugsWithN=0,this.allPlugsBelowN=17,this.armorName="",this.armorHash="",this.armorId="",this.armorItemsPerSlot=new Map,this.plugData={},this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.inventory.inventory.pipe((0,L.b)(10),(0,yt.R)(this.ngUnsubscribe)).subscribe((0,x.Z)(function*(){e.updateItems()}))}getPlugString(e){var o=this.plugData[e];let a=[0,0,0,0,0,0];for(let s of o.investmentStats)switch(s.statTypeHash){case 2996146975:a[0]+=s.value;break;case 392767087:a[1]+=s.value;break;case 1943323491:a[2]+=s.value;break;case 1735777505:a[3]+=s.value;break;case 144602215:a[4]+=s.value;break;case 4244567218:a[5]+=s.value}return"["+a.join(" ")+"]"}updateItems(){var e=this;return(0,x.Z)(function*(){const a=(yield e.db.manifestArmor.toArray()).filter(m=>19==m.itemType);let s=Object.fromEntries(a.map(m=>[m.hash,m]));e.plugData=s;let r=(yield e.db.inventoryArmor.toArray()).filter(m=>m.source===w.Inventory).sort((m,p)=>(""+m.name).localeCompare(p.name)).map(m=>{var p={name:m.name,hash:m.hash,isSunset:m.isSunset,itemInstanceId:m.itemInstanceId,statPlugHashes:m.statPlugHashes,mobility:[],resilience:[],recovery:[],discipline:[],intellect:[],strength:[],totalStats:[0,0,0,0,0,0],totalSum:0,slot:m.slot};if(m.statPlugHashes)for(let d of m.statPlugHashes){var C=s[d];for(let S of C.investmentStats)switch(S.statTypeHash){case 2996146975:p.mobility.push(S.value),p.totalStats[0]+=S.value;break;case 392767087:p.resilience.push(S.value),p.totalStats[1]+=S.value;break;case 1943323491:p.recovery.push(S.value),p.totalStats[2]+=S.value;break;case 1735777505:p.discipline.push(S.value),p.totalStats[3]+=S.value;break;case 144602215:p.intellect.push(S.value),p.totalStats[4]+=S.value;break;case 4244567218:p.strength.push(S.value),p.totalStats[5]+=S.value}}if(m.investmentStats)for(let d of m.investmentStats)switch(d.statTypeHash){case 2996146975:p.mobility.push(d.value),p.totalStats[0]+=d.value;break;case 392767087:p.resilience.push(d.value),p.totalStats[1]+=d.value;break;case 1943323491:p.recovery.push(d.value),p.totalStats[2]+=d.value;break;case 1735777505:p.discipline.push(d.value),p.totalStats[3]+=d.value;break;case 144602215:p.intellect.push(d.value),p.totalStats[4]+=d.value;break;case 4244567218:p.strength.push(d.value),p.totalStats[5]+=d.value}for(let d of p.totalStats)p.totalSum+=d;return p});r=e.filterItems(r),e.armorItemsPerSlot=r.reduce((m,p)=>{const C=p.slot?p.slot:10;return m.has(C)||m.set(C,[]),m.get(C)?.push(p),m},new Map)})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}getCategoryName(e){switch(e){case 1:return"Helmets";case 2:return"Gauntlets";case 3:return"Chest Pieces";case 4:return"Legs";case 5:return"Class Items"}return"Unknown Category"}getPlugSum(e){var o=this.plugData[e],a=0;for(let s of o.investmentStats)switch(s.statTypeHash){case 2996146975:case 392767087:case 1943323491:case 1735777505:case 144602215:case 4244567218:a+=s.value}return a}clear(){this.armorName="",this.armorHash="",this.armorId="",this.minMobility=0,this.minResilience=0,this.minRecovery=0,this.minDiscipline=0,this.minIntellect=0,this.minStrength=0,this.anyPlugWithN=0,this.anyPlugBelowN=17}filterItems(e){return this.armorName&&(e=e.filter(o=>o.name.toLowerCase().indexOf(this.armorName)>-1)),this.armorHash&&(e=e.filter(o=>(o.hash||0).toString().indexOf(this.armorHash)>-1)),this.armorId&&(e=e.filter(o=>(o.itemInstanceId||0).toString().indexOf(this.armorId)>-1)),e=(e=(e=(e=(e=(e=e.filter(o=>o.totalStats[0]>=(this.minMobility||0))).filter(o=>o.totalStats[1]>=(this.minResilience||0))).filter(o=>o.totalStats[2]>=(this.minRecovery||0))).filter(o=>o.totalStats[3]>=(this.minDiscipline||0))).filter(o=>o.totalStats[4]>=(this.minIntellect||0))).filter(o=>o.totalStats[5]>=(this.minStrength||0)),(this.anyPlugWithN??0)>0&&(e=e.filter(o=>(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)>=(this.anyPlugWithN||0)).length>0)),(this.anyPlugBelowN??0)<17&&(e=e.filter(o=>(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)<=(this.anyPlugBelowN||0)).length>0)),(this.allPlugsWithN??0)>0&&(e=e.filter(o=>0==(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)<(this.allPlugsWithN||0)).length)),(this.allPlugsBelowN??0)<17&&(e=e.filter(o=>0==(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)>(this.allPlugsBelowN||0)).length)),e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(At),t.Y36(I))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-investigation-page"]],decls:112,vars:26,consts:[["id","description"],["href","https://www.reddit.com/r/DestinyTheGame/comments/mpaopq/how_armor_stats_roll_an_advanced_insight_into/","target","_blank"],["colspan","3"],["appearance","outline"],["matInput","","placeholder","Stronghold",3,"ngModel","ngModelChange"],["matInput","",3,"ngModel","ngModelChange"],["max","32","min","0","step","1","thumbLabel","","tickInterval","1",3,"value","valueChange"],["max","17","min","0","step","1","thumbLabel","","tickInterval","1",3,"value","valueChange"],["mat-raised-button","","color","primary",3,"click"],["mat-raised-button","","color","warn",3,"click"],[4,"ngFor","ngForOf"],["fxLayout","row","fxLayout.xs","column","fxLayoutGap","10px",1,"armor-container"],[1,"cluster-item"],["colspan","2"],["alt","This armor on data.destinysets.com","target","_blank",3,"href"],["src","https://data.destinysets.com/static/media/logo.556bd7bd.svg",2,"width","15px"],[3,"matTooltip"],["width","100%"],[1,"stat-range"],[3,"class","style",4,"ngFor","ngForOf"],["alt","This plug on data.destinysets.com","target","_blank",3,"href"],[1,"plug-sum-col"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card",0)(1,"mat-card-title"),t._uU(2," Armor Investigation "),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t._uU(4," A visualization tool for data scientists. "),t.qZA(),t.TgZ(5,"mat-card-content"),t._uU(6," This part of the D2ArmorPicker lists all of your armor items. For each armor it shows how it is generated. It shows every used "),t.TgZ(7,"i"),t._uU(8,'"plug"'),t.qZA(),t._uU(9,", as well as the intrinsic stats of exotics. For more information about plugs, see "),t.TgZ(10,"a",1),t._uU(11,"here"),t.qZA(),t._uU(12,". Make sure to give the author an upvote for the hard work! "),t._UZ(13,"br")(14,"br"),t._uU(15," Please note that this feature is mainly targeted for data nerds and people interested in the basic stats of armor. It is just a data visualization. Mobile layout and a search function "),t.TgZ(16,"i"),t._uU(17,"may"),t.qZA(),t._uU(18," happen in the future. "),t.qZA(),t.TgZ(19,"mat-card-title"),t._uU(20," Filters "),t.qZA(),t.TgZ(21,"mat-card-subtitle"),t._uU(22," Some filters. Nothing fancy but it works. Sorry ;) "),t.qZA(),t.TgZ(23,"mat-card-content")(24,"table")(25,"tr")(26,"td",2)(27,"mat-form-field",3)(28,"mat-label"),t._uU(29,"Item Name"),t.qZA(),t.TgZ(30,"input",4),t.NdJ("ngModelChange",function(s){return o.armorName=s}),t.qZA()()(),t.TgZ(31,"td",2)(32,"mat-form-field",3)(33,"mat-label"),t._uU(34,"Item Hash"),t.qZA(),t.TgZ(35,"input",5),t.NdJ("ngModelChange",function(s){return o.armorHash=s}),t.qZA()()(),t.TgZ(36,"td",2)(37,"mat-form-field",3)(38,"mat-label"),t._uU(39,"Item ID"),t.qZA(),t.TgZ(40,"input",5),t.NdJ("ngModelChange",function(s){return o.armorId=s}),t.qZA()()()(),t.TgZ(41,"tr")(42,"td"),t._uU(43," Mobility: "),t.qZA(),t.TgZ(44,"td"),t._uU(45),t.qZA(),t.TgZ(46,"td")(47,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minMobility=s}),t.qZA()(),t.TgZ(48,"td"),t._uU(49," Resilience: "),t.qZA(),t.TgZ(50,"td"),t._uU(51),t.qZA(),t.TgZ(52,"td")(53,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minResilience=s}),t.qZA()(),t.TgZ(54,"td"),t._uU(55," Recovery: "),t.qZA(),t.TgZ(56,"td"),t._uU(57),t.qZA(),t.TgZ(58,"td")(59,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minRecovery=s}),t.qZA()()(),t.TgZ(60,"tr")(61,"td"),t._uU(62," Discipline: "),t.qZA(),t.TgZ(63,"td"),t._uU(64),t.qZA(),t.TgZ(65,"td")(66,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minDiscipline=s}),t.qZA()(),t.TgZ(67,"td"),t._uU(68," Intellect: "),t.qZA(),t.TgZ(69,"td"),t._uU(70),t.qZA(),t.TgZ(71,"td")(72,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minIntellect=s}),t.qZA()(),t.TgZ(73,"td"),t._uU(74," Strength: "),t.qZA(),t.TgZ(75,"td"),t._uU(76),t.qZA(),t.TgZ(77,"td")(78,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minStrength=s}),t.qZA()()(),t.TgZ(79,"tr")(80,"td"),t._uU(81," Any plug >=: "),t.qZA(),t.TgZ(82,"td"),t._uU(83),t.qZA(),t.TgZ(84,"td")(85,"mat-slider",7),t.NdJ("valueChange",function(s){return o.anyPlugWithN=s}),t.qZA()(),t.TgZ(86,"td"),t._uU(87," Any Plug <=: "),t.qZA(),t.TgZ(88,"td"),t._uU(89),t.qZA(),t.TgZ(90,"td")(91,"mat-slider",7),t.NdJ("valueChange",function(s){return o.anyPlugBelowN=s}),t.qZA()()(),t.TgZ(92,"tr")(93,"td"),t._uU(94," All plugs >=: "),t.qZA(),t.TgZ(95,"td"),t._uU(96),t.qZA(),t.TgZ(97,"td")(98,"mat-slider",7),t.NdJ("valueChange",function(s){return o.allPlugsWithN=s}),t.qZA()(),t.TgZ(99,"td"),t._uU(100," All Plugs <=: "),t.qZA(),t.TgZ(101,"td"),t._uU(102),t.qZA(),t.TgZ(103,"td")(104,"mat-slider",7),t.NdJ("valueChange",function(s){return o.allPlugsBelowN=s}),t.qZA()()()(),t.TgZ(105,"a",8),t.NdJ("click",function(){return o.updateItems()}),t._uU(106,"Update"),t.qZA(),t._uU(107,"\xa0 "),t.TgZ(108,"a",9),t.NdJ("click",function(){return o.clear()}),t._uU(109,"Clear"),t.qZA()()(),t.YNc(110,Rc,6,2,"ng-container",10),t.ALo(111,"keyvalue")),2&e&&(t.xp6(30),t.Q6J("ngModel",o.armorName),t.xp6(5),t.Q6J("ngModel",o.armorHash),t.xp6(5),t.Q6J("ngModel",o.armorId),t.xp6(5),t.hij(" ",o.minMobility,""),t.xp6(2),t.Q6J("value",o.minMobility),t.xp6(4),t.hij(" ",o.minResilience,""),t.xp6(2),t.Q6J("value",o.minResilience),t.xp6(4),t.hij(" ",o.minRecovery,""),t.xp6(2),t.Q6J("value",o.minRecovery),t.xp6(5),t.hij(" ",o.minDiscipline,""),t.xp6(2),t.Q6J("value",o.minDiscipline),t.xp6(4),t.hij(" ",o.minIntellect,""),t.xp6(2),t.Q6J("value",o.minIntellect),t.xp6(4),t.Oqu(o.minStrength),t.xp6(2),t.Q6J("value",o.minStrength),t.xp6(5),t.Oqu(o.anyPlugWithN),t.xp6(2),t.Q6J("value",o.anyPlugWithN),t.xp6(4),t.Oqu(o.anyPlugBelowN),t.xp6(2),t.Q6J("value",o.anyPlugBelowN),t.xp6(5),t.Oqu(o.allPlugsWithN),t.xp6(2),t.Q6J("value",o.allPlugsWithN),t.xp6(4),t.Oqu(o.allPlugsBelowN),t.xp6(2),t.Q6J("value",o.allPlugsBelowN),t.xp6(6),t.Q6J("ngForOf",t.lcZ(111,24,o.armorItemsPerSlot)))},dependencies:[Z.sg,ft.xw,ft.SQ,wt.Fj,wt.JJ,wt.On,rt.zs,Nt.KE,Nt.hX,Oc.pH,oe.Nt,Y.a8,Y.dn,Y.n5,Y.$j,pt.gM,It.Ye,Z.JJ,Z.Nd],styles:["#description[_ngcontent-%COMP%], #filter[_ngcontent-%COMP%]{max-width:700px;margin-bottom:10px;margin-left:auto;margin-right:auto}.cluster-item[_ngcontent-%COMP%]{flex-grow:1;flex-basis:0;min-width:250px;max-width:350px;margin-bottom:10px}.armor-container[_ngcontent-%COMP%], .plug-sum-col[_ngcontent-%COMP%]{padding-left:5px}.armor-container[_ngcontent-%COMP%]{flex-wrap:wrap}.stat-range[_ngcontent-%COMP%]{height:20px;width:100%;margin-bottom:3px;float:left;background-color:gray}.stat-range-bar[_ngcontent-%COMP%]{height:100%;float:left;background-color:#fff}.stat-range-bar0[_ngcontent-%COMP%]{background-color:#acfff1}.stat-range-bar1[_ngcontent-%COMP%]{background-color:#5e9eff}.stat-range-bar3[_ngcontent-%COMP%]{background-color:#ffc2ac}.stat-range-bar4[_ngcontent-%COMP%]{background-color:#ffb45e}.stat-range-bar2[_ngcontent-%COMP%], .stat-range-bar5[_ngcontent-%COMP%]{background-color:#c246ff}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})(),qc=(()=>{class n{constructor(e,o,a){this.db=e,this.inv=o,this.loginService=a}downloadArmorInformation(){var e=this;return(0,x.Z)(function*(){const o=yield e.db.inventoryArmor.toArray(),a=window.URL.createObjectURL(new Blob([JSON.stringify(o,null,2)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_armor.json"),document.body.appendChild(s),s.click()})()}downloadManifestInformation(){var e=this;return(0,x.Z)(function*(){const o=yield e.db.manifestArmor.toArray(),a=window.URL.createObjectURL(new Blob([JSON.stringify(o,null,1)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_manifest.json"),document.body.appendChild(s),s.click()})()}resetDatabase(){var e=this;return(0,x.Z)(function*(){yield e.db.resetDatabase(),yield e.inv.refreshAll(!0,!0)})()}resetEverything(){var e=this;return(0,x.Z)(function*(){localStorage.clear(),yield e.db.resetDatabase(),yield e.loginService.logout()})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(I),t.Y36(At),t.Y36(gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-account-config-page"]],decls:35,vars:0,consts:[["id","account-config-container"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-raised-button","","routerLink","/",1,"returnbutton"],["color","primary","mat-raised-button","",1,"btn-download",3,"click"],["color","warn","mat-raised-button","",1,"btn-download",3,"click"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"a",1),t._uU(2," Return to D2ArmorPicker "),t.qZA(),t.TgZ(3,"mat-card")(4,"mat-card-title"),t._uU(5," Account Configuration "),t.qZA(),t.TgZ(6,"mat-card-subtitle"),t._uU(7," The configuration on this page will not be reset when you reset your build settings. "),t.qZA(),t.TgZ(8,"mat-card-content"),t._uU(9,' This will come in a future update. Right now, I just wanted to push the "Debugging" section out. '),t.qZA()(),t.TgZ(10,"mat-card")(11,"mat-card-title"),t._uU(12," Debugging "),t.qZA(),t.TgZ(13,"mat-card-subtitle"),t._uU(14," Some options for debugging purposes. "),t.qZA(),t.TgZ(15,"mat-card-content"),t._uU(16," If the team asks you to send some specific data, you can find it here:"),t._UZ(17,"br"),t.TgZ(18,"a",2),t.NdJ("click",function(){return o.downloadArmorInformation()}),t._uU(19," Download armor information (d2ap_armor.json) "),t.qZA(),t.TgZ(20,"a",2),t.NdJ("click",function(){return o.downloadManifestInformation()}),t._uU(21," Download manifest information (d2ap_manifest.json) "),t.qZA(),t._UZ(22,"br")(23,"br"),t._uU(24," If you experience issues with the local database - for example, exotics not being found, try this:"),t._UZ(25,"br"),t.TgZ(26,"a",3),t.NdJ("click",function(){return o.resetDatabase()}),t._uU(27," Delete Database "),t.qZA(),t._UZ(28,"br"),t._uU(29," If you really want to reset EVERYTHING, use this: "),t._UZ(30,"br"),t.TgZ(31,"a",3),t.NdJ("click",function(){return o.resetEverything()}),t._uU(32," Reset the whole application "),t.qZA()()(),t.TgZ(33,"a",1),t._uU(34," Return to D2ArmorPicker "),t.qZA()())},dependencies:[M.b8,rt.zs,Y.a8,Y.dn,Y.n5,Y.$j,ot.yS],styles:[".returnbutton[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:15px;width:100%}#account-config-container[_ngcontent-%COMP%]{max-width:800px;margin-left:auto;margin-right:auto}mat-card[_ngcontent-%COMP%]{margin-bottom:8px}.btn-download[_ngcontent-%COMP%]{margin-right:10px}"]}),n})();var Fc=_(4661),De=_(7331);const Jc=[{path:"",component:tn,canActivate:[f],children:[{path:"",component:Ac},{path:"help",component:gs},{path:"cluster",component:Mc},{path:"investigate",component:Nc},{path:"theory",loadChildren:()=>_.e(613).then(_.bind(_,8613)).then(n=>n.TheorizerPageModule)},{path:"account",component:qc}]},{path:"login",component:Vt,canActivate:[T]},{path:"login-bungie",component:qt},{path:"**",redirectTo:"/"}];let Lc=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n,bootstrap:[h]}),n.\u0275inj=t.cJS({imports:[Z.ez,Fc.V,u.b2,Yt.PW,Ut.JF,ot.Bz.forRoot(Jc,{useHash:!0}),ee.Iq,D.xu]}),n})();t.B6R(we,function(){return[Z.sg,Z.O5,ft.xw,ft.SQ,ft.Wh,ft.yH,rt.lW,Nt.KE,Nt.hX,Nt.R9,oe.Nt,W.BZ,W.fO,W.as,W.w1,W.Dz,W.nj,W.ge,W.ev,W.XQ,W.Gk,Y.a8,Y.dn,Y.n5,Y.$j,Y.hq,pt.gM,St.Hw,ue.YE,ue.nU,Ae.NW,De.qn,De.HS,ss,Ks]},function(){return[Z.JJ]}),t.B6R(ve,function(){return[rt.lW,Et.ZT,Et.uh,Et.xY,Et.H8,Se]},[]),g.N.production&&(0,t.G48)(),u.q6().bootstrapModule(Lc).catch(n=>console.error(n))}},ht=>{ht.O(0,[736],()=>ht(ht.s=1379)),ht.O()}]); \ No newline at end of file diff --git a/main.af937b66c17c7e62.js b/main.af937b66c17c7e62.js new file mode 100644 index 00000000..38d22fdc --- /dev/null +++ b/main.af937b66c17c7e62.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkD2ArmorPicker=self.webpackChunkD2ArmorPicker||[]).push([[179],{443:(ht,st,_)=>{_.d(st,{F:()=>Z});var u=_(7580),t=_(8333),g=_(1043);const Z={[u.U.WhisperOfDurance]:{id:u.U.WhisperOfDurance,name:"Whisper of Durance",description:"Slow that you apply to targets lasts longer. For those abilities that linger, their duration will also increase.",type:t.O.Stasis,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:3469412969},[u.U.WhisperOfChains]:{id:u.U.WhisperOfChains,name:"Whisper of Chains",description:"While you are near frozen targets or a friendly Stasis crystal, you take reduced damage from targets.",type:t.O.Stasis,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:537774540},[u.U.WhisperOfConduction]:{id:u.U.WhisperOfConduction,name:"Whisper of Conduction",description:"Nearby Stasis shards track to your position.",type:t.O.Stasis,bonus:[{stat:g.WB.Intellect,value:10},{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2483898429},[u.U.WhisperOfBonds]:{id:u.U.WhisperOfBonds,name:"Whisper of Bonds",description:"Defeating frozen targets generates an Orb of Power.",type:t.O.Stasis,bonus:[{stat:g.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:3469412974},[u.U.WhisperOfHunger]:{id:u.U.WhisperOfHunger,name:"Whisper of Hunger",description:"Increases the melee energy gained from picking up Stasis shards.",type:t.O.Stasis,bonus:[{stat:g.WB.Strength,value:-20}],cost:1,requiredArmorAffinity:0,hash:2483898431},[u.U.WhisperOfFractures]:{id:u.U.WhisperOfFractures,name:"Whisper of Fractures",description:"Your melee energy recharges faster when you are near two or more targets.",type:t.O.Stasis,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774542},[u.U.WhisperOfImpetus]:{id:u.U.WhisperOfImpetus,name:"Whisper of Impetus",description:"Damaging targets with a Stasis melee reloads your stowed weapons and grants you a temporary boost to weapon ready speed.",type:t.O.Stasis,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:537774543},[u.U.WhisperOfTorment]:{id:u.U.WhisperOfTorment,name:"Whisper of Torment",description:"You gain grenade energy each time you take damage from targets. Having Frost Armor increases the amount of energy gained.",type:t.O.Stasis,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774541},[u.U.EchoOfExpulsion]:{id:u.U.EchoOfExpulsion,name:"Echo of Expulsion",description:"Void ability final blows cause targets to explode.",type:t.O.Void,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984665},[u.U.EchoOfProvision]:{id:u.U.EchoOfProvision,name:"Echo of Provision",description:"Damaging targets with grenades grants melee energy.",type:t.O.Void,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984664},[u.U.EchoOfPersistence]:{id:u.U.EchoOfPersistence,name:"Echo of Persistence",description:"Void buffs applied to you (Invisibility, Overshield, and Devour) have increased duration.",type:t.O.Void,bonus:[{stat:g.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984671},[u.U.EchoOfLeeching]:{id:u.U.EchoOfLeeching,name:"Echo of Leeching",description:"Melee final blows start health regeneration for you and nearby allies.",type:t.O.Void,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984670},[u.U.EchoOfDomineering]:{id:u.U.EchoOfDomineering,name:"Echo of Domineering",description:"After suppressing a target, you gain greatly increased mobility for a short duration, and your equipped weapon is reloaded from reserves.\n\nDefeating suppressed targets creates a Void Breach.",type:t.O.Void,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984657},[u.U.EchoOfDilation]:{id:u.U.EchoOfDilation,name:"Echo of Dilation",description:"While crouched, you sneak faster and gain enhanced radar resolution.",type:t.O.Void,bonus:[{stat:g.WB.Mobility,value:10},{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984656},[u.U.EchoOfUndermining]:{id:u.U.EchoOfUndermining,name:"Echo of Undermining",description:"Your Void grenades weaken targets.",type:t.O.Void,bonus:[{stat:g.WB.Discipline,value:-20}],cost:1,requiredArmorAffinity:0,hash:2272984668},[u.U.EchoOfInstability]:{id:u.U.EchoOfInstability,name:"Echo of Instability",description:"Defeating targets with grenades grants Volatile Rounds to your Void weapons.",type:t.O.Void,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180600},[u.U.EchoOfHarvest]:{id:u.U.EchoOfHarvest,name:"Echo of Harvest",description:"Defeating weakened targets creates an Orb of Power and a Void Breach.",type:t.O.Void,bonus:[{stat:g.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180601},[u.U.EchoOfObscurity]:{id:u.U.EchoOfObscurity,name:"Echo of Obscurity",description:"Finisher final blows grant Invisibility.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180602},[u.U.EchoOfStarvation]:{id:u.U.EchoOfStarvation,name:"Echo of Starvation",description:"Picking up a Void Breach or an Orb of Power grants Devour.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180603},[u.U.EchoOfVigilance]:{id:u.U.EchoOfVigilance,name:"Echo of Vigilance",description:"Defeating a target while your shields are depleted grants you a temporary Void overshield.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:3854948621},[u.U.EmberOfBenelovence]:{id:u.U.EmberOfBenelovence,name:"Ember of Benevolence",description:"Applying restoration, cure, or radiant to allies grants increased grenade, melee, and class ability regeneration for a short duration.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132292},[u.U.EmberOfBeams]:{id:u.U.EmberOfBeams,name:"Ember of Beams",description:"Your Solar Super projectiles have stronger target acquisition.",type:t.O.Solar,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:362132295},[u.U.EmberOfEmpyrean]:{id:u.U.EmberOfEmpyrean,name:"Ember of Empyrean",description:"Solar weapon or ability final blows extend the duration of restoration and radiant effects applied to you.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132294},[u.U.EmberOfCombustion]:{id:u.U.EmberOfCombustion,name:"Ember of Combustion",description:"Final blows with a Solar Super causes targets to ignite and creates a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:362132289},[u.U.EmberOfChar]:{id:u.U.EmberOfChar,name:"Ember of Char",description:"Your Solar ignitions spread scorch to affected targets.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:362132291},[u.U.EmberOfTempering]:{id:u.U.EmberOfTempering,name:"Ember of Tempering",description:"Solar weapon final blows grant you and your allies increased recovery for a short duration. Stacks 3 times.\n\nWhile Ember of Tempering is active, your weapons have increased airborne effectiveness, and your Solar weapon final blows create a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132290},[u.U.EmberOfEruption]:{id:u.U.EmberOfEruption,name:"Ember of Eruption",description:"Your Solar ignitions have increased area of effect.",type:t.O.Solar,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276348},[u.U.EmberOfWonder]:{id:u.U.EmberOfWonder,name:"Ember of Wonder",description:"Rapidly defeating multiple targets with Solar ignitions generates an Orb of Power.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276350},[u.U.EmberOfSearing]:{id:u.U.EmberOfSearing,name:"Ember of Searing",description:"Defeating scorched targets grants melee energy and creates a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276351},[u.U.EmberOfTorches]:{id:u.U.EmberOfTorches,name:"Ember of Torches",description:"Powered melee attacks against combatants make you and nearby allies radiant.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132288},[u.U.EmberOfMercy]:{id:u.U.EmberOfMercy,name:"Ember of Mercy",description:"When you revive an ally, you and other nearby allies gain restoration.\n\nPicking up a Firesprite grants restoration.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:4180586737},[u.U.SparkOfBrilliance]:{id:u.U.SparkOfBrilliance,name:"Spark of Brilliance",description:"Defeating a blinded target with precision damage creates a blinding explosion.",type:t.O.Arc,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705905},[u.U.SparkOfFeedback]:{id:u.U.SparkOfFeedback,name:"Spark of Feedback",description:"Taking melee damage briefly increases your outgoing melee damage.",type:t.O.Arc,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705907},[u.U.SparkOfDischarge]:{id:u.U.SparkOfDischarge,name:"Spark of Discharge",description:"Arc weapon final blows have a chance to create an Ionic Trace.",type:t.O.Arc,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069362},[u.U.SparkOfFocus]:{id:u.U.SparkOfFocus,name:"Spark of Focus",description:"After sprinting for a short time, your class ability regeneration is increased.",type:t.O.Arc,bonus:[{stat:g.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069360},[u.U.SparkOfVolts]:{id:u.U.SparkOfVolts,name:"Spark of Volts",description:"Finishers make you amplified.",type:t.O.Arc,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705904},[u.U.SparkOfResistance]:{id:u.U.SparkOfResistance,name:"Spark of Resistance",description:"While surrounded by combatants, you are more resistant to incoming damage.",type:t.O.Arc,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1727069366},[u.U.SparkOfShock]:{id:u.U.SparkOfShock,name:"Spark of Shock",description:"Your Arc grenades jolt targets.",type:t.O.Arc,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069364},[u.U.ThreadOfFury]:{id:u.U.ThreadOfFury,name:"Thread of Fury",description:"Damaging targets with a Tangle grants melee energy.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512219},[u.U.ThreadOfAscent]:{id:u.U.ThreadOfAscent,name:"Thread of Ascent",description:"Activating your grenade ability reloads your equipped weapon and grants bonus airborne effectiveness and handling for a short duration.",type:t.O.Strand,bonus:[{stat:g.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512216},[u.U.ThreadOfFinality]:{id:u.U.ThreadOfFinality,name:"Thread of Finality",description:"Finisher final blows create Threadlings.",type:t.O.Strand,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512217},[u.U.ThreadOfWarding]:{id:u.U.ThreadOfWarding,name:"Thread of Warding",description:"Picking up an Orb of Power grants Woven Mail.",type:t.O.Strand,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512222},[u.U.ThreadOfTransmutation]:{id:u.U.ThreadOfTransmutation,name:"Thread of Transmutation",description:"While you have Woven Mail, weapon final blows create a Tangle.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512221},[u.U.ThreadOfEvolution]:{id:u.U.ThreadOfEvolution,name:"Thread of Evolution",description:"Threadlings travel farther and deal additional damage.",type:t.O.Strand,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512211},[u.U.ThreadOfBinding]:{id:u.U.ThreadOfBinding,name:"Thread of Binding",description:"Super final blows emit a suspending burst from the target.",type:t.O.Strand,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3192552688},[u.U.ThreadOfGeneration]:{id:u.U.ThreadOfGeneration,name:"Thread of Generation",description:"Dealing damage generates grenade energy.",type:t.O.Strand,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:3192552691},[u.U.ThreadOfPropagation]:{id:u.U.ThreadOfPropagation,name:"Thread of Propagation",description:"Powered melee final blows grant your Strand weapons Unraveling Rounds.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512210},[u.U.FacetOfAwakening]:{id:u.U.FacetOfAwakening,name:"Facet of Awakening",description:"Rapid elemental final blows and Super final blows generate an elemental pickup of the matching damage type.",type:t.O.Prismatic,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:124726505},[u.U.FacetOfCourage]:{id:u.U.FacetOfCourage,name:"Facet of Courage",description:"Your Light abilities deal increased damage to targets afflicted with Darkness debuffs.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922124},[u.U.FacetOfDawn]:{id:u.U.FacetOfDawn,name:"Facet of Dawn",description:"Powered melee hits against targets make you Radiant. Powered melee final blows make both you and nearby allies Radiant.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922126},[u.U.FacetOfDefiance]:{id:u.U.FacetOfDefiance,name:"Facet of Defiance",description:"Finishers create a detonation that either jolts, scorches, slows, severs, or makes targets volatile based on the damage type of your equipped Super.",type:t.O.Prismatic,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:74393640},[u.U.FacetOfDevotion]:{id:u.U.FacetOfDevotion,name:"Facet of Devotion",description:"Defeating targets afflicted with a Darkness debuff grants bonus Light Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922125},[u.U.FacetOfDominance]:{id:u.U.FacetOfDominance,name:"Facet of Dominance",description:"Your Void grenades weaken targets, and your Arc grenades jolt targets.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726504},[u.U.FacetOfGrace]:{id:u.U.FacetOfGrace,name:"Facet of Grace",description:"Defeating targets with Kinetic weapons grants you bonus Transcendence energy. Defeating targets with your Super grants you and nearby allies bonus Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922121},[u.U.FacetOfHonor]:{id:u.U.FacetOfHonor,name:"Facet of Honor",description:"Collecting an elemental pickup or destroying a Tangle grants Transcendence energy of the same type.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:124726501},[u.U.FacetOfJustice]:{id:u.U.FacetOfJustice,name:"Facet of Justice",description:"While Transcendent, your ability final blows explode.",type:t.O.Prismatic,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922115},[u.U.FacetOfProtection]:{id:u.U.FacetOfProtection,name:"Facet of Protection",description:"While surrounded by enemies, you are more resistant to incoming damage.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922120},[u.U.FacetOfPurpose]:{id:u.U.FacetOfPurpose,name:"Facet of Purpose",description:"Picking up an Orb of Power grants either Amplified, Restoration, Frost Armor, Woven Mail, or Overshield, based on the damage type of your equipped super.",type:t.O.Prismatic,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726498},[u.U.FacetOfRuin]:{id:u.U.FacetOfRuin,name:"Facet of Ruin",description:"Increases the size and damage of the burst when you shatter a Stasis crystal or frozen target and increases the area of effect of Solar ignitions.",type:t.O.Prismatic,bonus:[{stat:g.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:124726499},[u.U.FacetOfSacrifice]:{id:u.U.FacetOfSacrifice,name:"Facet of Sacrifice",description:"While you have a Light buff, ability final blows grant bonus Darkness Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:124726502}}},3244:(ht,st,_)=>{_.d(st,{Io:()=>t,Qj:()=>u,dM:()=>g});const u=5,t=-1,g=-2},4682:(ht,st,_)=>{_.d(st,{v:()=>t});var u=_(6438);class t extends u.ZP{constructor(){super("d2armorpicker-v2"),this.version(25).stores({manifestArmor:"id++, hash, isExotic",inventoryArmor:"id++, itemInstanceId, isExotic, hash, name, masterworked, clazz, slot, source",manifestCollectibles:"id++, hash",vendorNames:"id++, vendorId"})}}},6471:(ht,st,_)=>{_.d(st,{y:()=>u});var u=(()=>{return(t=u||(u={}))[t.ArmorSlotNone=0]="ArmorSlotNone",t[t.ArmorSlotHelmet=1]="ArmorSlotHelmet",t[t.ArmorSlotGauntlet=2]="ArmorSlotGauntlet",t[t.ArmorSlotChest=3]="ArmorSlotChest",t[t.ArmorSlotLegs=4]="ArmorSlotLegs",t[t.ArmorSlotClass=5]="ArmorSlotClass",u;var t})()},1043:(ht,st,_)=>{_.d(st,{AR:()=>x,Bd:()=>Ft,DH:()=>gt,ED:()=>Ut,ID:()=>qt,K9:()=>Z,Mi:()=>M,Pn:()=>A,WB:()=>g,X9:()=>Ct,cM:()=>Mt,iV:()=>t,kw:()=>It,lp:()=>ot});var u=_(8333),t=(()=>{return(h=t||(t={}))[h.NONE=0]="NONE",h[h.MINOR_MOBILITY=1]="MINOR_MOBILITY",h[h.MAJOR_MOBILITY=2]="MAJOR_MOBILITY",h[h.ARTIFICE_MOBILITY=3]="ARTIFICE_MOBILITY",h[h.MINOR_RESILIENCE=4]="MINOR_RESILIENCE",h[h.MAJOR_RESILIENCE=5]="MAJOR_RESILIENCE",h[h.ARTIFICE_RESILIENCE=6]="ARTIFICE_RESILIENCE",h[h.MINOR_RECOVERY=7]="MINOR_RECOVERY",h[h.MAJOR_RECOVERY=8]="MAJOR_RECOVERY",h[h.ARTIFICE_RECOVERY=9]="ARTIFICE_RECOVERY",h[h.MINOR_DISCIPLINE=10]="MINOR_DISCIPLINE",h[h.MAJOR_DISCIPLINE=11]="MAJOR_DISCIPLINE",h[h.ARTIFICE_DISCIPLINE=12]="ARTIFICE_DISCIPLINE",h[h.MINOR_INTELLECT=13]="MINOR_INTELLECT",h[h.MAJOR_INTELLECT=14]="MAJOR_INTELLECT",h[h.ARTIFICE_INTELLECT=15]="ARTIFICE_INTELLECT",h[h.MINOR_STRENGTH=16]="MINOR_STRENGTH",h[h.MAJOR_STRENGTH=17]="MAJOR_STRENGTH",h[h.ARTIFICE_STRENGTH=18]="ARTIFICE_STRENGTH",t;var h})(),g=(()=>{return(h=g||(g={}))[h.Mobility=0]="Mobility",h[h.Resilience=1]="Resilience",h[h.Recovery=2]="Recovery",h[h.Discipline=3]="Discipline",h[h.Intellect=4]="Intellect",h[h.Strength=5]="Strength",g;var h})();const Z={[t.NONE]:[g.Strength,0,0,0],[t.MINOR_MOBILITY]:[g.Mobility,5,1,1703647492],[t.MAJOR_MOBILITY]:[g.Mobility,10,3,4183296050],[t.ARTIFICE_MOBILITY]:[g.Mobility,3,0,2322202118],[t.MINOR_RESILIENCE]:[g.Resilience,5,2,2532323436],[t.MAJOR_RESILIENCE]:[g.Resilience,10,4,1180408010],[t.ARTIFICE_RESILIENCE]:[g.Resilience,3,0,199176566],[t.MINOR_RECOVERY]:[g.Recovery,5,2,1237786518],[t.MAJOR_RECOVERY]:[g.Recovery,10,4,4204488676],[t.ARTIFICE_RECOVERY]:[g.Recovery,3,0,539459624],[t.MINOR_DISCIPLINE]:[g.Discipline,5,1,4021790309],[t.MAJOR_DISCIPLINE]:[g.Discipline,10,3,1435557120],[t.ARTIFICE_DISCIPLINE]:[g.Discipline,3,0,617569843],[t.MINOR_INTELLECT]:[g.Intellect,5,2,350061697],[t.MAJOR_INTELLECT]:[g.Intellect,10,4,2724608735],[t.ARTIFICE_INTELLECT]:[g.Intellect,3,0,3160845295],[t.MINOR_STRENGTH]:[g.Strength,5,1,2639422088],[t.MAJOR_STRENGTH]:[g.Strength,10,3,4287799666],[t.ARTIFICE_STRENGTH]:[g.Strength,3,0,2507624050]},M={[g.Mobility]:"Mobility",[g.Resilience]:"Resilience",[g.Recovery]:"Recovery",[g.Discipline]:"Discipline",[g.Intellect]:"Intellect",[g.Strength]:"Strength"},It={[g.Mobility]:2996146975,[g.Resilience]:392767087,[g.Recovery]:1943323491,[g.Discipline]:1735777505,[g.Intellect]:144602215,[g.Strength]:4244567218},ot={[g.Mobility]:"https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",[g.Resilience]:"https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",[g.Recovery]:"https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",[g.Discipline]:"https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",[g.Intellect]:"https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",[g.Strength]:"https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png"};var x=(()=>{return(h=x||(x={}))[h.ClassAbilityRegenerationStat=10]="ClassAbilityRegenerationStat",x;var h})(),A=(()=>{return(h=A||(A={}))[h.None=0]="None",h[h.SlotCrotasEnd=2]="SlotCrotasEnd",h[h.SlotRootOfNightmares=3]="SlotRootOfNightmares",h[h.SlotKingsFall=4]="SlotKingsFall",h[h.SlotVowOfTheDisciple=5]="SlotVowOfTheDisciple",h[h.SlotVaultOfGlass=6]="SlotVaultOfGlass",h[h.SlotDeepStoneCrypt=7]="SlotDeepStoneCrypt",h[h.SlotGardenOfSalvation=8]="SlotGardenOfSalvation",h[h.SlotLastWish=9]="SlotLastWish",h[h.SlotArtifice=10]="SlotArtifice",h[h.PerkIronBanner=11]="PerkIronBanner",h[h.SlotNightmare=12]="SlotNightmare",h[h.GuardianGamesClassItem=18]="GuardianGamesClassItem",h[h.PerkEchoesOfGlory=20]="PerkEchoesOfGlory",h[h.SlotSalvationsEdge=21]="SlotSalvationsEdge",h[h.COUNT=22]="COUNT",A;var h})();const Ut={1760565003:A.PerkEchoesOfGlory},Mt={[A.None]:"None",[A.SlotCrotasEnd]:"Crota's End Modslot",[A.SlotRootOfNightmares]:"Root of Nightmares Modslot",[A.SlotKingsFall]:"King's Fall Modslot",[A.SlotVowOfTheDisciple]:"Vow of the Disciple Modslot",[A.SlotVaultOfGlass]:"Vault of Glass Modslot",[A.SlotDeepStoneCrypt]:"Deep Stone Crypt Modslot",[A.SlotGardenOfSalvation]:"Garden of Salvation Modslot",[A.SlotLastWish]:"Last Wish Modslot",[A.SlotArtifice]:"Artifice Modslot",[A.PerkIronBanner]:"Iron Banner Perk",[A.SlotNightmare]:"Nightmare Hunt Modslot",[A.GuardianGamesClassItem]:"Guardian Games",[A.PerkEchoesOfGlory]:"Echoes of Glory Perk",[A.SlotSalvationsEdge]:"Salvation's Edge Modslot",[A.COUNT]:""},Ct={[A.None]:"https://www.bungie.net/img/misc/missing_icon_d2.png",[A.SlotCrotasEnd]:"https://www.bungie.net/common/destiny2_content/icons/7ddce334fe8391848f408227439c1d7a.png",[A.SlotRootOfNightmares]:"https://www.bungie.net/common/destiny2_content/icons/f2b6ec58e14244e4972705897667c246.png",[A.SlotKingsFall]:"https://www.bungie.net/common/destiny2_content/icons/0e515c7cf25a2f2350b788e6f5b7f8eb.png",[A.SlotVowOfTheDisciple]:"https://www.bungie.net/common/destiny2_content/icons/b84b6ea72dd05de7123aa2ae87ba0d6a.png",[A.SlotVaultOfGlass]:"https://www.bungie.net/common/destiny2_content/icons/7c9a2d95113de19c5acdbed57775abf4.png",[A.SlotDeepStoneCrypt]:"https://www.bungie.net/common/destiny2_content/icons/d6452d010cfe72a51a9089ec68ab223c.png",[A.SlotGardenOfSalvation]:"https://www.bungie.net/common/destiny2_content/icons/53d6e3505cd03d4026b3dbbd9ccc19b6.jpg",[A.SlotLastWish]:"https://www.bungie.net/common/destiny2_content/icons/76f0c1520fa384ceb27bd2469225dd8a.png",[A.SlotArtifice]:"https://www.bungie.net/common/destiny2_content/icons/46eec78bb7864641bbd7ba1fd4f9f248.png",[A.PerkIronBanner]:"https://bungie.net/common/destiny2_content/icons/DestinyActivityModeDefinition_fe57052d7cf971f7502daa75a2ca2437.png",[A.SlotNightmare]:"https://www.bungie.net/common/destiny2_content/icons/53d6e3505cd03d4026b3dbbd9ccc19b6.jpg",[A.GuardianGamesClassItem]:"https://www.bungie.net/common/destiny2_content/icons/DestinyEventCardDefinition_ce6c2cf855dce694bcc89803b6bc44b7.png",[A.SlotSalvationsEdge]:"https://www.bungie.net/common/destiny2_content/icons/f4a1f99b49ecf412726d71ea9ee15540.png",[A.PerkEchoesOfGlory]:"https://www.bungie.net/common/destiny2_content/icons/c67322c917e16f3b8a4cb962e3f11166.png",[A.COUNT]:""},gt={[A.SlotCrotasEnd]:717667840,[A.SlotRootOfNightmares]:4144354978,[A.SlotKingsFall]:1728096240,[A.SlotVowOfTheDisciple]:2447143568,[A.SlotVaultOfGlass]:3738398030,[A.SlotDeepStoneCrypt]:4055462131,[A.SlotGardenOfSalvation]:706611068,[A.SlotLastWish]:1679876242,[A.SlotArtifice]:3727270518,[A.PerkIronBanner]:2472875850,[A.SlotNightmare]:1180997867,[A.SlotSalvationsEdge]:4059283783,[A.PerkEchoesOfGlory]:2352831367},qt={[A.SlotCrotasEnd]:"modslot:crotasend",[A.SlotRootOfNightmares]:"modslot:rootofnightmares",[A.SlotKingsFall]:"modslot:kingsfall",[A.SlotVowOfTheDisciple]:"modslot:vowofthedisciple",[A.SlotVaultOfGlass]:"modslot:vaultofglass",[A.SlotDeepStoneCrypt]:"modslot:deepstonecrypt",[A.SlotGardenOfSalvation]:"modslot:gardenofsalvation",[A.SlotLastWish]:"modslot:lastwish",[A.SlotArtifice]:'perkname:"artifice armor"',[A.PerkIronBanner]:'perkname:"iron lord\'s pride"',[A.SlotNightmare]:"modslot:nightmare",[A.GuardianGamesClassItem]:"(hash:537041732 or hash:366019830 or hash:1013401891)",[A.PerkEchoesOfGlory]:'exactperk:"echoes of glory"',[A.SlotSalvationsEdge]:"(source:salvationsedge is:armor)"},Ft={1:{[u.O.Stasis]:873720784,[u.O.Void]:2453351420,[u.O.Solar]:2240888816,[u.O.Arc]:2328211300,[u.O.Strand]:3785442599,[u.O.Prismatic]:4282591831},0:{[u.O.Stasis]:613647804,[u.O.Void]:2842471112,[u.O.Solar]:2550323932,[u.O.Arc]:2932390016,[u.O.Strand]:242419885,[u.O.Prismatic]:1616346845},2:{[u.O.Stasis]:3291545503,[u.O.Void]:2849050827,[u.O.Solar]:3941205951,[u.O.Arc]:3168997075,[u.O.Strand]:4204413574,[u.O.Prismatic]:3893112950}}},1650:(ht,st,_)=>{_.d(st,{w:()=>u});var u=(()=>{return(t=u||(u={}))[t.None=0]="None",t[t.ReduceUsedModSockets=1]="ReduceUsedModSockets",t[t.ReduceUsedModPoints=2]="ReduceUsedModPoints",u;var t})()},7580:(ht,st,_)=>{_.d(st,{U:()=>u});var u=(()=>{return(t=u||(u={}))[t.WhisperOfDurance=1e3]="WhisperOfDurance",t[t.WhisperOfChains=1001]="WhisperOfChains",t[t.WhisperOfConduction=1002]="WhisperOfConduction",t[t.WhisperOfBonds=1101]="WhisperOfBonds",t[t.WhisperOfHunger=1102]="WhisperOfHunger",t[t.WhisperOfFractures=1103]="WhisperOfFractures",t[t.WhisperOfTorment=1104]="WhisperOfTorment",t[t.EchoOfExpulsion=1200]="EchoOfExpulsion",t[t.EchoOfProvision=1201]="EchoOfProvision",t[t.EchoOfPersistence=1202]="EchoOfPersistence",t[t.EchoOfLeeching=1203]="EchoOfLeeching",t[t.EchoOfDomineering=1204]="EchoOfDomineering",t[t.EchoOfDilation=1205]="EchoOfDilation",t[t.EchoOfUndermining=1206]="EchoOfUndermining",t[t.EchoOfInstability=1207]="EchoOfInstability",t[t.EchoOfHarvest=1208]="EchoOfHarvest",t[t.EchoOfObscurity=1209]="EchoOfObscurity",t[t.EchoOfStarvation=1210]="EchoOfStarvation",t[t.EchoOfVigilance=1211]="EchoOfVigilance",t[t.EmberOfBenelovence=1300]="EmberOfBenelovence",t[t.EmberOfBeams=1301]="EmberOfBeams",t[t.EmberOfEmpyrean=1302]="EmberOfEmpyrean",t[t.EmberOfCombustion=1303]="EmberOfCombustion",t[t.EmberOfChar=1304]="EmberOfChar",t[t.EmberOfTempering=1305]="EmberOfTempering",t[t.EmberOfEruption=1306]="EmberOfEruption",t[t.EmberOfWonder=1307]="EmberOfWonder",t[t.EmberOfSearing=1308]="EmberOfSearing",t[t.EmberOfTorches=1309]="EmberOfTorches",t[t.EmberOfMercy=1310]="EmberOfMercy",t[t.SparkOfBrilliance=1400]="SparkOfBrilliance",t[t.SparkOfFeedback=1401]="SparkOfFeedback",t[t.SparkOfDischarge=1402]="SparkOfDischarge",t[t.SparkOfFocus=1403]="SparkOfFocus",t[t.SparkOfVolts=1404]="SparkOfVolts",t[t.SparkOfResistance=1405]="SparkOfResistance",t[t.SparkOfShock=1406]="SparkOfShock",t[t.ThreadOfFury=1600]="ThreadOfFury",t[t.ThreadOfAscent=1601]="ThreadOfAscent",t[t.ThreadOfFinality=1602]="ThreadOfFinality",t[t.ThreadOfWarding=1603]="ThreadOfWarding",t[t.ThreadOfTransmutation=1604]="ThreadOfTransmutation",t[t.ThreadOfEvolution=1605]="ThreadOfEvolution",t[t.ThreadOfBinding=1606]="ThreadOfBinding",t[t.ThreadOfGeneration=1607]="ThreadOfGeneration",t[t.ThreadOfPropagation=1608]="ThreadOfPropagation",t[t.WhisperOfImpetus=537774543]="WhisperOfImpetus",t[t.FacetOfAwakening=1700]="FacetOfAwakening",t[t.FacetOfCourage=1701]="FacetOfCourage",t[t.FacetOfDawn=1702]="FacetOfDawn",t[t.FacetOfDefiance=1703]="FacetOfDefiance",t[t.FacetOfDevotion=1704]="FacetOfDevotion",t[t.FacetOfDominance=1705]="FacetOfDominance",t[t.FacetOfGrace=1706]="FacetOfGrace",t[t.FacetOfHonor=1707]="FacetOfHonor",t[t.FacetOfJustice=1708]="FacetOfJustice",t[t.FacetOfProtection=1709]="FacetOfProtection",t[t.FacetOfPurpose=1710]="FacetOfPurpose",t[t.FacetOfRuin=1711]="FacetOfRuin",t[t.FacetOfSacrifice=1712]="FacetOfSacrifice",u;var t})()},8333:(ht,st,_)=>{_.d(st,{O:()=>u});var u=(()=>{return(t=u||(u={}))[t.CombatStyleMod=0]="CombatStyleMod",t[t.Stasis=1]="Stasis",t[t.Void=2]="Void",t[t.Solar=3]="Solar",t[t.Arc=4]="Arc",t[t.Strand=5]="Strand",t[t.Prismatic=6]="Prismatic",u;var t})()},4661:(ht,st,_)=>{_.d(st,{V:()=>R});var u=_(4859),t=_(9549),g=_(4385),Z=_(3238),M=_(7314),It=_(4144),ot=_(455),x=_(2143),A=_(3546),Ut=_(266),Mt=_(3162),Ct=_(7392),gt=_(6308),qt=_(8739),Ft=_(3683),h=_(3217),ft=_(811),rt=_(6338),Y=_(7084),mt=_(5412),Vt=_(7009),Yt=_(1572),f=_(3848),T=_(7331),D=_(3267),k=_(4006),J=_(9814),L=_(4650);let R=(()=>{class c{}return c.\u0275fac=function(v){return new(v||c)},c.\u0275mod=L.oAB({type:c}),c.\u0275inj=L.cJS({imports:[u.ot,t.lN,g.LD,Z.Ng,M.KP,It.c,ot.rP,x.p0,A.QW,Ut.AV,Mt.Cv,Ct.Ps,gt.JX,qt.TU,Ft.g0,h.Tx,ft.vV,rt.ie,Y.To,mt.Is,Vt.ZX,Yt.Cq,f.Nh,T.Hi,D.SJ,k.UX,k.u5,J.o9,J.o9,k.UX,k.u5,u.ot,t.lN,g.LD,Z.Ng,M.KP,It.c,ot.rP,x.p0,A.QW,Ut.AV,Mt.Cv,Ct.Ps,gt.JX,qt.TU,Ft.g0,h.Tx,ft.vV,rt.ie,Y.To,mt.Is,Vt.ZX,Yt.Cq,f.Nh,T.Hi,D.SJ]}),c})()},6982:(ht,st,_)=>{_.d(st,{jG:()=>Vt,_1:()=>Yt});var u=_(5861),t=_(6471),g=_(3244),Z=_(443),M=_(1043),It=_(2340);const ot={1:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,1,2,31]],2:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,0,2,32]],3:[[1,0,0,3],[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,2,2,33]],4:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,1,2,34]],5:[[0,1,0,5],[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,0,2,35],[0,3,2,35]],6:[[2,0,0,6],[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,2,2,36],[2,0,3,36],[2,2,3,46]],7:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,1,2,37],[4,1,3,47]],8:[[1,1,0,8],[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38]],9:[[3,0,0,9],[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,2,2,39],[3,0,3,39],[3,2,3,49]],10:[[0,2,0,10],[0,0,1,10],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,1,2,40],[0,2,3,40],[5,1,3,50]],11:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41]],12:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,2,2,42],[4,0,3,42],[4,2,3,52]],13:[[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43]],14:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,2,2,45],[5,0,3,45],[5,2,3,55]],16:[[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46]],17:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],18:[[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],19:[[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[5,1,4,60]],21:[[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],22:[[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43]],24:[[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],27:[[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43],[1,0,5,53]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],38:[[1,3,2,38],[1,1,3,38],[1,1,4,48]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],41:[[2,3,2,41],[2,1,3,41],[2,1,4,51]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],43:[[1,2,3,43],[1,0,4,43],[1,0,5,53]],44:[[3,3,2,44],[3,1,3,44],[3,1,4,54]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],46:[[2,2,3,46],[2,0,4,46],[2,0,5,56]],47:[[4,3,2,47],[4,1,3,47],[4,1,4,57]],48:[[1,1,4,48]],49:[[3,2,3,49],[3,0,4,49],[3,0,5,59]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],51:[[2,1,4,51]],52:[[4,2,3,52],[4,0,4,52],[4,0,5,62]],53:[[1,0,5,53]],54:[[3,1,4,54]],55:[[5,2,3,55],[5,0,4,55],[5,0,5,65]],56:[[2,0,5,56]],57:[[4,1,4,57]],58:[],59:[[3,0,5,59]],60:[[5,1,4,60]],61:[],62:[[4,0,5,62]],63:[],64:[],65:[[5,0,5,65]]},x={1:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],2:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],3:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],4:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],5:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],6:[[2,0,0,6],[1,1,0,8],[0,2,0,10],[0,0,1,10]],7:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],8:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],9:[[3,0,0,9],[0,2,0,10],[0,0,1,10],[2,1,0,11]],10:[[0,2,0,10],[0,0,1,10],[2,1,0,11],[4,0,0,12]],11:[[2,1,0,11],[4,0,0,12],[1,2,0,13],[1,0,1,13],[0,3,0,15],[0,1,1,15],[0,0,2,20]],12:[[4,0,0,12],[1,2,0,13],[1,0,1,13],[3,1,0,14],[0,3,0,15],[0,1,1,15],[0,0,2,20]],13:[[1,2,0,13],[1,0,1,13],[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[0,0,2,20]],14:[[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[0,0,2,20]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[4,1,0,17],[0,0,2,20]],16:[[2,2,0,16],[2,0,1,16],[4,1,0,17],[1,3,0,18],[1,1,1,18],[0,4,0,20],[0,2,1,20],[0,0,2,20]],17:[[4,1,0,17],[1,3,0,18],[1,1,1,18],[3,2,0,19],[3,0,1,19],[0,4,0,20],[0,2,1,20],[0,0,2,20]],18:[[1,1,1,18],[1,3,0,18],[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20]],19:[[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22]],21:[[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],22:[[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],24:[[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[0,0,3,30]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[0,0,3,30]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[0,4,1,30],[0,2,2,30],[0,0,3,30]],27:[[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[0,4,1,30],[0,2,2,30],[0,0,3,30]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[0,3,2,35],[0,1,3,35],[0,0,4,40]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[0,3,2,35],[0,1,3,35],[0,0,4,40]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[0,0,4,40]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[0,0,4,40]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[0,0,4,40]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[0,2,3,40],[0,0,4,40]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[0,2,3,40],[0,0,4,40]],38:[[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42]],41:[[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[0,1,4,45],[0,0,5,50]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[0,1,4,45],[0,0,5,50]],43:[[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[0,0,5,50]],44:[[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[0,0,5,50]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[0,0,5,50]],46:[[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[1,1,4,48],[0,0,5,50]],47:[[4,3,2,47],[4,1,3,47],[1,1,4,48],[3,2,3,49],[3,0,4,49],[0,0,5,50]],48:[[1,1,4,48],[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50]],49:[[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51],[4,2,3,52],[4,0,4,52]],51:[[2,1,4,51],[4,2,3,52],[4,0,4,52],[1,0,5,53]],52:[[4,2,3,52],[4,0,4,52],[1,0,5,53],[3,1,4,54]],53:[[1,0,5,53],[3,1,4,54],[5,2,3,55],[5,0,4,55]],54:[[3,1,4,54],[5,2,3,55],[5,0,4,55],[2,0,5,56]],55:[[5,2,3,55],[5,0,4,55],[2,0,5,56],[4,1,4,57]],56:[[2,0,5,56],[4,1,4,57]],57:[[4,1,4,57],[3,0,5,59]],58:[[3,0,5,59],[5,1,4,60]],59:[[3,0,5,59],[5,1,4,60]],60:[[5,1,4,60],[4,0,5,62]],61:[[4,0,5,62]],62:[[4,0,5,62]],63:[[5,0,5,65]],64:[[5,0,5,65]],65:[[5,0,5,65]]};var A=_(1650);function Mt(f){return Object.prototype.hasOwnProperty.call(f,"armor")&&Object.prototype.hasOwnProperty.call(f,"usedArtifice")&&Object.prototype.hasOwnProperty.call(f,"usedMods")&&Object.prototype.hasOwnProperty.call(f,"statsWithMods")&&Object.prototype.hasOwnProperty.call(f,"classItemPerk")}function Ct(f,T,D,k,J,L,R){var c=f.selectedExotics[0]||0;let P=T.slice();if((!k.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||k.hash!=c)&&f.armorPerks[t.y.ArmorSlotHelmet].fixed&&f.armorPerks[t.y.ArmorSlotHelmet].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotHelmet].value!=k.perk)return{valid:!1};if((!J.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||J.hash!=c)&&f.armorPerks[t.y.ArmorSlotGauntlet].fixed&&f.armorPerks[t.y.ArmorSlotGauntlet].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotGauntlet].value!=J.perk)return{valid:!1};if((!L.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||L.hash!=c)&&f.armorPerks[t.y.ArmorSlotChest].fixed&&f.armorPerks[t.y.ArmorSlotChest].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotChest].value!=L.perk)return{valid:!1};if((!R.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||R.hash!=c)&&f.armorPerks[t.y.ArmorSlotLegs].fixed&&f.armorPerks[t.y.ArmorSlotLegs].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotLegs].value!=R.perk)return{valid:!1};if(f.armorPerks[t.y.ArmorSlotClass].fixed&&f.armorPerks[t.y.ArmorSlotClass].value!=M.Pn.None&&!D.has(f.armorPerks[t.y.ArmorSlotClass].value))return{valid:!1};P[k.perk]--,P[J.perk]--,P[L.perk]--,P[R.perk]--,c>0&&(k.hash==c?P[f.armorPerks[k.slot].value]--:J.hash==c?P[f.armorPerks[J.slot].value]--:L.hash==c?P[f.armorPerks[L.slot].value]--:R.hash==c&&P[f.armorPerks[R.slot].value]--);let v=0;for(let j=1;jT.minimumStatTiers[y].value||!T.allowExactStats&&w[y]/10>=T.minimumStatTiers[y].value+1))return null;let vt=j.filter(y=>(!y.isExotic||!T.ignoreExistingExoticArtificeSlots)&&y.perk==M.Pn.SlotArtifice||T.assumeEveryLegendaryIsArtifice&&!y.isExotic||T.assumeEveryExoticIsArtifice&&y.isExotic).length;v&&(vt+=1);const $=[Math.max(0,10*T.minimumStatTiers[0].value-w[0]),Math.max(0,10*T.minimumStatTiers[1].value-w[1]),Math.max(0,10*T.minimumStatTiers[2].value-w[2]),Math.max(0,10*T.minimumStatTiers[3].value-w[3]),Math.max(0,10*T.minimumStatTiers[4].value-w[4]),Math.max(0,10*T.minimumStatTiers[5].value-w[5])];if(T.onlyShowResultsWithNoWastedStats)for(let y=0;y<6;y++){const q=10-w[y]%10;$[y]=Math.max($[y],q<10?q:0)}const _t=[0,0,0,0,0,0];if(T.tryLimitWastedStats)for(let y=0;y<6;y++)0==$[y]&&!T.minimumStatTiers[y].fixed&&w[y]<100&&w[y]%10>0&&(_t[y]=10-w[y]%10);const Ot=_t.reduce((y,q)=>y+q,0),Zt=$[0]+$[1]+$[2]+$[3]+$[4]+$[5];if(Zt>50+3*vt)return null;let I;if(I=0==Zt&&0==Ot?[]:mt(T,$,_t,vt,c,T.modOptimizationStrategy),null==I)return null;const E=[Math.max(0,100-w[0]),Math.max(0,100-w[1]),Math.max(0,100-w[2]),Math.max(0,100-w[3]),Math.max(0,100-w[4]),Math.max(0,100-w[5])];let N=[],X=[];for(let y=0;y<4;y++)for(let q=y+1;q<5;q++)for(let H=q+1;H<6;H++){let at=$.slice();if(at[y]=E[y],at[q]=E[q],at[H]=E[H],at[0]+at[1]+at[2]+at[3]+at[4]+at[5]<=65){N.push([y,q,H]);for(let kt=H+1;kt<6;kt++){let bt=at.slice();bt[kt]=E[kt],bt[0]+bt[1]+bt[2]+bt[3]+bt[4]+bt[5]<=65&&X.push([y,q,H,kt])}}}if(N.length>0){for(let y of N){const q=$.slice();for(let at of y)q[at]=E[at];null!=mt(T,q,[0,0,0,0,0,0],vt,c,A.w.None)&&f.statCombo3x100.add((1<=T.minimumStatTiers[y].value&&H>f.maximumPossibleTiers[y]/10&&!(w[y]>=10*H);H--){const at=10-w[y]%10;if($[y]=Math.max(at<10?at:0,10*H-w[y]),null!=mt(T,$,[0,0,0,0,0,0],vt,c,A.w.None)){f.maximumPossibleTiers[y]=10*H;break}}$[y]=q}if(P)return[];const lt=I.filter(y=>y%3==0),z=I.filter(y=>y%3!=0);for(let y of I)w[Math.floor((y-1)/3)]+=M.K9[y][1];const tt=Yt(w);return T.onlyShowResultsWithNoWastedStats&&tt>0?null:function Ut(f,T,D,k,J,L,R,c){return{armor:[f.id,T.id,D.id,k.id],usedArtifice:J,usedMods:L,classItemPerk:M.Pn.None,statsWithMods:R,statsWithoutMods:c}}(D,k,J,L,lt,z,w,Tt)}function mt(f,T,D,k,J,L=A.w.None){const R=T[0]+T[1]+T[2]+T[3]+T[4]+T[5];if(R>65)return null;const c=f.onlyShowResultsWithNoWastedStats?ot:x,P=[c[T[0]]||[[0,0,0,0]],c[T[1]]||[[0,0,0,0]],c[T[2]]||[[0,0,0,0]],c[T[3]]||[[0,0,0,0]],c[T[4]]||[[0,0,0,0]],c[T[5]]||[[0,0,0,0]]];if(f.allowExactStats)for(let I=0;I<6;I++)f.minimumStatTiers[I].fixed&&T[I]>0&&(P[I]=ot[T[I]]||[[0,0,0,0]],P[I]=P[I].filter(E=>E[3]-T[I]<10));for(let I=0;I0){const E=c[D[I]].filter(N=>0==N[2]&&N[3]%10>0&&(D[I]+N[3])%10N+X[1]+X[2]:L==A.w.ReduceUsedModPoints?(E,N,X)=>E+Tt[X]*N[1]+vt[X]*N[2]:(E,N)=>E+N[3],0)}function _t(I,E=!1){const N=I.reduce((lt,z,tt)=>[lt[0]+z[0],lt[1]+z[1],lt[2]+z[2],lt[3]+z[3]-T[tt]],[0,0,0,0]);if($(I)>it||N[0]>k||N[1]+N[2]>j||N[3]<0)return!1;if(!E||5==et)return!0;let X=[];for(let lt=0;ltj)return!1;I.sort((N,X)=>X-N);for(let N=0;N0&&L!=A.w.None;t:for(let I of P[0])if(_t([I]))for(let E of P[1])if(_t([I,E]))for(let N of P[2])if(_t([I,E,N])&&!(Ot&&$([I,E,N])>=it))for(let X of P[3])if(_t([I,E,N,X])&&!(Ot&&$([I,E,N,X])>=it))for(let lt of P[4])if(_t([I,E,N,X,lt])&&!(Ot&&$([I,E,N,X,lt])>=it))e:for(let z of P[5]){let tt=[I,E,N,X,lt,z];if(!_t(tt,!0))continue;for(let q=0;q<6;q++)if(D[q]>0&&0==tt[q][3]&&null!=U)continue e;let y=$(tt);if(y100?f[M.WB.Mobility]-100:f[M.WB.Mobility]%10)+(f[M.WB.Resilience]>100?f[M.WB.Resilience]-100:f[M.WB.Resilience]%10)+(f[M.WB.Recovery]>100?f[M.WB.Recovery]-100:f[M.WB.Recovery]%10)+(f[M.WB.Discipline]>100?f[M.WB.Discipline]-100:f[M.WB.Discipline]%10)+(f[M.WB.Intellect]>100?f[M.WB.Intellect]-100:f[M.WB.Intellect]%10)+(f[M.WB.Strength]>100?f[M.WB.Strength]-100:f[M.WB.Strength]%10)}addEventListener("message",function(){var f=(0,u.Z)(function*({data:T}){const D=T.threadSplit,k=T.config;let J=T.selectedExotics,L=T.items;if(null==D||null==k||null==L)return;const R=Date.now();console.debug("START RESULTS BUILDER 2"),console.time(`total #${D.current}`),k.onlyShowResultsWithNoWastedStats=It.N.featureFlags.enableZeroWaste&&k.onlyShowResultsWithNoWastedStats,It.N.featureFlags.enableModslotLimitation||(k.maximumModSlots[t.y.ArmorSlotHelmet].value=5,k.maximumModSlots[t.y.ArmorSlotGauntlet].value=5,k.maximumModSlots[t.y.ArmorSlotChest].value=5,k.maximumModSlots[t.y.ArmorSlotLegs].value=5,k.maximumModSlots[t.y.ArmorSlotClass].value=5),console.log("Using config",T.config);let c=L.filter(Q=>Q.slot==t.y.ArmorSlotHelmet).filter(Q=>!k.useFotlArmor||[199733460,2545426109,3224066584].indexOf(Q.hash)>-1),P=L.filter(Q=>Q.slot==t.y.ArmorSlotGauntlet),v=L.filter(Q=>Q.slot==t.y.ArmorSlotChest),U=L.filter(Q=>Q.slot==t.y.ArmorSlotLegs);if(D.count>1){var it=[[c,c.length],[P,P.length],[v,v.length],[U,U.length]].sort((Q,Jt)=>Jt[1]-Q[1])[0][0],j=Math.round(it.length/D.count),et=j*D.current,w=et+j;D.current==D.count-1&&(w=it.length),it.splice(w),it.splice(0,et)}let Tt=L.filter(Q=>Q.slot==t.y.ArmorSlotClass),vt=Tt.filter(Q=>Q.isExotic).length,$=Tt.length-vt,_t=new Set(Tt.filter(Q=>!Q.isExotic).map(Q=>Q.perk)),Ot=new Set(Tt.filter(Q=>Q.isExotic).map(Q=>Q.perk));$>0&&(k.assumeEveryLegendaryIsArtifice||k.assumeClassItemIsArtifice)&&_t.add(M.Pn.SlotArtifice),vt>0&&k.assumeEveryExoticIsArtifice&&Ot.add(M.Pn.SlotArtifice),console.debug("items",JSON.stringify({helmets:c.length,gauntlets:P.length,chests:v.length,legs:U.length,availableClassItemTypes:_t}));const Zt={maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:new Set,statCombo4x100:new Set},I=function gt(f){const T=[0,0,0,0,0,0];for(const k of f.enabledMods)for(const J of Z.F[k].bonus)T[J.stat==M.AR.ClassAbilityRegenerationStat?[1,0,2][f.characterClass]:J.stat]+=J.value;return T}(k),E=function qt(f){let T=[];for(let D=0;DD>0).sort((D,k)=>k-D)}(k),X=J.length<=1,lt=_t.has(M.Pn.SlotArtifice),z=Ot.has(M.Pn.SlotArtifice),tt=k.selectedExotics.indexOf(g.dM)>-1,y=Tt.sort((Q,Jt)=>Q.masterworked?-1:1).find(Q=>Q.isExotic)||null,q=!!y&&k.selectedExotics.indexOf(y.hash)>-1;console.log("hasArtificeClassItem",lt);let H=[],at=0,Dt=0,kt=0,bt=!1,Pt=function ft(f,T,D,k){let J=0;const L=f.filter(et=>et.isExotic).length,R=f.length-L,c=T.filter(et=>et.isExotic).length,P=T.length-c,v=D.filter(et=>et.isExotic).length,U=D.length-v,it=k.filter(et=>et.isExotic).length,j=k.length-it;return J+=L*P*U*j,J+=R*c*U*j,J+=R*P*v*j,J+=R*P*U*it,J+=R*P*U*j,J}(c,P,v,U),Qt=0,ae=0;console.log("estimatedCalculations",Pt);let At=Pt>=1e6?125:75;console.time(`tm #${D.current}`);const te=!!y&&(y.masterworked||k.assumeExoticsMasterworked),se=k.assumeClassItemMasterworked||k.assumeLegendariesMasterworked;for(let[Q,Jt,Ht,Wt]of function*h(f,T,D,k,J,L){for(let R of f)for(let c of T)if(!(J&&R.isExotic&&c.isExotic))for(let P of D)if(!J||!R.isExotic&&!c.isExotic||!P.isExotic)for(let v of k)J&&(R.isExotic||c.isExotic||P.isExotic)&&v.isExotic||L&&!(R.isExotic||c.isExotic||P.isExotic||v.isExotic)||(yield[R,c,P,v])}(c,P,v,U,X,tt)){Qt++;const jt=Ct(k,E,_t,Q,Jt,Ht,Wt);if(!jt.valid)continue;const dt=!jt.requiredClassItemType||jt.requiredClassItemType==M.Pn.SlotArtifice,Gt=Q.isExotic||Jt.isExotic||Ht.isExotic||Wt.isExotic,l=Y(Zt,k,Q,Jt,Ht,Wt,I,N,bt,(lt||!Gt&&z&&!k.ignoreExistingExoticArtificeSlots)&&dt,q,q?te:se||!Gt&&te);null!=l&&(kt++,Mt(l)&&(l.classItemPerk=jt.requiredClassItemType||(lt?M.Pn.SlotArtifice:M.Pn.None),!Gt&&y&&q&&l.armor.push(y.id),H.push(l),at++,Dt++,bt=bt||k.limitParsedResults&&Dt>=3e4/D.count||Dt>=1e6/D.count)),kt%5e3==0&&ae+At=5e3&&(postMessage({runtime:Zt,results:H,done:!1,checkedCalculations:Qt,estimatedCalculations:Pt}),H=[],at=0)}console.timeEnd(`tm #${D.current}`),console.timeEnd(`total #${D.current}`),postMessage({runtime:Zt,results:H,done:!0,checkedCalculations:Qt,estimatedCalculations:Pt,stats:{permutationCount:kt,itemCount:L.length-Tt.length,totalTime:Date.now()-R}})});return function(T){return f.apply(this,arguments)}}())},2340:(ht,st,_)=>{_.d(st,{N:()=>u});const u={version:"2.6.4",revision:"f65a045",production:!0,beta:!1,canary:!1,apiKey:"9415df8eff46408aa9c0d51e4d69b94f",clientId:"37252",client_secret:"KnVcJPWr7C5y0loOfBoKSyQ-vWXR0JICrgb1aJLsLgg",offlineMode:!1,featureFlags:{enableModslotLimitation:!0,enableZeroWaste:!0,enableGuardianGamesFeatures:!1}}},1379:(ht,st,_)=>{var u=_(1481),t=_(4650),g=_(2340),Z=_(6895),M=_(5829),It=_(3683),ot=_(6630),x=_(5861),A=_(6831),Ut=_(529),Mt=_(591);let Ct=(()=>{class n{constructor(){this.__status={calculatingResults:!1,calculatingPermutations:!1,updatingResultsTable:!1,updatingInventory:!1,updatingManifest:!1,updatingVendors:!1,apiError:!1,authError:!1},this._status=new Mt.X(this.__status),this.status=this._status.asObservable()}getStatus(){return this.__status}modifyStatus(e){e(this.__status),console.log("modifyStatus",this.__status),this._status.next(this.__status)}setApiError(){this.__status.apiError||this.modifyStatus(e=>{e.apiError=!0})}clearApiError(){!this.__status.apiError||this.modifyStatus(e=>{e.apiError=!1})}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),gt=(()=>{class n{constructor(e,o,a){this.http=e,this.router=o,this.status=a,this._logoutEvent=new A.t(1),this.logoutEvent=this._logoutEvent.asObservable()}get refreshTokenExpired(){return this.refreshTokenExpiringAt (this.lastRefresh + timing)":Date.now()>e.lastRefresh+18e5}),!(e.refreshToken&&Date.now()e.lastRefresh+18e5)||(yield e.generateTokens(!0))})()}getCurrentMembershipData(){var e=this;return(0,x.Z)(function*(){const o=JSON.parse(localStorage.getItem("auth-membershipInfo")||"null");if(null==o){const a=e.getCurrentMembershipData();return localStorage.setItem("auth-membershipInfo",JSON.stringify(a)),a}return o})()}generateTokens(e=!1){var o=this;return(0,x.Z)(function*(){console.info("Generate auth tokens","refresh based on refresh_token:",e);const a=g.N.clientId,s=g.N.client_secret;let p=`grant_type=authorization_code&code=${o.authCode}&client_id=${a}&client_secret=${s}`;return e&&(p=`grant_type=refresh_token&refresh_token=${o.refreshToken}&client_id=${a}&client_secret=${s}`),yield o.http.post("https://www.bungie.net/Platform/App/OAuth/Token/",p,{headers:{"Content-Type":"application/x-www-form-urlencoded","X-API-Key":g.N.apiKey}}).toPromise().then(C=>(console.log("generateTokens",C),o.accessToken=C.access_token,o.refreshToken=C.refresh_token,o.refreshTokenExpiringAt=Date.now()+1e3*C.refresh_expires_in-1e4,o.lastRefresh=Date.now(),o.status.modifyStatus(d=>d.authError=!1),!0)).catch(function(){var C=(0,x.Z)(function*(d){return console.log({err:d}),o.status.modifyStatus(S=>S.authError=!0),!1});return function(d){return C.apply(this,arguments)}}())})()}isAuthenticated(){return!!this.accessToken}get authCode(){return localStorage.getItem("code")}set authCode(e){e?(console.info("Setting new auth code"),localStorage.setItem("code",""+e)):(console.info("Clearing auth code"),localStorage.removeItem("code"))}get accessToken(){return localStorage.getItem("accessToken")}set accessToken(e){e?(console.info("Setting new access token"),localStorage.setItem("accessToken",""+e)):(console.info("Clearing access token"),localStorage.removeItem("accessToken"))}get refreshToken(){return localStorage.getItem("refreshToken")}set refreshToken(e){e?(console.info("Setting new refresh token"),localStorage.setItem("refreshToken",""+e)):(console.info("Clearing refresh token"),localStorage.removeItem("refreshToken"))}get refreshTokenExpiringAt(){let e=localStorage.getItem("refreshTokenExpiringAt")||"0";return e?Number.parseInt(e):0}set refreshTokenExpiringAt(e){e?(console.info("Setting new refresh token"),localStorage.setItem("refreshTokenExpiringAt",""+e)):(console.info("Clearing refresh token"),localStorage.removeItem("refreshTokenExpiringAt"))}get lastRefresh(){let e=localStorage.getItem("lastRefresh")||"0";return e?Number.parseInt(e):0}set lastRefresh(e){e?localStorage.setItem("lastRefresh",e.toString()):localStorage.removeItem("lastRefresh")}clearManifestInfo(){localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("LastManifestUpdate")}clearLoginInfo(){this.lastRefresh=null,this.refreshTokenExpiringAt=null,this.authCode=null,this.accessToken=null,this.refreshToken=null}logout(){var e=this;return(0,x.Z)(function*(){if(g.N.offlineMode)console.debug("Offline mode, skipping logout");else try{e._logoutEvent.next(null),e.clearManifestInfo(),e.clearLoginInfo()}finally{yield e.router.navigate(["login"])}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Ut.eN),t.LFG(ot.F0),t.LFG(Ct))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),qt=(()=>{class n{constructor(e,o,a){this.activatedRoute=e,this.router=o,this.loginService=a}ngOnInit(){var e=this;this.activatedRoute.queryParams.subscribe(function(){var o=(0,x.Z)(function*(a){let s=a.code;window.location.search.indexOf("?code=")>-1&&(s=window.location.search.substr(6)),console.info({code:s}),s&&(e.loginService.authCode=s,console.info("Generate tokens with the new code"),yield e.loginService.generateTokens(),console.info("Now navigate to /"),yield e.router.navigate(["/"]))});return function(a){return o.apply(this,arguments)}}())}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(ot.gz),t.Y36(ot.F0),t.Y36(gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-handle-bungie-login"]],decls:0,vars:0,template:function(e,o){}}),n})();function Ft(n,i){1&n&&(t.TgZ(0,"mat-toolbar",5),t._UZ(1,"span",2),t._uU(2," You are using the "),t.TgZ(3,"b"),t._uU(4,"\xa0unstable\xa0"),t.qZA(),t._uU(5," canary build. Some features may be unfinished or vanish. Please report any issues you encounter. "),t._UZ(6,"span",2),t.qZA())}let h=(()=>{class n{constructor(){this.title="D2ArmorPicker",this.is_beta=g.N.beta,this.is_canary=g.N.canary,console.log("PRODUCTION?",g.N.production)}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-root"]],decls:9,vars:1,consts:[["class","canary-warning","color","primary",4,"ngIf"],["color","accent",1,"bungie-day",2,"display","none"],[1,"header-spacer"],["fxHide.xs","","src","../assets/bungie_foundation.png",1,"donordrive"],["href","https://tiltify.com/@mijago/d2armorpicker","target","_blank","title","Support the Bungie Foundation!"],["color","primary",1,"canary-warning"]],template:function(e,o){1&e&&(t.YNc(0,Ft,7,0,"mat-toolbar",0),t.TgZ(1,"mat-toolbar",1),t._UZ(2,"span",2)(3,"img",3),t.TgZ(4,"a",4),t._uU(5," Please support us at the Bungie Foundation 2024 \u2764 "),t.qZA(),t._UZ(6,"span",2),t.qZA(),t._UZ(7,"app-handle-bungie-login")(8,"router-outlet")),2&e&&t.Q6J("ngIf",o.is_canary)},dependencies:[Z.O5,M.b8,It.Ye,ot.lC,qt],styles:[".bungie-day[_ngcontent-%COMP%], .canary-warning[_ngcontent-%COMP%]{height:-moz-fit-content;height:fit-content;position:relative;max-width:100vw;word-break:break-all}.canary-warning[_ngcontent-%COMP%]{font-size:11pt}.bungie-day[_ngcontent-%COMP%] img.donordrive[_ngcontent-%COMP%]{height:30px;margin-left:2px;margin-right:2px}.bungie-day[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .bungie-day[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:visited{color:#fff}.header-spacer[_ngcontent-%COMP%]{flex:1 1 auto}"]}),n})();var ft=_(1576),rt=_(4859),Y=_(3546),mt=_(7084);let Vt=(()=>{class n{constructor(){}startLogin(){window.location.href=`https://www.bungie.net/en/OAuth/Authorize?client_id=${g.N.clientId}&response_type=code&reauth=true`}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-login"]],decls:76,vars:0,consts:[["mat-card-avatar","",1,"example-header-image"],["href","https://ko-fi.com/mijago","target","_blank"],["href","https://github.com/Mijago/D2ArmorPicker","target","_blank"],["color","primary","mat-raised-button","",3,"click"],[1,"mat-elevation-z11"],["src","assets/info/statselection.png",1,"image-example"],["src","assets/resultOverviewWithFlex.png",1,"image-example"],["src","assets/info/whattodonow.png",1,"image-example"],["src","assets/info/armorClustering.png",1,"image-example"],["fxLayoutGap","10px","fxLayout","row",1,"armor-image-container"],["src","assets/info/cluster-example/img.png"],["src","assets/info/cluster-example/img_1.png"],["src","assets/info/cluster-example/img_2.png"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card")(1,"mat-card-header"),t._UZ(2,"div",0),t.TgZ(3,"mat-card-title"),t._uU(4,"Destiny 2 Armor Picker"),t.qZA(),t.TgZ(5,"mat-card-subtitle"),t._uU(6,"A simple armor min-max tool by Mijago."),t.qZA()(),t.TgZ(7,"mat-card-content")(8,"p"),t._uU(9," This tool allows you to select the optimal armor from your inventory and vault to satisfy your stat needs. It also tells you which stat mods you have to use! "),t._UZ(10,"br")(11,"br"),t._uU(12," You have to log in to enable this tool to grab your armor from the API."),t._UZ(13,"br"),t._uU(14," If you like my tools and want to support me, head to "),t.TgZ(15,"a",1),t._uU(16,"ko-fi.com"),t.qZA(),t._uU(17," and buy me a coffee! \u2764 "),t._UZ(18,"br"),t._uU(19," If you found a bug or have a feature request, please open an issue "),t.TgZ(20,"a",2),t._uU(21,"in the Github Repository"),t.qZA(),t._uU(22,"! "),t.qZA(),t.TgZ(23,"p"),t._uU(24," D2ArmorPicker uses the Bungie.net api and it's OAuth authorization. You log in on an official Bungie.net page and D2ArmorPicker receives a temporary login token from Bungie. That means it does not receive your credentials. "),t.qZA()(),t.TgZ(25,"mat-card-actions")(26,"button",3),t.NdJ("click",function(){return o.startLogin()}),t._uU(27,"Login"),t.qZA()()(),t.TgZ(28,"mat-card")(29,"mat-card-title"),t._uU(30," Examples "),t.qZA(),t.TgZ(31,"mat-card-subtitle"),t._uU(32,"Some examples to show what D2ArmorPicker can do."),t.qZA(),t.TgZ(33,"mat-card-content")(34,"mat-accordion")(35,"mat-expansion-panel",4)(36,"mat-expansion-panel-header")(37,"mat-panel-title"),t._uU(38," Stat Selection "),t.qZA(),t.TgZ(39,"mat-panel-description"),t._uU(40," The heart of this tool. "),t.qZA()(),t.TgZ(41,"p"),t._uU(42," First, you are able to select the stats you want. The tool will automatically parse all your armor (including your vault and your postmaster), and then show you which stat selections are even possible with your current gear. The tool also shows you all possible loadouts with three or four stats at 100! "),t._UZ(43,"img",5)(44,"br")(45,"br"),t._uU(46," There are also additional settings. You can add stasis fragments and negative and positive stat mods to your builds. Also, you can select 0-waste builds (so only flat numbers). D2ArmorPicker will also add stat mods to reduce wasted stats wherever possible! "),t.qZA()(),t.TgZ(47,"mat-expansion-panel",4)(48,"mat-expansion-panel-header")(49,"mat-panel-title"),t._uU(50," Result Display "),t.qZA(),t.TgZ(51,"mat-panel-description"),t._uU(52," What you will get from this tool. "),t.qZA()(),t.TgZ(53,"p"),t._uU(54," D2ArmorPicker will show you a table with many results. You can sort and filter it, and then you click on one row to see which items are needed for your desired stats. "),t._UZ(55,"img",6)(56,"br")(57,"br"),t._uU(58," The page will also give you a detailed description of what you have to do in order to get to your desired build. The following screenshot shows one of the more detailed descriptions: "),t._UZ(59,"img",7),t.qZA()(),t.TgZ(60,"mat-expansion-panel",4)(61,"mat-expansion-panel-header")(62,"mat-panel-title"),t._uU(63," Armor Clustering "),t.qZA(),t.TgZ(64,"mat-panel-description"),t._uU(65," For the time when your vault is overflowing. "),t.qZA()(),t.TgZ(66,"div"),t._uU(67," Since version 2.0.14, D2ArmorPicker has an armor clustering feature. This means that it takes all your armor and groups it in 25 groups, where all items in one group has very similar stats. This can help you to clear out your vault, especially from duplicated armor rolls. "),t._UZ(68,"img",8)(69,"br")(70,"br"),t._uU(71," Take Cluster 1, for example. I copy the DIM-Query, enter it into DIM and see the following results: "),t.TgZ(72,"div",9),t._UZ(73,"img",10)(74,"img",11)(75,"img",12),t.qZA()()()()()())},dependencies:[ft.xw,ft.SQ,rt.lW,Y.a8,Y.dk,Y.dn,Y.n5,Y.$j,Y.hq,Y.kc,mt.pp,mt.ib,mt.yz,mt.yK,mt.u4],styles:["mat-card[_ngcontent-%COMP%]{max-width:600px;margin-bottom:4px;margin-left:auto;margin-right:auto}button[_ngcontent-%COMP%]{position:absolute;right:10px;bottom:10px}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}.example-header-image[_ngcontent-%COMP%]{background-image:url(superGreatLogo.5307f2494314b5e1.png);background-size:cover}.image-example[_ngcontent-%COMP%]{max-width:100%}.armor-image-container[_ngcontent-%COMP%]{overflow:auto}.armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{max-height:300px}"]}),n})();var Yt=_(8746);let f=(()=>{class n{constructor(e,o){this.auth=e,this.router=o}canActivate(e,o){return!!this.auth.isAuthenticated()||(this.router.navigate(["login"]),!1)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(ot.F0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),T=(()=>{class n{constructor(e,o){this.auth=e,this.router=o}canActivate(e,o){return!this.auth.isAuthenticated()||(this.router.navigate(["/"]),!1)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(ot.F0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var D=_(2289),k=_(4850),J=_(5154),L=_(13),R=_(8929),c=_(1043),P=_(3244),v=_(6471),U=_(8333),it=_(1650);function j(n){return{[c.WB.Mobility]:{fixed:!1,value:n},[c.WB.Resilience]:{fixed:!1,value:n},[c.WB.Recovery]:{fixed:!1,value:n},[c.WB.Discipline]:{fixed:!1,value:n},[c.WB.Intellect]:{fixed:!1,value:n},[c.WB.Strength]:{fixed:!1,value:n}}}class et{constructor(){this.characterClass=0,this.addConstent1Resilience=!1,this.assumeClassItemIsArtifice=!1,this.assumeEveryLegendaryIsArtifice=!1,this.assumeEveryExoticIsArtifice=!1,this.disabledItems=[],this.minimumStatTiers={[c.WB.Mobility]:{fixed:!1,value:0},[c.WB.Resilience]:{fixed:!1,value:0},[c.WB.Recovery]:{fixed:!1,value:0},[c.WB.Discipline]:{fixed:!1,value:0},[c.WB.Intellect]:{fixed:!1,value:0},[c.WB.Strength]:{fixed:!1,value:0}},this.maximumStatMods=5,this.allowExactStats=!1,this.maximumModSlots={[v.y.ArmorSlotHelmet]:{fixed:!1,value:5},[v.y.ArmorSlotGauntlet]:{fixed:!1,value:5},[v.y.ArmorSlotChest]:{fixed:!1,value:5},[v.y.ArmorSlotLegs]:{fixed:!1,value:5},[v.y.ArmorSlotClass]:{fixed:!1,value:5},[v.y.ArmorSlotNone]:{fixed:!1,value:5}},this.putArtificeMods=!0,this.useFotlArmor=!0,this.allowBlueArmorPieces=!0,this.ignoreSunsetArmor=!1,this.includeVendorRolls=!1,this.includeCollectionRolls=!1,this.assumeLegendariesMasterworked=!0,this.assumeExoticsMasterworked=!0,this.assumeClassItemMasterworked=!0,this.onlyUseMasterworkedExotics=!1,this.onlyUseMasterworkedLegendaries=!1,this.modOptimizationStrategy=it.w.None,this.limitParsedResults=!0,this.tryLimitWastedStats=!1,this.onlyShowResultsWithNoWastedStats=!1,this.showWastedStatsColumn=!1,this.showPotentialTierColumn=!1,this.selectedModElement=U.O.Stasis,this.enabledMods=[],this.selectedExotics=[],this.ignoreExistingExoticArtificeSlots=!1,this.armorPerks={[v.y.ArmorSlotHelmet]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotGauntlet]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotChest]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotLegs]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotClass]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotNone]:{fixed:!0,value:c.Pn.None}}}static buildEmptyConfiguration(){return{ignoreExistingExoticArtificeSlots:!1,allowExactStats:!1,enabledMods:[],disabledItems:[],addConstent1Resilience:!1,assumeEveryLegendaryIsArtifice:!1,assumeEveryExoticIsArtifice:!1,assumeClassItemIsArtifice:!1,putArtificeMods:!0,useFotlArmor:!1,maximumStatMods:P.Qj,onlyUseMasterworkedExotics:!1,onlyUseMasterworkedLegendaries:!1,ignoreSunsetArmor:!1,includeCollectionRolls:!1,includeVendorRolls:!1,allowBlueArmorPieces:!0,assumeLegendariesMasterworked:!0,assumeExoticsMasterworked:!0,assumeClassItemMasterworked:!0,limitParsedResults:!0,modOptimizationStrategy:it.w.None,tryLimitWastedStats:!1,onlyShowResultsWithNoWastedStats:!1,showWastedStatsColumn:!1,showPotentialTierColumn:!1,characterClass:0,selectedModElement:U.O.Stasis,selectedExotics:[],maximumModSlots:{[v.y.ArmorSlotHelmet]:{fixed:!1,value:5},[v.y.ArmorSlotGauntlet]:{fixed:!1,value:5},[v.y.ArmorSlotChest]:{fixed:!1,value:5},[v.y.ArmorSlotLegs]:{fixed:!1,value:5},[v.y.ArmorSlotClass]:{fixed:!1,value:5},[v.y.ArmorSlotNone]:{fixed:!1,value:5}},armorPerks:{[v.y.ArmorSlotHelmet]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotGauntlet]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotChest]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotLegs]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotClass]:{fixed:!0,value:c.Pn.None},[v.y.ArmorSlotNone]:{fixed:!0,value:c.Pn.None}},minimumStatTiers:j(0)}}}var w=(()=>{return(n=w||(w={}))[n.Inventory=0]="Inventory",n[n.Collections=1]="Collections",n[n.Vendor=2]="Vendor",w;var n})();function Tt(n,i,e){if(!n)throw new Error("Missing manifest item");const o=Object.assign({id:-1,itemInstanceId:i,mayBeBugged:!1,masterworked:!1,energyLevel:0,mobility:0,resilience:0,recovery:0,discipline:0,intellect:0,strength:0,source:e,created_at:Date.now(),updated_at:Date.now()},n);return o.id=void 0,(2545426109==n.hash||199733460==n.hash||3224066584==n.hash)&&(o.slot=v.y.ArmorSlotHelmet),o}function vt(n,i){n.mobility=i[2996146975],n.resilience=i[392767087],n.recovery=i[1943323491],n.discipline=i[1735777505],n.intellect=i[144602215],n.strength=i[4244567218]}function _t(n){return n.mobility+n.resilience+n.recovery+n.discipline+n.intellect+n.strength}var Ot=_(6982),Zt=_(4682);let I=(()=>{class n extends Zt.v{constructor(e){var o;super(),o=this,this.auth=e,this.version(this.verno).upgrade(function(){var a=(0,x.Z)(function*(s){o.auth.clearManifestInfo()});return function(s){return a.apply(this,arguments)}}()),this.auth.logoutEvent.subscribe(function(){var a=(0,x.Z)(function*(s){yield o.clearDatabase()});return function(s){return a.apply(this,arguments)}}())}initialize(){this.open(),this.auth.clearManifestInfo()}writeManifestArmor(e,o){var a=this;return(0,x.Z)(function*(){yield a.manifestArmor.clear(),yield a.manifestArmor.bulkPut(e),localStorage.setItem("LastManifestUpdate",Date.now().toString()),localStorage.setItem("last-manifest-db-name",a.manifestArmor.db.name),localStorage.setItem("last-manifest-revision",g.N.revision),localStorage.setItem("last-manifest-version",o)})()}clearDatabase(){var e=this;return(0,x.Z)(function*(){localStorage.removeItem("LastManifestUpdate"),localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("last-manifest-revision"),localStorage.removeItem("last-manifest-db-name"),yield e.inventoryArmor.clear()})()}resetDatabase(e=!0){var o=this;return(0,x.Z)(function*(){localStorage.removeItem("LastManifestUpdate"),localStorage.removeItem("last-manifest-revision"),localStorage.removeItem("last-manifest-db-name"),localStorage.removeItem("vendor-next-refresh-time"),localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("last-armor-db-name"),yield o.delete(),e&&o.initialize()})()}lastManifestUpdate(){const e=localStorage.getItem("LastManifestUpdate"),o=localStorage.getItem("last-manifest-version"),a=localStorage.getItem("last-manifest-revision"),s=localStorage.getItem("last-manifest-db-name");return e&&a&&s&&o&&localStorage.getItem("last-manifest-revision")===g.N.revision&&s===this.inventoryArmor.db.name?{updatedAt:parseInt(e),version:o}:void 0}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var E=_(9598),N=_(443);const X={outputEncoding:"Base64"},lt={inputEncoding:"Base64",outputEncoding:"String"};let z=(()=>{class n{constructor(){this.__configuration=this.loadCurrentConfiguration(),this._configuration=new Mt.X(this.__configuration),this.configuration=this._configuration.asObservable(),this._storedConfigurations=new Mt.X(this.listSavedConfigurations()),this.storedConfigurations=this._storedConfigurations.asObservable()}get readonlyConfigurationSnapshot(){return Object.assign(this.__configuration,{})}modifyConfiguration(e){e(this.__configuration),this.saveCurrentConfiguration(this.__configuration)}saveConfiguration(e,o){let a=this.listSavedConfigurations(),s=this.listSavedConfigurations().map((m,p)=>[m,p]).filter(m=>m[0].name==e)[0];s&&a.splice(s[1],1),a.push({configuration:o,name:e,version:g.N.version}),a=a.sort((m,p)=>m.namep.name?1:0);const r=E.compress(JSON.stringify(a),X);localStorage.setItem("storedConfigurations",r),this._storedConfigurations.next(a)}doesSavedConfigurationExist(e){return this.listSavedConfigurations().filter(o=>o.name==e).length>0}loadSavedConfiguration(e){let o=this.listSavedConfigurations().filter(a=>a.name==e)[0];return!!o&&(this.saveCurrentConfiguration(o.configuration),!0)}checkAndFixOldSavedConfigurations(e){if(e.configuration=Object.assign(et.buildEmptyConfiguration(),e.configuration),e.configuration.hasOwnProperty("minimumStatTier")){let o=e.configuration.minimumStatTier;e.configuration.minimumStatTiers[c.WB.Mobility].value=o[c.WB.Mobility],e.configuration.minimumStatTiers[c.WB.Resilience].value=o[c.WB.Resilience],e.configuration.minimumStatTiers[c.WB.Recovery].value=o[c.WB.Recovery],e.configuration.minimumStatTiers[c.WB.Discipline].value=o[c.WB.Discipline],e.configuration.minimumStatTiers[c.WB.Intellect].value=o[c.WB.Intellect],e.configuration.minimumStatTiers[c.WB.Strength].value=o[c.WB.Strength],delete e.configuration.minimumStatTier}if(e.configuration.hasOwnProperty("selectedExoticHash")&&(e.configuration.selectedExotics=[e.configuration.selectedExoticHash],delete e.configuration.selectedExoticHash),e.configuration.hasOwnProperty("maximumStatMods")){for(let a=e.configuration.maximumStatMods;a<5;a++)e.configuration.maximumModSlots[1+a].value=0;delete e.configuration.maximumStatMods}e.configuration.enabledMods=e.configuration.enabledMods.filter(o=>!!N.F[o]),e.configuration.limitParsedResults=!0,e.configuration.addConstent1Resilience=!1}listSavedConfigurations(){let e;try{e=localStorage.getItem("storedConfigurations")||"[]","["!=e.substr(0,1)&&(e=E.decompress(e,lt))}catch{e=[]}let o=JSON.parse(e)||[];return o=o.sort((a,s)=>a.names.name?1:0),o.forEach(a=>this.checkAndFixOldSavedConfigurations(a)),o}deleteStoredConfiguration(e){let o=this.listSavedConfigurations(),a=this.listSavedConfigurations().map((s,r)=>[s,r]).filter(s=>s[0].name==e)[0];a&&o.splice(a[1],1),localStorage.setItem("storedConfigurations",E.compress(JSON.stringify(o),X)),this._storedConfigurations.next(o)}saveCurrentConfigurationToName(e){this.saveConfiguration(e,this.__configuration)}saveCurrentConfiguration(e){console.debug("write configuration",e),this.__configuration=Object.assign(et.buildEmptyConfiguration(),e),this.__configuration.enabledMods=[].concat(this.__configuration.enabledMods),this.__configuration.minimumStatTiers=Object.assign({},this.__configuration.minimumStatTiers);const o=E.compress(JSON.stringify(this.__configuration),X);localStorage.setItem("currentConfig",o),this._configuration.next(Object.assign({},this.__configuration))}loadCurrentConfiguration(){let e;try{e=localStorage.getItem("currentConfig")||"{}","{"!=e.substr(0,1)&&(e=E.decompress(e,lt))}catch{e={}}var o={name:"dummy",version:"1",configuration:JSON.parse(e)};return this.checkAndFixOldSavedConfigurations(o),o.configuration}getCurrentConfigBase64Compressed(){let e=localStorage.getItem("currentConfig")||"{}";return"{"==e.substr(0,1)&&(e=E.compress(e,{outputEncoding:"Base64"})),e}getAllStoredConfigurationsBase64Compressed(){let e=localStorage.getItem("storedConfigurations")||"[]";return"["==e.substr(0,1)&&(e=E.compress(e,{outputEncoding:"Base64"})),e}getStoredConfigurationBase64Compressed(e){let o=this.listSavedConfigurations().filter(a=>a.name==e)[0];return o?E.compress(JSON.stringify(o),{outputEncoding:"Base64"}):""}resetCurrentConfiguration(){this.saveCurrentConfiguration(et.buildEmptyConfiguration())}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var tt=_(8012),y=_(1016),q=_(9973);let H=(()=>{class n{constructor(e,o,a){this.authService=e,this.http=o,this.status=a}$httpWithoutBearerToken(e){var o=this;return(0,x.Z)(function*(){return o.$http(e,!0,!1,2)})()}$httpWithoutApiKey(e){var o=this;return(0,x.Z)(function*(){return o.$http(e,!1,!1,2)})()}$httpPost(e){var o=this;return(0,x.Z)(function*(){return o.http.post(e.url,e.body,{params:e.params,headers:{"X-API-Key":g.N.apiKey,Authorization:"Bearer "+o.authService.accessToken}}).pipe((0,q.X)(2)).toPromise().catch(function(){var a=(0,x.Z)(function*(s){console.error(s)});return function(s){return a.apply(this,arguments)}}())})()}$http(e,o=!0,a=!0,s=2){var r=this;return(0,x.Z)(function*(){let m={params:e.params,headers:{}};return o&&(m.headers["X-API-Key"]=g.N.apiKey),a&&(m.headers.Authorization="Bearer "+r.authService.accessToken),r.http.get(e.url,m).pipe((0,q.X)(s)).toPromise().then(p=>(r.status.clearApiError(),p)).catch(function(){var p=(0,x.Z)(function*(C){console.error(C),g.N.offlineMode?console.debug("Offline mode, ignoring API error"):("SystemDisabled"==C.error?.ErrorStatus&&(console.info("System is disabled. Revoking auth, must re-login"),r.status.setApiError()),"Internal Server Error"!=C.ErrorStatus&&console.info("API-Error"))});return function(C){return p.apply(this,arguments)}}())})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(Ut.eN),t.LFG(Ct))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var at=_(9891);let Dt=(()=>{class n{constructor(e,o,a){this.http=e,this.status=o,this.auth=a,this.auth.logoutEvent.subscribe(s=>this.clearCachedData())}clearCachedData(){localStorage.removeItem("auth-membershipInfo"),localStorage.removeItem("auth-membershipInfo-date")}getMembershipDataForCurrentUser(){var e=this;return(0,x.Z)(function*(){var o=JSON.parse(localStorage.getItem("auth-membershipInfo")||"null"),a=JSON.parse(localStorage.getItem("auth-membershipInfo-date")||"0");if(o&&Date.now()-a<864e5)return console.log("getMembershipDataForCurrentUser -> loading cached! "),o;console.info("BungieApiService","getMembershipDataForCurrentUser");let r=(yield(0,at.Rm)(p=>e.http.$http(p)))?.Response.destinyMemberships;console.info("Memberships:",r),r=r.filter(p=>0==p.crossSaveOverride||p.crossSaveOverride==p.membershipType),console.info("Filtered Memberships:",r);let m=null;if(1==r?.length)m=r?.[0];else{let p=0,C=0;for(let d in r){const S=r?.[d],F=yield(0,tt.Ai)(G=>e.http.$http(G),{components:[100],membershipType:S.membershipType,destinyMembershipId:S.membershipId});if(F&&F.Response?.profile.data?.dateLastPlayed){let G=Date.parse(F.Response?.profile.data?.dateLastPlayed);G>C&&(C=G,p=d)}}console.info("getMembershipDataForCurrentUser","Selected membership data for the last logged in membership."),m=r?.[p]}return localStorage.setItem("auth-membershipInfo",JSON.stringify(m)),localStorage.setItem("auth-membershipInfo-date",JSON.stringify(Date.now())),m})()}getCharacters(){var e=this;return(0,x.Z)(function*(){let o=yield e.getMembershipDataForCurrentUser();if(!o)return e.status.setApiError(),[];const a=yield(0,tt.Ai)(s=>e.http.$http(s),{components:[200],membershipType:o.membershipType,destinyMembershipId:o.membershipId});return a?.Response.characters.data&&e.status.clearApiError(),Object.values(a?.Response.characters.data||{}).map(s=>({characterId:s.characterId,clazz:s.classType,emblemUrl:s.emblemBackgroundPath,lastPlayed:Date.parse(s.dateLastPlayed)}))||[]})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(H),t.LFG(Ct),t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function kt(n,i,e,o){const a={2996146975:0,392767087:0,1943323491:0,1735777505:0,144602215:0,4244567218:0};for(let r of i)r.statTypeHash in a&&(a[r.statTypeHash]+=r.value);if(n.slot!=v.y.ArmorSlotClass){const r=[e[6],e[7],e[8],e[9]];n.statPlugHashes=r;var s=r.map(m=>o[m||""]).filter(m=>null!=m);for(let m of s)for(let p of m.investmentStats)p.statTypeHash in a&&(a[p.statTypeHash]+=p.value)}vt(n,a)}let bt=(()=>{class n{constructor(e,o,a,s,r){var m=this;this.status=e,this.http=o,this.db=a,this.config=s,this.membership=r,this.config_assumeEveryLegendaryIsArtifice=!1,this.config.configuration.subscribe(function(){var p=(0,x.Z)(function*(C){m.config_assumeEveryLegendaryIsArtifice=C.assumeEveryLegendaryIsArtifice});return function(C){return p.apply(this,arguments)}}())}transferItem(e,o,a=!1){var s=this;return(0,x.Z)(function*(){let r=yield s.membership.getMembershipDataForCurrentUser();if(!r)return s.status.setApiError(),!1;s.status.clearApiError();let m=yield(0,tt.rV)(C=>s.http.$http(C),{membershipType:r.membershipType,destinyMembershipId:r.membershipId,itemInstanceId:e,components:[307]}),p=!1;if(!m)return!1;if(m.Response.characterId!=o){2!=m.Response.item.data?.location&&(yield s.moveItemToVault(m.Response.item.data?.itemInstanceId||""),m=yield(0,tt.rV)(d=>s.http.$http(d),{membershipType:r.membershipType,destinyMembershipId:r.membershipId,itemInstanceId:e,components:[307]}));const C={characterId:o,membershipType:3,itemId:m?.Response.item.data?.itemInstanceId||"",itemReferenceHash:m?.Response.item.data?.itemHash||0,stackSize:1,transferToVault:!1};p=!!(yield(0,tt.ux)(d=>s.http.$httpPost(d),C))}if(a){let C={characterId:o,membershipType:3,stackSize:1,itemId:m?.Response.item.data?.itemInstanceId||"",itemReferenceHash:m?.Response.item.data?.itemHash||0};p=!!(yield(0,tt.DH)(d=>s.http.$httpPost(d),C))}return p})()}moveItemToVault(e){var o=this;return(0,x.Z)(function*(){console.info("moveItemToVault",e);let a=yield o.membership.getMembershipDataForCurrentUser();if(!a)return void o.status.setApiError();o.status.clearApiError();const s=yield(0,tt.rV)(m=>o.http.$http(m),{membershipType:a.membershipType,destinyMembershipId:a.membershipId,itemInstanceId:e,components:[307]}),r={characterId:s?.Response.characterId||"",membershipType:3,itemId:s?.Response.item.data?.itemInstanceId||"",itemReferenceHash:s?.Response.item.data?.itemHash||0,stackSize:1,transferToVault:!0};yield(0,tt.ux)(m=>o.http.$httpPost(m),r)})()}getUnlockedExoticArmor(e){var o=this;return(0,x.Z)(function*(){const a=(yield o.db.manifestCollectibles.toArray()).reduce((r,m)=>(r[m.hash]=m.itemHash,r),{}),s=Object.values(e).flatMap(r=>Object.entries(r.collectibles??{})).filter(([r,{state:m}])=>0==(1&m)&&a[parseInt(r)]).map(([r,m])=>a[parseInt(r)]);return new Set(s)})()}updateArmorItems(e=!1){var o=this;return(0,x.Z)(function*(){if(g.N.offlineMode)return void console.info("BungieApiService","updateArmorItems","offline mode, skipping");if(!e&&localStorage.getItem("LastArmorUpdate")&&localStorage.getItem("last-armor-db-name")==o.db.inventoryArmor.db.name&&Date.now()-Number.parseInt(localStorage.getItem("LastArmorUpdate")||"0")<18e5)return;let a=yield o.membership.getMembershipDataForCurrentUser();if(!a)return void o.status.setApiError();o.status.clearApiError(),console.info("BungieApiService","getProfile");let s=yield(0,tt.Ai)(b=>o.http.$http(b),{components:[205,201,103,102,304,300,302,305,308,800],membershipType:a.membershipType,destinyMembershipId:a.membershipId});const r=yield o.getUnlockedExoticArmor(s.Response.characterCollectibles.data??{});let m=s.Response.profileInventory.data?.items||[];for(let b in s.Response.characterEquipment.data)m=m.concat(s.Response.characterEquipment.data[b].items);for(let b in s.Response.characterInventories.data)m=m.concat(s.Response.characterInventories.data[b].items);var p=m.filter(b=>[3853748946,4257549984,4257549985,3467984096].indexOf(b.itemHash)>-1).reduce((b,ut)=>(ut.itemHash.toString()in b||(b[ut.itemHash]=0),b[ut.itemHash]+=ut.quantity,b),{});let C=s.Response.profileCurrencies.data?.items.filter(b=>3159615086==b.itemHash)||[];p[3159615086]=C.length>0?C[0].quantity:0,localStorage.setItem("stored-materials",JSON.stringify(p));const d=new Set(m.map(b=>b.itemHash));r.forEach(b=>d.add(b));let S=yield o.db.manifestArmor.toArray();const F=S.filter(b=>d.has(b.hash)),G=S.filter(b=>19==b.itemType);let K=Object.fromEntries(F.map(b=>[b.hash,b])),ct=Object.fromEntries(G.map(b=>[b.hash,b])),O=m.filter(b=>!!b.itemInstanceId).filter(b=>3284755031!==b.bucketHash).filter(b=>!!((s.Response.itemComponents.stats.data||{})[b.itemInstanceId||""]?.stats||{})[392767087]).filter(b=>!!((s.Response.itemComponents.instances.data||{})[b.itemInstanceId||""]||{}).energy).map(b=>{let nt=(s.Response.itemComponents.instances.data||{})[b.itemInstanceId||""]||{};if(!K[b.itemHash])return console.warn("Missing manifest item for item hash",b.itemHash),null;let V=Tt(K[b.itemHash],b.itemInstanceId||"",w.Inventory);V.masterworked=!!nt.energy&&10==nt.energy.energyCapacity,V.energyLevel=nt.energy?nt.energy.energyCapacity:0;const me=(s.Response.itemComponents.sockets.data||{})[b.itemInstanceId]?.sockets.map(Xt=>Xt.plugHash)??[];return kt(V,K[b.itemHash]?.investmentStats??[],me,ct),V.perk==c.Pn.SlotArtifice?(((s.Response.itemComponents.perks.data||{})[b.itemInstanceId||""]||{}).perks||[]).filter(ye=>229248542==ye.perkHash).length>0||(V.perk=c.Pn.None):V.isExotic&&me.filter(ie=>720825311==ie).length>0&&(V.perk=c.Pn.SlotArtifice),V}).filter(Boolean);const B=Array.from(r).map(b=>{const ut=K[b];if(!ut)return console.error("Couldn't find manifest item for exotic",b),null;const nt=Tt(ut,`c${ut.hash}`,w.Collections);return kt(nt,ut.investmentStats,ut.socketEntries.map(V=>V.singleInitialItemHash),ct),nt}).filter(Boolean);return O=O.concat(B),O=O.filter(b=>!b.statPlugHashes||null!=b.statPlugHashes[0]),yield o.updateDatabaseItems(O),localStorage.setItem("LastArmorUpdate",Date.now().toString()),localStorage.setItem("last-armor-db-name",o.db.inventoryArmor.db.name),o.status.clearApiError(),O})()}updateDatabaseItems(e){var o=this;return(0,x.Z)(function*(){yield o.db.inventoryArmor.filter(r=>r.source==w.Inventory).delete();const s=(yield o.db.inventoryArmor.toArray()).filter(r=>null==r.source||null==r.source).map(r=>r.id);yield o.db.inventoryArmor.bulkDelete(s),yield o.db.inventoryArmor.bulkAdd(e)})()}getArmorPerk(e){if(g.N.featureFlags.enableGuardianGamesFeatures&&(1013401891===e.hash||366019830===e.hash||537041732==e.hash))return c.Pn.GuardianGamesClassItem;const o=e.sockets?.socketEntries??[];if(o.find(a=>1402==a.reusablePlugSetHash)||o.find(a=>1403==a.reusablePlugSetHash))return c.Pn.SlotArtifice;for(const a of o){let s=a.singleInitialItemHash;if(!s)continue;s=c.ED[s]||s;const r=Object.entries(c.DH).find(m=>m[1]==s);if(r)return parseInt(r[0])}return c.Pn.None}updateVendorNames(e){var o=this;return(0,x.Z)(function*(){const s=Object.values(e.DestinyVendorDefinition).map(r=>({vendorId:r.hash,vendorName:r.displayProperties.name}));yield o.db.vendorNames.clear(),yield o.db.vendorNames.bulkAdd(s)})()}updateAbilities(e){return(0,x.Z)(function*(){const o=Object.values(e.DestinyInventoryItemDefinition).filter(a=>a.plug?.plugCategoryIdentifier?.match(/\.(supers|grenades|class_abilities|melee|aspects|fragments)$/));localStorage.setItem("allAbilities",JSON.stringify(o))})()}updateExoticCollectibles(e){var o=this;return(0,x.Z)(function*(){const a=Object.entries(e.DestinyCollectibleDefinition).filter(([s,r])=>{const m=e.DestinyInventoryItemDefinition[r.itemHash];return"Exotic"==m?.inventory?.tierTypeName&&2==m?.itemType}).map(([s,r])=>({hash:parseInt(s),itemHash:r.itemHash}));console.log("Storing",a.length,"exotic armor hashes"),yield o.db.manifestCollectibles.clear(),yield o.db.manifestCollectibles.bulkPut(a)})()}updateManifest(e=!1){var o=this;return(0,x.Z)(function*(){if(g.N.offlineMode)return void console.info("BungieApiService","updateManifest","offline mode, skipping");const a=o.db.lastManifestUpdate();let s=null;if(a&&!e){if(Date.now()-a.updatedAt>9e5&&(s=yield(0,tt.KN)(d=>o.http.$httpWithoutBearerToken(d)),a.version==s.Response.version))return void console.debug("bungieApiService - updateManifest","Abort updateManifest due to fitting ManifestVersion");if(Date.now()-a.updatedAt<864e5)return void console.debug("bungieApiService - updateManifest","Abort updateManifest due to fitting Date")}null==s&&(s=yield(0,tt.KN)(C=>o.http.$httpWithoutBearerToken(C)));const r=s.Response.version,m=yield(0,y.xG)(C=>o.http.$httpWithoutApiKey(C),{destinyManifest:s.Response,tableNames:["DestinyInventoryItemDefinition","DestinyCollectibleDefinition","DestinyVendorDefinition"],language:"en"});console.log("manifestTables.DestinyInventoryItemDefinition",m.DestinyInventoryItemDefinition),yield o.updateExoticCollectibles(m),yield o.updateVendorNames(m),yield o.updateAbilities(m);let p=Object.entries(m.DestinyInventoryItemDefinition).filter(([C,d])=>19==d.itemType||2==d.itemType||3448274439==d.inventory?.bucketTypeHash||3551918588==d.inventory?.bucketTypeHash||14239492==d.inventory?.bucketTypeHash||20886954==d.inventory?.bucketTypeHash||1585787867==d.inventory?.bucketTypeHash&&6==d.inventory.tierType).map(([C,d])=>{let S=v.y.ArmorSlotNone;(d.itemCategoryHashes?.indexOf(45)||-1)>-1&&(S=v.y.ArmorSlotHelmet),(d.itemCategoryHashes?.indexOf(46)||-1)>-1&&(S=v.y.ArmorSlotGauntlet),(d.itemCategoryHashes?.indexOf(47)||-1)>-1&&(S=v.y.ArmorSlotChest),(d.itemCategoryHashes?.indexOf(48)||-1)>-1&&(S=v.y.ArmorSlotLegs),(d.itemCategoryHashes?.indexOf(49)||-1)>-1&&(S=v.y.ArmorSlotClass);const F=(d.sockets?.socketEntries.filter(B=>2512726577==B.socketTypeHash||1108765570==B.socketTypeHash||959256494==B.socketTypeHash||2512726577==B.socketTypeHash||3219375296==B.socketTypeHash||968742181==B.socketTypeHash)||[]).length>0,G="Exotic"==d.inventory?.tierTypeName?1:0;let K=null;G&&(K=(d.sockets?.socketEntries.filter(b=>965959289==b.socketTypeHash).map(b=>b.singleInitialItemHash)||[])[0]);var ct=[1862490585,1862490584,1862490584,1862490583,2471437758],O=d.quality?.versions.filter(B=>ct.includes(B.powerCapHash)).length==d.quality?.versions.length;return{hash:d.hash,icon:d.displayProperties.icon,watermarkIcon:(d.quality?.displayVersionWatermarkIcons||[null])[0],name:d.displayProperties.name,description:d.displayProperties.description,clazz:d.classType,armor2:F,slot:S,isExotic:G,isSunset:O,rarity:d.inventory?.tierType,exoticPerkHash:K,itemType:d.itemType,itemSubType:d.itemSubType,investmentStats:d.investmentStats,perk:o.getArmorPerk(d),socketEntries:d.sockets?.socketEntries??[]}});return yield o.db.writeManifestArmor(p,r),m})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Ct),t.LFG(H),t.LFG(I),t.LFG(z),t.LFG(Dt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const Pt="vendor-next-refresh-time",Qt=[{vendorHash:"3751514131",parentHash:"2190858386"}];let ae=(()=>{class n{constructor(e,o,a,s){this.membership=e,this.http=o,this.db=a,this.auth=s,this.auth.logoutEvent.subscribe(r=>this.clearCachedData())}clearCachedData(){localStorage.removeItem(Pt),this.db.inventoryArmor.where({source:w.Vendor}).delete()}getVendorArmorItemsForCharacter(e,o,a){var s=this;return(0,x.Z)(function*(){const r=yield(0,tt.dH)(K=>s.http.$http(K),{components:[400,402],characterId:a,membershipType:o.membershipType,destinyMembershipId:o.membershipId,filter:0}),m=Object.entries(r.Response.vendors.data),p=new Map(m),d=m.filter(([K,ct])=>ct.enabled).filter(([K,ct])=>{const O=Qt.find(B=>B.vendorHash==K)?.parentHash;return null==O||(console.debug(`${K} has parent ${O} with value ${p.get(O)?.enabled}`),p.get(O)?.enabled??!1)}).filter(([K,ct])=>void 0!==Object.entries(r.Response.sales.data?.[K]?.saleItems??{}).find(([O,B])=>1==e[B.itemHash]?.armor2)).map(([K,ct])=>({vendorHash:K,refreshDate:new Date(ct.nextRefreshDate).getTime()})),S=[],F=Math.min(...d.map(K=>K.refreshDate)),G=d.map(K=>{let ct=K.vendorHash;return(0,tt.wZ)(O=>s.http.$http(O),{components:[304],characterId:a,membershipType:o.membershipType,destinyMembershipId:o.membershipId,vendorHash:parseInt(ct)}).then(O=>{const B=r.Response.sales.data?.[ct]?.saleItems??{},b=O.Response.itemComponents.stats.data??{};for(const[ut,nt]of Object.entries(B)){const V=e[nt.itemHash],xe=b[parseInt(ut)];if(128==(128&nt.augments)||!V||!xe)continue;const me=Object.values(xe.stats).reduce((ie,{statHash:Pe,value:ye})=>(ie[Pe]=ye,ie),{}),Xt=Tt(V,`v${ct}-${nt.itemHash}`,w.Vendor);vt(Xt,me),S.push(Xt)}},O=>{console.error(`Failed to get vendor: ${O}`)})});return yield Promise.all(G),console.log(`Collected ${S.length} vendor armor items for character ${a}`),{items:S,nextRefreshDate:F}})()}isVendorCacheValid(){const e=localStorage.getItem(Pt);if(!e)return!1;const o=new Date(e);return!!isFinite(o.getTime())&&(console.log("VENDOR C",{nextVendorRefresh:o,finite:isFinite(o.getTime()),ok:o>new Date,now:new Date}),o>new Date)}writeVendorCache(e,o){var a=this;return(0,x.Z)(function*(){console.log(`Writing new vendor cache (${e.length} items), valid until ${o.toISOString()}`),yield a.db.inventoryArmor.where({source:w.Vendor}).delete(),yield a.db.inventoryArmor.bulkPut(e),localStorage.setItem(Pt,o.toISOString())})()}updateVendorArmorItemsCache(){var e=this;return(0,x.Z)(function*(){if(e.isVendorCacheValid())return console.log("Using vendor items cache"),!1;const o=yield e.membership.getMembershipDataForCurrentUser(),a=yield e.membership.getCharacters(),s=(yield e.db.manifestArmor.toArray()).filter(r=>2==r.itemType).reduce((r,m)=>(r[m.hash]=m,r),{});try{const r=yield Promise.all(a.map(({characterId:C})=>e.getVendorArmorItemsForCharacter(s,o,C))),m=r.flatMap(({items:C})=>C),p=Math.max(Math.min(...r.map(({nextRefreshDate:C})=>C)),Date.now()+6e5);return e.writeVendorCache(m,new Date(p)),!0}catch(r){console.error("Failed to update vendor armor items cache",r);const m=new Date;return m.setMinutes(m.getMinutes()+5),e.writeVendorCache([],new Date(m)),!1}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Dt),t.LFG(H),t.LFG(I),t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),At=(()=>{class n{constructor(e,o,a,s,r,m,p){var C=this;this.db=e,this.config=o,this.status=a,this.api=s,this.auth=r,this.router=m,this.vendors=p,this.allArmorResults=[],this.currentClass=3,this._calculationProgress=new R.xQ,this.calculationProgress=this._calculationProgress.asObservable(),this._config=et.buildEmptyConfiguration(),this.results=[],this.totalPermutationCount=0,this.resultMaximumTiers=[],this.resultStatCombo3x100=new Set,this.resultStatCombo4x100=new Set,this.selectedExotics=[],this.itemz=[],this.items=[],this.endResults=[],this.refreshing=!1,this._inventory=new A.t(1),this.inventory=this._inventory.asObservable(),this._manifest=new A.t(1),this.manifest=this._manifest.asObservable(),this._armorResults=new Mt.X({results:this.allArmorResults}),this.armorResults=this._armorResults.asObservable(),this.workers=[];let d=!1;m.events.pipe((0,L.b)(5)).subscribe(function(){var S=(0,x.Z)(function*(F){C.auth.refreshTokenExpired||(yield C.auth.autoRegenerateTokens()),r.isAuthenticated()&&F instanceof ot.m2&&(C.killWorkers(),C.clearResults(),console.debug("Trigger refreshAll due to router.events"),yield C.refreshAll(!d),d=!0)});return function(F){return S.apply(this,arguments)}}()),this.config.configuration.pipe((0,L.b)(500)).subscribe(function(){var S=(0,x.Z)(function*(F){C.auth.refreshTokenExpired||(yield C.auth.autoRegenerateTokens()),r.isAuthenticated()&&(C._config=F,console.debug("Trigger refreshAll due to config change"),yield C.refreshAll(!d),d=!0)});return function(F){return S.apply(this,arguments)}}())}clearResults(){this.allArmorResults=[],this._armorResults.next({results:this.allArmorResults,totalResults:0,totalTime:0,itemCount:0,maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:[],statCombo4x100:[]})}shouldCalculateResults(){return"/"==this.router.url}refreshAll(e=!1,o=!1){var a=this;return(0,x.Z)(function*(){if(!a.refreshing){console.debug("Execute refreshAll");try{a.refreshing=!0;let s=!1;try{let r=yield a.updateManifest(o);s=yield a.updateInventoryItems(r||e),a.updateVendorsAsync()}catch(r){console.error(r)}yield a.triggerArmorUpdateAndUpdateResults(s)}finally{a.refreshing=!1}}})()}triggerArmorUpdateAndUpdateResults(e=!1,o=!0){var a=this;return(0,x.Z)(function*(){e&&a._inventory.next(null),a.shouldCalculateResults()&&(yield a.updateResults())})()}updateVendorsAsync(){this.status.getStatus().updatingVendors||this.vendors.isVendorCacheValid()||(this.status.modifyStatus(e=>e.updatingVendors=!0),this.vendors.updateVendorArmorItemsCache().then(e=>{!e||this.triggerArmorUpdateAndUpdateResults(e,this._config.includeVendorRolls)}).finally(()=>{this.status.modifyStatus(e=>e.updatingVendors=!1)}))}killWorkers(){console.log("killing workers"),this.workers.forEach(e=>{e.terminate()}),this.workers=[]}estimateCombinationsToBeChecked(e,o,a,s){let r=0;const m=e.filter(ct=>ct.isExotic).length,p=e.length-m,C=o.filter(ct=>ct.isExotic).length,d=o.length-C,S=a.filter(ct=>ct.isExotic).length,F=a.length-S,G=s.filter(ct=>ct.isExotic).length,K=s.length-G;return r+=m*d*F*K,r+=p*C*F*K,r+=p*d*S*K,r+=p*d*F*G,r+=p*d*F*K,r}updateResults(e=3){var o=this;return(0,x.Z)(function*(){o.clearResults(),o.killWorkers();try{console.time("updateResults with WebWorker"),o.status.modifyStatus(d=>d.calculatingResults=!0);let a=0;o.results=[],o.totalPermutationCount=0,o.resultMaximumTiers=[],o.resultStatCombo3x100=new Set,o.resultStatCombo4x100=new Set;const s=Date.now();let r=o._config;o.selectedExotics=yield Promise.all(r.selectedExotics.filter(d=>d!=P.Io).map(function(){var d=(0,x.Z)(function*(S){return yield o.db.manifestArmor.where("hash").equals(S).first()});return function(S){return d.apply(this,arguments)}}())),o.selectedExotics=o.selectedExotics.filter(d=>!!d),o.itemz=yield o.db.inventoryArmor.where("clazz").equals(r.characterClass).distinct().toArray(),o.itemz=o.itemz.filter(d=>d.slot!=v.y.ArmorSlotNone).filter(d=>-1==r.disabledItems.indexOf(d.itemInstanceId)).filter(d=>{switch(d.source){case w.Collections:return r.includeCollectionRolls;case w.Vendor:return r.includeVendorRolls;default:return!0}}).filter(d=>-1==r.selectedExotics.indexOf(P.Io)||!d.isExotic).filter(d=>1!=o.selectedExotics.length||d.isExotic&&o.selectedExotics[0].hash==d.hash||!d.isExotic&&o.selectedExotics[0].slot!=d.slot).filter(d=>!r.onlyUseMasterworkedExotics||!(6==d.rarity&&!d.masterworked)).filter(d=>!r.onlyUseMasterworkedLegendaries||!(5==d.rarity&&!d.masterworked)).filter(d=>r.allowBlueArmorPieces||6==d.rarity||5==d.rarity).filter(d=>!r.ignoreSunsetArmor||!d.isSunset).filter(d=>d.isExotic||!r.armorPerks[d.slot].fixed||r.armorPerks[d.slot].value==c.Pn.None||r.armorPerks[d.slot].value==d.perk),o.itemz=o.itemz.filter(d=>d.source===w.Inventory||void 0===o.itemz.find(F=>F.source===w.Inventory&&function $(n,i){return n.slot===i.slot&&n.hash===i.hash&&n.mobility===i.mobility&&n.resilience===i.resilience&&n.recovery===i.recovery&&n.discipline===i.discipline&&n.intellect===i.intellect&&n.strength===i.strength}(d,F))),o.items=o.itemz.map(d=>({id:d.id,hash:d.hash,slot:d.slot,clazz:d.clazz,perk:d.perk,isExotic:!!d.isExotic,rarity:d.rarity,isSunset:d.isSunset,masterworked:d.masterworked,mobility:d.mobility,resilience:d.resilience,recovery:d.recovery,discipline:d.discipline,intellect:d.intellect,strength:d.strength,source:d.source})),e=o.estimateRequiredThreads(),console.log("nthreads for calculation",e);const m=[...Array(e).keys()].map(()=>0),p=[...Array(e).keys()].map(()=>0);let C=0;o.items=o.items.sort((d,S)=>_t(S)-_t(d)),o._calculationProgress.next(0);for(let d=0;dO+B,0),ct=p.reduce((O,B)=>O+B,0);if(p[0]>0&&p[1]>0&&p[2]>0){const O=ct/K*100;O>C+.25&&(C=O,o._calculationProgress.next(O))}if(null!=G.runtime){if(o.results.push(...G.results),1==G.done){a++,o.totalPermutationCount+=G.stats.permutationCount,o.resultMaximumTiers.push(G.runtime.maximumPossibleTiers);for(let O of G.runtime.statCombo3x100)o.resultStatCombo3x100.add(O);for(let O of G.runtime.statCombo4x100)o.resultStatCombo4x100.add(O)}if(1==G.done&&a==e){o.status.modifyStatus(O=>O.calculatingResults=!1),o._calculationProgress.next(0),o.endResults=[];for(let O of o.results){let B=O.armor.map(nt=>o.itemz.find(V=>V.id==nt)),b=B.find(nt=>nt.isExotic),ut={exotic:null==b?[]:[{icon:b?.icon,watermark:b?.watermarkIcon,name:b?.name,hash:b?.hash}],artifice:O.usedArtifice,modCount:O.usedMods.length,modCost:O.usedMods.reduce((nt,V)=>nt+c.K9[V][2],0),mods:O.usedMods,stats:O.statsWithMods,statsNoMods:O.statsWithoutMods,tiers:(0,Ot.jG)(O.statsWithMods),waste:(0,Ot._1)(O.statsWithMods),items:B.reduce((nt,V)=>(nt[V.slot-1].push({energyLevel:V.energyLevel,hash:V.hash,itemInstanceId:V.itemInstanceId,name:V.name,exotic:!!V.isExotic,masterworked:V.masterworked,mayBeBugged:V.mayBeBugged,slot:V.slot,perk:V.perk,transferState:0,stats:[V.mobility,V.resilience,V.recovery,V.discipline,V.intellect,V.strength],source:V.source}),nt),[[],[],[],[],[]]),classItem:O.classItemPerk,usesCollectionRoll:B.some(nt=>nt.source===w.Collections),usesVendorRoll:B.some(nt=>nt.source===w.Vendor)};o.endResults.push(ut)}o._armorResults.next({results:o.endResults,totalResults:o.totalPermutationCount,itemCount:G.stats.itemCount,totalTime:Date.now()-s,maximumPossibleTiers:o.resultMaximumTiers.reduce((O,B)=>{for(let b=0;b<6;b++)O[b]Math.floor(Math.min(100,O)/10)),statCombo3x100:Array.from(o.resultStatCombo3x100).map(O=>{let B=[];for(let b=0;b<6;b++)(O&1<0&&B.push(b);return B})||[],statCombo4x100:Array.from(o.resultStatCombo4x100).map(O=>{let B=[];for(let b=0;b<6;b++)(O&1<0&&B.push(b);return B},[])||[]}),console.timeEnd("updateResults with WebWorker"),o.workers[d].terminate()}else 1==G.done&&a!=e&&o.workers[d].terminate()}});return function(F){return S.apply(this,arguments)}}(),o.workers[d].onerror=S=>{o.workers[d].terminate()},o.workers[d].postMessage({currentClass:o.currentClass,config:o._config,threadSplit:{count:e,current:d},items:o.items,selectedExotics:o.selectedExotics})}finally{}})()}estimateRequiredThreads(){const e=this.items.filter(F=>F.slot==v.y.ArmorSlotHelmet),o=this.items.filter(F=>F.slot==v.y.ArmorSlotGauntlet),a=this.items.filter(F=>F.slot==v.y.ArmorSlotChest),s=this.items.filter(F=>F.slot==v.y.ArmorSlotLegs),r=this.estimateCombinationsToBeChecked(e,o,a,s),m=Math.max(e.length,o.length,a.length,s.length);let p=1;this._config.tryLimitWastedStats&&this._config.modOptimizationStrategy!=it.w.None&&(p=.7);let d=25e4*p;return Math.max(3,Math.min(Math.max(1,Math.ceil(r/(5e4*p))),Math.ceil(r/d),Math.floor(.75*(navigator.hardwareConcurrency||2)),20,m))}getItemCountForClass(e,o){var a=this;return(0,x.Z)(function*(){let s=yield a.db.inventoryArmor.where("clazz").equals(e).toArray();return o&&(s=s.filter(r=>r.slot==o)),s=s.filter(r=>r.source==w.Inventory),s.length})()}getExoticsForClass(e,o){var a=this;return(0,x.Z)(function*(){let s=yield a.db.inventoryArmor.where("isExotic").equals(1).toArray();s=s.filter(m=>m.clazz==e&&m.armor2&&(!o||m.slot==o));let r=yield a.db.manifestArmor.where("isExotic").equals(1).toArray();return r=r.filter(m=>m.clazz==e&&m.armor2&&(!o||m.slot==o)),r.map(m=>{const p=s.filter(C=>C.hash==m.hash);return{item:m,inCollection:void 0!==p.find(C=>C.source===w.Collections),inInventory:void 0!==p.find(C=>C.source===w.Inventory),inVendor:void 0!==p.find(C=>C.source===w.Vendor)}})})()}updateManifest(e=!1){var o=this;return(0,x.Z)(function*(){if(o.status.getStatus().updatingManifest)return console.error("Already updating the manifest - abort"),!1;o.status.modifyStatus(s=>s.updatingManifest=!0);let a=yield o.api.updateManifest(e).finally(()=>{o.status.modifyStatus(s=>s.updatingManifest=!1)});return a&&o._manifest.next(null),!!a})()}updateInventoryItems(e=!1,o=0){var a=this;return(0,x.Z)(function*(){a.status.modifyStatus(s=>s.updatingInventory=!0);try{return!!(yield a.api.updateArmorItems(e).finally(()=>{a.status.modifyStatus(r=>r.updatingInventory=!1)}))}catch(s){return o>3?(alert("You encountered a strange error with the inventory update. Please log out and log in again. If that does not fix it, please message Mijago."),!1):(a.status.modifyStatus(r=>r.updatingInventory=!1),console.error(s),yield a.updateManifest(!0),yield a.updateInventoryItems(!0,o++))}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(I),t.LFG(z),t.LFG(Ct),t.LFG(bt),t.LFG(gt),t.LFG(ot.F0),t.LFG(ae))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const te="https://Database-Clarity.github.io/Character-Stats",Q=`${te}/versions/1.9/CharacterStatInfo-NI.json`,Jt=`${te}/update.json`,Ht="clarity-character-stats-version",Wt="clarity-character-stats";let jt=(()=>{class n{constructor(e,o){this.http=e,this.inv=o,this._characterStats=new Mt.X(null),this.characterStats=this._characterStats.asObservable(),this.inv.manifest.subscribe(a=>this.load())}load(){var e=this;return(0,x.Z)(function*(){try{yield e.loadCharacterStats()}catch(o){console.warn("Error loading Clarity data",o)}})()}fetchUpdateData(){var e=this;return(0,x.Z)(function*(){return e.http.get(Jt).toPromise()})()}loadCharacterStats(){var e=this;return(0,x.Z)(function*(){const o=localStorage.getItem(Wt);o&&e._characterStats.next(JSON.parse(o));const a=yield e.fetchUpdateData(),s=parseInt(localStorage.getItem(Ht)||"0");a&&a.lastUpdate>s&&("1.9"!==a.schemaVersion?console.warn("Unsupported live character stats schema version",a.schemaVersion):a&&void 0!==a.lastUpdate&&(yield e.fetchLiveCharacterStats().then(r=>{localStorage.setItem(Wt,JSON.stringify(r)),localStorage.setItem(Ht,a.lastUpdate.toString()),e._characterStats.next(r)})))})()}fetchLiveCharacterStats(){var e=this;return(0,x.Z)(function*(){return e.http.get(Q).toPromise()})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Ut.eN),t.LFG(At))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var dt=(()=>{return(n=dt||(dt={}))[n.Speed=1]="Speed",n[n.Percentage=2]="Percentage",n[n.Time=3]="Time",n[n.TimeMMSS=4]="TimeMMSS",n[n.PercentagePerSecond=5]="PercentagePerSecond",dt;var n})();let Gt=(()=>{class n{constructor(e){this.clarity=e,this.allStatEntries={},this.overrides=[],this.clarity.characterStats.subscribe(o=>{o&&this.updateCharacterStats(o)})}loadCharacterStats(){this.clarity.load()}updateCharacterStats(e){const o=(JSON.parse(window.localStorage.getItem("allAbilities"))||[]).reduce((a,s)=>(a.set(s.hash,s),a),new Map);this.overrides=Object.values(e).map(a=>a.Overrides).flat(),this.allStatEntries={Mobility:this.generateEntries(e.Mobility,o,[{key:"WalkSpeed",name:"Walk Speed",valueType:dt.Speed},{key:"StrafeSpeed",name:"Strafe Speed",valueType:dt.Speed},{key:"CrouchSpeed",name:"Crouch Speed",valueType:dt.Speed}]),Resilience:this.generateEntries(e.Resilience,o,[{key:"ShieldHP",name:"Shield HP"},{key:"PvEDamageResistance",name:"PvE Damage Resistance",valueType:dt.Percentage},{key:"FlinchResistance",name:"Flinch Resistance",valueType:dt.Percentage}]),Recovery:this.generateEntries(e.Recovery,o,[{key:"TotalRegenTime",name:"Total Regen Time",valueType:dt.Time},{key:"HealthRegenDelay",name:"Health Regen Delay",valueType:dt.Time},{key:"HealthRegenSpeed",name:"Health Regen Speed",valueType:dt.PercentagePerSecond},{key:"ShieldRegenDelay",name:"Shield Regen Delay",valueType:dt.Time},{key:"ShieldRegenSpeed",name:"Shield Regen Speed",valueType:dt.PercentagePerSecond}]),Discipline:this.generateEntries(e.Discipline,o),Intellect:this.generateEntries(e.Intellect,o),Strength:this.generateEntries(e.Strength,o)}}get(e,o,a,s=[]){const r=this.allStatEntries[e]??[],m=this.overrides.filter(p=>s.includes(p.Hash));return r.filter(p=>!(void 0!==o&&void 0!==p.characterClass&&p.characterClass!==o||void 0!==a&&void 0!==p.element&&p.element!==a)).map(p=>m.reduce((C,d)=>function Ce(n,i){if(!n.hash||!i.Requirements.includes(n.hash))return n;const e={...n,overrideIcons:[...n.overrideIcons??[],i.Hash]};if(i.CooldownOverride)return{...e,values:i.CooldownOverride};if(i.Scalar){const o=i.Requirements.indexOf(n.hash),a=i.Scalar[o];return{...e,values:e.values.map(s=>s*a)}}return console.log("Unhandled override",i),n}(C,d),p))}generateEntries(e,o,a=[]){const s=a.map(({key:m,...p})=>({values:e[m].Array,...p}));return("Abilities"in e?e.Abilities:"SuperAbilities"in e?e.SuperAbilities:[]).forEach(m=>{const p=o.get(m.Hash);if(!p)return;const{characterClass:C,element:d}=function de(n){let i,e;const o=n.plug?.plugCategoryIdentifier?.split(".");if(3!==o?.length)return{characterClass:i,element:e};const[a,s,r]=o;return"warlock"===a?i=2:"hunter"===a?i=1:"titan"===a&&(i=0),"arc"===s?e=U.O.Arc:"solar"===s?e=U.O.Solar:"void"===s?e=U.O.Void:"stasis"===s?e=U.O.Stasis:"strand"===s?e=U.O.Strand:"prism"===s&&(e=U.O.Prismatic),{characterClass:i,element:e}}(p);s.push({hash:p.hash,name:p.displayProperties.name,icon:p.displayProperties.icon,values:m.Cooldowns,valueType:dt.TimeMMSS,characterClass:C,element:d})}),s}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(jt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var l=(()=>{return(n=l||(l={}))[n.ADD=0]="ADD",n[n.REMOVE=1]="REMOVE",n[n.MODIFIED=2]="MODIFIED",l;var n})();const Te=[{version:"2.6.4",date:"July 30, 2024",entries:[{type:l.MODIFIED,text:"Fixed an issue with the vendor api. Thanks to nznaza!",issues:[]}]},{version:"2.6.3",date:"July 16, 2024",entries:[{type:l.MODIFIED,text:"Minor bugfix for issues with the manifest retrieval. This should fix issues where the items or characters are not loading correctly.",issues:[]},{type:l.MODIFIED,text:"Updated the 'Download Results as JSON' button to reflect required changes for Final Shape.",issues:[]}]},{version:"2.6.2",date:"July 7, 2024",entries:[{type:l.ADD,text:"Added option to ignore existing exotic artifice slots. This is useful for the exotic class item.",issues:[]},{type:l.MODIFIED,text:"Prismatic fragments are now correctly added to the DIM export.",issues:[]},{type:l.MODIFIED,text:"The 'Ignored Items' section is now filtered by the selected class, grouped into armor slots and ordered by item type.",issues:[]},{type:l.MODIFIED,text:"Minor change for the vendor API handling. Thanks nznaza!",issues:[]},{type:l.MODIFIED,text:"Minor change for the manifest API handling.",issues:[]},{type:l.MODIFIED,text:"Mostly minor bugfixes and code improvements.",issues:[]}]},{version:"2.6.1",date:"June 17, 2024",entries:[{type:l.ADD,text:"Add exotic class items.",issues:[]},{type:l.ADD,text:"Added Salvation's Edge Raid modslot and the Echoes of Glory perk.",issues:[]},{type:l.MODIFIED,text:"Changed the way minor mods are displayed. Minor mods are now 25% smaller.",issues:[]},{type:l.MODIFIED,text:"Corrected the description of Facet of Grace.",issues:[]},{type:l.MODIFIED,text:"Added Whisper of Torment, as it now has a -10 in Discipline.",issues:[]},{type:l.REMOVE,text:"Removed old armor modslots (and perks) that no longer exist or function.",issues:[]}]},{version:"2.6.0",date:"June 4, 2024",entries:[{type:l.ADD,text:"Added prismatic fragments.",issues:[]},{type:l.ADD,text:"Added a progressbar that shows the progress of the calculation process.",issues:[]},{type:l.ADD,text:"Added an advanced setting to replace the stat selection boxes with text fields. While it does not look quite nice (as of now), it will allow you to select any value you want. Go get your 6x69 builds done (but don't forget, D2AP still does not add fragments by itself ....YET?!? BUT VERY SOON!)!",issues:[]},{type:l.ADD,text:"Added an 'Assume every exotic has an artifice slot' setting in preparation for the changes in the upcoming expansion. Real artifice exotics should work out-of-the-box at the first day of the expansion, BUT it may happen that I need to update some internal structures. Have fun exploring your options, though!",issues:[]},{type:l.ADD,text:"Added an 'Assume every legendary class item is an artifice armor' setting to allow finer control over the artifice armor assumption.",issues:[]},{type:l.MODIFIED,text:"You will no longer be logged out when the API is offline. The app will use the last known data until the API is back online.",issues:[]},{type:l.MODIFIED,text:"Reworked how calculation workers are spawned, thus improving performance. Thanks to nznaza.",issues:[]},{type:l.MODIFIED,text:"Improved Mod optimisation, leading in drastically reduced runtime when paired with 'Add mods to reduce waste'.",issues:[]},{type:l.MODIFIED,text:"Improved 'Reduce Waste' optimisation. Smarter, better, faster, stronger.",issues:[]},{type:l.MODIFIED,text:"Changing the configuration during a running calculation now restarts the calculation process. Outdated results are a thing of the past!",issues:[]},{type:l.MODIFIED,text:"The amount of workers is now variable and depends on the workload at hand. This should help the insane armor hoarders to reduce the calculation time.",issues:[]},{type:l.MODIFIED,text:"Prepared the vendor API for upcoming Bungie API changes. Thanks to nznaza.",issues:[]},{type:l.MODIFIED,text:"Added 'Exotic Cipher' to the resource overview and removed legendary shards.",issues:[]},{type:l.MODIFIED,text:"Modified the inventory update procedure to be more efficient. This may result in a few hiccups in the first stage - if you encounter any issues, please let me know!",issues:[]},{type:l.MODIFIED,text:"Vendor data is now updated asynchronously. This means that the page will load faster, but the vendor data may be outdated for a few seconds.",issues:[]},{type:l.MODIFIED,text:"The progress notifications are now color-coded and on the right. If there are multiple notifications, then they are stacked.",issues:[]},{type:l.MODIFIED,text:"The display of the used mods is now color-coded to make it easier to distinguish between the different mod types in a single glance.",issues:[]},{type:l.MODIFIED,text:"Locked locks are now red. Mainly because adisypher wouldn't stop asking.",issues:[]},{type:l.MODIFIED,text:"Minor bugfixes and performance optimisation.",issues:[]}]},{version:"2.5.4",date:"April 10, 2024",entries:[{type:l.MODIFIED,text:"Fixed a minor issue where the vendor api may be disabled and block the entire page.",issues:[]}]},{version:"2.5.3",date:"April 5, 2024",entries:[{type:l.MODIFIED,text:"Adapted the logic to parse the new Clarity data format. Thanks to ciar\xe1n!",issues:[]}]},{version:"2.5.2",date:"November 29, 2023",entries:[{type:l.ADD,text:"Split the 'Assume all items are masterworked' switch into 'legendary' and 'exotic' switches. Thanks to Mojo!",issues:[]},{type:l.ADD,text:"Added the 'Ascendant Protector' Perk. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Fixed artifice mods, again. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Fixed 'Ghost Items' from the vendor import. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Updated the values and descriptions for Subclass Fragments. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Artifice Mods are now correctly added to the DIM export. Thanks to nznaza!",issues:[]}]},{version:"2.5.1",date:"October 29, 2023",entries:[{type:l.ADD,text:"Added the 'Exhumed Excess' Perk. The modslot limitations are now ordered. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Added a solution for the stat distances 63, 64 and 65. You probably won't ever see it, as this is 'five artifice and five major mods'.",issues:[]},{type:l.MODIFIED,text:"'Fix wasted points' is now ignored for stats that are locked.",issues:[]}]},{version:"2.5.0",date:"October 14, 2023",entries:[{type:l.ADD,text:"The stat cooldowns and values are now automatically updated from the Clarity database. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"The new modslots/perks are now available in the dropdown.",issues:[]},{type:l.MODIFIED,text:"The stat cooldowns now show icons. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"The fragments now show their icons. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Minor internal updates for DIM references. Thanks to bhollis!",issues:[]},{type:l.MODIFIED,text:"Improved the wasted stats selection, again!",issues:[]}]},{version:"2.4.2",date:"July 11, 2023",entries:[{type:l.ADD,text:"Added the ability to use collection roll armor. This is disabled by default. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"Added the ability to use vendor armor, including Xur. This is disabled by default. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"Added the ability to select the optimisation strategy. You can now choose between 'Reduce waste', 'Reduce used mods' and 'Reduce used modslots'. The default is 'Reduce waste'.",issues:[]},{type:l.ADD,text:"Re-added the reduce wasted stats feature. It is now disabled by default. It is a bit slower and not really necessary for most people.",issues:[]},{type:l.MODIFIED,text:"Zero Waste is no longer dependent on the 'Reduce wasted stats' setting. In fact, it practically overwrites it.",issues:[]},{type:l.REMOVE,text:"Removed the 'Extra optimisation steps' setting. It is now always enabled.",issues:[]}]},{version:"2.4.0",date:"May 23, 2023",entries:[{type:l.MODIFIED,text:"Rewrote the internal algorithm. It makes stuff faster and gives better results.",issues:[]},{type:l.ADD,text:"Added a 'Perform further optimisation' setting. This will give you better results, but it will take a bit longer.",issues:[]},{type:l.ADD,text:"Added Icons to the Stat Selection to make it easier to see which row is which perk.",issues:[]},{type:l.ADD,text:"Added button to download results as JSON.",issues:[]},{type:l.ADD,text:"Added Sonar Amplifier perk.",issues:[]},{type:l.MODIFIED,text:"Enabled Modslot limitation.",issues:[]},{type:l.MODIFIED,text:"Enabled the 3x100 and 4x100 buttons.",issues:[]},{type:l.MODIFIED,text:"Enabled Zero-Waste mode.",issues:[]},{type:l.MODIFIED,text:"Temporarily disabled 'Reduce Wasted Stats'. It will be back soon.",issues:[]}]},{version:"2.3.2",date:"May 7, 2023",entries:[{type:l.ADD,text:"Feature: Added 'Guardian Games' class item type to the dropdown. ",issues:[]},{type:l.MODIFIED,text:"Reformatted every file in the codebase and improved the code workflow. You should not really see this on your end, but it will allow everyone to easily contribute to this open source project!",issues:[]}]},{version:"2.3.1",date:"April 2, 2023",entries:[{type:l.ADD,text:"Feature: Added the possibility to only show builds that contain an exotic.",issues:[]},{type:l.ADD,text:"Added 'Root of Nightmares' modslot filter.",issues:[]},{type:l.ADD,text:"Added 'Queen's Favor' seasonal perk filter.",issues:[]},{type:l.ADD,text:"Added text indicating that only fragments that affect stats are shown.",issues:[]},{type:l.MODIFIED,text:"Fixed deprecated mods being sent when opening the loadout in DIM. Also adds artifice mods now.",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where the tool did not put artifice mods on the class item if you forced the class item to be artifice.....",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where the default selection was the titan class, even if you had no titan characters.",issues:[]}]},{version:"2.3.0",date:"March 14, 2023",entries:[{type:l.ADD,text:"Automatically adds artifice mods to your armor. This replaces minor and major mods where possible.",issues:[]},{type:l.ADD,text:"Added the amount of used artifice mods to the result table overview (next to the mods). They are not calculated into the 'mod cost' column.",issues:[]},{type:l.ADD,text:"Added new fragments, including Strand.",issues:[]},{type:l.MODIFIED,text:"Adapted modslot cost of Resilience and Recovery mods.",issues:[]},{type:l.MODIFIED,text:"Introduced more modules for asynchronous loading. This is more a speed improvement than a feature.",issues:[]},{type:l.MODIFIED,text:"Reduced the maximum limit of reported results from 50,000 to 30,000. Note that D2AP still calculates every result, it just does not report them. This is a major speedup, and you usually should not even realize the change.",issues:[]},{type:l.MODIFIED,text:"Increased the visual contrast of major mods in the results table. This means it is now easier to distinguish major from minor mods.",issues:[]},{type:l.REMOVE,text:"Removed the elemental affinity completely.",issues:[]},{type:l.REMOVE,text:"DISABLED the 'Zero Waste' feature. It will be re-enabled in the future.",issues:[]},{type:l.REMOVE,text:"DISABLED the 'Modslot Limitation' feature. It will be re-enabled in the future.",issues:[]}]},{version:"2.2.16",date:"December 7, 2022",entries:[{type:l.ADD,text:"Added Ember of Torches (with -10 Discipline).",issues:[]},{type:l.ADD,text:"Added Retrofit mods (mobility and resilience).",issues:[]},{type:l.ADD,text:"Added armor perk 'Seraph Sensor Array' to the dropdown.",issues:[]},{type:l.ADD,text:"Added a Game2Give message. Let's support the little lights together!",issues:[]},{type:l.MODIFIED,text:"Fixed artifice modslot.",issues:[]},{type:l.MODIFIED,text:"Membership data is cached longer to make things faster and to ease the Bungie API.",issues:[]}]},{version:"2.2.15",date:"October 18, 2022",entries:[{type:l.ADD,text:"Added FOTL masks.",issues:[]}]},{version:"2.2.13",date:"September 23, 2022",entries:[{type:l.ADD,text:"Added an advanced setting to replace the 'Tiers' column with a 'Max Tiers' column. This is adds the amount of open modslots to the column, but ignores mod limitations at the moment. A T32 build without mods will now show T37.",issues:[]}]},{version:"2.2.12",date:"September 11, 2022",entries:[{type:l.MODIFIED,text:"Changed the layout to force the settings (left) and results (right) to be next to each other. This means that the page is more mobile approachable. This is also the first step to a more flexible layout.",issues:[]}]},{version:"2.2.11",date:"September 10, 2022",entries:[{type:l.ADD,text:"Added a display for your owned upgrade materials in the character overview.",issues:[]},{type:l.ADD,text:"Added a notification to warn you when you create a modslot limitation that yields no results. Note that this will not (yet) show invalid combinations over all armor, just for the given slot you selected it in.",issues:[]},{type:l.MODIFIED,text:"Reduced size of exotic icons so that the left side will not grow on Titan class.",issues:[]},{type:l.MODIFIED,text:"The 'Performance Optimisation' settings will now always re-enable after a reload to prevent your browser being stuck in a crash-loop. (This is for you, iOS Safari users)",issues:[]},{type:l.MODIFIED,text:"Changed wording of the 'Performance Optimisation' setting to prevent people from using it incorrectly.",issues:[]}]},{version:"2.2.10",date:"September 2, 2022",entries:[{type:l.MODIFIED,text:"Updated Artifice Modslot Hash after the most recent hotfix.",issues:[]}]},{version:"2.2.9",date:"September 1, 2022",entries:[{type:l.MODIFIED,text:"Tooltips do now not obstruct the clicks of stats. This fixes the iOS stat selection issue.",issues:[]}]},{version:"2.2.8c",date:"August 24, 2022",entries:[{type:l.MODIFIED,text:"The manifest is now (again) automatically updated on version changes. This fixes your artifice problems at the beginning of a new season.",issues:[]},{type:l.MODIFIED,text:"Added subclass hashes for Arc. This means that it now transfers to DIM.",issues:[]}]},{version:"2.2.8b",date:"August 24, 2022",entries:[{type:l.MODIFIED,text:"Fixed Artifice modslots. You might need to wait a bit, alternatively delete the database (Account section) or re-log.",issues:[]}]},{version:"2.2.8a",date:"August 23, 2022",entries:[{type:l.MODIFIED,text:"Updated grenade and melee cooldowns for arc.",issues:[]}]},{version:"2.2.8",date:"August 23, 2022",entries:[{type:l.ADD,text:"Added Arc 3.0 fragments.",issues:[]},{type:l.MODIFIED,text:"Fixed tooltip issues on iOS devices.",issues:[]},{type:l.MODIFIED,text:"Fixed an infinite loading issue.",issues:[]}]},{version:"2.2.7",date:"June 25, 2022",entries:[{type:l.ADD,text:"Added a link to my Discord bot Crayon.",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where a large number of stored configurations would drastically slow down the app.",issues:[]}]},{version:"2.2.6",date:"June 8, 2022",entries:[{type:l.MODIFIED,text:"Fixed an issue where the elemental selection would not give the correct results under very specific conditions.",issues:[]}]},{version:"2.2.5",date:"June 7, 2022",entries:[{type:l.ADD,text:"Added all of the new ability cooldowns.",issues:[]},{type:l.MODIFIED,text:"Completely reworked the ability cooldown tooltips. They now show the difference to the currently selected tier.",issues:[]}]},{version:"2.2.4",date:"June 3, 2022",entries:[{type:l.MODIFIED,text:"Fixed the export to DIM. Thanks to bhollis for the fix!",issues:[]},{type:l.MODIFIED,text:"The manifest now automatically updates when Bungie updated it too, except just after a fixed timespan.",issues:[]}]},{version:"2.2.3",date:"May 24, 2022",entries:[{type:l.ADD,text:"Added Solar 3.0",issues:[]},{type:l.MODIFIED,text:"Adapted artifice armor to the new Season.",issues:[]}]},{version:"2.2.2",date:"Mar 9, 2022",entries:[{type:l.ADD,text:"See what mods do by hovering over their name.",issues:["D2AP-41"]},{type:l.ADD,text:"Added Vow of the Disciple armor.",issues:["D2AP-35"]},{type:l.ADD,text:"Added 'Uniformed Officer' armor.",issues:["D2AP-35"]},{type:l.MODIFIED,text:"Fixed Scatter grenades being Tier 3 (were T4 before).",issues:["D2AP-39"]},{type:l.MODIFIED,text:"Changed the color of the login button.",issues:["D2AP-37"]},{type:l.MODIFIED,text:"When a selected character class does not exist, the tool will now select the first available class as default."}]},{version:"2.2.1",date:"Feb 22, 2022",entries:[{type:l.ADD,text:"Added a switch to select between Stasis and Void 3.0 fragments. Stasis is enabled per default to ensure backwards compatibility of saved configurations.",issues:["D2AP-10"]},{type:l.ADD,text:"Added a debug section to the (new) account settings page. The account settings page does not do much yet, I just wanted to deploy the debug functions.",issues:["D2AP-23"]},{type:l.MODIFIED,text:"Modified super cooldowns for Witch Queen."},{type:l.MODIFIED,text:"Added a minor text to the exotic overview that explains that exotics not in the inventory are shown in grayscale. You can also no longer select those.",issues:["D2AP-17"]},{type:l.MODIFIED,text:"Minor changes in how the database behaves on logout. It now deletes the inventory when you log out, but still keeps the manifest.",issues:["D2AP-27"]},{type:l.MODIFIED,text:"Users are now logged out when the Bungie.Net API is down.",issues:["D2AP-34"]},{type:l.MODIFIED,text:"Fixed Charge Harvester and Echo of Persistence incorrectly reducing Discipline instead of recovery when used on a Warlock."}]},{version:"2.2.0",date:"Feb 09, 2022",entries:[{type:l.ADD,text:"Added the ability to select armor perks and 5th slots. Just like the elements you can optionally enforce it to be on a certain slot. Useful if you want to build Iron Banner armor or utilize artifice modslots."},{type:l.ADD,text:"Added the ability to limit the available points on each armor item for stat mods. This allows you to limit the kind of stat mods that are usable. You can now say 'do not use major intellect mods'."},{type:l.ADD,text:"Added the ability to lock stat tiers. Previously you could only set 'Use Tier 3 or higher', now you can optionally set 'Enforce Tier 3'. This is useful for example if you want to enforce T3 mobility on a Titan."},{type:l.ADD,text:"Added a summary of important configuration choices to the result header to improve readability."},{type:l.ADD,text:"Added a button to open the DIM Loadout Builder with the current settings."},{type:l.ADD,text:"Added an option that forces the correct element on non-masterworked armor pieces. This is per default enabled."},{type:l.ADD,text:"Added cooldowns for class abilities (Dodge, Barricade, Rift)."},{type:l.ADD,text:"Added visual indicators for minor and major mods in the overview table. The whole visualization is also more compact now."},{type:l.ADD,text:"Added visual cursor indicator to every clickable input, e.g. in the exotic, element and perk/mod selection."},{type:l.ADD,text:"Added a (very basic) item tooltip."},{type:l.ADD,text:"Show the required material cost for each item. Note that this ignores your class item."},{type:l.ADD,text:"Added a stat summary table to the stat detail view. This allows you to easily share a stat distribution with others."},{type:l.ADD,text:"Added 'Clear this section' button to each configuration section."},{type:l.ADD,text:"Added support for your class items. You won't see a lot of this, except when you use the slot and element limitation in specific ways."},{type:l.ADD,text:"Detailed information is now in expandable containers to improve readability."},{type:l.ADD,text:"Show the seasonal icon for every item too."},{type:l.ADD,text:"Added info text to the table headers."},{type:l.ADD,text:"The character selection now shows the existing characters - and their emblems too!"},{type:l.ADD,text:"Added Discord and another Ko-Fi link. You can find them in the character selection."},{type:l.ADD,text:"Added a changelog popup right at the start of the page. It only appears when a new update occured. You can always trigger it by clicking the current version number."},{type:l.ADD,text:"Now utilizes three webworkers instead of one. The process is simple, but generally speeds up the results by a huge margin."},{type:l.ADD,text:"Added an Armor Investigation tab for data scientists."},{type:l.ADD,text:"Added a sidenav for smaller devices and reworked the top menubar."},{type:l.ADD,text:"The detailed result table now shows the perk of an selected item, if it has one. This also applies to class items, if necessary."},{type:l.ADD,text:"Hovering over exotics in the exotic selection now displays their perk description."},{type:l.ADD,text:"Added an advanced setting to disable white, green and blue armor."},{type:l.ADD,text:"Added an advanced setting to ignore sunset armor."},{type:l.MODIFIED,text:"Changed the word 'Permutation' to 'Combination' wherever it has been used."},{type:l.MODIFIED,text:"Clicking on a setting that is already set does not re-trigger the calculation now. For example, selecting T3 recovery when it is already at T3 now does nothing."},{type:l.MODIFIED,text:"The default for all stats is now tier 0 instead of tier 1, to make it consistent with the clear buttons."},{type:l.MODIFIED,text:"The default setting for 'ignore non masterworked elements' is now 'off'."},{type:l.MODIFIED,text:"The 'time required' number now measures the time from before the webworkers are spawned until all webworkers are done. Previously it only monitored the time required INSIDE the webworker, so it may show slower times."},{type:l.MODIFIED,text:"Fixed the width of the 'Exotic' header in the results table. This means that it is now farther away from the 'Mobility' column."},{type:l.MODIFIED,text:"Completely reworked the elemental affinity selection. Per default it is now not fixed to a certain armor slot, but using a toggle button you can simply do so again."},{type:l.MODIFIED,text:"The results header now screams at you in bright red letters when no results are found."},{type:l.MODIFIED,text:"The alternating rows of the results details table have now a lighter color to make it easier to read."},{type:l.MODIFIED,text:"Fixed ability cooldowns for melee and grenade at tier 7 and tier 8."},{type:l.MODIFIED,text:"Cooldowns now are shown in MM:SS instead of plain seconds."},{type:l.MODIFIED,text:"Completely rewrote the core logic of D2ArmorPicker for the changes mentioned above."},{type:l.MODIFIED,text:"Exotics you do not have in your vault or inventory are now greyed out."},{type:l.MODIFIED,text:"Fixed an issue where exotics were not shown at your first login."},{type:l.MODIFIED,text:"Changed the color of important buttons so that they are easier to read."},{type:l.MODIFIED,text:"The icons of items in the results are now loaded asynchronous from their hashes. This saves a lot of memory, as I do not have to send two icon URLs for each item - for each result. I will further improve this in a later version."},{type:l.MODIFIED,text:"Maximum table output is now limited to 50 results (instead of 200). It still defaults to 20.}"},{type:l.MODIFIED,text:"Completely reworked the visuals of the changelog. It is now more pleasing to the eye."}]},{version:"2.1.4",date:"Dec 29, 2021",entries:[{type:l.MODIFIED,text:"Item stats are now built from their plugs and InvestmentStats (in case of some exotics). This fixes potentially invalid item stats when you use mods like Powerful Friends or Protective Light. A big thanks to u/deangaudet for reminding me that the API also reports the plugs of an item."},{type:l.MODIFIED,text:"Only save necessary item types of the manifest (namely mods and armor). Also, save twhe investmentStats now."},{type:l.MODIFIED,text:"Sped up the item update step."}]},{version:"2.1.3",date:"Dec 16, 2021",entries:[{type:l.MODIFIED,text:"Added new stat cooldowns"}]},{version:"2.1.2",date:"Dec 1, 2021",entries:[{type:l.MODIFIED,text:"The changelog is now in a scrollable box."},{type:l.MODIFIED,text:"Changed buymeacoffee to a ko-fi link. This way we can keep the PayPal support!"}]},{version:"2.1.1",date:"Nov 3, 2021",entries:[{type:l.REMOVE,text:"Removed the HALLOWEEN SPECIAL feature. Maybe something like this will return some day?"},{type:l.ADD,text:"Added tooltip to the item icons in the detailed overview to show the name of the item."},{type:l.MODIFIED,text:"Fixed an issue where the list of exotics did not load at the first login."},{type:l.MODIFIED,text:"Saved configurations now contain the current software version for future reference."},{type:l.MODIFIED,text:"Minor code quality improvements"}]},{version:"2.1.0 (major)",date:"Oct 29, 2021",entries:[{type:l.REMOVE,text:"Completely removed V1 of the tool. If you had any problems with V2, you had over three months to report them."},{type:l.ADD,text:"The stat selection now displays which stat tiers are added by stat mods (PF/RL) or stasis fragments in the configuration."},{type:l.ADD,text:"You can now export (and import) individual configurations as well as all stored configurations at once."},{type:l.ADD,text:"Added a navigation bar to the title bar. On smaller screens it is replaced by two buttons in the character selection."},{type:l.ADD,text:"Added more details to the last step of the 'What to do now?' section. It now lists the fragments and mods you selected."},{type:l.MODIFIED,text:"Optimized code and reduced overall page size."}]},{version:"2.0.16",date:"Oct 26, 2021",entries:[{type:l.MODIFIED,text:"Completely rewrote the core logic in order to fix the memory issues. The tool will now no longer crash when you have many armor items, but it's slightly slower than the previous approach. I tested it with 600 items - it works and does not crash, but takes up to a minute. Make sure to never get that much armor and to lock an exotic right away."},{type:l.MODIFIED,text:"The rewrite also fixed the issue where the tool did not work in Safari, or more generally, on Mac and iPhone."},{type:l.MODIFIED,text:"The rewrite also fixed an issue where items could not be found when an result update was triggered while the inventory was updated."}]},{version:"2.0.15",date:"Oct 24, 2021",entries:[{type:l.MODIFIED,text:"Updated the visual display of the cluster page. It displays the stats in a better way now."},{type:l.MODIFIED,text:"Fixed an issue with login, where you were automatically logged in again and could not switch accounts."}]},{version:"2.0.14",date:"Oct 21, 2021",entries:[{type:l.MODIFIED,text:"Updated URLs to the mobility, resilience and recovery images, as Bungie decided to change their URLs in today's hotfix."}]},{version:"2.0.13",date:"Oct 20, 2021",entries:[{type:l.ADD,text:"Added a chart to the armor clustering page, showing each clusters average stats."},{type:l.MODIFIED,text:"Stats over 100 are now seen as wasted."}]},{version:"2.0.12",date:"Oct 18, 2021",entries:[{type:l.ADD,text:"Added an experimental armor clustering feature."}]},{version:"2.0.11",date:"Oct 13, 2021",entries:[{type:l.ADD,text:"HALLOWEEN SPECIAL! Added (temporary) filter for halloween masks! This will be removed after the event."},{type:l.MODIFIED,text:"Fix: Clear the results if you switch character and no possible permutations can be found."}]},{version:"2.0.10",date:"Oct 10, 2021",entries:[{type:l.ADD,text:"Added 'Equip Items' button to the detailed item overview."}]},{version:"2.0.9",date:"Oct 6, 2021",entries:[{type:l.ADD,text:"Added a detailed description of the steps required to build a selected result."},{type:l.ADD,text:"Added a button to disable all four armor pieces at once."},{type:l.MODIFIED,text:"Fixed an issue where the permutations were not updated after 'Ignore armor elemental affinities on masterworked armor' was changed."}]},{version:"2.0.8",date:"Oct 5, 2021",entries:[{type:l.ADD,text:"Added this changelog to the help page."},{type:l.ADD,text:"Added 'Move to Inventory' button (beta)."},{type:l.ADD,text:"Split up 'Assume items are masterworked' into three settings: Class Items, Legendaries, Exotics"},{type:l.MODIFIED,text:"'Try to optimize wasted stats' is now active per default."},{type:l.MODIFIED,text:"Introduced an item buffer in the results component to further reduce memory usage."}]}];let ve=(()=>{class n{constructor(e){this.changelog=e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(re))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-dialog"]],decls:9,vars:2,consts:[["mat-dialog-title","",1,"title"],[1,"mat-typography"],["align","end"],["cdkFocusInitial","","color","primary","mat-raised-button","",3,"mat-dialog-close"]],template:function(e,o){1&e&&(t.TgZ(0,"h2",0),t._uU(1),t.qZA(),t.TgZ(2,"mat-dialog-content",1)(3,"div"),t._uU(4," Hi! There has been a new version of D2ArmorPicker! The following list shows all the relevant changes. Note that you can always look at the changelogs in the Help tab. "),t.qZA(),t._UZ(5,"app-changelog-list"),t.qZA(),t.TgZ(6,"mat-dialog-actions",2)(7,"button",3),t._uU(8,"Thanks, I saw it!"),t.qZA()()),2&e&&(t.xp6(1),t.hij("D2ArmorPicker Changelog for Version ",o.changelog.changelogData[0].version,""),t.xp6(6),t.Q6J("mat-dialog-close",!0))},styles:[".title[_ngcontent-%COMP%]{text-decoration:underline;-webkit-text-decoration-color:#0059ff;text-decoration-color:#0059ff}"]}),n})();var Et=_(5412);let re=(()=>{class n{constructor(e){this.dialog=e}setChangelogSeenFlag(){return localStorage.setItem("last-changelog-version",this.changelogData[0].version)}get lastViewedChangelog(){return localStorage.getItem("last-changelog-version")}get mustShowChangelog(){return this.changelogData[0].version!==this.lastViewedChangelog}get changelogData(){return Te}openChangelogDialog(){this.dialog.open(ve).afterClosed().subscribe(o=>{this.setChangelogSeenFlag()})}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Et.uw))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var pt=_(266),Re=_(3162),St=_(7392),zt=_(6338),be=_(3848),Ne=_(3267);let Kt=(()=>{class n{constructor(e,o){this.templateRef=e,this.vcRef=o,this.context={$implicit:null,ngVar:null},this.hasView=!1}set ngVar(e){this.context.$implicit=this.context.ngVar=e,this.hasView||(this.vcRef.createEmbeddedView(this.templateRef,this.context),this.hasView=!0)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.Rgc),t.Y36(t.s_b))},n.\u0275dir=t.lG2({type:n,selectors:[["","ngVar",""]],inputs:{ngVar:"ngVar"}}),n})(),qe=(()=>{class n{constructor(e){this.changelog=e}ngAfterViewInit(){this.changelog.mustShowChangelog&&this.changelog.openChangelogDialog()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(re))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-dialog-controller"]],decls:0,vars:0,template:function(e,o){},encapsulation:2}),n})();function Fe(n,i){1&n&&(t.TgZ(0,"mat-toolbar",31),t._UZ(1,"span",20),t._uU(2," The API is unavailable. The app will work with the data it has available right now. "),t._UZ(3,"span",20),t.qZA())}function Je(n,i){1&n&&(t.TgZ(0,"mat-toolbar",31),t._UZ(1,"span",20),t._uU(2," There was an error with the authentication. The API may be down, or your session timed out. "),t._UZ(3,"span",20),t.qZA())}function Le(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Je,4,0,"mat-toolbar",1),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.authError)}}function Ye(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"a",32),t.NdJ("click",function(){t.CHM(e),t.oxw();const a=t.MAs(5);return t.KtG(a.toggle())}),t._uU(1),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw(2);t.ekj("active",a.activeLinkIndex===o),t.Q6J("routerLink",e.link),t.xp6(1),t.hij(" ",e.name," ")}}function Be(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",33),t.NdJ("click",function(){t.CHM(e),t.oxw();const a=t.MAs(5);return t.KtG(a.toggle())}),t.TgZ(1,"mat-icon",5),t._uU(2,"menu"),t.qZA()()}}function Ve(n,i){if(1&n&&(t.TgZ(0,"a",34),t._uU(1),t.qZA()),2&n){const e=i.$implicit,o=i.index,a=t.oxw(2);t.Q6J("active",a.activeLinkIndex===o)("routerLink",e.link),t.xp6(1),t.hij(" ",e.name," ")}}function Qe(n,i){1&n&&t._UZ(0,"mat-progress-bar",36)}function He(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Qe,1,0,"mat-progress-bar",35),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.updatingResultsTable||e.calculatingResults||e.calculatingPermutations||e.updatingInventory||e.updatingVendors||e.updatingManifest)}}function We(n,i){1&n&&(t.TgZ(0,"mat-card",43),t._uU(1," Updating vendor information inventory in the background. "),t.qZA())}function je(n,i){1&n&&(t.TgZ(0,"mat-card",44),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Updating the cached manifest."),t.qZA())}function Ge(n,i){1&n&&(t.TgZ(0,"mat-card",45),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Updating the cached inventory."),t.qZA())}function ze(n,i){if(1&n&&(t.TgZ(0,"mat-card",46),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Calculating possible results. "),t._UZ(4,"mat-progress-bar",47),t.qZA()),2&n){const e=t.oxw(3);t.xp6(4),t.Q6J("value",e.computationProgress)}}function Ke(n,i){1&n&&(t.TgZ(0,"mat-card",48),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3,"Updating the result display table."),t.qZA())}function $e(n,i){if(1&n&&(t.TgZ(0,"div",37),t.YNc(1,We,2,0,"mat-card",38),t.YNc(2,je,4,0,"mat-card",39),t.YNc(3,Ge,4,0,"mat-card",40),t.YNc(4,ze,5,1,"mat-card",41),t.YNc(5,Ke,4,0,"mat-card",42),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.updatingVendors),t.xp6(1),t.Q6J("ngIf",e.updatingManifest),t.xp6(1),t.Q6J("ngIf",e.updatingInventory),t.xp6(1),t.Q6J("ngIf",e.calculatingResults),t.xp6(1),t.Q6J("ngIf",e.updatingResultsTable)}}function Xe(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div"),t.YNc(1,Fe,4,0,"mat-toolbar",1),t.YNc(2,Le,2,1,"div",0),t.ALo(3,"async"),t.TgZ(4,"mat-sidenav",2,3),t.ALo(6,"async"),t.TgZ(7,"mat-toolbar")(8,"button",4),t.NdJ("click",function(){t.CHM(e);const a=t.MAs(5);return t.KtG(a.toggle())}),t.TgZ(9,"mat-icon",5),t._uU(10,"menu"),t.qZA(),t._uU(11," Close Menu "),t.qZA()(),t._UZ(12,"hr"),t.TgZ(13,"mat-nav-list"),t.YNc(14,Ye,2,4,"a",6),t._UZ(15,"hr"),t.TgZ(16,"a",7)(17,"a",8)(18,"mat-icon",9),t._uU(19,"attach_money"),t.qZA(),t._uU(20," Buy me a coffee! "),t.qZA()(),t.TgZ(21,"a",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.changelog.openChangelogDialog())}),t.TgZ(22,"a",11),t._uU(23," Open changelog "),t.qZA()(),t._UZ(24,"hr"),t.qZA()(),t.TgZ(25,"mat-toolbar",12),t.YNc(26,Be,3,0,"button",13),t.ALo(27,"async"),t.TgZ(28,"span"),t._uU(29,"D2ArmorPicker "),t.TgZ(30,"small"),t._uU(31," by Mijago"),t.qZA(),t.TgZ(32,"a",14),t._UZ(33,"img",15),t.qZA(),t.TgZ(34,"a",16),t._UZ(35,"img",17),t.qZA(),t.TgZ(36,"a",18),t._UZ(37,"img",19),t.qZA()(),t._UZ(38,"span",20),t.TgZ(39,"div",21)(40,"nav",22),t.YNc(41,Ve,2,3,"a",23),t.qZA()(),t._UZ(42,"span",20),t.TgZ(43,"div",24)(44,"span",25)(45,"a",26),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.changelog.openChangelogDialog())}),t._uU(46),t.qZA()(),t.TgZ(47,"a",27)(48,"mat-icon",9),t._uU(49,"attach_money"),t.qZA(),t._uU(50," Buy me a coffee! "),t.qZA(),t.TgZ(51,"button",28),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.refreshAll(!0))}),t.TgZ(52,"mat-icon"),t._uU(53,"refresh"),t.qZA()(),t.TgZ(54,"button",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.logout())}),t.TgZ(55,"mat-icon"),t._uU(56,"logout"),t.qZA()()()(),t._UZ(57,"router-outlet"),t.YNc(58,He,2,1,"span",0),t.ALo(59,"async"),t.YNc(60,$e,6,5,"div",30),t.ALo(61,"async"),t._UZ(62,"app-changelog-dialog-controller"),t.qZA()}if(2&n){const e=i.ngVar,o=t.oxw();t.xp6(1),t.Q6J("ngIf",e.apiError),t.xp6(1),t.Q6J("ngVar",t.lcZ(3,10,o.status.status)),t.xp6(2),t.Q6J("opened",!1),t.uIk("role",t.lcZ(6,12,o.isHandset$)?"dialog":"navigation"),t.xp6(10),t.Q6J("ngForOf",o.navLinks),t.xp6(12),t.Q6J("ngIf",t.lcZ(27,14,o.isHandset$)),t.xp6(15),t.Q6J("ngForOf",o.navLinks),t.xp6(5),t.hij("v",o.version,"\xa0"),t.xp6(12),t.Q6J("ngVar",t.lcZ(59,16,o.status.status)),t.xp6(2),t.Q6J("ngVar",t.lcZ(61,18,o.status.status))}}let tn=(()=>{class n{constructor(e,o,a,s,r,m,p){this.status=e,this.breakpointObserver=o,this.inv=a,this.auth=s,this.router=r,this.characterStats=m,this.changelog=p,this.version=g.N.version,this.activeLinkIndex=0,this.computationProgress=0,this.navLinks=[{link:"/",name:"Home"},{link:"/cluster",name:"Clustering"},{link:"/help",name:"Help"},{link:"/investigate",name:"Armor Investigation"},{link:"/account",name:"Account"}],this.isHandset$=this.breakpointObserver.observe([D.u3.Handset,D.u3.Small,D.u3.XSmall]).pipe((0,k.U)(C=>C.matches),(0,J.d)())}ngOnInit(){this.activeLinkIndex=this.navLinks.indexOf(this.navLinks.find(e=>e.link===this.router.url)),this.router.events.subscribe(e=>{e instanceof ot.m2&&(this.activeLinkIndex=this.navLinks.indexOf(this.navLinks.find(o=>o.link===this.router.url)))}),this.characterStats.loadCharacterStats(),this.inv.calculationProgress.subscribe(e=>{this.computationProgress=e})}refreshAll(e){var o=this;return(0,x.Z)(function*(){console.debug("Trigger refreshAll due to button press"),yield o.inv.refreshAll(e)})()}logout(){this.auth.logout()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Ct),t.Y36(D.Yg),t.Y36(At),t.Y36(gt),t.Y36(ot.F0),t.Y36(Gt),t.Y36(re))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-app-v2-core"]],decls:2,vars:3,consts:[[4,"ngVar"],["color","warn","class","bar-api-warn",4,"ngIf"],["fixedInViewport","","mode","over",1,"sidenav",3,"opened"],["drawer",""],["aria-label","Toggle sidenav","mat-stroked-button","","type","button",3,"click"],["aria-label","Side nav toggle icon"],["mat-list-item","",3,"active","routerLink","click",4,"ngFor","ngForOf"],["href","https://ko-fi.com/mijago","mat-list-item",""],["color","primary","mat-raised-button","","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["inline",""],["mat-list-item","",3,"click"],["mat-raised-button",""],["id","header","role","heading"],["aria-label","Toggle sidenav","mat-icon-button","","type","button",3,"click",4,"ngIf"],["href","https://twitter.com/MijagoCoding/","matTooltip","Birb App","target","_blank"],["alt","Me on twitter","src","assets/logo-twitter.png",1,"logo-twitter"],["href","https://ko-fi.com/mijago","matTooltip","If you like my work, you can always buy me a coffee!","target","_blank"],["alt","Ko-Fi","src","assets/logo-kofi.png",1,"logo-twitter"],["href","http://discord.d2armorpicker.com/","matTooltip","Visit me at the development & support discord.","target","_blank"],["alt","Discord","src","assets/logo-discord.png",1,"logo-twitter"],[1,"header-spacer"],["fxHide.lt-md","true","fxShow","true"],["id","navbar","mat-tab-nav-bar",""],["mat-tab-link","",3,"active","routerLink",4,"ngFor","ngForOf"],["id","buttonContainer"],["fxShow","false","fxShow.gt-md","true","matTooltip","Click to show the changelog dialog.",1,"changelogText"],[3,"click"],["color","accent","fxHide.lt-md","true","fxShow","true","href","https://ko-fi.com/mijago","mat-stroked-button","","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["aria-label","Refresh","mat-icon-button","","matTooltip","Reload all items from the API.",1,"example-icon",3,"click"],["aria-label","Logout","color","warn","mat-icon-button","","matTooltip","Logout",1,"example-icon",3,"click"],["class","info-container",4,"ngVar"],["color","warn",1,"bar-api-warn"],["mat-list-item","",3,"routerLink","click"],["aria-label","Toggle sidenav","mat-icon-button","","type","button",3,"click"],["mat-tab-link","",3,"active","routerLink"],["id","loading","mode","indeterminate",4,"ngIf"],["id","loading","mode","indeterminate"],[1,"info-container"],["class","info info-updating-vendor",4,"ngIf"],["class","info info-updating-manifest",4,"ngIf"],["class","info info-updating-inventory",4,"ngIf"],["class","info info-calculating-results",4,"ngIf"],["class","info info-updating-results",4,"ngIf"],[1,"info","info-updating-vendor"],[1,"info","info-updating-manifest"],[1,"info","info-updating-inventory"],[1,"info","info-calculating-results"],[3,"value"],[1,"info","info-updating-results"]],template:function(e,o){1&e&&(t.YNc(0,Xe,63,20,"div",0),t.ALo(1,"async")),2&e&&t.Q6J("ngVar",t.lcZ(1,1,o.status.status))},dependencies:[Z.sg,Z.O5,M.b8,rt.lW,rt.zs,Y.a8,pt.gM,Re.pW,St.Hw,It.Ye,zt.Hk,zt.Tg,be.BU,be.Nj,Ne.JX,ot.lC,ot.yS,Kt,qe,Z.Ov],styles:[".loading[_ngcontent-%COMP%]{cursor:progress}.info-container[_ngcontent-%COMP%]{z-index:1000;position:fixed;top:37px;right:0;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-wrap:wrap;padding:10px;overflow:auto;pointer-events:none}@media (min-width: 1650px){.info-container[_ngcontent-%COMP%]{left:1380px;right:auto}}.info[_ngcontent-%COMP%]{width:200px;margin-bottom:5px;border:antiquewhite 1px solid}.info.info-updating-manifest[_ngcontent-%COMP%]{border-color:#f09c4e}.info.info-updating-inventory[_ngcontent-%COMP%]{border-color:#f0ad4e}.info.info-updating-vendor[_ngcontent-%COMP%]{border-color:#f0e54e}.info.info-calculating-permutations[_ngcontent-%COMP%]{border-color:#5cb85c}.info.info-calculating-results[_ngcontent-%COMP%]{border-color:#89b85c}.info.info-updating-results[_ngcontent-%COMP%]{border-color:#5cb85c}.sidenav-container[_ngcontent-%COMP%]{position:fixed;top:0;left:0;height:100%;z-index:20}.sidenav[_ngcontent-%COMP%]{width:200px;position:fixed;top:0;left:0;height:100%;z-index:20}.sidenav[_ngcontent-%COMP%] .mat-toolbar[_ngcontent-%COMP%]{background:inherit}.sidenav[_ngcontent-%COMP%] .active[_ngcontent-%COMP%]{background-color:#ffffff12;color:#b8c4dc}.mat-toolbar.mat-primary[_ngcontent-%COMP%]{position:sticky;top:0;z-index:1}#header[_ngcontent-%COMP%]{position:relative;height:42px;margin-bottom:5px}.header-spacer[_ngcontent-%COMP%]{flex:1 1 auto}.changelogText[_ngcontent-%COMP%]{cursor:pointer}#loading[_ngcontent-%COMP%]{position:fixed;top:0;width:100%;z-index:1000}.d2ap-router-link[_ngcontent-%COMP%]{cursor:pointer}[_nghost-%COMP%] .mat-tab-link{min-width:75px;opacity:1}.bar-api-warn[_ngcontent-%COMP%]{background-color:#f0894e;position:relative;height:20px;margin-bottom:2px;font-size:16px}"]}),n})();var W=_(2143),Ae=_(8739),ue=_(6308),xt=_(7340),yt=_(7625);function en(n,i){1&n&&(t.ynx(0),t._uU(1," Click on a row to expand it and to see the list of the items required for this build."),t._UZ(2,"br"),t.BQk())}function nn(n,i){1&n&&(t.ynx(0),t.TgZ(1,"div",59),t._UZ(2,"img",60),t._uU(3,"\xa0 "),t.qZA(),t.TgZ(4,"span",61)(5,"b"),t._uU(6,"No combinations found."),t.qZA()(),t._uU(7," You should loosen your settings a bit. "),t.BQk())}function on(n,i){if(1&n&&(t.TgZ(0,"mat-icon",62,63),t.ALo(2,"number"),t._uU(3,"report_problem "),t.qZA()),2&n){const e=t.oxw();t.MGl("matTooltip","Note: To speed up the whole process, only ",t.lcZ(2,1,e.parsedResults)," results are listed in this table.\n If you need more entries, disable the limitation in the advanced settings.")}}function an(n,i){if(1&n&&(t.TgZ(0,"mat-icon",62,63),t.ALo(2,"number"),t._uU(3,"report_problem "),t.qZA()),2&n){const e=t.oxw();t.MGl("matTooltip","Note: To prevent Out-Of-Memory crashes, only ",t.lcZ(2,1,e.parsedResults)," results are listed in this table.\n You should narrow down your settings a bit.")}}function sn(n,i){1&n&&(t.TgZ(0,"mat-chip",64,63),t._uU(2,"No Exotic "),t.qZA())}function rn(n,i){1&n&&(t.TgZ(0,"mat-chip",65,63),t._uU(2,"Exotic "),t.qZA())}function ln(n,i){1&n&&(t.TgZ(0,"mat-chip",66,63),t._uU(2," Multiple Exotics "),t.qZA())}function cn(n,i){1&n&&(t.TgZ(0,"mat-chip",67,63),t._uU(2,"No stat mods "),t.qZA())}function mn(n,i){1&n&&(t.TgZ(0,"mat-chip",68,63),t._uU(2,"Reduce wasted stats "),t.qZA())}function dn(n,i){1&n&&(t.TgZ(0,"mat-chip",69,63),t._uU(2,"Stat Mod Limitation "),t.qZA())}function un(n,i){1&n&&(t.TgZ(0,"mat-chip",70,63),t._uU(2," Armor Perk or Slot "),t.qZA())}function pn(n,i){1&n&&(t.TgZ(0,"mat-chip",71,63),t._uU(2,"Zero Waste "),t.qZA())}function gn(n,i){1&n&&(t.TgZ(0,"mat-chip",72,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Assume legendaries are artifice\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function _n(n,i){1&n&&(t.TgZ(0,"mat-chip",74,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Assume exotics are artifice\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function fn(n,i){1&n&&(t.TgZ(0,"mat-chip",75,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Ignoring existing artifice slots on exotic items\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function hn(n,i){1&n&&(t.TgZ(0,"mat-chip",76,63),t._uU(2," Masterworked Exotics Only "),t.qZA())}function xn(n,i){1&n&&(t.TgZ(0,"mat-chip",77,63),t._uU(2," Masterworked Legendaries Only "),t.qZA())}function yn(n,i){1&n&&(t.TgZ(0,"mat-chip",78,63),t._uU(2," Masterwork Assumption "),t.qZA())}function Cn(n,i){1&n&&(t.TgZ(0,"mat-chip",79,63),t._uU(2," Include Collection Rolls "),t.qZA())}function Tn(n,i){1&n&&(t.TgZ(0,"mat-chip",80,63),t._uU(2," Include Vendor Items "),t.qZA())}function vn(n,i){1&n&&(t.TgZ(0,"th",81),t._uU(1,"Mobility "),t.qZA())}function bn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",83),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Mobility]," ")}}function An(n,i){1&n&&(t.TgZ(0,"th",84),t._uU(1," Resilience "),t.qZA())}function wn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",85),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Resilience]," ")}}function In(n,i){1&n&&(t.TgZ(0,"th",86),t._uU(1," Recovery "),t.qZA())}function Zn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",87),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Recovery]," ")}}function Sn(n,i){1&n&&(t.TgZ(0,"th",88),t._uU(1," Discipline "),t.qZA())}function Mn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",89),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Discipline]," ")}}function On(n,i){1&n&&(t.TgZ(0,"th",90),t._uU(1," Intellect "),t.qZA())}function kn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",91),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Intellect]," ")}}function En(n,i){1&n&&(t.TgZ(0,"th",92),t._uU(1,"Strength "),t.qZA())}function Un(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",93),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Strength]," ")}}function Dn(n,i){1&n&&(t.TgZ(0,"th",94),t._uU(1," Used Mods "),t.qZA())}function Pn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._UZ(1,"app-table-mod-display",96),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("mods",e.mods)("artifice",e.artifice)}}function Rn(n,i){1&n&&(t.TgZ(0,"th",97),t._uU(1," Exotic"),t.qZA())}function Nn(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",100,63)(3,"img",101),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.s9C("matTooltip",e.name),t.MGl("src","https://bungie.net/",e.icon,"",t.LSH),t.xp6(2),t.MGl("src","https://bungie.net/",e.watermark,"",t.LSH)}}function qn(n,i){1&n&&t._UZ(0,"img",102)}function Fn(n,i){if(1&n&&(t.TgZ(0,"td",95),t.YNc(1,Nn,4,3,"ng-container",98),t.YNc(2,qn,1,0,"img",99),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e.exotic),t.xp6(1),t.Q6J("ngIf",0===e.exotic.length)}}function Jn(n,i){1&n&&(t.TgZ(0,"th",97),t._uU(1,"Sources"),t.qZA())}function Ln(n,i){1&n&&t._UZ(0,"img",106)}function Yn(n,i){1&n&&t._UZ(0,"img",107)}function Bn(n,i){if(1&n&&(t.TgZ(0,"td",95)(1,"span",103),t.YNc(2,Ln,1,0,"img",104),t.YNc(3,Yn,1,0,"img",105),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.Q6J("ngIf",!!e.usesCollectionRoll),t.xp6(1),t.Q6J("ngIf",!!e.usesVendorRoll)}}function Vn(n,i){1&n&&t._UZ(0,"th",97)}function Qn(n,i){1&n&&(t.TgZ(0,"mat-icon",111),t._uU(1," expand_more "),t.qZA())}function Hn(n,i){1&n&&(t.TgZ(0,"mat-icon",112),t._uU(1," expand_less "),t.qZA())}function Wn(n,i){1&n&&(t.TgZ(0,"mat-icon",113,63),t._uU(2," report_problem "),t.qZA())}function jn(n,i){if(1&n&&(t.TgZ(0,"td",95),t.YNc(1,Qn,2,0,"mat-icon",108),t.YNc(2,Hn,2,0,"mat-icon",109),t.YNc(3,Wn,3,0,"mat-icon",110),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngIf",o.expandedElement!==e),t.xp6(1),t.Q6J("ngIf",o.expandedElement===e),t.xp6(1),t.Q6J("ngIf",o.checkIfAnyItemsMayBeInvalid(e))}}function Gn(n,i){1&n&&(t.TgZ(0,"th",114),t._uU(1,"Tiers "),t.qZA())}function zn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.tiers," ")}}function Kn(n,i){1&n&&(t.TgZ(0,"th",115),t._uU(1,"Max Tiers "),t.qZA())}function $n(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.tiers+(5-e.modCount)," ")}}function Xn(n,i){1&n&&(t.TgZ(0,"th",116),t._uU(1,"Wasted "),t.qZA())}function to(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.waste," ")}}function eo(n,i){if(1&n&&(t.TgZ(0,"td",95)(1,"div",117),t._UZ(2,"app-expanded-result-content",118),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw();t.uIk("colspan",o.shownColumns.length),t.xp6(1),t.Q6J("@detailExpand",e===o.expandedElement?"expanded":"collapsed"),t.xp6(1),t.Q6J("element",e)}}function no(n,i){1&n&&t._UZ(0,"tr",119)}function oo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr",120),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.expandedElement=r.expandedElement===s?null:s)}),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw();t.ekj("example-expanded-row",o.expandedElement===e)}}function io(n,i){1&n&&t._UZ(0,"tr",121)}function ao(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-card-actions"),t._UZ(1,"span",122),t.TgZ(2,"button",123),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.saveBuilds())}),t._uU(3,"Download results as JSON"),t.qZA()()}}const so=function(){return["expandedDetail"]},ro=function(){return[10,20,50]};var Bt=(()=>{return(n=Bt||(Bt={}))[n.TRANSFER_NONE=0]="TRANSFER_NONE",n[n.WAITING_FOR_TRANSFER=1]="WAITING_FOR_TRANSFER",n[n.TRANSFERRING=2]="TRANSFERRING",n[n.TRANSFERRED=3]="TRANSFERRED",n[n.ERROR_DURING_TRANSFER=4]="ERROR_DURING_TRANSFER",Bt;var n})();let we=(()=>{class n{constructor(e,o,a){this.inventory=e,this.config=o,this.status=a,this.ArmorStat=c.WB,this.StatModifier=c.iV,this._results=[],this._config_assumeLegendariesMasterworked=!1,this._config_assumeExoticsMasterworked=!1,this._config_assumeClassItemMasterworked=!1,this._config_maximumStatMods=5,this._config_selectedExotics=[],this._config_tryLimitWastedStats=!1,this._config_onlyUseMasterworkedExotics=!1,this._config_onlyUseMasterworkedLegendaries=!1,this._config_includeCollectionRolls=!1,this._config_includeVendorRolls=!1,this._config_onlyShowResultsWithNoWastedStats=!1,this._config_assumeEveryLegendaryIsArtifice=!1,this._config_assumeEveryExoticIsArtifice=!1,this._config_ignoreExistingExoticArtificeSlots=!1,this._config_modslotLimitation=[],this._config_armorPerkLimitation=[],this.tableDataSource=new W.by,this.paginator=null,this.sort=null,this.expandedElement=null,this.shownColumns=["exotic","mobility","resilience","recovery","discipline","intellect","strength","tiers","mods","dropdown"],this.selectedClass=3,this.totalTime=0,this.itemCount=0,this.totalResults=0,this.parsedResults=0,this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(o=>{this.selectedClass=o.characterClass,this._config_assumeLegendariesMasterworked=o.assumeLegendariesMasterworked,this._config_assumeExoticsMasterworked=o.assumeExoticsMasterworked,this._config_assumeClassItemMasterworked=o.assumeClassItemMasterworked,this._config_tryLimitWastedStats=o.tryLimitWastedStats,this._config_maximumStatMods=o.maximumStatMods,this._config_onlyUseMasterworkedExotics=o.onlyUseMasterworkedExotics,this._config_onlyUseMasterworkedLegendaries=o.onlyUseMasterworkedLegendaries,this._config_includeCollectionRolls=o.includeCollectionRolls,this._config_includeVendorRolls=o.includeVendorRolls,this._config_onlyShowResultsWithNoWastedStats=o.onlyShowResultsWithNoWastedStats,this._config_assumeEveryLegendaryIsArtifice=o.assumeEveryLegendaryIsArtifice,this._config_assumeEveryExoticIsArtifice=o.assumeEveryExoticIsArtifice,this._config_ignoreExistingExoticArtificeSlots=o.ignoreExistingExoticArtificeSlots,this._config_selectedExotics=o.selectedExotics,this._config_armorPerkLimitation=Object.entries(o.armorPerks).filter(s=>s[1].value!=c.Pn.None).map(s=>s[1]),this._config_modslotLimitation=Object.entries(o.maximumModSlots).filter(s=>s[1].value<5).map(s=>s[1]);let a=["exotic","mobility","resilience","recovery","discipline","intellect","strength",o.showPotentialTierColumn?"potential_tiers":"tiers","mods"];o.showWastedStatsColumn&&a.push("waste"),(o.includeVendorRolls||o.includeCollectionRolls)&&a.push("source"),a.push("dropdown"),this.shownColumns=a}),this.inventory.armorResults.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){e._results=a.results,e.itemCount=a.itemCount,e.totalTime=a.totalTime,e.totalResults=a.totalResults,e.parsedResults=e._results.length,e.status.modifyStatus(s=>s.updatingResultsTable=!0),yield e.updateData(),e.status.modifyStatus(s=>s.updatingResultsTable=!1)});return function(a){return o.apply(this,arguments)}}()),this.tableDataSource.paginator=this.paginator,this.tableDataSource.sort=this.sort,this.tableDataSource.sortingDataAccessor=(o,a)=>{switch(a){case"Mobility":return o.stats[c.WB.Mobility];case"Resilience":return o.stats[c.WB.Resilience];case"Recovery":return o.stats[c.WB.Recovery];case"Discipline":return o.stats[c.WB.Discipline];case"Intellect":return o.stats[c.WB.Intellect];case"Strength":return o.stats[c.WB.Strength];case"Tiers":return o.tiers;case"Max Tiers":return 10*(o.tiers+(5-o.modCount));case"Waste":return o.waste;case"Mods":return 100*o.modCount+o.modCost}return 0}}updateData(){var e=this;return(0,x.Z)(function*(){console.time("Update Table Data"),e.tableDataSource.paginator=e.paginator,e.tableDataSource.sort=e.sort,e.tableDataSource.data=e._results,console.timeEnd("Update Table Data")})()}checkIfAnyItemsMayBeInvalid(e){return(e?.items.filter(o=>o.filter(a=>a.mayBeBugged).length>0).length||0)>0}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}saveBuilds(){let e={configCompressed:this.config.getCurrentConfigBase64Compressed(),config:this.config.readonlyConfigurationSnapshot,results:this._results.map(r=>{let m=Object.assign({},r);return m.items=m.items.filter(p=>!!p[0]).map(p=>({hash:p[0].hash,instance:p[0].itemInstanceId})),delete m.exotic,m})};document.createElement("a").download="builds.json";const a=window.URL.createObjectURL(new Blob([JSON.stringify(e,null,2)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_results.json"),document.body.appendChild(s),s.click()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(At),t.Y36(z),t.Y36(Ct))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-results"]],viewQuery:function(e,o){if(1&e&&(t.Gf(Ae.NW,5),t.Gf(ue.YE,5)),2&e){let a;t.iGM(a=t.CRH())&&(o.paginator=a.first),t.iGM(a=t.CRH())&&(o.sort=a.first)}},decls:98,vars:37,consts:[["id","card-results"],[4,"ngIf"],["fxLayout","row","fxLayoutAlign","start center","fxLayoutGap","5px",1,"config-summary-box"],["appearance","outline","fxFlex","",1,"info-box"],["matInput","","readonly","",3,"value"],["class","report-problem-icon","matSuffix","",3,"matTooltip",4,"ngIf"],["appearance","outline","disabled","",1,"config-summary-box"],["matInput","","readonly","","value","\xa0",1,"hidden-input"],["aria-label","Configuration Summary"],["disableRipple","","matTooltip","This setting enforces that all exotics are ignored.",4,"ngIf"],["disableRipple","","matTooltip","This setting enforces that only one specific exotic is used.",4,"ngIf"],["disableRipple","","matTooltip","The tool will try to fulfill your settings for all the selected exotics. If you select exotics in different slots then it will search for legendary items to allow hotswapping with the same stats.",4,"ngIf"],["disableRipple","","matTooltip","You enforced that no stat mods are used.",4,"ngIf"],["disableRipple","","matTooltip","The tool will add minor stat mods to reduce wasted stats.",4,"ngIf"],["disableRipple","","matTooltip","This setting limits available stat mod types, like major Intellect or Recovery.",4,"ngIf"],["disableRipple","","matTooltip","This setting enforces an specific armor perk or modslot for a specific armor slot.",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only builds with no wasted stats are shown.","selected","",4,"ngIf"],["disableRipple","","matTooltip","EVERY legendary is assumed to be artifice.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","EVERY exotic is assumed to be artifice.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","Ignoring existing artifice slots on exotic items.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only exotic armor pieces that are already masterworked are used.","selected","",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only legendary armor pieces are already masterworked are used.","selected","",4,"ngIf"],["disableRipple","","matTooltip","Some masterwork assumptions are in place. This means that you may have to masterwork items. Look at your advanced settings to see which ones are activated.",4,"ngIf"],["disableRipple","","matTooltip","Collection Exotic rolls will be included in the search.",4,"ngIf"],["disableRipple","","matTooltip","Currently available Vendor items will be included in the search.",4,"ngIf"],[1,"hint-text"],["aria-hidden","false","inline",""],["mat-table","","matSort","","matSortActive","Mods","matSortDirection","asc","multiTemplateDataRows","",1,"result-table",3,"dataSource"],["matColumnDef","mobility"],["mat-header-cell","","mat-sort-header","Mobility","matTooltip","The mobility of this armor combination.",4,"matHeaderCellDef"],["class","statColumn","mat-cell","",4,"matCellDef"],["matColumnDef","resilience"],["mat-header-cell","","mat-sort-header","Resilience","matTooltip","The resilience of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","recovery"],["mat-header-cell","","mat-sort-header","Recovery","matTooltip","The recovery of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","discipline"],["mat-header-cell","","mat-sort-header","Discipline","matTooltip","The discipline of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","intellect"],["mat-header-cell","","mat-sort-header","Intellect","matTooltip","The intellect of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","strength"],["mat-header-cell","","mat-sort-header","Strength","matTooltip","The strength of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","mods"],["mat-header-cell","","mat-sort-header","Mods","matTooltip","The amount of mods required for each combination. Sorting after this takes the mod cost into account.",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","exotic"],["mat-header-cell","",4,"matHeaderCellDef"],["matColumnDef","source"],["matColumnDef","dropdown"],["matColumnDef","tiers"],["mat-header-cell","","mat-sort-header","Tiers","matTooltip","The amount of Tiers in this build. A tier is each successful 10-step of any stat.",4,"matHeaderCellDef"],["matColumnDef","potential_tiers"],["mat-header-cell","","mat-sort-header","Max Tiers","matTooltip","The potential reachable stat tiers with all N stat mods used. As of now, this does NOT take mod filters into consideration.",4,"matHeaderCellDef"],["matColumnDef","waste"],["mat-header-cell","","mat-sort-header","Waste","matTooltip","How many points are wasted. Any stat not ending in 0 adds to this value.",4,"matHeaderCellDef"],["matColumnDef","expandedDetail"],["mat-header-row","",4,"matHeaderRowDef"],["class","example-element-row","mat-row","",3,"example-expanded-row","click",4,"matRowDef","matRowDefColumns"],["class","example-detail-row","mat-row","",4,"matRowDef","matRowDefColumns"],["aria-label","Select page of periodic elements","pageSize","20","showFirstLastButtons","",3,"pageSizeOptions"],[1,"no-found-sadcat-container"],["src","assets/status/emoji/sadcat.png",1,"no-found-sadcat"],[1,"warning-none-found"],["matSuffix","",1,"report-problem-icon",3,"matTooltip"],["tooltip","matTooltip"],["disableRipple","","matTooltip","This setting enforces that all exotics are ignored."],["disableRipple","","matTooltip","This setting enforces that only one specific exotic is used."],["disableRipple","","matTooltip","The tool will try to fulfill your settings for all the selected exotics. If you select exotics in different slots then it will search for legendary items to allow hotswapping with the same stats."],["disableRipple","","matTooltip","You enforced that no stat mods are used."],["disableRipple","","matTooltip","The tool will add minor stat mods to reduce wasted stats."],["disableRipple","","matTooltip","This setting limits available stat mod types, like major Intellect or Recovery."],["disableRipple","","matTooltip","This setting enforces an specific armor perk or modslot for a specific armor slot."],["disableRipple","","matTooltip","This setting means that only builds with no wasted stats are shown.","selected",""],["disableRipple","","matTooltip","EVERY legendary is assumed to be artifice.","selected","","color","warn"],["inline","",2,"height","100%"],["disableRipple","","matTooltip","EVERY exotic is assumed to be artifice.","selected","","color","warn"],["disableRipple","","matTooltip","Ignoring existing artifice slots on exotic items.","selected","","color","warn"],["disableRipple","","matTooltip","This setting means that only exotic armor pieces that are already masterworked are used.","selected",""],["disableRipple","","matTooltip","This setting means that only legendary armor pieces are already masterworked are used.","selected",""],["disableRipple","","matTooltip","Some masterwork assumptions are in place. This means that you may have to masterwork items. Look at your advanced settings to see which ones are activated."],["disableRipple","","matTooltip","Collection Exotic rolls will be included in the search."],["disableRipple","","matTooltip","Currently available Vendor items will be included in the search."],["mat-header-cell","","mat-sort-header","Mobility","matTooltip","The mobility of this armor combination."],["mat-cell","",1,"statColumn"],["alt","Mobility","src","https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Resilience","matTooltip","The resilience of this armor combination."],["alt","Resilience","src","https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Recovery","matTooltip","The recovery of this armor combination."],["alt","Recovery","src","https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Discipline","matTooltip","The discipline of this armor combination."],["alt","Discipline","src","https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Intellect","matTooltip","The intellect of this armor combination."],["alt","Intellect","src","https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Strength","matTooltip","The strength of this armor combination."],["alt","Strength","src","https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Mods","matTooltip","The amount of mods required for each combination. Sorting after this takes the mod cost into account."],["mat-cell",""],[1,"modPreview",3,"mods","artifice"],["mat-header-cell",""],[4,"ngFor","ngForOf"],["class","itemIcon","src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",4,"ngIf"],[1,"itemIcon",3,"matTooltip","src"],[1,"itemIconWatermark",3,"src"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",1,"itemIcon"],[1,"source-column"],["matTooltip","This build uses a collection exotic. You have to collect it before you can use it.","class","collectionIcon","src","https://www.bungie.net/common/destiny2_content/icons/1d01287dd47af97fef16fa6acbac23ba.png",4,"ngIf"],["matTooltip","This build uses a vendor item. You have to collect it before you can use it.","class","vendorIcon","src","https://www.bungie.net/common/destiny2_content/icons/8ef4b5bd32277dba9aee7c368404ad5d.jpg",4,"ngIf"],["matTooltip","This build uses a collection exotic. You have to collect it before you can use it.","src","https://www.bungie.net/common/destiny2_content/icons/1d01287dd47af97fef16fa6acbac23ba.png",1,"collectionIcon"],["matTooltip","This build uses a vendor item. You have to collect it before you can use it.","src","https://www.bungie.net/common/destiny2_content/icons/8ef4b5bd32277dba9aee7c368404ad5d.jpg",1,"vendorIcon"],["matTooltip","Click to show details for this build.",4,"ngIf"],["matTooltip","Click to hide details for this build.",4,"ngIf"],["aria-hidden","false","aria-label","Error","class","report-problem-icon","inline","","matTooltip","The stats of this build may be incorrect. Make sure that you remove every positive or negative stat modifier from the marked items.",4,"ngIf"],["matTooltip","Click to show details for this build."],["matTooltip","Click to hide details for this build."],["aria-hidden","false","aria-label","Error","inline","","matTooltip","The stats of this build may be incorrect. Make sure that you remove every positive or negative stat modifier from the marked items.",1,"report-problem-icon"],["mat-header-cell","","mat-sort-header","Tiers","matTooltip","The amount of Tiers in this build. A tier is each successful 10-step of any stat."],["mat-header-cell","","mat-sort-header","Max Tiers","matTooltip","The potential reachable stat tiers with all N stat mods used. As of now, this does NOT take mod filters into consideration."],["mat-header-cell","","mat-sort-header","Waste","matTooltip","How many points are wasted. Any stat not ending in 0 adds to this value."],[1,"example-element-detail"],[3,"element"],["mat-header-row",""],["mat-row","",1,"example-element-row",3,"click"],["mat-row","",1,"example-detail-row"],[1,"flex-spacer"],["mat-raised-button","","color","primary",3,"click"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card",0)(1,"mat-card-title"),t._uU(2,"Results"),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t.YNc(4,en,3,0,"ng-container",1),t.YNc(5,nn,8,0,"ng-container",1),t.qZA(),t.TgZ(6,"mat-card-content")(7,"div")(8,"div",2)(9,"mat-form-field",3)(10,"mat-label"),t._uU(11,"Items Used"),t.qZA(),t._UZ(12,"input",4),t.ALo(13,"number"),t.qZA(),t.TgZ(14,"mat-form-field",3)(15,"mat-label"),t._uU(16,"Combinations generated"),t.qZA(),t._UZ(17,"input",4),t.ALo(18,"number"),t.YNc(19,on,4,3,"mat-icon",5),t.YNc(20,an,4,3,"mat-icon",5),t.qZA(),t.TgZ(21,"mat-form-field",3)(22,"mat-label"),t._uU(23,"Time required"),t.qZA(),t._UZ(24,"input",4),t.ALo(25,"number"),t.qZA()(),t.TgZ(26,"mat-form-field",6)(27,"mat-label"),t._uU(28,"Summary of important configuration choices"),t.qZA(),t._UZ(29,"input",7),t.TgZ(30,"mat-chip-list",8),t.YNc(31,sn,3,0,"mat-chip",9),t.YNc(32,rn,3,0,"mat-chip",10),t.YNc(33,ln,3,0,"mat-chip",11),t.YNc(34,cn,3,0,"mat-chip",12),t.YNc(35,mn,3,0,"mat-chip",13),t.YNc(36,dn,3,0,"mat-chip",14),t.YNc(37,un,3,0,"mat-chip",15),t.YNc(38,pn,3,0,"mat-chip",16),t.YNc(39,gn,7,0,"mat-chip",17),t.YNc(40,_n,7,0,"mat-chip",18),t.YNc(41,fn,7,0,"mat-chip",19),t.YNc(42,hn,3,0,"mat-chip",20),t.YNc(43,xn,3,0,"mat-chip",21),t.YNc(44,yn,3,0,"mat-chip",22),t.YNc(45,Cn,3,0,"mat-chip",23),t.YNc(46,Tn,3,0,"mat-chip",24),t.qZA()(),t.TgZ(47,"div",25)(48,"mat-icon",26),t._uU(49,"info"),t.qZA(),t._uU(50," Note that you can change the sort column and order of the table by clicking on the headers. "),t.qZA(),t.TgZ(51,"table",27),t.ynx(52,28),t.YNc(53,vn,2,0,"th",29),t.YNc(54,bn,3,1,"td",30),t.BQk(),t.ynx(55,31),t.YNc(56,An,2,0,"th",32),t.YNc(57,wn,3,1,"td",30),t.BQk(),t.ynx(58,33),t.YNc(59,In,2,0,"th",34),t.YNc(60,Zn,3,1,"td",30),t.BQk(),t.ynx(61,35),t.YNc(62,Sn,2,0,"th",36),t.YNc(63,Mn,3,1,"td",30),t.BQk(),t.ynx(64,37),t.YNc(65,On,2,0,"th",38),t.YNc(66,kn,3,1,"td",30),t.BQk(),t.ynx(67,39),t.YNc(68,En,2,0,"th",40),t.YNc(69,Un,3,1,"td",30),t.BQk(),t.ynx(70,41),t.YNc(71,Dn,2,0,"th",42),t.YNc(72,Pn,2,2,"td",43),t.BQk(),t.ynx(73,44),t.YNc(74,Rn,2,0,"th",45),t.YNc(75,Fn,3,2,"td",43),t.BQk(),t.ynx(76,46),t.YNc(77,Jn,2,0,"th",45),t.YNc(78,Bn,4,2,"td",43),t.BQk(),t.ynx(79,47),t.YNc(80,Vn,1,0,"th",45),t.YNc(81,jn,4,3,"td",43),t.BQk(),t.ynx(82,48),t.YNc(83,Gn,2,0,"th",49),t.YNc(84,zn,2,1,"td",43),t.BQk(),t.ynx(85,50),t.YNc(86,Kn,2,0,"th",51),t.YNc(87,$n,2,1,"td",43),t.BQk(),t.ynx(88,52),t.YNc(89,Xn,2,0,"th",53),t.YNc(90,to,2,1,"td",43),t.BQk(),t.ynx(91,54),t.YNc(92,eo,3,3,"td",43),t.BQk(),t.YNc(93,no,1,0,"tr",55),t.YNc(94,oo,1,2,"tr",56),t.YNc(95,io,1,0,"tr",57),t.qZA(),t._UZ(96,"mat-paginator",58),t.qZA()(),t.YNc(97,ao,4,0,"mat-card-actions",1),t.qZA()),2&e&&(t.xp6(4),t.Q6J("ngIf",o.totalResults>0),t.xp6(1),t.Q6J("ngIf",0===o.totalResults),t.xp6(7),t.s9C("value",t.lcZ(13,29,o.itemCount)),t.xp6(5),t.s9C("value",t.lcZ(18,31,o.totalResults)),t.xp6(2),t.Q6J("ngIf",o.parsedResults!==o.totalResults&&5e4===o.parsedResults),t.xp6(1),t.Q6J("ngIf",o.parsedResults!==o.totalResults&&1e6===o.parsedResults),t.xp6(4),t.MGl("value","",t.lcZ(25,33,o.totalTime),"ms"),t.xp6(7),t.Q6J("ngIf",o._config_selectedExotics.indexOf(-1)>-1),t.xp6(1),t.Q6J("ngIf",1===o._config_selectedExotics.length&&-1===o._config_selectedExotics.indexOf(-1)),t.xp6(1),t.Q6J("ngIf",o._config_selectedExotics.length>1&&-1===o._config_selectedExotics.indexOf(-1)),t.xp6(1),t.Q6J("ngIf",0===o._config_maximumStatMods),t.xp6(1),t.Q6J("ngIf",o._config_tryLimitWastedStats),t.xp6(1),t.Q6J("ngIf",o._config_modslotLimitation.length>0),t.xp6(1),t.Q6J("ngIf",o._config_armorPerkLimitation.length>0),t.xp6(1),t.Q6J("ngIf",o._config_onlyShowResultsWithNoWastedStats),t.xp6(1),t.Q6J("ngIf",o._config_assumeEveryLegendaryIsArtifice),t.xp6(1),t.Q6J("ngIf",o._config_assumeEveryExoticIsArtifice),t.xp6(1),t.Q6J("ngIf",o._config_ignoreExistingExoticArtificeSlots),t.xp6(1),t.Q6J("ngIf",o._config_onlyUseMasterworkedExotics),t.xp6(1),t.Q6J("ngIf",o._config_onlyUseMasterworkedLegendaries),t.xp6(1),t.Q6J("ngIf",!o._config_onlyUseMasterworkedExotics&&!o._config_onlyUseMasterworkedLegendaries&&(o._config_assumeLegendariesMasterworked||o._config_assumeExoticsMasterworked||o._config_assumeClassItemMasterworked)),t.xp6(1),t.Q6J("ngIf",o._config_includeCollectionRolls),t.xp6(1),t.Q6J("ngIf",o._config_includeVendorRolls),t.xp6(5),t.Q6J("dataSource",o.tableDataSource),t.xp6(42),t.Q6J("matHeaderRowDef",o.shownColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.shownColumns),t.xp6(1),t.Q6J("matRowDefColumns",t.DdM(35,so)),t.xp6(1),t.Q6J("pageSizeOptions",t.DdM(36,ro)),t.xp6(1),t.Q6J("ngIf",o.totalResults>0))},styles:["#card-results[_ngcontent-%COMP%]{display:inline-block;vertical-align:top;white-space:normal;width:-moz-fit-content;width:fit-content;margin-left:3px}.statColumn[_ngcontent-%COMP%]{position:relative}.statIcon[_ngcontent-%COMP%]{position:absolute;height:22px;margin-left:2px;top:11px}.itemIcon[_ngcontent-%COMP%]{width:32px;height:32px;margin-right:3px}.itemIconWatermark[_ngcontent-%COMP%]{width:32px;height:32px;margin-right:3px;margin-left:-35px;pointer-events:none}.source-column[_ngcontent-%COMP%]{float:left}.source-column[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:nth-of-type(2){margin-top:5px;margin-bottom:-3px}.collectionIcon[_ngcontent-%COMP%], .vendorIcon[_ngcontent-%COMP%]{width:32px;margin-left:3px;display:block}tr.example-element-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom-width:0}tr.example-detail-row[_ngcontent-%COMP%]{height:0!important}.example-element-detail[_ngcontent-%COMP%]{overflow:hidden;display:flex}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}.hint-text[_ngcontent-%COMP%]{font-size:small;color:#d5d5d5}[_nghost-%COMP%] .info-box .mat-form-field-wrapper{padding-bottom:5px!important;cursor:default}.hidden-input[_ngcontent-%COMP%]{display:none}.config-summary-box[_ngcontent-%COMP%]{width:100%}.result-table[_ngcontent-%COMP%] tr.example-element-row[_ngcontent-%COMP%]{cursor:pointer}.mat-row[_ngcontent-%COMP%]:nth-child(4n+3){background-color:#7474741a}.warning-none-found[_ngcontent-%COMP%]{color:red}.no-found-sadcat-container[_ngcontent-%COMP%]{width:20px;position:relative;display:inline-block}.no-found-sadcat[_ngcontent-%COMP%]{position:absolute;width:18px;top:-1px}.cdk-column-exotic[_ngcontent-%COMP%]{min-width:45px}.cdk-column-waste[_ngcontent-%COMP%]{padding-left:5px}"],data:{animation:[(0,xt.X$)("detailExpand",[(0,xt.SB)("collapsed, void",(0,xt.oB)({height:"0px"})),(0,xt.SB)("expanded",(0,xt.oB)({height:"*"})),(0,xt.eR)("expanded <=> collapsed",(0,xt.jt)("225ms cubic-bezier(0.4, 0.0, 0.2, 1)")),(0,xt.eR)("expanded <=> void",(0,xt.jt)("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"))])]}}),n})();const lo={2:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},3:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},4:{shards:2,glimmer:500,core:0,prism:0,ascshard:0},5:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},6:{shards:3,glimmer:1e3,core:1,prism:0,ascshard:0},7:{shards:3,glimmer:2500,core:2,prism:0,ascshard:0},8:{shards:4,glimmer:3e3,core:0,prism:1,ascshard:0},9:{shards:4,glimmer:3e3,core:0,prism:2,ascshard:0},10:{shards:5,glimmer:4e3,core:0,prism:0,ascshard:1}},co={2:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},3:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},4:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},5:{shards:3,glimmer:2500,core:0,prism:0,ascshard:0},6:{shards:3,glimmer:3e3,core:2,prism:0,ascshard:0},7:{shards:4,glimmer:3e3,core:3,prism:0,ascshard:0},8:{shards:4,glimmer:4e3,core:0,prism:2,ascshard:0},9:{shards:5,glimmer:4e3,core:0,prism:3,ascshard:0},10:{shards:6,glimmer:5e3,core:0,prism:0,ascshard:3}};var pe=_(7009),mo=_(1572),ee=_(4425),le=_(4080);const uo={[w.Inventory]:"Inventory",[w.Collections]:"Collections",[w.Vendor]:"Vendor"};let po=(()=>{class n{constructor(e){this.database=e}transform(e){var o=this;return(0,x.Z)(function*(){return(yield o.database.vendorNames.where("vendorId").equals(e).first())?.vendorName??"Unknown Vendor"})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(I,16))},n.\u0275pipe=t.Yjl({name:"getVendorName",type:n,pure:!0}),n})(),go=(()=>{class n{constructor(){}transform(e){if(!e||!e.startsWith("v"))return-1;const o=parseInt(e.substring(1).split("-")[0]);return isNaN(o)?-1:o}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275pipe=t.Yjl({name:"getVendorIdFromItemId",type:n,pure:!0}),n})();function _o(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Vendor"),t.qZA(),t.TgZ(3,"td",2),t._uU(4),t.ALo(5,"async"),t.ALo(6,"getVendorName"),t.ALo(7,"getVendorIdFromItemId"),t.qZA()()),2&n){const e=t.oxw();t.xp6(4),t.Oqu(t.lcZ(5,1,t.lcZ(6,3,t.lcZ(7,5,e.itemTooltip.itemInstanceId))))}}function fo(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e)}}function ho(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e+2)}}function xo(n,i){if(1&n&&(t.TgZ(0,"div",8),t._uU(1,"\xa0"),t.qZA()),2&n){const e=t.oxw(2);t.Udp("width",e.getWidth(2))}}function yo(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t.YNc(4,fo,2,1,"span",3),t.YNc(5,ho,2,1,"span",3),t.qZA(),t.TgZ(6,"td")(7,"div",5)(8,"div",6),t._uU(9,"\xa0"),t.qZA(),t.YNc(10,xo,2,2,"div",7),t.qZA()()()),2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.xp6(2),t.Oqu(a.getArmorStatName(o)),t.xp6(2),t.Q6J("ngIf",!(null!=a.itemTooltip&&a.itemTooltip.masterworked)),t.xp6(1),t.Q6J("ngIf",null==a.itemTooltip?null:a.itemTooltip.masterworked),t.xp6(3),t.Udp("width",a.getWidth(e)),t.xp6(2),t.Q6J("ngIf",null==a.itemTooltip?null:a.itemTooltip.masterworked)}}let Co=(()=>{class n{constructor(){}getSourceText(){return this.itemTooltip?uo[this.itemTooltip.source]:""}getArmorStatName(e){return c.Mi[e]}getWidth(e){return Math.min(100,e/32*100)+"%"}getTotalStats(){return this.itemTooltip?.stats.reduce((e,o)=>e+o,0)||0}get isVendorItem(){return this.itemTooltip?.source===w.Vendor}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-tooltip-component"]],inputs:{itemTooltip:"itemTooltip"},decls:21,vars:5,consts:[[1,"tooltip-container"],["colspan","3"],["colspan","2"],[4,"ngIf"],[4,"ngFor","ngForOf"],[1,"stat-display"],[1,"stat-display-bar"],["class","stat-display-bar masterwork",3,"width",4,"ngIf"],[1,"stat-display-bar","masterwork"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"td"),t._uU(8,"Source"),t.qZA(),t.TgZ(9,"td",2),t._uU(10),t.qZA()(),t.YNc(11,_o,8,7,"tr",3),t.TgZ(12,"tr")(13,"td"),t._uU(14,"Current stats:"),t.qZA()(),t.YNc(15,yo,11,6,"tr",4),t.TgZ(16,"tr")(17,"td"),t._uU(18,"Total base stats:"),t.qZA(),t.TgZ(19,"td"),t._uU(20),t.qZA()()()()()),2&e&&(t.xp6(5),t.Oqu(null==o.itemTooltip?null:o.itemTooltip.name),t.xp6(5),t.Oqu(o.getSourceText()),t.xp6(1),t.Q6J("ngIf",o.isVendorItem&&o.itemTooltip),t.xp6(4),t.Q6J("ngForOf",null==o.itemTooltip?null:o.itemTooltip.stats),t.xp6(5),t.hij(" ",o.getTotalStats()," "))},dependencies:[Z.sg,Z.O5,Z.Ov,go,po],styles:[".tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.stat-display[_ngcontent-%COMP%]{width:70px;height:20px;background-color:#2c2c2c}.stat-display-bar[_ngcontent-%COMP%]{height:100%;background-color:#a1a1a1;float:left}.masterwork[_ngcontent-%COMP%]{background-color:#eedb9e}"]}),n})();var Lt=_(8184);let To=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){this._overlayRef&&!this._overlayRef.hasAttached()&&(this._overlayRef.attach(new le.C5(Co)).instance.itemTooltip=this.itemTooltip)}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Lt.aV),t.Y36(Lt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","itemTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",itemTooltip:"itemTooltip",contentTemplate:"contentTemplate"}}),n})(),ge=(()=>{class n{constructor(e){this.db=e,this.itemLookup=new Map}getItemCached(e){var o=this;return(0,x.Z)(function*(){if(o.itemLookup.has(e))return o.itemLookup.get(e)||void 0;const a=yield o.db.manifestArmor.where("hash").equals(e).first();return o.itemLookup.set(e,a),a})()}getExoticPerkDescription(e){var o=this;return(0,x.Z)(function*(){return e.exoticPerkHash?(yield o.getItemCached(e.exoticPerkHash))??null:null})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(I))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function vo(n,i){if(1&n&&t._UZ(0,"img",6,7),2&n){const e=t.oxw(2);t.MGl("src","https://bungie.net/",e.item.icon,"",t.LSH),t.s9C("matTooltip",e.item.name)}}function bo(n,i){if(1&n&&t._UZ(0,"img",8),2&n){const e=t.oxw(2);t.MGl("src","https://bungie.net/",e.item.watermarkIcon,"",t.LSH)}}function Ao(n,i){if(1&n&&t._UZ(0,"div",9),2&n){const e=t.oxw(2);t.ekj("vendor-item",e.isFromVendor)("collection-item",e.isFromCollection)}}function wo(n,i){1&n&&t._UZ(0,"div",10)}function Io(n,i){if(1&n&&(t.TgZ(0,"div",1),t.YNc(1,vo,2,2,"img",2),t.YNc(2,bo,1,1,"img",3),t.YNc(3,Ao,1,4,"div",4),t.YNc(4,wo,1,0,"div",5),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.item.icon),t.xp6(1),t.Q6J("ngIf",e.item.watermarkIcon),t.xp6(1),t.Q6J("ngIf",e.isFromVendor||e.isFromCollection),t.xp6(1),t.Q6J("ngIf",e.masterworked)}}let _e=(()=>{class n{constructor(e){this.iconService=e,this.itemHash=0,this.masterworked=!1,this.source=w.Inventory,this.isFromVendor=!1,this.isFromCollection=!1,this.item=void 0}ngAfterViewInit(){var e=this;return(0,x.Z)(function*(){e.item=yield e.iconService.getItemCached(e.itemHash),e.isFromVendor=e.source===w.Vendor,e.isFromCollection=e.source===w.Collections})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(ge))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-item-icon"]],inputs:{itemHash:"itemHash",masterworked:"masterworked",source:"source"},decls:1,vars:1,consts:[["class","item-icon-container",4,"ngIf"],[1,"item-icon-container"],["class","item-icon",3,"src","matTooltip",4,"ngIf"],["class","item-icon-overlay",3,"src",4,"ngIf"],["class","item-source-overlay",3,"vendor-item","collection-item",4,"ngIf"],["class","item-icon-masterwork-overlay",4,"ngIf"],[1,"item-icon",3,"src","matTooltip"],["tooltip","matTooltip"],[1,"item-icon-overlay",3,"src"],[1,"item-source-overlay"],[1,"item-icon-masterwork-overlay"]],template:function(e,o){1&e&&t.YNc(0,Io,5,4,"div",0),2&e&&t.Q6J("ngIf",o.item)},dependencies:[Z.O5,pt.gM],styles:["[_nghost-%COMP%]{height:22px;width:22px;display:block}.item-icon-masterwork-overlay[_ngcontent-%COMP%]{pointer-events:none;box-sizing:border-box;top:-1px;left:-1px;border-width:0;height:24px;width:24px;position:absolute;background-repeat:no-repeat;background-position:center;background-size:22px 22px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAJgklEQVR4AWI8t87oBYCd8rBuGAZi6N1JUQbIrJkiY6bM4EoE1EHvqb+WHsPvG5AJU522JQ/znpY03GzJ3YTovcvcVFcO5WbU8eH/OZ8R91B241c6wEzowJUUZnqlXMiZufrJSs1XUjNBUb6OcvUFF8190fzkGxS2J0ChGPQZDnYAQObJWHbNlCvZIXKxqvHN8KBp22SubByb9EKFGM2hzgyNa47vUzvKvnUToHPOINMFHG6Oo6hb6lhmMump4wROtxSMee8yjC6YI9jOnBYcGn5TZnTdBMB7d0+HB52AeKEb5QL2hQKx8RLk5IkE6eymz9CJFPJIQKxdWZKO5M1u+gw9kPvVJUjqyAt5Z98OMBAI4igO9x97koAAnSY6YHSaAB2nAiyswTbMq+/HAiHv0+4k3Ww1pOvnOvYews1Ow2rGnldEAAAIAAABACAAAAQAgAAAEAAAAgAgPwACAEAAAKiyAfJ7AXALEgAAAuAU5BMgAADki9j/BQCAlkN459OlNu6v0/V43vsAocOvq9kh1n/LX35h+B6EU9DI8fuVh/D48WMRWv742Qgtf/xshBY+fm1cMQgtefwdI5ffA/a9+frC68ox9M3enehIkvJAAC5D9vs/8F+Z/HugkfXJrOfec6QSJBi6O8IO2znX1zdZro39if/K0B8ftp2Hxxfa/vcu6DO8P5x/AaDrvwj4/uDPJDtjP09+ntDze9L+i4DRSEqwtgoQZ9rL3r9Ye/51L+Pw9tF6YuHFPJ/uWBDk2eXZvfb8YyMAwHvg673Z7AvmSF4POeSHmtDnb0xAD3qzN5gLfHsHIOvhktBJ4vOXJqABvJcZnqs5z54R7FF5ODaRiOkIGcXX+OZG7PqJnh6Ev3uOI52Z7tdRUCbdB6AFXHCDcZ3kkf2fGwEN+HGe+3xcE5yBB3umIvk5JnVIggDtnx/1u27XD5CajhBt8tqj9gMahDSan+7C629sxx6DiGmTcxOF304AwOud/SuABnTsZtNABWfaygUynjR3Ld+/GokZp4TO/JsJsEON1uN7OTEPaO9nVFHhHXizTdcN8Fl6BlER5gHk6lghYV8Tgd31DeCPL2icmhISYGsS9P7R9AErAT9JwlWCnuyFsmRuEQurKcBuqyBB72WkXtfmTCD7Au4a4/H7yYAl0N9VY0eERBqRr+Ov51yqCkTEYuuqjL4A+D4p1nvazLzOncHLt1dByhIwqpsHDzcShpIEkM4HZ5+zDEtoRLoKAgrwvwF41/WuAeg+z/1hDzk6VyGPkYW8aLfwarEwr0RJCDr/LUm4+42N8WX6z76Am3R9RoIkGGDvRN7i677TupIhqVZI7vmzPnr+1xLgwT6Bek6QtOE89rMmAGk6d8PhaG9ghSOgeLaAW1FFmYz9viLitcgBCFAgQ2dJ6dcEyLvcKxMuH2za3wW7AeOpqh/k6raz9l49XOIlQozX6pNwNCDnfde6Ckfb2SdeSejLUCXp+L3SPyAlj9FghVVHWV2etlVQ482MNfBHzwe4igSAj7T+4VnmtfdvwBJ5dxoXay/6hrc5gqrnyQCzX5H3fHYVhNd35eOrIWD4zDjZG2ntSmt8CpKTzCAnSEmp6Y7TDthyE9vbjhz7OOYAODg3THqfwEmMIJ29f1TaDwkX+8ckTCf8JAl6EjBviFo70m7v0vtTdD72EqzNgjwIgCJBr+aMRoTzbQMxzBlHIoY5JFCrA9xIZedIZLzZiwScpe1ij/vLyDu8b9p5IH2/V/4hfg+SGIUHr7oSAVhIwgbwIALpgYgLcvokvLU9gfsmgv+37117brJ90PrlHKAtWY24OWLO5/WORGWYAyJeQy8fjceHoOYz5gkTLeAPgL7YU57mHzRBQwA2Cff+5L3s1e9kn8Cuy1hAf9D/EN5YYySVKyQo4tyNSog6XucApWOZeA+Vz6UMNaXotLEiCZsgY4M9KVc/9lmBffwNHSonyQp1H/kpknDEiFeM/U2UybWRmcuEe5IcSPgAqOuQB2b3OiKBMrLumzy33dzy86HG84Z0KCtp/wL4kc7NfFdEDIucK9em8eskRl3q4bUAYc6YXalZJue6/LwkoClD9cYsP5G8d5pkT/U+Cfdd5gpI4jn2EL87eEQiID5tboPq9e+rBLvOA47D/doGj6+lKJpiQC+88WDP33h8JMADL36naIUYJYocsO+NGLOIAJJEjJnWhx7fyM0obAXLta7hmjxfp3dB5IF3AvRJwL3tzG3cjKJ8PkncBPgBocPyNXYEHAkI/md8CFA+eu8/jMiOVc1lpQRBEq38rKTNN/khkJHJXtjE8TW8T50fJO6RxvXaOSBer1j594Rjf5HfNyMSCCFoR43HBtKsirSFSCXILrh/G1p0vRdVSX4vdJvEkZYK+EVu4W0qtluCYtvGHq89MQImAApsLUHniBC0cbjXuclXcvR+o2Dq9ThXzhl3AtCcoabnHPBRdL1vCEwR30hQRAw985hwAZR1IyVcJ3o8p97HqSnE0xz1zpszAfgvSKm634e5tf9HVfaOGNcTJwLiUye2BJrnSk5OEiVZ3unv/7o/zvLT/sGshRy8i4hdyVtvk6mlaNoz4f6/dGvJkRqKgVXuDyuWLLkSZ+CiXIQVZ2CF0h0XbblkRU+hESIjq+yqZ2emJtKbZNK54vlfUBRAgl1A0BUuiyAvmdo/ff/x7QsZF5PsYY2uKw20EKA1NLpuzaNnBmddSCIZqrxIz2ydiEpprucWzrk8WzrZAGQQ5LyL4hJCqhCQ+zOVLFP5Cslzrc88KeGk0LWam1mSprc196WeH8mY/QZcngWxZ3/Y9fhsiiRjcpCzdKjhHSTHqDnCdatee/wFzF40+ph85GP9Ht7969BGjXlj0nBjbkoZJBPAbv+WB2sqWitvZXLrkrGprgluPsf5HvBr+/l1CpD4+8F/4NdnIreI64MMgFf0PUrhDRE3FjLuYLy4y9184Z1eY73w6rr7e2bNu4gvBE9fim7ftEOZkJ5I7TfkY1M+oHyiMF/R9YbcNzW3QfuLk/leIzXWLM/cgcp19FzCemU6cIz/MB9890UWjBGadM7N9QMtlCqqJiFwOjUhdaDQXQCdEwNOpzhYwMpBDrfcFpEXIsjiGJw+9jqidHo7O3+3QVO7+QpIf7ji9cbst7ogrVf8UXTDBslUgkxCCSilwjFdSAkBkSo1EcjSIBXWWvsN9SxF5ebWH3woEIS629sLNhsPabYekYTY/VR0znB/jBdcErKAavL8+A1ICXvgoqroDgAAAABJRU5ErkJggg==)}.item-icon-container[_ngcontent-%COMP%]{position:relative;transition:opacity .2s,transform .2s;width:100%;--icon-size: 22px}.item-icon-overlay[_ngcontent-%COMP%], .item-icon[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:100%;pointer-events:none}.item-source-overlay[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:0;pointer-events:none;border-top:calc(var(--icon-size) / 2) solid transparent;border-right:calc(var(--icon-size) / 2) solid transparent}.item-source-overlay.vendor-item[_ngcontent-%COMP%]{border-top-color:#00f}.item-source-overlay.collection-item[_ngcontent-%COMP%]{border-top-color:#90ee90}"]}),n})();function Zo(n,i){if(1&n&&t._UZ(0,"img",5),2&n){const e=t.oxw(2);t.s9C("src",e.url,t.LSH)}}function So(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",2,3),t.YNc(3,Zo,1,1,"img",4),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.s9C("matTooltip",e.name),t.xp6(2),t.Q6J("ngIf",e.customIconMods.indexOf(e.perk)>-1)}}function Mo(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",6,3),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.s9C("matTooltip",e.name),t.s9C("src",e.url,t.LSH)}}let fe=(()=>{class n{constructor(){this.ArmorPerkOrSlot=c.Pn,this.customIconMods=[c.Pn.SlotCrotasEnd,c.Pn.SlotRootOfNightmares,c.Pn.SlotKingsFall,c.Pn.SlotVowOfTheDisciple,c.Pn.SlotArtifice],this.perk=c.Pn.None}get name(){return c.cM[this.perk]}get url(){return c.X9[this.perk]}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-perk-icon"]],inputs:{perk:"perk"},decls:3,vars:2,consts:[[1,"overlay-icon-container"],[4,"ngIf"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",1,"element-icon",3,"matTooltip"],["tooltip","matTooltip"],["class","overlay-icon",3,"src",4,"ngIf"],[1,"overlay-icon",3,"src"],[1,"element-icon",3,"matTooltip","src"]],template:function(e,o){1&e&&(t.TgZ(0,"span",0),t.YNc(1,So,4,2,"ng-container",1),t.YNc(2,Mo,3,2,"ng-container",1),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",o.customIconMods.indexOf(o.perk)>-1),t.xp6(1),t.Q6J("ngIf",-1===o.customIconMods.indexOf(o.perk)))},dependencies:[Z.O5,pt.gM],styles:[".element-icon[_ngcontent-%COMP%]{height:100%;width:100%}.element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;pointer-events:none}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:66%;position:absolute;left:17%;top:17%;pointer-events:none}[_nghost-%COMP%]{display:inline-flex;height:30px;width:30px}"]}),n})(),Ie=(()=>{class n{transform(e,o=null){return e.filter(a=>null==o||a==o).length}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275pipe=t.Yjl({name:"count",type:n,pure:!0}),n})();function Oo(n,i){1&n&&(t.TgZ(0,"mat-toolbar",24),t._uU(1," Warning: The stats of one or more items used for this build may be invalid."),t._UZ(2,"br"),t._uU(3," Please remove all negative/positive stat modifiers from the marked items. "),t.qZA())}function ko(n,i){if(1&n&&(t.TgZ(0,"u",34,35),t._uU(2),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(2),t.Oqu(e.name)}}function Eo(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e.name)}}function Uo(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"td",36)(2,"span",37),t._uU(3),t.qZA()(),t.TgZ(4,"td",36)(5,"span",37),t._uU(6),t.qZA()(),t.TgZ(7,"td",36)(8,"span",37),t._uU(9),t.qZA()(),t.TgZ(10,"td",36)(11,"span",37),t._uU(12),t.qZA()(),t.TgZ(13,"td",36)(14,"span",37),t._uU(15),t.qZA()(),t.TgZ(16,"td",36)(17,"span",37),t._uU(18),t.qZA()(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().$implicit,a=t.oxw(2);t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Mobility]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Resilience]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Recovery]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Discipline]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Intellect]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Strength]+e)}}function Do(n,i){1&n&&(t.TgZ(0,"td",27),t._UZ(1,"mat-progress-spinner",38),t.qZA())}function Po(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",39,35),t._uU(3," check_circle_outline "),t.qZA()())}function Ro(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",40,35),t._uU(3," error_outline "),t.qZA()())}function No(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",41,35),t._uU(3," report_problem "),t.qZA()())}function qo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t.YNc(2,ko,3,1,"u",26),t.YNc(3,Eo,2,1,"span",3),t.qZA(),t.YNc(4,Uo,19,18,"ng-container",8),t.TgZ(5,"td",27)(6,"div",28),t._UZ(7,"app-item-icon",29),t.qZA()(),t.TgZ(8,"td",27)(9,"div",30),t._UZ(10,"app-armor-perk-icon",31),t.qZA()(),t.TgZ(11,"td",27)(12,"button",32),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(2);return t.KtG(r.disableItem(s.itemInstanceId))}),t.TgZ(13,"mat-icon"),t._uU(14,"block"),t.qZA()()(),t.YNc(15,Do,2,0,"td",33),t.YNc(16,Po,4,0,"td",3),t.YNc(17,Ro,4,0,"td",3),t.YNc(18,No,4,0,"td",3),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw().$implicit,a=t.oxw();t.ekj("highlight-row",o[0].slot%2==0),t.xp6(2),t.Q6J("ngIf",e.masterworked),t.xp6(1),t.Q6J("ngIf",!e.masterworked),t.xp6(1),t.Q6J("ngVar",e.masterworked||!e.exotic&&a.config_assumeLegendariesMasterworked||e.exotic&&a.config_assumeExoticsMasterworked?2:0),t.xp6(2),t.Q6J("itemTooltip",e),t.xp6(1),t.Q6J("itemHash",e.hash)("masterworked",e.masterworked)("source",e.source),t.xp6(3),t.Q6J("perk",e.perk||0),t.xp6(5),t.Q6J("ngIf",1===e.transferState||2===e.transferState),t.xp6(1),t.Q6J("ngIf",3===e.transferState),t.xp6(1),t.Q6J("ngIf",4===e.transferState),t.xp6(1),t.Q6J("ngIf",e.mayBeBugged)}}function Fo(n,i){if(1&n&&(t.ynx(0),t.YNc(1,qo,19,14,"tr",25),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Jo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td",42,35),t._uU(3,"Any Class Item"),t.qZA(),t.TgZ(4,"td",43),t._uU(5),t.qZA(),t.TgZ(6,"td",43),t._uU(7),t.qZA(),t.TgZ(8,"td",43),t._uU(9),t.qZA(),t.TgZ(10,"td",43),t._uU(11),t.qZA(),t.TgZ(12,"td",43),t._uU(13),t.qZA(),t.TgZ(14,"td",43),t._uU(15),t.qZA(),t._UZ(16,"td"),t.TgZ(17,"td")(18,"div",30),t._UZ(19,"app-armor-perk-icon",31),t.qZA()(),t.TgZ(20,"td")(21,"button",44),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllItems())}),t.TgZ(22,"mat-icon"),t._uU(23,"block"),t.qZA()()()()}if(2&n){const e=t.oxw();t.xp6(5),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(4),t.Q6J("perk",(null==e.element||null==e.element.classItem?null:e.element.classItem.perk)||0)}}function Lo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t._uU(2,"Any Class Item"),t.qZA(),t.TgZ(3,"td",45),t._uU(4,"You chose to use non-masterworked class items."),t.qZA(),t._UZ(5,"td")(6,"td"),t.TgZ(7,"td")(8,"button",44),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllItems())}),t.TgZ(9,"mat-icon"),t._uU(10,"block"),t.qZA()()()()}}function Yo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",47),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Mobility]," ")}}function Bo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",48),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Resilience]," ")}}function Vo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",49),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Recovery]," ")}}function Qo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",50),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Discipline]," ")}}function Ho(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",51),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Intellect]," ")}}function Wo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",52),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Strength]," ")}}function jo(n,i){if(1&n&&(t.TgZ(0,"tr",46)(1,"td"),t._uU(2,"Total (armor)"),t.qZA(),t.YNc(3,Yo,3,1,"td",3),t.YNc(4,Bo,3,1,"td",3),t.YNc(5,Vo,3,1,"td",3),t.YNc(6,Qo,3,1,"td",3),t.YNc(7,Ho,3,1,"td",3),t.YNc(8,Wo,3,1,"td",3),t.qZA()),2&n){const e=i.ngVar;t.xp6(3),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e)}}function Go(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function zo(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Go,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Mobility]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Mobility]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Mobility]," ")}}function Ko(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function $o(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Ko,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Resilience]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Resilience]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Resilience]," ")}}function Xo(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ti(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Xo,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Recovery]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Recovery]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Recovery]," ")}}function ei(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ni(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ei,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Discipline]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Discipline]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Discipline]," ")}}function oi(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ii(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,oi,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Intellect]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Intellect]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Intellect]," ")}}function ai(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function si(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ai,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Strength]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Strength]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Strength]," ")}}function ri(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function li(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ri,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function ci(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function mi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ci,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function di(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function ui(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,di,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function pi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function gi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,pi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function _i(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function fi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,_i,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function hi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function xi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,hi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function yi(n,i){if(1&n&&(t.TgZ(0,"tr",53)(1,"td"),t._uU(2,"Minor Mods"),t.qZA(),t.YNc(3,li,2,1,"td",8),t.ALo(4,"count"),t.YNc(5,mi,2,1,"td",8),t.ALo(6,"count"),t.YNc(7,ui,2,1,"td",8),t.ALo(8,"count"),t.YNc(9,gi,2,1,"td",8),t.ALo(10,"count"),t.YNc(11,fi,2,1,"td",8),t.ALo(12,"count"),t.YNc(13,xi,2,1,"td",8),t.ALo(14,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(3),t.Q6J("ngVar",t.xi3(4,6,e,o.StatModifier.MINOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,9,e,o.StatModifier.MINOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,12,e,o.StatModifier.MINOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,15,e,o.StatModifier.MINOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,18,e,o.StatModifier.MINOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(14,21,e,o.StatModifier.MINOR_STRENGTH))}}function Ci(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Ti(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ci,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function vi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function bi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,vi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ai(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function wi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ai,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ii(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Zi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ii,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Si(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Mi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Si,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Oi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function ki(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Oi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ei(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Major Mods"),t.qZA(),t.YNc(3,Ti,2,1,"td",8),t.ALo(4,"count"),t.YNc(5,bi,2,1,"td",8),t.ALo(6,"count"),t.YNc(7,wi,2,1,"td",8),t.ALo(8,"count"),t.YNc(9,Zi,2,1,"td",8),t.ALo(10,"count"),t.YNc(11,Mi,2,1,"td",8),t.ALo(12,"count"),t.YNc(13,ki,2,1,"td",8),t.ALo(14,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(3),t.Q6J("ngVar",t.xi3(4,6,e,o.StatModifier.MAJOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,9,e,o.StatModifier.MAJOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,12,e,o.StatModifier.MAJOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,15,e,o.StatModifier.MAJOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,18,e,o.StatModifier.MAJOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(14,21,e,o.StatModifier.MAJOR_STRENGTH))}}function Ui(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Di(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ui,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Pi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Ri(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Pi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ni(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function qi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ni,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Fi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Ji(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Fi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Li(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Yi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Li,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Bi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Vi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Bi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Qi(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"tr")(2,"td"),t._uU(3,"Artifice Mods"),t.qZA(),t.YNc(4,Di,2,1,"td",8),t.ALo(5,"count"),t.YNc(6,Ri,2,1,"td",8),t.ALo(7,"count"),t.YNc(8,qi,2,1,"td",8),t.ALo(9,"count"),t.YNc(10,Ji,2,1,"td",8),t.ALo(11,"count"),t.YNc(12,Yi,2,1,"td",8),t.ALo(13,"count"),t.YNc(14,Vi,2,1,"td",8),t.ALo(15,"count"),t.qZA(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(4),t.Q6J("ngVar",t.xi3(5,6,e,o.StatModifier.ARTIFICE_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(7,9,e,o.StatModifier.ARTIFICE_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(9,12,e,o.StatModifier.ARTIFICE_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(11,15,e,o.StatModifier.ARTIFICE_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(13,18,e,o.StatModifier.ARTIFICE_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(15,21,e,o.StatModifier.ARTIFICE_STRENGTH))}}function Hi(n,i){if(1&n&&(t.TgZ(0,"tr",56)(1,"td"),t._uU(2,"Total"),t.qZA(),t.TgZ(3,"td"),t._uU(4),t._UZ(5,"img",47),t.qZA(),t.TgZ(6,"td"),t._uU(7),t._UZ(8,"img",48),t.qZA(),t.TgZ(9,"td"),t._uU(10),t._UZ(11,"img",49),t.qZA(),t.TgZ(12,"td"),t._uU(13),t._UZ(14,"img",50),t.qZA(),t.TgZ(15,"td"),t._uU(16),t._UZ(17,"img",51),t.qZA(),t.TgZ(18,"td"),t._uU(19),t._UZ(20,"img",52),t.qZA()()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(4),t.hij(" ",e[o.ArmorStat.Mobility]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Resilience]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Recovery]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Discipline]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Intellect]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Strength]," ")}}function Wi(n,i){if(1&n&&(t.TgZ(0,"span",63),t._UZ(1,"img",64),t._uU(2),t.ALo(3,"number"),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",t.lcZ(3,1,e.glimmer)," ")}}function ji(n,i){if(1&n&&(t.TgZ(0,"span",65),t._UZ(1,"img",66),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.core," ")}}function Gi(n,i){if(1&n&&(t.TgZ(0,"span",67),t._UZ(1,"img",68),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.prism," ")}}function zi(n,i){if(1&n&&(t.TgZ(0,"span",69),t._UZ(1,"img",70),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.ascshard," ")}}function Ki(n,i){if(1&n&&(t.TgZ(0,"div",58),t._uU(1," Total material cost: "),t.YNc(2,Wi,4,3,"span",59),t.YNc(3,ji,3,1,"span",60),t.YNc(4,Gi,3,1,"span",61),t.YNc(5,zi,3,1,"span",62),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(2),t.Q6J("ngIf",e.glimmer>0),t.xp6(1),t.Q6J("ngIf",e.core>0),t.xp6(1),t.Q6J("ngIf",e.prism>0),t.xp6(1),t.Q6J("ngIf",e.ascshard>0)}}function $i(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ki,6,4,"div",57),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.total>0)}}function Xi(n,i){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"button",71),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.openSnackBar("Copied the DIM search query to your clipboard."))}),t._uU(2," Copy DIM query to clipboard "),t.qZA(),t.BQk()}if(2&n){const e=i.ngVar;t.xp6(1),t.Q6J("cdkCopyToClipboard",e)}}function ta(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1," and use a masterworked class item"),t.qZA())}function ea(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.name," ")}}function na(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1," Masterwork these items: "),t.TgZ(2,"ul"),t.YNc(3,ea,2,1,"li",2),t.qZA()()),2&n){const e=t.oxw().ngVar;t.xp6(3),t.Q6J("ngForOf",e)}}function oa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,na,4,1,"li",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.length>0)}}function ia(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function aa(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function sa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function ra(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function la(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,ia,2,1,"span",3),t.YNc(2,aa,2,0,"ng-container",3),t.YNc(3,sa,2,1,"span",3),t._uU(4," Mobility Mod"),t.YNc(5,ra,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function ca(n,i){if(1&n&&(t.ynx(0),t.YNc(1,la,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ma(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ca,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_MOBILITY))}}function da(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function ua(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function pa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function ga(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function _a(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,da,2,1,"span",3),t.YNc(2,ua,2,0,"ng-container",3),t.YNc(3,pa,2,1,"span",3),t._uU(4," Resilience Mod"),t.YNc(5,ga,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function fa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,_a,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ha(n,i){if(1&n&&(t.ynx(0),t.YNc(1,fa,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_RESILIENCE))}}function xa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function ya(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Ca(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Ta(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function va(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,xa,2,1,"span",3),t.YNc(2,ya,2,0,"ng-container",3),t.YNc(3,Ca,2,1,"span",3),t._uU(4," Recovery Mod"),t.YNc(5,Ta,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function ba(n,i){if(1&n&&(t.ynx(0),t.YNc(1,va,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Aa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ba,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_RECOVERY))}}function wa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Ia(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Za(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Sa(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ma(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,wa,2,1,"span",3),t.YNc(2,Ia,2,0,"ng-container",3),t.YNc(3,Za,2,1,"span",3),t._uU(4," Discipline Mod"),t.YNc(5,Sa,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Oa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ma,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ka(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Oa,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_DISCIPLINE))}}function Ea(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Ua(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Da(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Pa(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ra(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,Ea,2,1,"span",3),t.YNc(2,Ua,2,0,"ng-container",3),t.YNc(3,Da,2,1,"span",3),t._uU(4," Intellect Mod"),t.YNc(5,Pa,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Na(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ra,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function qa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Na,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_INTELLECT))}}function Fa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Ja(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function La(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Ya(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ba(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,Fa,2,1,"span",3),t.YNc(2,Ja,2,0,"ng-container",3),t.YNc(3,La,2,1,"span",3),t._uU(4," Strength Mod"),t.YNc(5,Ya,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Va(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ba,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Qa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Va,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_STRENGTH))}}function Ha(n,i){if(1&n&&(t.TgZ(0,"ul"),t.YNc(1,ma,3,4,"ng-container",8),t.ALo(2,"count"),t.YNc(3,ha,3,4,"ng-container",8),t.ALo(4,"count"),t.YNc(5,Aa,3,4,"ng-container",8),t.ALo(6,"count"),t.YNc(7,ka,3,4,"ng-container",8),t.ALo(8,"count"),t.YNc(9,qa,3,4,"ng-container",8),t.ALo(10,"count"),t.YNc(11,Qa,3,4,"ng-container",8),t.ALo(12,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,6,e,o.StatModifier.MINOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(4,9,e,o.StatModifier.MINOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,12,e,o.StatModifier.MINOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,15,e,o.StatModifier.MINOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,18,e,o.StatModifier.MINOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,21,e,o.StatModifier.MINOR_STRENGTH))}}function Wa(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1,"Equip the following stat mods: "),t.YNc(2,Ha,13,24,"ul",8),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngVar",null==e.element?null:e.element.mods)}}function ja(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij(" Equip the mod ",e.name," ")}}function Ga(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ja,2,1,"li",3),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(3);t.xp6(1),t.Q6J("ngIf",e.type===o.ModifierType.CombatStyleMod)}}function za(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ga,2,1,"ng-container",8),t.BQk()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",o.ModInformation[e])}}function Ka(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij(" Equip the stasis fragment ",e.name," ")}}function $a(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ka,2,1,"li",3),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(3);t.xp6(1),t.Q6J("ngIf",e.type===o.ModifierType.Stasis)}}function Xa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,$a,2,1,"ng-container",8),t.BQk()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",o.ModInformation[e])}}function ts(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1," Equip any mods and fragments that you enabled in the configuration: "),t.TgZ(2,"ul"),t.YNc(3,za,2,1,"ng-container",2),t.YNc(4,Xa,2,1,"ng-container",2),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngForOf",e.config_enabledMods),t.xp6(1),t.Q6J("ngForOf",e.config_enabledMods)}}function es(n,i){if(1&n&&t._UZ(0,"div",75),2&n){const e=t.oxw().$implicit;t.Tol(e)}}function ns(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,es,1,2,"div",74),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",!!e)}}function os(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._UZ(4,"img",72),t.qZA(),t.YNc(5,ns,2,1,"td",2),t.TgZ(6,"td",73),t._uU(7),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.Oqu(o.ArmorStatNames[e]),t.xp6(2),t.s9C("alt",o.ArmorStatNames[e]),t.s9C("src",o.ArmorStatIconUrls[e],t.LSH),t.xp6(1),t.Q6J("ngForOf",o.getColumnForStat(e)),t.xp6(2),t.Oqu(o.getTiersForStat(e))}}function is(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Exotic:"),t.qZA(),t.TgZ(3,"td",76),t._uU(4),t.qZA(),t.TgZ(5,"td",77)(6,"div",78),t._UZ(7,"img",79)(8,"img",80),t.qZA()()()),2&n){const e=t.oxw().ngVar;t.xp6(4),t.Oqu(e[0].name),t.xp6(3),t.MGl("src","https://bungie.net/",e[0].icon,"",t.LSH),t.xp6(1),t.MGl("src","https://bungie.net/",e[0].watermark,"",t.LSH)}}function as(n,i){if(1&n&&(t.ynx(0),t.YNc(1,is,9,3,"tr",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e[0])}}let ss=(()=>{class n{constructor(e,o,a,s){this.config=e,this._snackBar=o,this.bungieApi=a,this.membership=s,this.showGenericClassItemRow=!1,this.armorStatIds=[0,1,2,3,4,5],this.ModifierType=U.O,this.ModInformation=N.F,this.ArmorStatNames=c.Mi,this.ArmorStatIconUrls=c.lp,this.ArmorStat=c.WB,this.StatModifier=c.iV,this.config_characterClass=0,this.config_assumeLegendariesMasterworked=!1,this.config_assumeExoticsMasterworked=!1,this.config_assumeClassItemMasterworked=!1,this.config_enabledMods=[],this.DIMUrl="",this.configValues=[0,0,0,0,0,0],this.element=null,this.ngUnsubscribe=new R.xQ}buildItemIdString(e){if(!e)return"";let o=e.items.flat().filter(r=>r.slot!=v.y.ArmorSlotClass).map(r=>`id:'${r.itemInstanceId}'`).join(" or "),a=["is:classitem"],s=e.items.flat().filter(r=>r.slot==v.y.ArmorSlotClass).map(r=>`exactname:'${r.name}'`).join(" or ");return s.length>0&&(a=[s]),e.classItem.perk!=c.Pn.None&&e.classItem.perk!=c.Pn.COUNT&&a.push(c.ID[e.classItem.perk||0]),a.length>1&&(o+=` or (${a.join(" ")})`),o}openSnackBar(e){this._snackBar.open(e,"",{duration:2500,politeness:"polite"})}ngOnInit(){this.showGenericClassItemRow=(this.element?.items.filter(e=>e.length>0).length||0)<=4,this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{this.config_characterClass=e.characterClass,this.config_assumeLegendariesMasterworked=e.assumeLegendariesMasterworked,this.config_assumeExoticsMasterworked=e.assumeExoticsMasterworked,this.config_assumeClassItemMasterworked=e.assumeClassItemMasterworked,this.config_enabledMods=e.enabledMods,this.configValues=e.enabledMods.reduce((o,a)=>o.concat(N.F[a].bonus),[]).reduce((o,a)=>(a.stat==c.AR.ClassAbilityRegenerationStat?o[[1,0,2][e.characterClass]]+=a.value:o[a.stat]+=a.value,o),[0,0,0,0,0,0]),this.DIMUrl=this.generateDIMLink(e)})}disableAllItems(){this.config.modifyConfiguration(e=>{for(let o of this.element?.items.flat())e.disabledItems.push(o.itemInstanceId)})}disableItem(e){this.config.modifyConfiguration(o=>{o.disabledItems.push(e)})}get mayAnyItemBeBugged(){return(this.element?.items.flat().filter(e=>e.mayBeBugged).length||0)>0}getCharacterId(){var e=this;return(0,x.Z)(function*(){let o=yield e.membership.getCharacters();return o=o.filter(a=>a.clazz==e.config_characterClass),0==o.length?(e.openSnackBar("Error: Could not find a character to move the items to."),null):o[0].characterId})()}moveItems(e=!1){var o=this;return(0,x.Z)(function*(){for(let m of(o.element?.items||[]).flat())m.transferState=Bt.WAITING_FOR_TRANSFER;let a=yield o.getCharacterId();if(!a)return;let s=!0,r=(o.element?.items||[]).flat().sort(m=>m.exotic?1:-1);for(let m of r){m.transferState=Bt.TRANSFERRING;let p=yield o.bungieApi.transferItem(m.itemInstanceId,a,e);m.transferState=p?Bt.TRANSFERRED:Bt.ERROR_DURING_TRANSFER,p||(s=!1)}o.openSnackBar(s?"Success! Moved all the items.":"Some of the items could not be moved. Make sure that there is enough space in the specific slot. This tool will not move items out of your inventory.")})()}getItemsThatMustBeMasterworked(){return this.element?.items.flat().filter(e=>!(e.masterworked||e.exotic&&!this.config_assumeExoticsMasterworked||!e.exotic&&!this.config_assumeLegendariesMasterworked))}calculateRequiredMasterworkCost(){let e={shards:0,glimmer:0,core:0,prism:0,ascshard:0,total:0},o=this.element?.items.flat()||[];o=o.filter(a=>a.energyLevel<10&&(a.exotic&&this.config_assumeExoticsMasterworked||!a.exotic&&this.config_assumeLegendariesMasterworked));for(let a of o){let s=a.exotic?co:lo;for(let r=a.energyLevel;r<10;r++)for(let m in s[r+1])e[m]+=s[r+1][m],e.total++}return e}generateDIMLink(e){const o=[],a=[];for(let d of this.config_enabledMods){const S=N.F[d];S.type===U.O.CombatStyleMod?o.push(S.hash):a.push(S.hash)}if(this.element){for(let d of this.element?.mods||[])o.push(c.K9[d][3]);for(let d of this.element?.artifice||[])o.push(c.K9[d][3])}var s={statConstraints:[],mods:o,assumeArmorMasterwork:e.assumeLegendariesMasterworked?e.assumeExoticsMasterworked?3:2:1};for(let d of this.armorStatIds)s.statConstraints.push({statHash:c.kw[d],minTier:e.minimumStatTiers[d].value,maxTier:e.minimumStatTiers[d].fixed?e.minimumStatTiers[d].value:10});if(1==e.selectedExotics.length)s.exoticArmorHash=e.selectedExotics[0];else{var r=this.element?.exotic;if(r&&1==r.length){var m=r[0].hash;m&&(s.exoticArmorHash=parseInt(m,10))}}const p={id:"d2ap",name:"D2ArmorPicker Loadout",classType:e.characterClass,parameters:s,equipped:(this.element?.items||[]).filter(d=>d.length>0).map(([d])=>({id:d.itemInstanceId,hash:d.hash})),unequipped:[],clearSpace:!1};if(a.length){const d=a.reduce((S,F,G)=>(S[G+7]=F,S),{});if(3!=e.characterClass&&e.selectedModElement!=U.O.CombatStyleMod){const F=c.Bd[e.characterClass][e.selectedModElement];F&&p.equipped.push({id:"12345",hash:F,socketOverrides:d})}}return"https://app.destinyitemmanager.com/loadouts?loadout="+encodeURIComponent(JSON.stringify(p))}goToDIM(){window.open(this.DIMUrl,"blank")}getTiersForStat(e){return Math.floor((this.element?.stats[e]||0)/10)}getColumnForStat(e){var o=Math.floor(this.configValues[e]/10);let a=[],s=0,r=Math.ceil((5*(this.element?.mods.filter(p=>p==1+2*e)||[]).length+10*(this.element?.mods.filter(p=>p==2+2*e)||[]).length)/10);var m=this.getTiersForStat(e)-o-r;for(let p=0;p10?" over100":""));for(let p=0;p10?" over100":""));for(let p=0;p10?" over100":""));for(;s++<10;)a.push("");return a}getRequiredMasterworkBonus(){return 2*(this.element?.items.filter(e=>!e[0].masterworked&&!e[0].exotic&&this.config_assumeLegendariesMasterworked||e[0].exotic&&this.config_assumeExoticsMasterworked)||[]).length}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(pe.ux),t.Y36(bt),t.Y36(Dt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-expanded-result-content"]],inputs:{element:"element"},decls:124,vars:26,consts:[["class","invalid-item-box mat-elevation-z4","color","warn",4,"ngIf"],[1,"specificStatTable"],[4,"ngFor","ngForOf"],[4,"ngIf"],["class","result-total-gear result-total highlight-row",4,"ngVar"],[1,"result-config"],[3,"class",4,"ngIf"],["class","highlight-row",4,"ngVar"],[4,"ngVar"],["class","result-total-all result-total highlight-row",4,"ngVar"],[1,"buttonContainer"],["color","primary","mat-raised-button","","matTooltip","Use this button to open this build as a DIM Loadout.",3,"click"],["mat-stroked-button","","matTooltip","Click this button to move Items to your inventory. Make sure that you have enough space in your inventory. This tool will not move any items out of your inventory.",3,"click"],["mat-stroked-button","","matTooltip","Click this button to equip the Items. Make sure that you have enough space in your inventory. This tool will not move any items out of your inventory.",3,"click"],[1,"mat-elevation-z6"],[1,"stat-preview"],["colspan","2"],[1,"tier-column"],[1,"legend"],[1,"energy-bar","normal"],["colspan","3"],[1,"energy-bar","mod"],["colspan","4"],[1,"energy-bar","config"],["color","warn",1,"invalid-item-box","mat-elevation-z4"],[3,"highlight-row",4,"ngFor","ngForOf"],["class","item-name-mw","matTooltip","This item is already masterworked.",4,"ngIf"],[1,"icon-column"],[1,"item-icon-container",3,"itemTooltip"],[1,"item-icon",3,"itemHash","masterworked","source"],[2,"position","relative","width","25px"],[3,"perk"],["mat-icon-button","","matTooltip","Disable this item from the results. It will not be used to generate results anymore, but you can always undo this.",1,"item-info-menu-btn",3,"click"],["class","icon-column",4,"ngIf"],["matTooltip","This item is already masterworked.",1,"item-name-mw"],["tooltip","matTooltip"],[1,"item-stat-container"],[1,"item-stat-value"],["color","primary","diameter","22","mode","indeterminate",1,"item-loading-spinner"],["aria-hidden","false","aria-label","Success","inline","","matTooltip","Item successfully moved to inventory.",1,"item-moved-icon"],["aria-hidden","false","aria-label","Error","inline","","matTooltip","This item could not be moved. Make sure that there is enough space on your character. This tool will not move items out of your inventory.",1,"report-problem-icon"],["aria-hidden","false","aria-label","Error","inline","","matTooltip","The stats of this item may be incorrect. Make sure that you remove every positive or negative stat modifier from this item.",1,"report-problem-icon"],["matTooltip","Class item should be masterworked.",1,"item-name-mw"],[1,"text-mw"],["mat-icon-button","","matTooltip","Disable all four items above from the results. They will not be used to generate results anymore, but you can always undo this.",1,"item-info-menu-btn","report-problem-icon",3,"click"],["colspan","6",1,"text-centered"],[1,"result-total-gear","result-total","highlight-row"],["alt","Mobility","src","https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",1,"statIcon"],["alt","Resilience","src","https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",1,"statIcon"],["alt","Recovery","src","https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",1,"statIcon"],["alt","Discipline","src","https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",1,"statIcon"],["alt","Intellect","src","https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",1,"statIcon"],["alt","Strength","src","https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png",1,"statIcon"],[1,"highlight-row"],["class","positive",4,"ngIf"],[1,"positive"],[1,"result-total-all","result-total","highlight-row"],["style","margin-top: 10px",4,"ngIf"],[2,"margin-top","10px"],["class","currency-icon-container","matTooltip","Glimmer",4,"ngIf"],["class","currency-icon-container","matTooltip","Enhancement Cores",4,"ngIf"],["class","currency-icon-container","matTooltip","Enhancement Prism",4,"ngIf"],["class","currency-icon-container","matTooltip","Ascendant Shard",4,"ngIf"],["matTooltip","Glimmer",1,"currency-icon-container"],["alt","Glimmer","src","https://www.bungie.net/common/destiny2_content/icons/88993eaeedad32f42072df6f77f47311.png",1,"currency-icon"],["matTooltip","Enhancement Cores",1,"currency-icon-container"],["alt","Enhancement Cores","src","https://www.bungie.net/common/destiny2_content/icons/0a4eb695ed55b4e720ddc401460cc0f9.jpg",1,"currency-icon"],["matTooltip","Enhancement Prism",1,"currency-icon-container"],["alt","Enhancement Prism","src","https://www.bungie.net/common/destiny2_content/icons/dea2a35badf7466d4c2c2697ce6e8d87.jpg",1,"currency-icon"],["matTooltip","Ascendant Shard",1,"currency-icon-container"],["alt","Ascendant Shard","src","https://www.bungie.net/common/destiny2_content/icons/0271d214fc3ec91b3def799a4b286b46.jpg",1,"currency-icon"],["color","primary","mat-raised-button","","matTooltip","Use this button to copy a DIM search query to your clip board. It allows you to search the given items in DIM.",3,"cdkCopyToClipboard","click"],[2,"height","18px",3,"alt","src"],[1,"sum-tiers"],["class","energy-bar",3,"class",4,"ngIf"],[1,"energy-bar"],["colspan","10"],["colspan","1"],[1,"item-icon-container"],[1,"item-icon",3,"src"],[1,"item-icon-overlay",3,"src"]],template:function(e,o){1&e&&(t.TgZ(0,"div"),t.YNc(1,Oo,4,0,"mat-toolbar",0),t._uU(2," This table shows you the expected stats of any item: "),t.TgZ(3,"table",1)(4,"thead")(5,"tr")(6,"th"),t._uU(7,"Name"),t.qZA(),t.TgZ(8,"th"),t._uU(9,"Mobility"),t.qZA(),t.TgZ(10,"th"),t._uU(11,"Resilience"),t.qZA(),t.TgZ(12,"th"),t._uU(13,"Recovery"),t.qZA(),t.TgZ(14,"th"),t._uU(15,"Discipline"),t.qZA(),t.TgZ(16,"th"),t._uU(17,"Intellect"),t.qZA(),t.TgZ(18,"th"),t._uU(19,"Strength"),t.qZA(),t._UZ(20,"th")(21,"th"),t.qZA()(),t.YNc(22,Fo,2,1,"ng-container",2),t.YNc(23,Jo,24,7,"tr",3),t.YNc(24,Lo,11,0,"tr",3),t.YNc(25,jo,9,6,"tr",4),t.TgZ(26,"tr",5)(27,"td"),t._uU(28,"Configuration"),t.qZA(),t.TgZ(29,"td"),t.YNc(30,zo,3,4,"span",6),t.qZA(),t.TgZ(31,"td"),t.YNc(32,$o,3,4,"span",6),t.qZA(),t.TgZ(33,"td"),t.YNc(34,ti,3,4,"span",6),t.qZA(),t.TgZ(35,"td"),t.YNc(36,ni,3,4,"span",6),t.qZA(),t.TgZ(37,"td"),t.YNc(38,ii,3,4,"span",6),t.qZA(),t.TgZ(39,"td"),t.YNc(40,si,3,4,"span",6),t.qZA()(),t.YNc(41,yi,15,24,"tr",7),t.YNc(42,Ei,15,24,"tr",8),t.YNc(43,Qi,16,24,"ng-container",8),t.YNc(44,Hi,21,6,"tr",9),t.qZA()(),t.YNc(45,$i,2,1,"ng-container",8),t.TgZ(46,"div",10),t.YNc(47,Xi,3,1,"ng-container",8),t.TgZ(48,"button",11),t.NdJ("click",function(){return o.goToDIM()}),t._uU(49," Open Loadout in DIM "),t.qZA(),t._UZ(50,"br"),t.TgZ(51,"small"),t._uU(52,"The following two buttons may not work for some at the moment:"),t.qZA(),t._UZ(53,"br"),t.TgZ(54,"button",12),t.NdJ("click",function(){return o.moveItems()}),t._uU(55," Move items to inventory (beta) "),t.qZA(),t.TgZ(56,"button",13),t.NdJ("click",function(){return o.moveItems(!0)}),t._uU(57," Equip Items (beta) "),t.qZA()(),t.TgZ(58,"mat-accordion")(59,"mat-expansion-panel",14)(60,"mat-expansion-panel-header")(61,"mat-panel-title"),t._uU(62," What to do now? "),t.qZA(),t.TgZ(63,"mat-panel-description"),t._uU(64," Detailed Instructions of to get your loadout ready. "),t.qZA()(),t.TgZ(65,"div")(66,"ol")(67,"li"),t._uU(68," Move all related items into your inventory "),t.YNc(69,ta,2,0,"span",3),t._uU(70,". "),t.qZA(),t.YNc(71,oa,2,1,"ng-container",8),t.YNc(72,Wa,3,1,"li",3),t.ALo(73,"count"),t.YNc(74,ts,5,2,"li",3),t.qZA()()(),t.TgZ(75,"mat-expansion-panel",14)(76,"mat-expansion-panel-header")(77,"mat-panel-title"),t._uU(78," Stat overview "),t.qZA(),t.TgZ(79,"mat-panel-description"),t._uU(80," Shows a summary of all the stats and where they come from. "),t.qZA()(),t.TgZ(81,"table",15)(82,"tr")(83,"td",16),t._uU(84,"Stat"),t.qZA(),t.TgZ(85,"td",17),t._uU(86,"1"),t.qZA(),t.TgZ(87,"td",17),t._uU(88,"2"),t.qZA(),t.TgZ(89,"td",17),t._uU(90,"3"),t.qZA(),t.TgZ(91,"td",17),t._uU(92,"4"),t.qZA(),t.TgZ(93,"td",17),t._uU(94,"5"),t.qZA(),t.TgZ(95,"td",17),t._uU(96,"6"),t.qZA(),t.TgZ(97,"td",17),t._uU(98,"7"),t.qZA(),t.TgZ(99,"td",17),t._uU(100,"8"),t.qZA(),t.TgZ(101,"td",17),t._uU(102,"9"),t.qZA(),t.TgZ(103,"td",17),t._uU(104,"10"),t.qZA(),t.TgZ(105,"td"),t._uU(106,"Tiers"),t.qZA()(),t.YNc(107,os,8,5,"tr",2),t.TgZ(108,"tr",18)(109,"td",16),t._uU(110,"Armor"),t.qZA(),t.TgZ(111,"td"),t._UZ(112,"div",19),t.qZA(),t.TgZ(113,"td",20),t._uU(114,"Stat Mod"),t.qZA(),t.TgZ(115,"td"),t._UZ(116,"div",21),t.qZA(),t.TgZ(117,"td",22),t._uU(118,"Fragments & Mods"),t.qZA(),t.TgZ(119,"td"),t._UZ(120,"div",23),t.qZA()(),t.YNc(121,as,2,1,"ng-container",8),t.qZA()()(),t._UZ(122,"br")(123,"br")),2&e&&(t.xp6(1),t.Q6J("ngIf",o.mayAnyItemBeBugged),t.xp6(21),t.Q6J("ngForOf",null==o.element?null:o.element.items),t.xp6(1),t.Q6J("ngIf",o.showGenericClassItemRow&&o.config_assumeClassItemMasterworked),t.xp6(1),t.Q6J("ngIf",o.showGenericClassItemRow&&!o.config_assumeClassItemMasterworked),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.statsNoMods),t.xp6(5),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Mobility]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Resilience]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Recovery]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Discipline]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Intellect]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Strength]),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.mods),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.mods),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.artifice),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.stats),t.xp6(1),t.Q6J("ngVar",o.calculateRequiredMasterworkCost()),t.xp6(2),t.Q6J("ngVar",o.buildItemIdString(o.element)),t.xp6(22),t.Q6J("ngIf",o.config_assumeClassItemMasterworked),t.xp6(2),t.Q6J("ngVar",o.getItemsThatMustBeMasterworked()),t.xp6(1),t.Q6J("ngIf",(null==o.element?null:o.element.mods).length>0&&t.xi3(73,23,null==o.element?null:o.element.mods,o.StatModifier.NONE)<5),t.xp6(2),t.Q6J("ngIf",o.config_enabledMods.length>0),t.xp6(33),t.Q6J("ngForOf",o.armorStatIds),t.xp6(14),t.Q6J("ngVar",null==o.element?null:o.element.exotic))},dependencies:[Z.sg,Z.O5,rt.lW,pt.gM,St.Hw,It.Ye,mt.pp,mt.ib,mt.yz,mt.yK,mt.u4,mo.Ou,ee.i3,Kt,To,_e,fe,Z.JJ,Ie],styles:[".element-icon[_ngcontent-%COMP%]{width:22px}.element-icon-mini[_ngcontent-%COMP%]{height:12px}.item-loading-spinner[_ngcontent-%COMP%]{width:22px;height:22px;margin-bottom:6px}.item-icon[_ngcontent-%COMP%]{width:22px}.item-icon-overlay[_ngcontent-%COMP%]{width:22px;margin-left:-22px}.item-icon-container[_ngcontent-%COMP%]{position:relative;contain:layout paint style;box-sizing:border-box;width:var(--item-size);transition:opacity .2s,transform .2s;margin-top:-4px}.item-icon-masterwork-overlay[_ngcontent-%COMP%]{pointer-events:none;box-sizing:border-box;top:-1px;left:-1px;border-width:0;height:24px;width:24px;position:absolute;background-repeat:no-repeat;background-position:center;background-size:22px 22px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAJgklEQVR4AWI8t87oBYCd8rBuGAZi6N1JUQbIrJkiY6bM4EoE1EHvqb+WHsPvG5AJU522JQ/znpY03GzJ3YTovcvcVFcO5WbU8eH/OZ8R91B241c6wEzowJUUZnqlXMiZufrJSs1XUjNBUb6OcvUFF8190fzkGxS2J0ChGPQZDnYAQObJWHbNlCvZIXKxqvHN8KBp22SubByb9EKFGM2hzgyNa47vUzvKvnUToHPOINMFHG6Oo6hb6lhmMump4wROtxSMee8yjC6YI9jOnBYcGn5TZnTdBMB7d0+HB52AeKEb5QL2hQKx8RLk5IkE6eymz9CJFPJIQKxdWZKO5M1u+gw9kPvVJUjqyAt5Z98OMBAI4igO9x97koAAnSY6YHSaAB2nAiyswTbMq+/HAiHv0+4k3Ww1pOvnOvYews1Ow2rGnldEAAAIAAABACAAAAQAgAAAEAAAAgAgPwACAEAAAKiyAfJ7AXALEgAAAuAU5BMgAADki9j/BQCAlkN459OlNu6v0/V43vsAocOvq9kh1n/LX35h+B6EU9DI8fuVh/D48WMRWv742Qgtf/xshBY+fm1cMQgtefwdI5ffA/a9+frC68ox9M3enehIkvJAAC5D9vs/8F+Z/HugkfXJrOfec6QSJBi6O8IO2znX1zdZro39if/K0B8ftp2Hxxfa/vcu6DO8P5x/AaDrvwj4/uDPJDtjP09+ntDze9L+i4DRSEqwtgoQZ9rL3r9Ye/51L+Pw9tF6YuHFPJ/uWBDk2eXZvfb8YyMAwHvg673Z7AvmSF4POeSHmtDnb0xAD3qzN5gLfHsHIOvhktBJ4vOXJqABvJcZnqs5z54R7FF5ODaRiOkIGcXX+OZG7PqJnh6Ev3uOI52Z7tdRUCbdB6AFXHCDcZ3kkf2fGwEN+HGe+3xcE5yBB3umIvk5JnVIggDtnx/1u27XD5CajhBt8tqj9gMahDSan+7C629sxx6DiGmTcxOF304AwOud/SuABnTsZtNABWfaygUynjR3Ld+/GokZp4TO/JsJsEON1uN7OTEPaO9nVFHhHXizTdcN8Fl6BlER5gHk6lghYV8Tgd31DeCPL2icmhISYGsS9P7R9AErAT9JwlWCnuyFsmRuEQurKcBuqyBB72WkXtfmTCD7Au4a4/H7yYAl0N9VY0eERBqRr+Ov51yqCkTEYuuqjL4A+D4p1nvazLzOncHLt1dByhIwqpsHDzcShpIEkM4HZ5+zDEtoRLoKAgrwvwF41/WuAeg+z/1hDzk6VyGPkYW8aLfwarEwr0RJCDr/LUm4+42N8WX6z76Am3R9RoIkGGDvRN7i677TupIhqVZI7vmzPnr+1xLgwT6Bek6QtOE89rMmAGk6d8PhaG9ghSOgeLaAW1FFmYz9viLitcgBCFAgQ2dJ6dcEyLvcKxMuH2za3wW7AeOpqh/k6raz9l49XOIlQozX6pNwNCDnfde6Ckfb2SdeSejLUCXp+L3SPyAlj9FghVVHWV2etlVQ482MNfBHzwe4igSAj7T+4VnmtfdvwBJ5dxoXay/6hrc5gqrnyQCzX5H3fHYVhNd35eOrIWD4zDjZG2ntSmt8CpKTzCAnSEmp6Y7TDthyE9vbjhz7OOYAODg3THqfwEmMIJ29f1TaDwkX+8ckTCf8JAl6EjBviFo70m7v0vtTdD72EqzNgjwIgCJBr+aMRoTzbQMxzBlHIoY5JFCrA9xIZedIZLzZiwScpe1ij/vLyDu8b9p5IH2/V/4hfg+SGIUHr7oSAVhIwgbwIALpgYgLcvokvLU9gfsmgv+37117brJ90PrlHKAtWY24OWLO5/WORGWYAyJeQy8fjceHoOYz5gkTLeAPgL7YU57mHzRBQwA2Cff+5L3s1e9kn8Cuy1hAf9D/EN5YYySVKyQo4tyNSog6XucApWOZeA+Vz6UMNaXotLEiCZsgY4M9KVc/9lmBffwNHSonyQp1H/kpknDEiFeM/U2UybWRmcuEe5IcSPgAqOuQB2b3OiKBMrLumzy33dzy86HG84Z0KCtp/wL4kc7NfFdEDIucK9em8eskRl3q4bUAYc6YXalZJue6/LwkoClD9cYsP5G8d5pkT/U+Cfdd5gpI4jn2EL87eEQiID5tboPq9e+rBLvOA47D/doGj6+lKJpiQC+88WDP33h8JMADL36naIUYJYocsO+NGLOIAJJEjJnWhx7fyM0obAXLta7hmjxfp3dB5IF3AvRJwL3tzG3cjKJ8PkncBPgBocPyNXYEHAkI/md8CFA+eu8/jMiOVc1lpQRBEq38rKTNN/khkJHJXtjE8TW8T50fJO6RxvXaOSBer1j594Rjf5HfNyMSCCFoR43HBtKsirSFSCXILrh/G1p0vRdVSX4vdJvEkZYK+EVu4W0qtluCYtvGHq89MQImAApsLUHniBC0cbjXuclXcvR+o2Dq9ThXzhl3AtCcoabnHPBRdL1vCEwR30hQRAw985hwAZR1IyVcJ3o8p97HqSnE0xz1zpszAfgvSKm634e5tf9HVfaOGNcTJwLiUye2BJrnSk5OEiVZ3unv/7o/zvLT/sGshRy8i4hdyVtvk6mlaNoz4f6/dGvJkRqKgVXuDyuWLLkSZ+CiXIQVZ2CF0h0XbblkRU+hESIjq+yqZ2emJtKbZNK54vlfUBRAgl1A0BUuiyAvmdo/ff/x7QsZF5PsYY2uKw20EKA1NLpuzaNnBmddSCIZqrxIz2ydiEpprucWzrk8WzrZAGQQ5LyL4hJCqhCQ+zOVLFP5Cslzrc88KeGk0LWam1mSprc196WeH8mY/QZcngWxZ3/Y9fhsiiRjcpCzdKjhHSTHqDnCdatee/wFzF40+ph85GP9Ht7969BGjXlj0nBjbkoZJBPAbv+WB2sqWitvZXLrkrGprgluPsf5HvBr+/l1CpD4+8F/4NdnIreI64MMgFf0PUrhDRE3FjLuYLy4y9184Z1eY73w6rr7e2bNu4gvBE9fim7ftEOZkJ5I7TfkY1M+oHyiMF/R9YbcNzW3QfuLk/leIzXWLM/cgcp19FzCemU6cIz/MB9890UWjBGadM7N9QMtlCqqJiFwOjUhdaDQXQCdEwNOpzhYwMpBDrfcFpEXIsjiGJw+9jqidHo7O3+3QVO7+QpIf7ji9cbst7ogrVf8UXTDBslUgkxCCSilwjFdSAkBkSo1EcjSIBXWWvsN9SxF5ebWH3woEIS629sLNhsPabYekYTY/VR0znB/jBdcErKAavL8+A1ICXvgoqroDgAAAABJRU5ErkJggg==)}.negative[_ngcontent-%COMP%]{color:#f08080}.positive[_ngcontent-%COMP%]{color:#6495ed}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{text-align:right}table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:not(:last-child) td[_ngcontent-%COMP%]{border-bottom:rgba(240,248,255,.08) solid .5px}.result-total-gear[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:aliceblue solid 1px!important}.result-total-all[_ngcontent-%COMP%] > td[_ngcontent-%COMP%], .result-total-gear[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{border-top:aliceblue double}.buttonContainer[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:10px}.buttonContainer[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(:last-of-type){margin-right:6px;margin-bottom:3px}.result-total[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{position:relative;padding-right:14px}.statIcon[_ngcontent-%COMP%]{position:absolute;height:14px;margin-left:2px;top:3px}.item-info-menu-btn[_ngcontent-%COMP%]{height:22px!important;width:22px!important;line-height:22px!important;top:-4px;left:-4px}.item-info-menu-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:22px}.item-moved-icon[_ngcontent-%COMP%]{color:#7fffd4}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}.invalid-item-box[_ngcontent-%COMP%]{text-align:center;margin-right:auto;margin-left:auto;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;font-size:15px;line-height:20px}.text-centered[_ngcontent-%COMP%]{text-align:center!important}.specificStatTable[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0 0}.highlight-row[_ngcontent-%COMP%]{background-color:#6e6e6e21}tr.legend[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:3px}.tier-column[_ngcontent-%COMP%]{min-width:27px}.energy-bar[_ngcontent-%COMP%]{width:25px;height:10px;border:white solid 2px;position:relative}.energy-bar.normal[_ngcontent-%COMP%]{background-color:#fff}.energy-bar.mod[_ngcontent-%COMP%]{background-color:gray;border:white ridge 2px}.energy-bar.config[_ngcontent-%COMP%]{background-color:#a3b1c2;border:white ridge 2px}.energy-bar.over100[_ngcontent-%COMP%]{border-color:#ff5e5e;width:10px}.item-stat-container[_ngcontent-%COMP%]{position:relative}.item-stat-bonus[_ngcontent-%COMP%]{position:absolute;right:20px;font-size:x-small}.item-name-mw[_ngcontent-%COMP%]{text-decoration:underline;-webkit-text-decoration-color:#ffbc00;text-decoration-color:#ffbc00}.text-mw[_ngcontent-%COMP%], .item-stat-bonus[_ngcontent-%COMP%]{color:#ffd86a}app-armor-perk-icon[_ngcontent-%COMP%]{width:23px;height:23px;position:absolute;top:-14px;left:0}td.sum-tiers[_ngcontent-%COMP%]{text-align:center!important;border-left:#6e6e6e solid 1px}.currency-icon[_ngcontent-%COMP%]{width:16px;position:absolute;left:0}.currency-icon-container[_ngcontent-%COMP%]{position:relative;padding-left:19px;padding-right:10px}.icon-column[_ngcontent-%COMP%]{padding-left:4px}"]}),n})();var Ze=_(3238),rs=_(8729);function ls(n,i){1&n&&(t.TgZ(0,"mat-icon",6),t._uU(1,"add_circle_outline "),t.qZA())}function cs(n,i){1&n&&(t.TgZ(0,"mat-icon",7),t._uU(1,"remove_circle_outline "),t.qZA())}function ms(n,i){1&n&&(t.TgZ(0,"mat-icon",8),t._uU(1,"change_history "),t.qZA())}function ds(n,i){if(1&n&&(t.TgZ(0,"mat-list-item"),t.YNc(1,ls,2,0,"mat-icon",2),t.YNc(2,cs,2,0,"mat-icon",3),t.YNc(3,ms,2,0,"mat-icon",4),t.TgZ(4,"div",5)(5,"p"),t._uU(6),t.qZA()()()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",0===e.type),t.xp6(1),t.Q6J("ngIf",1===e.type),t.xp6(1),t.Q6J("ngIf",2===e.type),t.xp6(3),t.Oqu(e.text)}}function us(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"div",1),t._uU(2),t.qZA(),t.YNc(3,ds,7,4,"mat-list-item",0),t.TgZ(4,"mat-list-item"),t._UZ(5,"br")(6,"mat-divider"),t.qZA(),t.BQk()),2&n){const e=i.$implicit;t.xp6(2),t.AsE("",e.version,", released on ",e.date,""),t.xp6(1),t.Q6J("ngForOf",e.entries)}}let Se=(()=>{class n{constructor(e){this.changelog=e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(re))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-list"]],decls:2,vars:1,consts:[[4,"ngFor","ngForOf"],["mat-subheader","",1,"title"],["mat-list-icon","","matTooltip","A new function has been added.",4,"ngIf"],["mat-list-icon","","matTooltip","A function has been removed.",4,"ngIf"],["mat-list-icon","","matTooltip","Something has been modified.",4,"ngIf"],["mat-line","",1,"e"],["mat-list-icon","","matTooltip","A new function has been added."],["mat-list-icon","","matTooltip","A function has been removed."],["mat-list-icon","","matTooltip","Something has been modified."]],template:function(e,o){1&e&&(t.TgZ(0,"mat-list"),t.YNc(1,us,7,3,"ng-container",0),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngForOf",o.changelog.changelogData))},dependencies:[Z.sg,Z.O5,pt.gM,St.Hw,zt.i$,zt.Tg,Ze.X2,zt.Nh,zt.gs,rs.d],styles:["[_nghost-%COMP%] .mat-line{word-wrap:break-word!important;white-space:pre-wrap!important}[_nghost-%COMP%] .mat-list .mat-list-item{height:initial!important}.title[_ngcontent-%COMP%]{text-decoration:underline;font-size:20px}.e[_ngcontent-%COMP%] > p[_ngcontent-%COMP%]:first-child{padding-top:12px}"]}),n})();function ps(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Oqu(e)}}let gs=(()=>{class n{constructor(){this.knownIssues=["When you click buttons on the page too fast are able to select an invalid state with no results. Just undo your changed settings. And be patient - the calculation is an expensive task.","Sometimes duplicate results are given. This happens when the inventory got updated twice (Race Condition). Only reported once, and not really a problem."],this.changelog=Te}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-help-page"]],decls:116,vars:1,consts:[["id","help-container"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-raised-button","","routerLink","/",1,"returnbutton"],["href","https://twitter.com/MijagoCoding/","target","_blank","matTooltip","Birb App"],["alt","Me on twitter","src","assets/logo-twitter.png",1,"logo-twitter"],["href","https://ko-fi.com/mijago","target","_blank","matTooltip","If you like my work, you can always buy me a coffee!"],["alt","Ko-Fi","src","assets/logo-kofi.png",1,"logo-twitter"],["href","http://discord.d2armorpicker.com/","target","_blank","matTooltip","Visit me at the development & support discord."],["alt","Discord","src","assets/logo-discord.png",1,"logo-twitter"],["href","https://github.com/Mijago/D2-Gear-Calculator","target","_blank"],["href","https://mijago.github.io/D2GearCalculator/","target","_blank"],["href","https://twitter.com/MijagoCoding/","target","_blank"],["href","https://ko-fi.com/mijago","target","_blank"],[1,"preview-image-container"],["alt","Preview of the results table","src","assets/armor-images/preview_result_details.png",1,"preview-image"],["fxLayout","row","id","armor-image-container"],["src","assets/armor-images/kabrs_battlecage.png"],["src","assets/armor-images/lightkin_gauntlets.png"],["src","assets/armor-images/phobos_warden_helm.png"],["src","assets/armor-images/wild_hunt_vest.png"],[4,"ngFor","ngForOf"],[1,"changelog-table-container"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"a",1),t._uU(2," Return to D2ArmorPicker "),t.qZA(),t.TgZ(3,"mat-card")(4,"mat-card-title")(5,"span"),t._uU(6,"About D2ArmorPicker "),t.TgZ(7,"small"),t._uU(8," by Mijago"),t.qZA(),t.TgZ(9,"a",2),t._UZ(10,"img",3),t.qZA(),t.TgZ(11,"a",4),t._UZ(12,"img",5),t.qZA(),t.TgZ(13,"a",6),t._UZ(14,"img",7),t.qZA()()(),t.TgZ(15,"mat-card-content"),t._uU(16," D2ArmorPicker (or short D2AP) is a small web-app to quickly find armor that fits your desired stat requirements. It uses the armor in your vault, inventory and postmaster, calculates every possible variation and shows only those that fulfill the given requirements. "),t._UZ(17,"br")(18,"br"),t._uU(19," As I raided a lot and I mainly play meme builds, I wanted to be able to switch exotics and have decent stats without being a burden on my team. That's why I developed the "),t.TgZ(20,"a",8),t._uU(21,"first version of this tool"),t.qZA(),t._uU(22," in Python. After a few days I started to translate this tool "),t.TgZ(23,"a",9),t._uU(24,"into a webpage"),t.qZA(),t._uU(25,". My friends liked it, but it didn't have API access. Thus I created the first version of D2ArmorPicker, and after people started using and liking it, I started to completely rewrite it - that's Version\xa02! "),t._UZ(26,"br")(27,"br"),t._uU(28," I keep updating and improving this tool, but beware that it takes a bit, as I work on it on my spare time. Feel free to follow me on Twitter "),t.TgZ(29,"a",10),t._UZ(30,"img",3),t.qZA(),t._uU(31,", I occasionally post updates there. If you like my tools and want to support me, head to "),t.TgZ(32,"a",11),t._uU(33,"ko-fi.com"),t.qZA(),t._uU(34," and buy me a coffee! \u2764 "),t.qZA()(),t.TgZ(35,"mat-card")(36,"mat-card-title"),t._uU(37," How do I use D2ArmorPicker? "),t.qZA(),t.TgZ(38,"mat-card-content"),t._uU(39," Follow these few steps: "),t.TgZ(40,"ol")(41,"li"),t._uU(42,"Login. You already did this!"),t.qZA(),t.TgZ(43,"li"),t._uU(44," [Optional] Pick an exotic you want to use. The tool will only display results for this exotic. You can always undo this. "),t.qZA(),t.TgZ(45,"li"),t._uU(46," [Optional] Select additional mods/fragments that give a bonus (or penalty). These are important if you want certain stat combinations even if you have penalties on your gear. "),t.qZA(),t.TgZ(47,"li"),t._uU(48," Select the stat distribution you seek. This is the heart of D2ArmorPicker. You just click 100 recovery and it will display you builds that have 100 recovery. "),t.TgZ(49,"i"),t._uU(50,"Note that it automatically adds stat mods if necessary."),t.qZA()(),t.TgZ(51,"li"),t._uU(52," Now look to the result table. On a normal desktop it should be on the right, on smaller devices it might move below the configuration. The table lists multiple results and you can sort it by your requirements."),t._UZ(53,"br"),t.TgZ(54,"b"),t._uU(55,"Click"),t.qZA(),t._uU(56," on an entry to open look the detailed view: "),t.TgZ(57,"div",12),t._UZ(58,"img",13),t.qZA(),t._uU(59," The example above shows a build that utilizes Dunemarchers and a zero-waste-build. To achieve it, I have to move all the items in my inventory and equip them. After this, I "),t.TgZ(60,"i"),t._uU(61,"masterwork"),t.qZA(),t._uU(62," them and "),t.TgZ(63,"i"),t._uU(64,"add the mods"),t.qZA(),t._uU(65," as the table displays them: "),t.TgZ(66,"ul")(67,"li")(68,"b"),t._uU(69,"Discipline:"),t.qZA(),t._uU(70," One major mod, one minor mod;"),t.qZA(),t.TgZ(71,"li")(72,"b"),t._uU(73,"Intellect:"),t.qZA(),t._uU(74," One major mod, one minor mod;"),t.qZA(),t.TgZ(75,"li")(76,"b"),t._uU(77,"Strength:"),t.qZA(),t._uU(78," One major mod;"),t.qZA(),t.TgZ(79,"li"),t._uU(80,"I also add Powerful Friends and Radiant Light, as I chose them in the configuration."),t.qZA()()()()()(),t.TgZ(81,"mat-card")(82,"mat-card-title"),t._uU(83," Where can I grind high stat armor? "),t.qZA(),t.TgZ(84,"mat-card-content"),t._uU(85," There are many spots that give you mediocre armor, but for the really good builds you need the correct armor. Here I provide a list of high-stat armor sources. It may not be complete, but a good starting point. "),t.TgZ(86,"i"),t._uU(87,"Last updated February 8, 2022."),t.qZA(),t.TgZ(88,"ul")(89,"li"),t._uU(90," Farm legendary Dares!"),t.qZA(),t.TgZ(91,"li"),t._uU(92," Clear Pit of Heresy Dungeon, the boss drop guarantees two stats to be 16 (or higher)."),t.qZA(),t.TgZ(93,"li"),t._uU(94," Farm a bunch of Spoils, go into Master Vault of Glass and buy armor at the final chest."),t.qZA(),t.TgZ(95,"li"),t._uU(96," The list will be extended sometime in Witch Queen!"),t.qZA()(),t._uU(97," Some good armor rolls may look like these: "),t.TgZ(98,"div",14),t._UZ(99,"img",15)(100,"img",16)(101,"img",17)(102,"img",18),t.qZA()()(),t.TgZ(103,"mat-card")(104,"mat-card-title"),t._uU(105,"Known Issues"),t.qZA(),t.TgZ(106,"mat-card-content")(107,"ul"),t.YNc(108,ps,2,1,"li",19),t.qZA()()(),t.TgZ(109,"mat-card")(110,"mat-card-title"),t._uU(111,"Changelog"),t.qZA(),t.TgZ(112,"mat-card-content",20),t._UZ(113,"app-changelog-list"),t.qZA()(),t.TgZ(114,"a",1),t._uU(115," Return to D2ArmorPicker "),t.qZA()()),2&e&&(t.xp6(108),t.Q6J("ngForOf",o.knownIssues))},dependencies:[Z.sg,ft.xw,M.b8,rt.zs,Y.a8,Y.dn,Y.n5,pt.gM,ot.yS,Se],styles:["#help-container[_ngcontent-%COMP%]{max-width:800px;margin-left:auto;margin-right:auto}.changelog-table-container[_ngcontent-%COMP%]{max-height:700px;overflow-y:scroll}mat-card[_ngcontent-%COMP%]{margin-bottom:8px}#armor-image-container[_ngcontent-%COMP%]{overflow:auto}#armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]:not(:last-of-type){margin-right:20px}#armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{max-height:300px}.preview-image-container[_ngcontent-%COMP%]{max-width:600px}.preview-image[_ngcontent-%COMP%]{max-width:100%}.returnbutton[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:15px;width:100%}.changelog-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:first-of-type{min-width:80px}.changelog-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:nth-of-type(2){min-width:40px}.changelog-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-top:#6e6e6e solid 1px}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})();var wt=_(4006),ne=_(455),$t=_(3217),Rt=_(811),Nt=_(9549),oe=_(4144);function hs(n,i){if(1&n&&(t.TgZ(0,"th",5),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("\u2206 Tier ",e.differenceTier,"")}}function xs(n,i){if(1&n&&t._UZ(0,"img",9),2&n){const e=t.oxw(3).$implicit;t.MGl("src","https://www.bungie.net/",e.icon,"",t.LSH)}}function ys(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=i.ngVar,o=t.oxw(6).$implicit,a=t.oxw();t.ekj("good",a.differenceTiera.tier),t.xp6(1),t.AsE(" ",e>0?"+":"","",a.formatEntry(o,e)," ")}}function Cs(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ys,2,6,"span",10),t.qZA()),2&n){const e=t.oxw(2).ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngVar",-(e-o))}}function Ts(n,i){if(1&n&&(t.TgZ(0,"td")(1,"span"),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw(5);t.xp6(1),t.ekj("good",o.differenceTiero.tier),t.xp6(1),t.AsE(" (",e>0?"+":"","",t.xi3(3,6,100*e,"1.0-0"),"%) ")}}function vs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Cs,2,1,"td",6),t.YNc(2,Ts,4,9,"td",6),t.BQk()),2&n){const e=t.oxw(5);t.xp6(1),t.Q6J("ngIf",e.differenceTier!==e.tier),t.xp6(1),t.Q6J("ngIf",e.differenceTier!==e.tier)}}function bs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,vs,3,2,"ng-container",7),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar,a=t.oxw(3);t.xp6(1),t.Q6J("ngVar",a.getPercentageDifference(o,e))}}function As(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"app-item-icon",11),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("itemHash",e)}}function ws(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"td"),t.YNc(2,xs,1,1,"img",8),t._uU(3),t.qZA(),t.TgZ(4,"td"),t._uU(5),t.qZA(),t.YNc(6,bs,2,1,"ng-container",7),t.TgZ(7,"td"),t.YNc(8,As,2,1,"ng-container",4),t._uU(9),t.qZA(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(2).$implicit,a=t.oxw();t.xp6(2),t.Q6J("ngIf",o.icon),t.xp6(1),t.hij(" ",o.name," "),t.xp6(2),t.Oqu(a.formatEntry(o,e)),t.xp6(1),t.Q6J("ngVar",a.valueFunction(o,a.differenceTier)),t.xp6(2),t.Q6J("ngForOf",o.overrideIcons),t.xp6(1),t.hij(" ",o.description," ")}}function Is(n,i){if(1&n&&(t.TgZ(0,"tr"),t.YNc(1,ws,10,6,"ng-container",7),t.qZA()),2&n){const e=t.oxw().$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngVar",o.valueFunction(e,o.tier))}}function Zs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Is,2,1,"tr",6),t.BQk()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngIf",null==e.description||!!e.description[o.characterClass])}}let ks=(()=>{class n{constructor(e,o){this.config=e,this.characterStats=o,this.ArmorStatNames=c.Mi,this.tier=0,this.differenceTier=0,this.stat=c.WB.Mobility,this.entries=[]}get characterClass(){return this.config.readonlyConfigurationSnapshot.characterClass}ngOnInit(){this.entries=this.characterStats.get(c.Mi[this.stat],this.config.readonlyConfigurationSnapshot.characterClass,this.config.readonlyConfigurationSnapshot.selectedModElement,this.config.readonlyConfigurationSnapshot.selectedExotics)}formatEntry(e,o){return o=parseFloat(o.toFixed(2)),e.valueType===dt.Speed?(n=>(Math.round(100*n)/100).toFixed(2)+"m/s")(o):e.valueType===dt.Percentage?`${o}%`:e.valueType===dt.PercentagePerSecond?`${o}%/s`:e.valueType===dt.TimeMMSS?function Ms(n){var i=function _s(n){n=Math.abs(n);var i=Math.floor(n/60),e=Math.floor(n-60*i);return`${i}:${e<10?"0":""}${e}`}(n);return n<0&&(i="- "+i),i}(o):e.valueType===dt.Time?function Os(n){var i=function fs(n){n=Math.abs(n);var i=Math.floor(10*n%10),e=Math.floor(n/60),o=Math.floor(n-60*e);let a=`${o}s`;return i>0&&(a=`${o}.${i}s`),e>0&&(a=`${e}m ${a}`),a}(n);return n<0&&(i="- "+i),i}(o):o}valueFunction(e,o){return e.values[o]}getPercentageDifference(e,o){return(e-o)/Math.max(1,o)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(Gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-stat-cooldown-tooltip"]],inputs:{tier:"tier",differenceTier:"differenceTier",stat:"stat"},decls:13,vars:5,consts:[[1,"tooltip-container"],["colspan","3",1,"exotic-name"],[2,"min-width","50px"],["style","min-width: 50px","colspan","2",4,"ngIf"],[4,"ngFor","ngForOf"],["colspan","2",2,"min-width","50px"],[4,"ngIf"],[4,"ngVar"],[3,"src",4,"ngIf"],[3,"src"],[3,"good","bad",4,"ngVar"],[3,"itemHash"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"th",2),t._uU(8,"Stat"),t.qZA(),t.TgZ(9,"th",2),t._uU(10),t.qZA(),t.YNc(11,hs,2,1,"th",3),t.qZA(),t.YNc(12,Zs,2,1,"ng-container",4),t.qZA()()()),2&e&&(t.xp6(5),t.AsE("",o.ArmorStatNames[o.stat]," at Tier ",o.tier,""),t.xp6(5),t.hij("Tier ",o.tier,""),t.xp6(1),t.Q6J("ngIf",o.differenceTier!==o.tier),t.xp6(1),t.Q6J("ngForOf",o.entries))},dependencies:[Z.sg,Z.O5,Kt,_e,Z.JJ],styles:["[_nghost-%COMP%]{max-width:420px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}.good[_ngcontent-%COMP%]{color:#58b458}.bad[_ngcontent-%COMP%]{color:#ff6b6b}table[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:7px 3px}th[_ngcontent-%COMP%]{white-space:nowrap}img[_ngcontent-%COMP%]{width:24px;height:24px;float:left;margin-right:3px}tr[_ngcontent-%COMP%]{line-height:24px}"]}),n})(),Es=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0,this.tooltipTier=0,this.tooltipStat=c.WB.Mobility,this.tooltipDifferenceTier=0}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){if(this._overlayRef&&!this._overlayRef.hasAttached()){const e=this._overlayRef.attach(new le.C5(ks));e.instance.tier=this.tooltipTier,e.instance.differenceTier=this.tooltipDifferenceTier,e.instance.stat=this.tooltipStat}}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Lt.aV),t.Y36(Lt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","statCooldownTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",tooltipTier:"tooltipTier",tooltipStat:"tooltipStat",tooltipDifferenceTier:"tooltipDifferenceTier",contentTemplate:"contentTemplate"}}),n})();function Us(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-button-toggle",5),t.NdJ("click",function(){const s=t.CHM(e).index,r=t.oxw(2);return t.KtG(r.setValue(s))}),t.TgZ(1,"div",6),t._uU(2),t.qZA()()}if(2&n){const e=i.index,o=t.oxw(2);t.ekj("isFromMod",o.isAddedByConfigMods(e))("mat-button-toggle-checked",o.selectedTier>=e)("not-checked",o.selectedTier{class n{constructor(){this.TierRange=new Array(11),this.allowExactStats=!1,this.stat=c.WB.Mobility,this.statsByMods=0,this.maximumAvailableTier=10,this.selectedTier=0,this.locked=!1,this.selectedTierChange=new t.vpe,this.lockedChange=new t.vpe}setValue(e){e<=this.maximumAvailableTier&&(this.selectedTier=e,this.selectedTierChange.emit(e))}setValueMob(e){let o=parseInt(e.target.value);o=Math.min(Math.max(o,0),100),this.setValue(o/10)}isAddedByConfigMods(e){return e>0&&(this.selectedTier-e>=0&&this.selectedTier-e{class n{constructor(){this.ArmorStatNames=c.Mi,this.ArmorStatIconUrls=c.lp,this.stat=c.WB.Mobility}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-stat-icon"]],inputs:{stat:"stat"},decls:2,vars:2,consts:[[1,"statContainerWrapper"],[1,"dialogStatIcon",3,"src","alt"]],template:function(e,o){1&e&&(t.TgZ(0,"span",0),t._UZ(1,"img",1),t.qZA()),2&e&&(t.xp6(1),t.Q6J("src",o.ArmorStatIconUrls[o.stat],t.LSH)("alt",o.ArmorStatNames[o.stat]))},styles:[".dialogStatIcon[_ngcontent-%COMP%]{position:relative;width:25px;margin-right:3px;top:4px}"]}),n})();function Fs(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._UZ(4,"app-stat-icon",15),t.qZA(),t.TgZ(5,"td")(6,"app-stat-tier-selection",16),t.NdJ("selectedTierChange",function(a){const r=t.CHM(e).$implicit,m=t.oxw();return t.KtG(m.setSelectedTier(r.value,a))})("lockedChange",function(a){const r=t.CHM(e).$implicit,m=t.oxw();return t.KtG(m.setLockState(r.value,a))}),t.qZA()()()}if(2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.hij(" ",e.name," "),t.xp6(2),t.Q6J("stat",e.value),t.xp6(2),t.Q6J("stat",e.value)("allowExactStats",o.config_allowExactStats)("statsByMods",o.statsByMods[e.value])("maximumAvailableTier",o.maximumPossibleTiers[e.value])("selectedTier",o.minimumStatTiers[e.value].value)("locked",o.minimumStatTiers[e.value].fixed)}}function Js(n,i){1&n&&t._UZ(0,"app-stat-icon",19),2&n&&t.Q6J("stat",i.$implicit)}function Ls(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.useStatPreset(s))}),t.YNc(1,Js,1,1,"app-stat-icon",18),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Ys(n,i){1&n&&t._UZ(0,"app-stat-icon",19),2&n&&t.Q6J("stat",i.$implicit)}function Bs(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.useStatPreset(s))}),t.YNc(1,Ys,1,1,"app-stat-icon",18),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Me(n){let i=0;for(let e of n)i+=Math.pow(10,6-e);return i}let Vs=(()=>{class n{constructor(e,o){this.config=e,this.inventory=o,this.minimumStatTiers=j(1),this.maximumPossibleTiers=[10,10,10,10,10,10],this.statsByMods=[0,0,0,0,0,0],this._statCombo4x100=[],this._statCombo3x100=[],this.config_zero_waste=!1,this.config_mod_strategy=it.w.None,this.config_reduce_waste=!1,this.config_allowExactStats=!1,this.ngUnsubscribe=new R.xQ,this.stats=Object.keys(c.WB).filter(a=>!isNaN(Number(a))).map(a=>({name:c.WB[a],value:+a}))}ngOnInit(){this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{const o=[0,0,0,0,0,0];for(let a of e.enabledMods)for(let s of N.F[a].bonus)o[s.stat]+=s.value/10;this.statsByMods=o,this.minimumStatTiers=e.minimumStatTiers,this.config_zero_waste=e.onlyShowResultsWithNoWastedStats,this.config_mod_strategy=e.modOptimizationStrategy,this.config_reduce_waste=e.tryLimitWastedStats,this.config_allowExactStats=e.allowExactStats}),this.inventory.armorResults.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{const o=e.maximumPossibleTiers||[10,10,10,10,10,10];console.log("d.maximumPossibleTiers",o),o.filter(a=>0==a).length<6&&(this.maximumPossibleTiers=o),this._statCombo3x100=(e.statCombo3x100||[]).sort((a,s)=>Me(s)-Me(a)),this._statCombo4x100=e.statCombo4x100||[]})}setSelectedTier(e,o){this.config.modifyConfiguration(a=>{a.minimumStatTiers[e].value=o})}clearStatSelection(){this.config.modifyConfiguration(e=>{for(let o=0;o<6;o++)e.minimumStatTiers[o]={fixed:!1,value:0}})}useStatPreset(e){0!=e.filter(o=>10!=this.config.readonlyConfigurationSnapshot.minimumStatTiers[o].value).length&&this.config.modifyConfiguration(o=>{for(let a of e)o.minimumStatTiers[a].value=10})}setLockState(e,o){this.config.modifyConfiguration(a=>{a.minimumStatTiers[e].fixed=o})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}setModOptimizationStrategy(){this.config.modifyConfiguration(e=>{e.modOptimizationStrategy=this.config_mod_strategy})}toggleReduceWaste(){this.config.modifyConfiguration(e=>{e.tryLimitWastedStats=!this.config_reduce_waste})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(At))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-stat-selection"]],decls:43,vars:12,consts:[[4,"ngFor","ngForOf"],["id","tierSelectButtonContainer"],[1,"tierSelectButton"],["mat-stroked-button","","color","warn","id","clearStatButton",3,"click"],["mat-stroked-button","","aria-label","Select builds with three stats at tier 10.",1,"selectStatDistributionButton",3,"matMenuTriggerFor","disabled"],["menu",""],["menu1","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["mat-stroked-button","","aria-label","Select builds with four stats at tier 10.",3,"matMenuTriggerFor","disabled"],["menu2","matMenu"],[3,"ngModel","ngModelChange","change"],["matTooltip","Fast. Will result in good and fast results. Some better results *may* be skipped.",3,"value"],["matTooltip","Slower. Reduces the amount of used mods. This means that it will try to give you 4 mods instead of 5 whenever possible.",3,"value"],["matTooltip","Slower. Reduces the total cost of mods. This will result in less Intellect mods, for example.",3,"value"],["color","primary",3,"checked","change"],[3,"stat"],[3,"stat","allowExactStats","statsByMods","maximumAvailableTier","selectedTier","locked","selectedTierChange","lockedChange"],["mat-menu-item","",3,"click"],["class","dialogStatIcon",3,"stat",4,"ngFor","ngForOf"],[1,"dialogStatIcon",3,"stat"]],template:function(e,o){if(1&e&&(t.TgZ(0,"table"),t.YNc(1,Fs,7,8,"tr",0),t.qZA(),t.TgZ(2,"span",1)(3,"span",2)(4,"button",3),t.NdJ("click",function(){return o.clearStatSelection()}),t._uU(5,"Clear"),t.qZA()(),t.TgZ(6,"span",2)(7,"button",4)(8,"mat-icon"),t._uU(9,"expand_more"),t.qZA(),t._uU(10," Select 3x T10 Builds "),t.qZA(),t.TgZ(11,"mat-menu",5,6),t.YNc(13,Ls,2,1,"button",7),t.qZA()(),t.TgZ(14,"span",2)(15,"button",8)(16,"mat-icon"),t._uU(17,"expand_more"),t.qZA(),t._uU(18," Select 4x T10 Builds "),t.qZA(),t.TgZ(19,"mat-menu",null,9),t.YNc(21,Bs,2,1,"button",7),t.qZA()()(),t._UZ(22,"br")(23,"br"),t.TgZ(24,"div")(25,"div")(26,"b"),t._uU(27,"Mod optimization strategy:"),t.qZA()(),t.TgZ(28,"div"),t._uU(29,"You can choose if the algorithm should keep an eye on amount or the cost of mods."),t.qZA(),t.TgZ(30,"div"),t._uU(31,"These settings are extremely expensive when paired with the reduced waste feature."),t.qZA(),t.TgZ(32,"mat-button-toggle-group",10),t.NdJ("ngModelChange",function(s){return o.config_mod_strategy=s})("change",function(){return o.setModOptimizationStrategy()}),t.TgZ(33,"mat-button-toggle",11),t._uU(34,"No extra logic (fast)"),t.qZA(),t.TgZ(35,"mat-button-toggle",12),t._uU(36,"Fewer mods, high cost (slow)"),t.qZA(),t.TgZ(37,"mat-button-toggle",13),t._uU(38,"Many mods, low cost (slow)"),t.qZA()()(),t._UZ(39,"br"),t.TgZ(40,"div")(41,"mat-slide-toggle",14),t.NdJ("change",function(){return o.toggleReduceWaste()}),t._uU(42," Add mods to reduce wasted stats (slower) "),t.qZA()()),2&e){const a=t.MAs(12),s=t.MAs(20);t.xp6(1),t.Q6J("ngForOf",o.stats),t.xp6(6),t.Q6J("matMenuTriggerFor",a)("disabled",0===o._statCombo3x100.length),t.xp6(6),t.Q6J("ngForOf",o._statCombo3x100),t.xp6(2),t.Q6J("matMenuTriggerFor",s)("disabled",0===o._statCombo4x100.length),t.xp6(6),t.Q6J("ngForOf",o._statCombo4x100),t.xp6(11),t.Q6J("ngModel",o.config_mod_strategy),t.xp6(1),t.Q6J("value",0),t.xp6(2),t.Q6J("value",1),t.xp6(2),t.Q6J("value",2),t.xp6(4),t.Q6J("checked",o.config_reduce_waste)}},dependencies:[Z.sg,wt.JJ,wt.On,rt.lW,ne.Rr,pt.gM,St.Hw,$t.VK,$t.OP,$t.p6,Rt.A9,Rt.Yi,qs,he],styles:["#tierSelectButtonContainer[_ngcontent-%COMP%] > .tierSelectButton[_ngcontent-%COMP%]:not(:last-child){margin-right:5px}.dialogStatIcon[_ngcontent-%COMP%]{height:35px}.warn[_ngcontent-%COMP%]{background-color:#8b0000;padding-left:15px;padding-right:15px}"]}),n})();function Qs(n,i){if(1&n&&(t.TgZ(0,"div",4,5),t._UZ(2,"img",6),t.TgZ(3,"span",7),t._uU(4),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(2),t.Q6J("src",o.artificeUrl,t.LSH),t.xp6(2),t.hij("\xd7",e,"")}}function Hs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Qs,5,2,"div",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ws(n,i){if(1&n&&(t.TgZ(0,"div",9,5),t._UZ(2,"img",10),t.TgZ(3,"span",11),t._uU(4),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw().$implicit,a=t.oxw().$implicit,s=t.oxw();t.Q6J("matTooltip",s.getStatName(a)),t.xp6(2),t.Gre("modIcon modIcon_",s.getStatName(a),""),t.ekj("minor",1===o),t.Q6J("src",s.ModUrl[o+3*a],t.LSH),t.xp6(1),t.ekj("minor",1===o),t.xp6(1),t.hij("\xd7",e,"")}}function js(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ws,5,10,"div",8),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Gs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,js,2,1,"ng-container",1),t.ALo(2,"count"),t.BQk()),2&n){const e=i.$implicit,o=t.oxw().$implicit,a=t.oxw();t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,a.mods,e+3*o))}}function zs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Gs,3,4,"ng-container",2),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.modTypeIndex)}}const Oe={[c.iV.MINOR_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/a5d9a778feddb2a9036588490a4818b0.png",[c.iV.MAJOR_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/db4b34c79c834d3cf36b592c688ed22d.png",[c.iV.ARTIFICE_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/a5d9a778feddb2a9036588490a4818b0.png",[c.iV.MINOR_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/1b4eec255df03ae088db1eb251654316.png",[c.iV.MAJOR_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/db6c438e9ff1a21b03a1f0488560e6a3.png",[c.iV.ARTIFICE_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/1b4eec255df03ae088db1eb251654316.png",[c.iV.MINOR_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/51d46295defdf93d77a62e3e895df5cd.png",[c.iV.MAJOR_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/f42cc43389f147d25f0ee2946f1ff1bd.png",[c.iV.ARTIFICE_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/51d46295defdf93d77a62e3e895df5cd.png",[c.iV.MINOR_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/9ba335d570610d1ae9cffa071d5bcb8e.png",[c.iV.MAJOR_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/e54f6af6a4577e4d66396e5285bb73c0.png",[c.iV.ARTIFICE_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/9ba335d570610d1ae9cffa071d5bcb8e.png",[c.iV.MINOR_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/a8808e7528b16474f8c9c65b4e53b52b.png",[c.iV.MAJOR_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/2399dff2dc6952ea65c2b8c594d00658.png",[c.iV.ARTIFICE_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/a8808e7528b16474f8c9c65b4e53b52b.png",[c.iV.MINOR_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/6b45221fccade87ee39f3a03efc6e9b9.png",[c.iV.MAJOR_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/66714f030b79a1517c657f1378216cca.png",[c.iV.ARTIFICE_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/6b45221fccade87ee39f3a03efc6e9b9.png"};let Ks=(()=>{class n{constructor(){this.artificeUrl=c.X9[c.Pn.SlotArtifice],this.modIndex=[0,1,2,3,4,5],this.modTypeIndex=[1,2],this.ModUrl=Oe,this.mods=[],this.artifice=[]}getStatName(e){return c.Mi[e]}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-table-mod-display"]],inputs:{mods:"mods",artifice:"artifice"},decls:4,vars:4,consts:[[1,"row-mod"],[4,"ngVar"],[4,"ngFor","ngForOf"],["class","container","matTooltip","Artifice",4,"ngIf"],["matTooltip","Artifice",1,"container"],["tooltip","matTooltip"],[1,"artificeIcon","artifice",3,"src"],[1,"modText","artifice"],["class","container",3,"matTooltip",4,"ngIf"],[1,"container",3,"matTooltip"],[3,"src"],[1,"modText"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Hs,2,1,"ng-container",1),t.ALo(2,"count"),t.YNc(3,zs,2,1,"ng-container",2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngVar",t.lcZ(2,2,o.artifice)),t.xp6(2),t.Q6J("ngForOf",o.modIndex))},dependencies:[Z.sg,Z.O5,pt.gM,Kt,Ie],styles:[".container[_ngcontent-%COMP%]{display:inline-block;width:32px;height:30px;position:relative}.modIcon[_ngcontent-%COMP%]{position:absolute;top:-12px;left:-12px;width:50px;height:50px;filter:contrast(2.3);border:#00000000 solid 2px;-webkit-mask-image:url(modmask.f03dde91561a62d6.svg);mask-image:image(url(modmask.f03dde91561a62d6.svg),black)}.modIcon_Mobility[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(0deg) brightness(100%) saturate(320%)}.modIcon_Resilience[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(60deg) brightness(100%) saturate(320%)}.modIcon_Recovery[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(120deg) brightness(100%) saturate(320%)}.modIcon_Discipline[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(180deg) brightness(100%) saturate(320%)}.modIcon_Intellect[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(240deg) brightness(100%) saturate(320%)}.modIcon_Strength[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(300deg) brightness(100%) saturate(320%)}.modIcon.minor[_ngcontent-%COMP%]{opacity:.8;scale:.75}.artificeIcon[_ngcontent-%COMP%]{height:28px;width:28px;filter:saturate(40) hue-rotate(40deg)}.selected[_ngcontent-%COMP%]{border:red solid 2px}[_nghost-%COMP%]{position:relative}.modText[_ngcontent-%COMP%]{position:absolute;text-shadow:0 0 6px #000000;font-size:smaller;color:#f5f5f5;bottom:-6px;right:-1px}"]}),n})();function $s(n,i){if(1&n&&(t.TgZ(0,"div")(1,"div",22),t._UZ(2,"img",23)(3,"img",24),t.O4$(),t.TgZ(4,"svg",25)(5,"text",26),t._uU(6,"3"),t.qZA()(),t.TgZ(7,"svg",27)(8,"text",26),t._uU(9,"1"),t.qZA()(),t.kcU(),t._UZ(10,"div",28),t.qZA(),t.TgZ(11,"div",22),t._UZ(12,"img",23)(13,"img",24),t.O4$(),t.TgZ(14,"svg",25)(15,"text",26),t._uU(16,"4"),t.qZA()(),t.TgZ(17,"svg",27)(18,"text",26),t._uU(19,"2"),t.qZA()(),t.kcU(),t._UZ(20,"div",28),t.qZA(),t.TgZ(21,"div",22),t._UZ(22,"img",23)(23,"img",24),t.O4$(),t.TgZ(24,"svg",25)(25,"text",26),t._uU(26,"3"),t.qZA()(),t.TgZ(27,"svg",27)(28,"text",26),t._uU(29,"1"),t.qZA()(),t.kcU(),t._UZ(30,"div",28),t.qZA(),t.TgZ(31,"div",22),t._UZ(32,"img",23)(33,"img",24),t.O4$(),t.TgZ(34,"svg",25)(35,"text",26),t._uU(36,"3"),t.qZA()(),t.TgZ(37,"svg",27)(38,"text",26),t._uU(39,"1"),t.qZA()(),t.kcU(),t._UZ(40,"div",28),t.qZA(),t.TgZ(41,"div",22),t._UZ(42,"img",23)(43,"img",24),t.O4$(),t.TgZ(44,"svg",25)(45,"text",26),t._uU(46,"4"),t.qZA()(),t.TgZ(47,"svg",27)(48,"text",26),t._uU(49,"2"),t.qZA()(),t.kcU(),t._UZ(50,"div",28),t.qZA(),t.TgZ(51,"div",22),t._UZ(52,"img",23)(53,"img",24),t.O4$(),t.TgZ(54,"svg",25)(55,"text",26),t._uU(56,"4"),t.qZA()(),t.TgZ(57,"svg",27)(58,"text",26),t._uU(59,"2"),t.qZA()(),t.kcU(),t._UZ(60,"div",28),t.qZA()()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(1),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_MOBILITY],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_MOBILITY],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_RESILIENCE],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_RESILIENCE],t.LSH),t.xp6(8),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_DISCIPLINE],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_DISCIPLINE],t.LSH),t.xp6(8),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_STRENGTH],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_STRENGTH],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_RECOVERY],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_RECOVERY],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_INTELLECT],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_INTELLECT],t.LSH)}}function Xs(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-button-toggle",29),t.NdJ("click",function(){const s=t.CHM(e).index,r=t.oxw();return t.KtG(r.setValue(s))}),t._uU(1),t.qZA()}if(2&n){const e=i.index,o=t.oxw();t.Gre("select-button ",o.selection>=e?"mat-button-toggle-checked":"",""),t.Q6J("value",e),t.xp6(1),t.Oqu(e)}}function tr(n,i){1&n&&(t.TgZ(0,"mat-icon"),t._uU(1,"lock_open"),t.qZA())}function er(n,i){1&n&&(t.TgZ(0,"mat-icon"),t._uU(1,"lock"),t.qZA())}function nr(n,i){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"button",30),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.setArmorPerk(s))}),t._UZ(2,"app-armor-perk-icon",31),t.TgZ(3,"span",32),t._uU(4),t.qZA()(),t.BQk()}if(2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.ekj("selected-menu",e===o.armorPerk),t.xp6(1),t.Q6J("perk",e),t.xp6(2),t.Oqu(o.ArmorPerkOrSlotNames[e])}}function or(n,i){if(1&n&&t._UZ(0,"img",33,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function ir(n,i){if(1&n&&t._UZ(0,"img",35,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function ar(n,i){if(1&n&&t._UZ(0,"img",36,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function sr(n,i){if(1&n&&t._UZ(0,"img",37,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function rr(n,i){if(1&n&&t._UZ(0,"img",38,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}let lr=(()=>{class n{constructor(e,o,a,s){this.config=e,this.inventory=o,this.iconService=a,this.db=s,this.featureDisabled=!g.N.featureFlags.enableModslotLimitation,this.ModUrls=Oe,this.StatModifier=c.iV,this.ArmorSlot=v.y,this.ArmorPerkOrSlotNames=c.cM,this.ArmorPerkOrSlot=c.Pn,this.ModRange=new Array(P.Qj+1),this.selection=P.Qj,this.slot=v.y.ArmorSlotHelmet,this.possible=new t.vpe,this.fixedExoticInThisSlot=!1,this.isPossible=!0,this.configSelectedClass=0,this.configAssumeLegendaryIsArtifice=!1,this.configSelectedExoticSum=0,this.configSelectedExotic=[],this.configAssumeClassItemIsArtifice=!1,this.configAssumeExoticIsArtifice=!1,this.armorPerk=c.Pn.None,this.armorPerkLock=!1,this.maximumModSlots=5,this.hoveredSlot=-1,this.disabled=!1,this.availableArmorPerks=[c.Pn.None,c.Pn.SlotSalvationsEdge,c.Pn.SlotCrotasEnd,c.Pn.SlotRootOfNightmares,c.Pn.SlotKingsFall,c.Pn.SlotVowOfTheDisciple,c.Pn.SlotVaultOfGlass,c.Pn.SlotDeepStoneCrypt,c.Pn.SlotGardenOfSalvation,c.Pn.SlotLastWish,c.Pn.SlotArtifice,c.Pn.PerkEchoesOfGlory,c.Pn.PerkIronBanner,c.Pn.SlotNightmare],this.ngUnsubscribe=new R.xQ}runPossibilityCheck(){var e=this;return(0,x.Z)(function*(){if(e.configAssumeLegendaryIsArtifice||e.slot==v.y.ArmorSlotClass&&e.configAssumeClassItemIsArtifice)e.isPossible=!0;else{let a=0;e.armorPerkLock&&e.armorPerk!=c.Pn.None?e.fixedExoticInThisSlot?e.armorPerk==c.Pn.SlotArtifice&&e.configAssumeExoticIsArtifice?a+=1:e.configSelectedExotic.forEach(function(){var s=(0,x.Z)(function*(r){var m=yield e.db.inventoryArmor.where("clazz").equals(e.configSelectedClass).and(p=>p.perk==e.armorPerk).and(p=>p.hash==r).and(p=>1==p.isExotic).count();a+=m,e.isPossible=a>0,e.possible.next(e.isPossible)});return function(r){return s.apply(this,arguments)}}()):(a+=(yield e.db.inventoryArmor.where("clazz").equals(e.configSelectedClass).and(s=>0==e.configSelectedExoticSum||0==s.isExotic).and(s=>s.slot==e.slot).and(s=>s.perk==e.armorPerk).count()),e.isPossible=a>0):e.isPossible=!0}e.possible.next(e.isPossible)})()}get slotName(){switch(this.slot){case v.y.ArmorSlotHelmet:return"Helmet";case v.y.ArmorSlotGauntlet:return"Gauntlet";case v.y.ArmorSlotChest:return"Chest";case v.y.ArmorSlotLegs:return"Leg";case v.y.ArmorSlotClass:return"Class Item";default:return""}}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){const s=a.selectedExotics.reduce((m,p)=>m+p,0);var r=e.configSelectedClass!=a.characterClass||e.configAssumeLegendaryIsArtifice!=a.assumeEveryLegendaryIsArtifice||e.configAssumeExoticIsArtifice!=a.assumeEveryExoticIsArtifice||e.configAssumeClassItemIsArtifice!=a.assumeClassItemIsArtifice||e.selection!=a.maximumModSlots[e.slot].value||e.armorPerk!=a.armorPerks[e.slot].value||e.armorPerkLock!=a.armorPerks[e.slot].fixed||e.configSelectedExoticSum!=s||e.maximumModSlots!=a.maximumModSlots[e.slot].value;e.configAssumeLegendaryIsArtifice=a.assumeEveryLegendaryIsArtifice,e.configAssumeExoticIsArtifice=a.assumeEveryExoticIsArtifice,e.configAssumeClassItemIsArtifice=a.assumeClassItemIsArtifice,e.configSelectedClass=a.characterClass,e.selection=a.maximumModSlots[e.slot].value,e.armorPerk=a.armorPerks[e.slot].value,e.armorPerkLock=a.armorPerks[e.slot].fixed,e.maximumModSlots=a.maximumModSlots[e.slot].value,e.configSelectedExoticSum=s,e.configSelectedExotic=a.selectedExotics,e.fixedExoticInThisSlot=(yield e.inventory.getExoticsForClass(a.characterClass)).filter(m=>a.selectedExotics.indexOf(m.item.hash)>-1).map(m=>m.item.slot).indexOf(e.slot)>-1,r&&(yield e.runPossibilityCheck())});return function(a){return o.apply(this,arguments)}}())}ngAfterViewInit(){g.N.featureFlags.enableGuardianGamesFeatures&&this.slot===v.y.ArmorSlotClass&&this.availableArmorPerks.splice(1,0,c.Pn.GuardianGamesClassItem)}toggleArmorPerkLock(){this.config.modifyConfiguration(e=>{e.armorPerks[this.slot].fixed=!e.armorPerks[this.slot].fixed})}setArmorPerk(e){this.armorPerk!=e&&this.config.modifyConfiguration(o=>{o.armorPerks[this.slot].value=e})}setValue(e){this.featureDisabled||this.maximumModSlots!=e&&(this.maximumModSlots=e,this.config.modifyConfiguration(o=>o.maximumModSlots[this.slot].value=e))}getStatIconUrl(e){var o=this;return(0,x.Z)(function*(){return(yield o.iconService.getItemCached(e))?.icon})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(At),t.Y36(ge),t.Y36(I))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-slot-limitation-selection"]],inputs:{slot:"slot"},outputs:{possible:"possible"},decls:35,vars:58,consts:[[1,"container"],[1,"energy"],[1,"energy-container",3,"mouseout"],[1,"energy-bar","blocked",3,"click","mouseover"],[1,"energy-bar",3,"click","mouseover"],[4,"ngVar"],["appearance","standard","name","fontStyle",2,"display","none"],[3,"value","class","click",4,"ngFor","ngForOf"],[1,"selector-slots"],["value","bold",3,"matMenuTriggerFor"],[3,"perk"],["disabled","",3,"disabled","matTooltip","click"],[4,"ngIf"],[1,"modslot-select-scroll-menu"],["dropdownArmorModslot","matMenu"],[4,"ngFor","ngForOf"],[1,"slot-icon-container"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M40.1 30.03c.39-.47.59-1.11.42-1.8-.18-.76-.81-1.39-1.58-1.55-.81-.17-1.54.14-2.01.68 0 0-.03.04-.05.07l-.12.15c-.47.61-1.95 2.37-3.29 2.45-1.62.1 2.51-16.14 2.51-16.14h-.01c.04-.15.07-.31.07-.48 0-.98-.79-1.77-1.77-1.77-.81 0-1.49.55-1.69 1.29h-.01s-.01.03-.01.05l-.03.15c-.24 1.21-1.68 8.2-2.81 8.89-1.24.75-1.22-13.23-1.22-13.23 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 0-.35 12.85-1.73 12.73-1.37-.12-2.47-10.67-2.47-10.67 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 .15.02.28.06.42.27 2.06 1.36 11.12-.06 11.12-1.6 0-3.68-6.35-3.68-6.35a1.62 1.62 0 0 0-3.14.56c0 .09.01.17.03.25l-.03.01s.02.07.07.19c.02.09.05.17.09.25.99 2.71 6.28 17.46 7.26 26.23.03.25.24.44.49.44H30.5a.5.5 0 0 0 .5-.45c.1-1.04.52-3.68 2.09-5.54 1.8-2.14 6.06-6.89 6.86-7.79.02-.02.03-.04.05-.06.07-.06.11-.1.1-.1z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M42.49 13.55c-1.06-1.51-4.05-5.05-9.52-6.49a.635.635 0 0 0-.78.5c-.35 2.04-1.78 8.08-6.69 8.08s-6.34-6.04-6.69-8.08a.635.635 0 0 0-.78-.5c-5.47 1.44-8.46 4.98-9.52 6.49-.24.34-.09.8.3.94 2.01.7 7.34 2.94 7.34 7.01 0 4.24-4.47 6.89-5.87 7.61-.25.13-.38.4-.33.67 1.44 7.62 7.55 13.09 8.67 14.04.11.1.25.15.4.15h12.94c.15 0 .29-.05.4-.15 1.12-.95 7.23-6.42 8.67-14.04a.624.624 0 0 0-.33-.67c-1.4-.72-5.87-3.37-5.87-7.61 0-4.08 5.33-6.32 7.34-7.01.41-.14.56-.61.32-.94z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M13 7.6h13.96c1.73 0 2.99 1.64 2.54 3.32l-5.44 20.46c-.07.28.03.57.28.72.99.62 4.64 2.57 8.15 5.78.12.11 2.92-.03 3.09-.01 2.31.2 3.97-.08 5.05 4.7.09.42-.21.82-.64.82H11.82c-.34 0-.63-.26-.66-.61-.15-1.82-.4-7.23 1.74-9.32a.62.62 0 0 0 .2-.6c-.39-1.74-2.09-9.83-2.74-22.48-.07-1.5 1.12-2.78 2.64-2.78z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M43.12 7.12c-4.13 2.33-17.62 1.9-17.62 1.9s-13.49.43-17.62-1.9c-.37-.21-.85-.03-.94.39-.36 1.49-.87 4.42.09 5.86.09.13.22.21.38.25 1.23.3 7.36 1.65 18.09 1.65s16.86-1.35 18.09-1.65c.15-.04.29-.12.38-.25.96-1.44.45-4.37.1-5.86-.1-.42-.58-.6-.95-.39zM9.27 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.73c-1.93-.22-3.45-.45-4.55-.65v13.26zM16.3 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.24c-1.66-.06-3.18-.16-4.55-.27V34.8zM37.18 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.08c-1.09.2-2.61.44-4.55.65v12.61zM30.15 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.97c-1.36.11-2.88.21-4.55.27V34.8zM23.23 16.31v25.31s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.31c-.74.01-1.49.02-2.27.02-.78.01-1.54 0-2.27-.02z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],[1,"mod-info"],[1,"mod-icon","mod-major",3,"src"],[1,"mod-icon","mod-minor",3,"src"],["viewBox","0 0 100 100",1,"mod-number","mod-major"],["font-size","25px","text-anchor","end","x","87","y","30"],["viewBox","0 0 100 100",1,"mod-number","mod-minor"],[1,"overlay"],[3,"value","click"],["mat-menu-item","",3,"click"],[1,"menuArmorIcon",3,"perk"],[1,"menuArmorText"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["tooltip","matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M40.1 30.03c.39-.47.59-1.11.42-1.8-.18-.76-.81-1.39-1.58-1.55-.81-.17-1.54.14-2.01.68 0 0-.03.04-.05.07l-.12.15c-.47.61-1.95 2.37-3.29 2.45-1.62.1 2.51-16.14 2.51-16.14h-.01c.04-.15.07-.31.07-.48 0-.98-.79-1.77-1.77-1.77-.81 0-1.49.55-1.69 1.29h-.01s-.01.03-.01.05l-.03.15c-.24 1.21-1.68 8.2-2.81 8.89-1.24.75-1.22-13.23-1.22-13.23 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 0-.35 12.85-1.73 12.73-1.37-.12-2.47-10.67-2.47-10.67 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 .15.02.28.06.42.27 2.06 1.36 11.12-.06 11.12-1.6 0-3.68-6.35-3.68-6.35a1.62 1.62 0 0 0-3.14.56c0 .09.01.17.03.25l-.03.01s.02.07.07.19c.02.09.05.17.09.25.99 2.71 6.28 17.46 7.26 26.23.03.25.24.44.49.44H30.5a.5.5 0 0 0 .5-.45c.1-1.04.52-3.68 2.09-5.54 1.8-2.14 6.06-6.89 6.86-7.79.02-.02.03-.04.05-.06.07-.06.11-.1.1-.1z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M42.49 13.55c-1.06-1.51-4.05-5.05-9.52-6.49a.635.635 0 0 0-.78.5c-.35 2.04-1.78 8.08-6.69 8.08s-6.34-6.04-6.69-8.08a.635.635 0 0 0-.78-.5c-5.47 1.44-8.46 4.98-9.52 6.49-.24.34-.09.8.3.94 2.01.7 7.34 2.94 7.34 7.01 0 4.24-4.47 6.89-5.87 7.61-.25.13-.38.4-.33.67 1.44 7.62 7.55 13.09 8.67 14.04.11.1.25.15.4.15h12.94c.15 0 .29-.05.4-.15 1.12-.95 7.23-6.42 8.67-14.04a.624.624 0 0 0-.33-.67c-1.4-.72-5.87-3.37-5.87-7.61 0-4.08 5.33-6.32 7.34-7.01.41-.14.56-.61.32-.94z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M13 7.6h13.96c1.73 0 2.99 1.64 2.54 3.32l-5.44 20.46c-.07.28.03.57.28.72.99.62 4.64 2.57 8.15 5.78.12.11 2.92-.03 3.09-.01 2.31.2 3.97-.08 5.05 4.7.09.42-.21.82-.64.82H11.82c-.34 0-.63-.26-.66-.61-.15-1.82-.4-7.23 1.74-9.32a.62.62 0 0 0 .2-.6c-.39-1.74-2.09-9.83-2.74-22.48-.07-1.5 1.12-2.78 2.64-2.78z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M43.12 7.12c-4.13 2.33-17.62 1.9-17.62 1.9s-13.49.43-17.62-1.9c-.37-.21-.85-.03-.94.39-.36 1.49-.87 4.42.09 5.86.09.13.22.21.38.25 1.23.3 7.36 1.65 18.09 1.65s16.86-1.35 18.09-1.65c.15-.04.29-.12.38-.25.96-1.44.45-4.37.1-5.86-.1-.42-.58-.6-.95-.39zM9.27 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.73c-1.93-.22-3.45-.45-4.55-.65v13.26zM16.3 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.24c-1.66-.06-3.18-.16-4.55-.27V34.8zM37.18 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.08c-1.09.2-2.61.44-4.55.65v12.61zM30.15 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.97c-1.36.11-2.88.21-4.55.27V34.8zM23.23 16.31v25.31s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.31c-.74.01-1.49.02-2.27.02-.78.01-1.54 0-2.27-.02z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"]],template:function(e,o){if(1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"div",2),t.NdJ("mouseout",function(){return o.hoveredSlot=-1}),t.TgZ(3,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(4,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(5,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(6,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(7,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(8,"div",4),t.NdJ("click",function(){return o.setValue(4)})("mouseover",function(){return o.hoveredSlot=1}),t.qZA(),t.TgZ(9,"div",4),t.NdJ("click",function(){return o.setValue(3)})("mouseover",function(){return o.hoveredSlot=2}),t.qZA(),t.TgZ(10,"div",4),t.NdJ("click",function(){return o.setValue(2)})("mouseover",function(){return o.hoveredSlot=3}),t.qZA(),t.TgZ(11,"div",4),t.NdJ("click",function(){return o.setValue(1)})("mouseover",function(){return o.hoveredSlot=4}),t.qZA(),t.TgZ(12,"div",4),t.NdJ("click",function(){return o.setValue(0)})("mouseover",function(){return o.hoveredSlot=5}),t.qZA()(),t._UZ(13,"br"),t.YNc(14,$s,61,36,"div",5),t.qZA(),t.TgZ(15,"mat-button-toggle-group",6),t.YNc(16,Xs,2,5,"mat-button-toggle",7),t.qZA(),t.TgZ(17,"div",8)(18,"mat-button-toggle-group")(19,"mat-button-toggle",9),t._UZ(20,"app-armor-perk-icon",10),t.TgZ(21,"mat-icon"),t._uU(22,"arrow_drop_down"),t.qZA()(),t.TgZ(23,"mat-button-toggle",11),t.NdJ("click",function(s){return o.toggleArmorPerkLock(),s.stopPropagation()}),t.YNc(24,tr,2,0,"mat-icon",12),t.YNc(25,er,2,0,"mat-icon",12),t.qZA()(),t.TgZ(26,"mat-menu",13,14),t.YNc(28,nr,5,4,"ng-container",15),t.qZA()(),t.TgZ(29,"span",16),t.YNc(30,or,2,1,"img",17),t.YNc(31,ir,2,1,"img",18),t.YNc(32,ar,2,1,"img",19),t.YNc(33,sr,2,1,"img",20),t.YNc(34,rr,2,1,"img",21),t.qZA()()),2&e){const a=t.MAs(27);t.ekj("disabled",o.disabled),t.xp6(8),t.ekj("active",5-o.maximumModSlots>=1)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<1)("hovered",o.hoveredSlot>=1)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=2)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<2)("hovered",o.hoveredSlot>=2)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=3)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<3)("hovered",o.hoveredSlot>=3)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=4)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<4)("hovered",o.hoveredSlot>=4)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots==5)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<5)("hovered",5===o.hoveredSlot)("blocked",o.featureDisabled),t.xp6(2),t.Q6J("ngVar",o.hoveredSlot>-1?5-o.hoveredSlot:o.maximumModSlots),t.xp6(2),t.Q6J("ngForOf",o.ModRange),t.xp6(2),t.ekj("impossible",!o.isPossible),t.xp6(1),t.Q6J("matMenuTriggerFor",a),t.xp6(1),t.Q6J("perk",o.armorPerk),t.xp6(3),t.MGl("matTooltip","Force the selected perk or slot to be on a ",o.slotName,"."),t.Q6J("disabled",o.disabled),t.xp6(1),t.Q6J("ngIf",!o.armorPerkLock),t.xp6(1),t.Q6J("ngIf",o.armorPerkLock),t.xp6(3),t.Q6J("ngForOf",o.availableArmorPerks),t.xp6(2),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotHelmet),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotGauntlet),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotChest),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotLegs),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotClass)}},dependencies:[Z.sg,Z.O5,pt.gM,St.Hw,$t.VK,$t.OP,$t.p6,Rt.A9,Rt.Yi,Kt,fe],styles:[".slot-icon-container[_ngcontent-%COMP%]{float:right;position:relative}.slot-icon-container[_ngcontent-%COMP%] .slot-icon[_ngcontent-%COMP%]{height:30px;position:absolute;left:-30px;filter:invert(1) drop-shadow(1px 1px 3px rgba(0,0,0,.25))!important}.container[_ngcontent-%COMP%]{height:60px}.select-button[_ngcontent-%COMP%]{min-width:40px}.selector-element[_ngcontent-%COMP%]{position:relative;float:right;width:90px;height:70px;top:-21px}.selector-element[_ngcontent-%COMP%] .lock[_ngcontent-%COMP%]{position:absolute;bottom:2px;left:60px}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%]{float:left;width:70px;padding-left:5px}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]{border:rgba(0,0,0,0) solid 2px;height:26px;width:26px;margin-right:1px;margin-bottom:1px;margin-top:1px;cursor:pointer;filter:grayscale(.4)}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]:hover{filter:grayscale(.2)}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon.selected[_ngcontent-%COMP%]{filter:grayscale(0)}[_nghost-%COMP%] .selector-slots .mat-button-toggle{background-color:inherit}.modslot-selection[_ngcontent-%COMP%]{width:180px}.selector-slots[_ngcontent-%COMP%]{position:relative;float:right;top:-10px}.selector-slots[_ngcontent-%COMP%] .lock[_ngcontent-%COMP%]{position:absolute;bottom:2px;left:140px}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%]{float:left;height:70px;width:175px;padding-left:5px}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]{height:30px;width:30px;border:rgba(0,0,0,0) solid 2px;margin-right:1px;margin-top:-2px;cursor:pointer}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;border:rgba(0,0,0,0) solid 2px!important}.impossible[_ngcontent-%COMP%]{background-color:#ff00004d;cursor:help}.left_line[_ngcontent-%COMP%]{pointer-events:none;height:15px;width:100%;border-left:1px solid white;border-bottom:1px solid white;position:absolute;bottom:0px;left:0}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:20px;position:absolute;left:7px;bottom:11px;pointer-events:none}.element-icon[_ngcontent-%COMP%]:hover{border:cornflowerblue solid 2px!important}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%]:hover{background-color:#89b2ff3d;border:#0059ff solid 2px!important}.energy-container[_ngcontent-%COMP%] .energy-bar[_ngcontent-%COMP%]{float:left;margin-right:3px;width:20px;height:10px;border:white solid 2px;cursor:pointer}.energy-container[_ngcontent-%COMP%] .energy-bar.none[_ngcontent-%COMP%]{border:indianred solid 2px}.energy-container[_ngcontent-%COMP%] .energy-bar[_ngcontent-%COMP%]:hover, .energy-container[_ngcontent-%COMP%] .hovered[_ngcontent-%COMP%]{background-color:#6e6e6e}.energy-container[_ngcontent-%COMP%] .hovered-higher[_ngcontent-%COMP%]{background-color:#0000!important}.energy-container[_ngcontent-%COMP%] .energy-bar.active[_ngcontent-%COMP%]{background-color:#fff}.energy-container[_ngcontent-%COMP%] .energy-bar.blocked[_ngcontent-%COMP%]{border:#606060 solid 2px;background-color:#6e6e6e}.mod-info[_ngcontent-%COMP%]{position:relative;float:left;height:40px;width:40px;margin-right:5px}.mod-info[_ngcontent-%COMP%] .mod-number[_ngcontent-%COMP%]{position:absolute;top:1px;bottom:1px;right:1px;left:1px;pointer-events:none;fill:#e0e0e0}.mod-info[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{display:none}.mod-info[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%]{position:absolute;top:0px;width:100%;height:100%;background:linear-gradient(to top left,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),rgb(0,0,0) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%),linear-gradient(to top right,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),rgb(0,0,0) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%)}.mod-info[_ngcontent-%COMP%] .mod-icon[_ngcontent-%COMP%]{width:40px;height:40px}.mod-info[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{border:rgba(0,0,0,0) solid 3px;width:34px;height:34px}.mod-info.major[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%], .mod-info.minor[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%]{display:none}.mod-info.minor[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{display:block}.mod-info.minor[_ngcontent-%COMP%] .mod-major[_ngcontent-%COMP%]{display:none}.menuArmorIcon[_ngcontent-%COMP%]{position:absolute;top:8px}.menuArmorText[_ngcontent-%COMP%]{padding-left:35px}.selected-menu[_ngcontent-%COMP%]{background-color:#89b2ff3d}.selected-menu[_ngcontent-%COMP%]:hover{background-color:#89b2ff4d} .modslot-select-scroll-menu{overflow-y:auto;max-height:250px!important}"]}),n})(),cr=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-slot-limitation-title"]],decls:5,vars:0,consts:[[1,"energy"],[1,"selector-slots"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0),t._uU(2," Energy "),t.qZA(),t.TgZ(3,"span",1),t._uU(4," Modslots "),t.qZA()())},styles:[".energy[_ngcontent-%COMP%]{border-bottom:#a1a1a1 1px solid;margin-bottom:6px}.selector-element[_ngcontent-%COMP%]{position:relative;float:right;width:90px;top:-26px}.selector-slots[_ngcontent-%COMP%]{position:relative;float:right;width:155px;top:-26px;text-align:center}"]}),n})();function mr(n,i){1&n&&(t.TgZ(0,"mat-toolbar",13),t._uU(1," Some of your chosen limitations contain no armor pieces and will yield no results.\n"),t.qZA())}function dr(n,i){1&n&&(t.TgZ(0,"mat-toolbar",13),t._uU(1," The mod cost limitation is currently disabled. Modslot filtering still works.\n"),t.qZA())}let ur=(()=>{class n{constructor(e){this.config=e,this.ArmorSlot=v.y,this.ArmorPerkOrSlot=c.Pn,this.possibilityList=[!0,!0,!0,!0,!0],this.allPossible=!0,this.disabledSlotLimitation=!g.N.featureFlags.enableModslotLimitation}updatePossibility(e,o){this.possibilityList[e]=o,this.allPossible=5==this.possibilityList.filter(a=>!!a).length}clear(){this.config.modifyConfiguration(e=>{for(let o=0;o<5;o++)e.armorPerks[o+1]={fixed:!0,value:0},e.maximumModSlots[o+1]={fixed:!0,value:5}})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-mod-selection"]],decls:129,vars:16,consts:[["color","warn","class","mat-elevation-z4 impossible-container",4,"ngIf"],[1,"container"],[3,"slot","possible"],["id","clear-container"],["color","warn","mat-stroked-button","",3,"click"],[1,"minispace"],[1,"mat-elevation-z6"],["aria-hidden","false","inline",""],["id","explanation-description"],[1,"text-highlight"],[1,"example-usecase"],[1,"modslot-legend"],[3,"perk"],["color","warn",1,"mat-elevation-z4","impossible-container"]],template:function(e,o){1&e&&(t.YNc(0,mr,2,0,"mat-toolbar",0),t.TgZ(1,"div",1),t._UZ(2,"app-slot-limitation-title"),t.TgZ(3,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(0,s)}),t.qZA(),t._UZ(4,"br"),t.TgZ(5,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(1,s)}),t.qZA(),t._UZ(6,"br"),t.TgZ(7,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(2,s)}),t.qZA(),t._UZ(8,"br"),t.TgZ(9,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(3,s)}),t.qZA(),t._UZ(10,"br"),t.TgZ(11,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(4,s)}),t.qZA()(),t.TgZ(12,"div",3)(13,"button",4),t.NdJ("click",function(){return o.clear()}),t._uU(14,"Clear the whole selection"),t.qZA()(),t._UZ(15,"div",5),t.YNc(16,dr,2,0,"mat-toolbar",0),t._UZ(17,"div",5),t.TgZ(18,"mat-accordion")(19,"mat-expansion-panel",6)(20,"mat-expansion-panel-header")(21,"mat-panel-title")(22,"mat-icon",7),t._uU(23,"info"),t.qZA(),t._uU(24," Explanation "),t.qZA(),t.TgZ(25,"mat-panel-description"),t._uU(26," Detailed instructions for this section. "),t.qZA()(),t.TgZ(27,"div",8),t._uU(28," This section allows you to further finetune the results to your requirements."),t._UZ(29,"br")(30,"div",5),t.TgZ(31,"u"),t._uU(32,"Limitation of available stat mod types"),t.qZA(),t._UZ(33,"br"),t._uU(34," First off, you are able to "),t.TgZ(35,"span",9),t._uU(36,"select the kind and amount of stat mods"),t.qZA(),t._uU(37," you want. By filling the bars you "),t.TgZ(38,"span",9),t._uU(39,"specify how many modslots are already occupied"),t.qZA(),t._uU(40," and thus the tool knows how much space it is able to use for your builds. Hover over the bars, it will show you which mods are available after you changed your selection. "),t._UZ(41,"div",5),t.TgZ(42,"div",10),t._uU(43,' Example Use Case: "On one item I can only use up to four recovery mods, no major intellect mod. One item can not hold any mods". In this scenario you would set one slot to 10 used slots, and the rest to 6. '),t.qZA(),t._UZ(44,"br"),t.TgZ(45,"u"),t._uU(46,"Filter for Elemental Affinity and Armor Perk/Slot"),t.qZA(),t._UZ(47,"br"),t._uU(48," This allows you to super-finetune your elemental and armor-perk requirements. You can change the settings for "),t.TgZ(49,"span",9),t._uU(50,"each armor slot"),t.qZA(),t._uU(51,". There are two modes per armor slot: "),t.TgZ(52,"span",9),t._uU(53,"Locked"),t.qZA(),t._uU(54," and "),t.TgZ(55,"span",9),t._uU(56,"Unlocked"),t.qZA(),t._uU(57,". Per default each entry is in the "),t.TgZ(58,"span",9),t._uU(59,"Locked"),t.qZA(),t._uU(60," mode. "),t._UZ(61,"div",5),t.TgZ(62,"span",9),t._uU(63,"Locked"),t.qZA(),t._uU(64," means that "),t.TgZ(65,"span",9),t._uU(66,"this armor slot must have"),t.qZA(),t._uU(67," the selected element or perk. "),t._UZ(68,"div",5),t.TgZ(69,"span",9),t._uU(70,"Unlocked"),t.qZA(),t._uU(71," means that the perk must exist, but "),t.TgZ(72,"span",9),t._uU(73,"the exact armor slot is irrelevant"),t.qZA(),t._uU(74,". That means that the tool can decide where it puts the desired element or perk. "),t._UZ(75,"div",5),t.TgZ(76,"div",10),t._uU(77,' Example Use Case: "The Class Item and Gauntlet '),t.TgZ(78,"span",9),t._uU(79,"must be stasis"),t.qZA(),t._uU(80,'. Oh, and I need two solar and one arc modslots, but the position does not matter". In this scenario, Class Item and Gauntlet would be '),t.TgZ(81,"span",9),t._uU(82,"Locked"),t.qZA(),t._uU(83," and the rest would be "),t.TgZ(84,"span",9),t._uU(85,"Unlocked"),t.qZA(),t._uU(86,". "),t.qZA(),t._UZ(87,"br"),t._uU(88," Legend: "),t.TgZ(89,"table",11)(90,"tr")(91,"td"),t._UZ(92,"app-armor-perk-icon",12),t.qZA(),t.TgZ(93,"td"),t._uU(94,"Vault of Glass"),t.qZA(),t.TgZ(95,"td"),t._UZ(96,"app-armor-perk-icon",12),t.qZA(),t.TgZ(97,"td"),t._uU(98,"Deep Stone Crypt"),t.qZA(),t.TgZ(99,"td"),t._UZ(100,"app-armor-perk-icon",12),t.qZA(),t.TgZ(101,"td"),t._uU(102,"Garden of Salvation"),t.qZA()(),t.TgZ(103,"tr")(104,"td"),t._UZ(105,"app-armor-perk-icon",12),t.qZA(),t.TgZ(106,"td"),t._uU(107,"Last Wish"),t.qZA(),t.TgZ(108,"td"),t._UZ(109,"app-armor-perk-icon",12),t.qZA(),t.TgZ(110,"td"),t._uU(111,"Vow of the Disciple"),t.qZA(),t.TgZ(112,"td"),t._UZ(113,"app-armor-perk-icon",12),t.qZA(),t.TgZ(114,"td"),t._uU(115,"Nightmare Modslot"),t.qZA()(),t.TgZ(116,"tr")(117,"td"),t._UZ(118,"app-armor-perk-icon",12),t.qZA(),t.TgZ(119,"td"),t._uU(120,"Artifice Modslot"),t.qZA(),t.TgZ(121,"td"),t._UZ(122,"app-armor-perk-icon",12),t.qZA(),t.TgZ(123,"td"),t._uU(124,"Iron Banner Perk"),t.qZA(),t.TgZ(125,"td"),t._UZ(126,"app-armor-perk-icon",12),t.qZA(),t.TgZ(127,"td"),t._uU(128,"Echoes of Glory Perk"),t.qZA()()()()()()),2&e&&(t.Q6J("ngIf",!o.allPossible),t.xp6(3),t.Q6J("slot",o.ArmorSlot.ArmorSlotHelmet),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotGauntlet),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotChest),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotLegs),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotClass),t.xp6(5),t.Q6J("ngIf",o.disabledSlotLimitation),t.xp6(76),t.Q6J("perk",o.ArmorPerkOrSlot.SlotVaultOfGlass),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotDeepStoneCrypt),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotGardenOfSalvation),t.xp6(5),t.Q6J("perk",o.ArmorPerkOrSlot.SlotLastWish),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotVowOfTheDisciple),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotNightmare),t.xp6(5),t.Q6J("perk",o.ArmorPerkOrSlot.SlotArtifice),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.PerkIronBanner),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.PerkEchoesOfGlory))},dependencies:[Z.O5,rt.lW,St.Hw,It.Ye,mt.pp,mt.ib,mt.yz,mt.yK,mt.u4,lr,fe,cr],styles:[".container[_ngcontent-%COMP%]{margin-bottom:10px}.impossible-container[_ngcontent-%COMP%]{text-align:center;margin-right:auto;margin-left:auto;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;font-size:15px;line-height:20px;margin-bottom:10px}.element-icon[_ngcontent-%COMP%]{height:30px;width:30px}.element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;pointer-events:none}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:20px;position:absolute;left:5px;bottom:9px;pointer-events:none}.modslot-legend[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0 0;width:100%}.modslot-legend[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#explanation-description[_ngcontent-%COMP%]{width:520px}.minispace[_ngcontent-%COMP%]{height:7px}.text-highlight[_ngcontent-%COMP%]{color:#cddcef}.example-usecase[_ngcontent-%COMP%]{font-size:small;line-height:normal}"]}),n})();function pr(n,i){if(1&n&&t._UZ(0,"img",6),2&n){const e=t.oxw();t.s9C("alt",e.exoticPerk.name),t.MGl("src","https://bungie.net/",e.exoticPerk.icon,"",t.LSH)}}function gr(n,i){1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Loading exotic perk.."),t.qZA()())}function _r(n,i){1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"No (fixed) exotic perk available."),t.qZA()())}function fr(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td")(2,"span"),t._uU(3),t.qZA()()()),2&n){const e=t.oxw();t.xp6(3),t.Oqu(e.exoticPerk.name)}}function hr(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td",7),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.hij(" ",e.exoticPerk.description," ")}}function xr(n,i){1&n&&(t.ynx(0),t._uU(1," and "),t.BQk())}function yr(n,i){if(1&n&&(t.ynx(0),t._uU(1," in your collection "),t.YNc(2,xr,2,0,"ng-container",4),t.BQk()),2&n){const e=t.oxw(2);t.xp6(2),t.Q6J("ngIf",e.vendor)}}function Cr(n,i){1&n&&(t.ynx(0),t._uU(1,"available at a vendor"),t.BQk())}function Tr(n,i){if(1&n&&(t.TgZ(0,"tr",8)(1,"td",7),t._uU(2," This exotic is not in your inventory but it is "),t.YNc(3,yr,3,1,"ng-container",4),t.YNc(4,Cr,2,0,"ng-container",4),t._uU(5,". You can still generate a loadout with this exotic, but you will have to grab it by yourself. "),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngIf",e.collection),t.xp6(1),t.Q6J("ngIf",e.vendor)}}let vr=(()=>{class n{constructor(e,o){this.inv=e,this.iconService=o,this.vendor=!1,this.collection=!1,this.exoticPerkNotThere=!1}ngOnInit(){var e=this;return(0,x.Z)(function*(){e.exoticPerk=yield e.iconService.getItemCached(e.armor?.exoticPerkHash??0),e.exoticPerkNotThere=null==e.exoticPerk})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(At),t.Y36(ge))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-exotic-perk-tooltip"]],inputs:{armor:"armor",vendor:"vendor",collection:"collection"},decls:13,vars:7,consts:[[1,"tooltip-container"],["rowspan","2",1,"perk-icon-col"],["class","perk-icon",3,"alt","src",4,"ngIf"],[1,"exotic-name"],[4,"ngIf"],["class","collection-roll-info",4,"ngIf"],[1,"perk-icon",3,"alt","src"],["colspan","2"],[1,"collection-roll-info"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t.YNc(5,pr,1,2,"img",2),t.qZA(),t.TgZ(6,"td",3),t._uU(7),t.qZA()(),t.YNc(8,gr,3,0,"tr",4),t.YNc(9,_r,3,0,"tr",4),t.YNc(10,fr,4,1,"tr",4),t.YNc(11,hr,3,1,"tr",4),t.YNc(12,Tr,6,2,"tr",5),t.qZA()()()),2&e&&(t.xp6(5),t.Q6J("ngIf",o.exoticPerk),t.xp6(2),t.Oqu(null==o.armor?null:o.armor.name),t.xp6(1),t.Q6J("ngIf",!o.exoticPerk&&!o.exoticPerkNotThere),t.xp6(1),t.Q6J("ngIf",!o.exoticPerk&&o.exoticPerkNotThere),t.xp6(1),t.Q6J("ngIf",o.exoticPerk),t.xp6(1),t.Q6J("ngIf",o.exoticPerk),t.xp6(1),t.Q6J("ngIf",o.collection||o.vendor))},dependencies:[Z.O5],styles:["[_nghost-%COMP%]{width:350px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.perk-icon[_ngcontent-%COMP%]{width:50px;height:50px}.perk-icon-col[_ngcontent-%COMP%]{width:55px}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}.collection-roll-info[_ngcontent-%COMP%]{color:#5cc3ec;font-size:12px;margin-top:5px}"]}),n})(),br=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0,this.exoticTooltipInVendor=!1,this.exoticTooltipInCollection=!1}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){if(this._overlayRef&&!this._overlayRef.hasAttached()){const e=this._overlayRef.attach(new le.C5(vr));e.instance.collection=this.exoticTooltipInCollection,e.instance.vendor=this.exoticTooltipInVendor,e.instance.armor=this.exoticTooltip}}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Lt.aV),t.Y36(Lt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","exoticTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",exoticTooltip:"exoticTooltip",exoticTooltipInVendor:"exoticTooltipInVendor",exoticTooltipInCollection:"exoticTooltipInCollection",contentTemplate:"contentTemplate"}}),n})();function Ar(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"img",7,8),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.selectExotic(-2,a))}),t.qZA()}if(2&n){const e=t.oxw(2);t.Gre("exoticIcon ",e.selectedExotics.indexOf(-2)>-1?"selected":"","")}}function wr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"img",9,8),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.selectExotic(-1,a))}),t.qZA()}if(2&n){const e=t.oxw(2);t.Gre("exoticIcon ",e.selectedExotics.indexOf(-1)>-1?"selected":"","")}}function Ir(n,i){if(1&n&&t._UZ(0,"img",14),2&n){const e=t.oxw().$implicit;t.MGl("src","https://www.bungie.net/",e.item.watermarkIcon,"",t.LSH)}}function Zr(n,i){if(1&n&&t._UZ(0,"div",15),2&n){const e=t.oxw().$implicit,o=t.oxw(2);t.ekj("vendor-item",o.includeVendorRolls&&e.inVendor)("collection-item",o.includeCollectionRolls&&e.inCollection)}}function Sr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",10)(1,"img",11),t.NdJ("click",function(a){const r=t.CHM(e).$implicit,m=t.oxw(2);return t.KtG((r.inInventory||m.includeCollectionRolls&&r.inCollection)&&m.selectExotic(r.item.hash,a))}),t.qZA(),t.YNc(2,Ir,1,1,"img",12),t.YNc(3,Zr,1,4,"div",13),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Gre("exoticIcon ",o.selectedExotics.indexOf(e.item.hash)>-1?"selected":"",""),t.ekj("vendor-item",!e.inInventory&&o.includeVendorRolls&&e.inVendor)("collection-item",!e.inInventory&&o.includeCollectionRolls&&e.inCollection)("disabled",!(e.inInventory||o.includeCollectionRolls&&e.inCollection||o.includeVendorRolls&&e.inVendor)),t.MGl("src","https://www.bungie.net/",e.item.icon,"",t.LSH),t.Q6J("exoticTooltip",e.item)("exoticTooltipInVendor",!e.inInventory&&o.includeVendorRolls&&e.inVendor)("exoticTooltipInCollection",!e.inInventory&&o.includeCollectionRolls&&e.inCollection),t.xp6(1),t.Q6J("ngIf",e.item.watermarkIcon),t.xp6(1),t.Q6J("ngIf",!e.inInventory)}}function Mr(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Ar,2,3,"img",4),t.YNc(2,wr,2,3,"img",5),t.YNc(3,Sr,4,15,"span",6),t.qZA()),2&n){const e=i.$implicit,o=i.index;t.Q6J("@listAnimation",e.length),t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngForOf",e)}}function Or(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",16),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.refreshAll())}),t._uU(1," Manually refresh manifest and inventory "),t.qZA()}}const kr=(0,xt.X$)("listAnimation",[(0,xt.eR)("* <=> *",[(0,xt.IO)(":enter",[(0,xt.oB)({opacity:0}),(0,xt.EY)("30ms",(0,xt.jt)("350ms ease-out",(0,xt.oB)({opacity:1})))],{optional:!0})])]);let Er=(()=>{class n{constructor(e,o){this.inventory=e,this.config=o,this.selectedExotics=[],this.includeCollectionRolls=!1,this.includeVendorRolls=!1,this.ignoreSunsetArmor=!1,this.ignoreExistingExoticArtificeSlots=!1,this.allowBlueArmorPieces=!1,this.currentClass=0,this.exotics=[],this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){(a.characterClass!=e.currentClass||0==e.exotics.length)&&(e.currentClass=a.characterClass,yield e.updateExoticsForClass()),e.includeCollectionRolls=a.includeCollectionRolls,e.includeVendorRolls=a.includeVendorRolls,e.selectedExotics=a.selectedExotics,e.ignoreSunsetArmor=a.ignoreSunsetArmor,e.allowBlueArmorPieces=a.allowBlueArmorPieces,e.ignoreExistingExoticArtificeSlots=a.ignoreExistingExoticArtificeSlots});return function(a){return o.apply(this,arguments)}}()),this.inventory.manifest.pipe((0,L.b)(10),(0,yt.R)(this.ngUnsubscribe)).subscribe((0,x.Z)(function*(){yield e.updateExoticsForClass()})),this.inventory.inventory.pipe((0,L.b)(10),(0,yt.R)(this.ngUnsubscribe)).subscribe((0,x.Z)(function*(){yield e.updateExoticsForClass()}))}updateExoticsForClass(){var e=this;return(0,x.Z)(function*(){const o=yield e.inventory.getExoticsForClass(e.currentClass);function a(s){var r={};return s.filter(function(m){var p=m.item.hash;return!r.hasOwnProperty(p)&&(r[p]=!0)})}e.exotics=[a(o.filter(s=>s.item.slot==v.y.ArmorSlotHelmet)),a(o.filter(s=>s.item.slot==v.y.ArmorSlotGauntlet)),a(o.filter(s=>s.item.slot==v.y.ArmorSlotChest)),a(o.filter(s=>s.item.slot==v.y.ArmorSlotLegs)),a(o.filter(s=>s.item.slot==v.y.ArmorSlotClass))]})()}setAllowCollectionRolls(e){this.config.modifyConfiguration(o=>{o.includeCollectionRolls=e})}setAllowVendorItems(e){this.config.modifyConfiguration(o=>{o.includeVendorRolls=e})}setAllowBlueArmorPieces(e){this.config.modifyConfiguration(o=>{o.allowBlueArmorPieces=e})}setIgnoreSunsetArmor(e){this.config.modifyConfiguration(o=>{o.ignoreSunsetArmor=e})}setIgnoreExistingExoticArtificeSlots(e){this.config.modifyConfiguration(o=>{o.ignoreExistingExoticArtificeSlots=e})}selectExotic(e,o){const a=this.selectedExotics.indexOf(e);a>-1?this.selectedExotics.splice(a,1):e==P.Io?this.selectedExotics=[P.Io]:(0==this.selectedExotics.length||!o.shiftKey)&&(this.selectedExotics=[e]),this.config.modifyConfiguration(s=>{s.selectedExotics=this.selectedExotics})}refreshAll(){var e=this;return(0,x.Z)(function*(){yield e.inventory.refreshAll(!0,!0)})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(At),t.Y36(z))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-exotic-selection"]],decls:24,vars:7,consts:[[4,"ngFor","ngForOf"],["mat-raised-button","","color","warn",3,"click",4,"ngIf"],["color","primary",3,"checked","change"],["color","warn",3,"checked","change"],["src","https://www.bungie.net/common/destiny2_content/icons/763634b78eb22168ac707500588b7333.jpg","matTooltip","Force to use ANY exotic (that is NOT a class item)",3,"class","click",4,"ngIf"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png","matTooltip","Force to use NO exotic at all",3,"class","click",4,"ngIf"],["class","container",4,"ngFor","ngForOf"],["src","https://www.bungie.net/common/destiny2_content/icons/763634b78eb22168ac707500588b7333.jpg","matTooltip","Force to use ANY exotic (that is NOT a class item)",3,"click"],["tooltip","matTooltip"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png","matTooltip","Force to use NO exotic at all",3,"click"],[1,"container"],[3,"src","exoticTooltip","exoticTooltipInVendor","exoticTooltipInCollection","click"],["class","watermarkIcon",3,"src",4,"ngIf"],["class","item-source-overlay",3,"vendor-item","collection-item",4,"ngIf"],[1,"watermarkIcon",3,"src"],[1,"item-source-overlay"],["mat-raised-button","","color","warn",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Mr,4,4,"div",0),t.TgZ(1,"div"),t.YNc(2,Or,2,0,"button",1),t.qZA(),t.TgZ(3,"div")(4,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowCollectionRolls(s.checked)}),t._uU(5," Include "),t.TgZ(6,"u"),t._uU(7,"exotic"),t.qZA(),t._uU(8," collection rolls "),t.qZA()(),t.TgZ(9,"div")(10,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowVendorItems(s.checked)}),t._uU(11," Include "),t.TgZ(12,"u"),t._uU(13,"legendary and exotic"),t.qZA(),t._uU(14," vendor armor (slower) "),t.qZA()(),t.TgZ(15,"div")(16,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowBlueArmorPieces(s.checked)}),t._uU(17," Include white, blue and green items "),t.qZA()(),t.TgZ(18,"div")(19,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setIgnoreSunsetArmor(!s.checked)}),t._uU(20," Include sunset armor "),t.qZA()(),t.TgZ(21,"div")(22,"mat-slide-toggle",3),t.NdJ("change",function(s){return o.setIgnoreExistingExoticArtificeSlots(s.checked)}),t._uU(23," Ignore existing artifice slots on exotics (useful for the exotic class item) "),t.qZA()()),2&e&&(t.Q6J("ngForOf",o.exotics),t.xp6(2),t.Q6J("ngIf",0===o.exotics.length||0===o.exotics[0].length),t.xp6(2),t.Q6J("checked",o.includeCollectionRolls),t.xp6(6),t.Q6J("checked",o.includeVendorRolls),t.xp6(6),t.Q6J("checked",o.allowBlueArmorPieces),t.xp6(3),t.Q6J("checked",!o.ignoreSunsetArmor),t.xp6(3),t.Q6J("checked",o.ignoreExistingExoticArtificeSlots))},dependencies:[Z.sg,Z.O5,rt.lW,ne.Rr,pt.gM,br],styles:[".container[_ngcontent-%COMP%]{display:inline-block;position:relative;--icon-size: 36px}.exoticIcon[_ngcontent-%COMP%]{width:36px;height:36px;margin-right:3px;border:rgba(0,0,0,0) solid 2px;cursor:pointer}.watermarkIcon[_ngcontent-%COMP%]{width:36px;height:36px;margin-left:-41px;margin-top:2px;position:absolute;pointer-events:none}.exoticIcon[_ngcontent-%COMP%]:hover{border:cornflowerblue solid 2px}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%]:hover{border:#0059ff solid 2px}[_nghost-%COMP%]{position:relative}.exoticText[_ngcontent-%COMP%]{position:absolute;text-shadow:0 0 6px #000000;background:rgba(33,33,33,.51);color:#f5f5f5;bottom:4px;right:5px}.disabled[_ngcontent-%COMP%]{filter:grayscale(1) contrast(.6)}.disabled[_ngcontent-%COMP%]:hover{cursor:default}.item-source-overlay[_ngcontent-%COMP%]{margin:2px}.item-source-overlay[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:0;pointer-events:none;border-top:calc(var(--icon-size) / 2) solid transparent;border-right:calc(var(--icon-size) / 2) solid transparent}.item-source-overlay.vendor-item[_ngcontent-%COMP%]{border-top-color:#00f}.item-source-overlay.collection-item[_ngcontent-%COMP%]{border-top-color:#90ee90}"],data:{animation:[kr]}}),n})(),Ur=(()=>{class n{constructor(e,o,a){var s=this;this.auth=e,this.membership=o,this.inventory=a,this.characters=[],this.loadCachedData(),this.auth.logoutEvent.subscribe(r=>this.clearCachedData()),this.inventory.inventory.subscribe((0,x.Z)(function*(){yield s.updateCharacterData()}))}clearCachedData(){this.characters=[],localStorage.removeItem("cachedCharacters")}loadCachedData(){let e=localStorage.getItem("cachedCharacters")||"[]";this.characters=JSON.parse(e)}updateCharacterData(){var e=this;return(0,x.Z)(function*(){e.characters=yield e.membership.getCharacters(),localStorage.setItem("cachedCharacters",JSON.stringify(e.characters))})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(Dt),t.LFG(At))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function Dr(n,i){1&n&&(t.TgZ(0,"div",11),t._uU(1," Loading characters.. "),t.qZA())}function Pr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Rr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Nr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function qr(n,i){if(1&n&&(t.TgZ(0,"div"),t._UZ(1,"img",14),t.TgZ(2,"span",15),t._uU(3),t.qZA()()),2&n){const e=t.oxw().$implicit,o=t.oxw();t.xp6(3),t.hij("\xd7",o.itemCounts[e.clazz],"")}}function Fr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",12),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.selectClass(s.clazz))}),t.TgZ(1,"div",13),t.YNc(2,Pr,2,0,"span",3),t.YNc(3,Rr,2,0,"span",3),t.YNc(4,Nr,2,0,"span",3),t.qZA(),t.YNc(5,qr,4,1,"div",3),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.Udp("background-image","url(https://bungie.net/"+e.emblemUrl+")"),t.ekj("selected",a.selectedClass===e.clazz),t.xp6(2),t.Q6J("ngIf",0===e.clazz),t.xp6(1),t.Q6J("ngIf",1===e.clazz),t.xp6(1),t.Q6J("ngIf",2===e.clazz),t.xp6(1),t.Q6J("ngIf",!!a.itemCounts[o])}}function Jr(n,i){if(1&n&&(t.TgZ(0,"div")(1,"span",16),t._UZ(2,"img",17),t._uU(3),t.ALo(4,"number"),t.qZA(),t.TgZ(5,"span",16),t._UZ(6,"img",18),t._uU(7),t.ALo(8,"number"),t.qZA(),t.TgZ(9,"span",16),t._UZ(10,"img",19),t._uU(11),t.ALo(12,"number"),t.qZA(),t.TgZ(13,"span",16),t._UZ(14,"img",20),t._uU(15),t.ALo(16,"number"),t.qZA(),t.TgZ(17,"span",16),t._UZ(18,"img",21),t._uU(19),t.ALo(20,"number"),t.qZA()()),2&n){const e=t.oxw();t.xp6(1),t.MGl("matTooltip","Exotic Cipher: ",e.storedMaterials[3467984096],""),t.xp6(2),t.hij(" ",t.xi3(4,10,e.storedMaterials[3467984096],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Ascendant Shards: ",e.storedMaterials[4257549985],""),t.xp6(2),t.hij(" ",t.xi3(8,13,e.storedMaterials[4257549985],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Enhancement Prisms: ",e.storedMaterials[4257549984],""),t.xp6(2),t.hij(" ",t.xi3(12,16,e.storedMaterials[4257549984],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Enhancement Cores: ",e.storedMaterials[3853748946],""),t.xp6(2),t.hij(" ",t.xi3(16,19,e.storedMaterials[3853748946],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Glimmer: ",e.storedMaterials[3159615086],""),t.xp6(2),t.hij(" ",t.xi3(20,22,e.storedMaterials[3159615086],"1.0-0")," ")}}let Lr=(()=>{class n{constructor(e,o,a){this.config=e,this.userdata=o,this.inv=a,this.itemCounts=[null,null,null],this.selectedClass=-1,this.storedMaterials=null,this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(o=>{this.selectedClass=o.characterClass;const a=-1!=this.userdata.characters.findIndex(s=>s.clazz==o.characterClass);this.userdata.characters.length>0&&!a&&this.config.modifyConfiguration(s=>{s.characterClass=this.userdata.characters[0].clazz,s.selectedExotics=[]})}),this.inv.inventory.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){yield e.loadStoredMaterials(),yield e.updateItemCount()});return function(a){return o.apply(this,arguments)}}())}selectClass(e){this.config.readonlyConfigurationSnapshot.characterClass!=e&&this.config.modifyConfiguration(o=>{o.characterClass=e,o.selectedExotics=[]})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}updateItemCount(){var e=this;return(0,x.Z)(function*(){for(let o=0;o<3;o++)e.itemCounts[o]=yield e.inv.getItemCountForClass(o)})()}loadStoredMaterials(){var e=this;return(0,x.Z)(function*(){var o=JSON.parse(localStorage.getItem("stored-materials")||"{}");"3853748946"in o||(o[3853748946]=0),"4257549984"in o||(o[4257549984]=0),"4257549985"in o||(o[4257549985]=0),"3159615086"in o||(o[3159615086]=0),"3467984096"in o||(o[3467984096]=0),e.storedMaterials=o})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(Ur),t.Y36(At))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-class-selection"]],decls:22,vars:3,consts:[[1,"character-container"],["class","character-entry",4,"ngIf"],["class","character-entry","style","float: left",3,"selected","background-image","click",4,"ngFor","ngForOf"],[4,"ngIf"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-flat-button","","routerLink","/help",2,"margin-left","15px"],["inline",""],["color","accent","href","https://ko-fi.com/mijago","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["color","accent","href","http://discord.d2armorpicker.com","target","_blank"],[1,"crayon_logo_container"],["alt","","src","https://cdn.discordapp.com/emojis/917423317139480586.webp?size=96&quality=lossless",1,"crayon_logo"],["href","https://mijago.github.io/Crayon","target","_blank"],[1,"character-entry"],[1,"character-entry",2,"float","left",3,"click"],[1,"class-text"],["matTooltip","Amount of armor pieces for this class.","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",1,"head-icon"],["matTooltip","Amount of armor pieces for this class.",1,"armor-text"],[1,"material-listing",3,"matTooltip"],["src","https://www.bungie.net/common/destiny2_content/icons/9970631fe1052642c268132dfc30e16b.jpg","alt","Exotic Cipher"],["src","https://www.bungie.net/common/destiny2_content/icons/0271d214fc3ec91b3def799a4b286b46.jpg","alt","Ascendant Shard"],["src","https://www.bungie.net/common/destiny2_content/icons/dea2a35badf7466d4c2c2697ce6e8d87.jpg","alt","Enhancement Prism"],["src","https://www.bungie.net/common/destiny2_content/icons/0a4eb695ed55b4e720ddc401460cc0f9.jpg","alt","Enhancement Core"],["src","https://www.bungie.net/common/destiny2_content/icons/88993eaeedad32f42072df6f77f47311.png","alt","Glimmer"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Dr,2,0,"div",1),t.YNc(2,Fr,6,8,"div",2),t.qZA(),t.YNc(3,Jr,21,25,"div",3),t.TgZ(4,"a",4)(5,"mat-icon",5),t._uU(6,"help"),t.qZA(),t._uU(7," Help and Information about D2ArmorPicker\n"),t.qZA(),t.TgZ(8,"div"),t._uU(9," If you like my work, you can "),t.TgZ(10,"a",6),t._uU(11," support me here."),t.qZA(),t._uU(12," You can also "),t.TgZ(13,"a",7),t._uU(14," join my dev Discord! "),t.qZA(),t.TgZ(15,"div"),t._uU(16," Also check out my Discord-Bot "),t.TgZ(17,"div",8),t._UZ(18,"img",9),t.qZA(),t.TgZ(19,"a",10),t._uU(20,"Crayon"),t.qZA(),t._uU(21,", for all your item information needs! "),t.qZA()()),2&e&&(t.xp6(1),t.Q6J("ngIf",0===o.userdata.characters.length),t.xp6(1),t.Q6J("ngForOf",o.userdata.characters),t.xp6(1),t.Q6J("ngIf",null!==o.storedMaterials))},dependencies:[Z.sg,Z.O5,M.b8,rt.zs,pt.gM,St.Hw,ot.yS,Z.JJ],styles:[".discord-btn[_ngcontent-%COMP%]{margin-left:15px}.material-listing[_ngcontent-%COMP%]{position:relative;padding-left:22px;padding-right:10px}.material-listing[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:20px;position:absolute;top:-2px;left:0}.crayon_logo_container[_ngcontent-%COMP%]{position:relative;width:22px;display:inline-block;margin-right:3px}.crayon_logo_container[_ngcontent-%COMP%] .crayon_logo[_ngcontent-%COMP%]{position:absolute;width:22px;top:-14px} .mat-option-text{color:#fff}.character-container[_ngcontent-%COMP%]{height:50px}.character-entry[_ngcontent-%COMP%]{color:#fff;background-size:cover;background-position:left center;background-repeat:no-repeat;width:180px;height:36px;position:relative;margin-right:7px;margin-bottom:7px;border:rgba(255,255,255,0) solid 2px;opacity:.75;cursor:pointer}.character-entry[_ngcontent-%COMP%]:hover{border:rgba(255,255,255,.41) solid 2px;opacity:.98}.character-entry.selected[_ngcontent-%COMP%]{cursor:default;opacity:1;border:white solid 2px}.class-text[_ngcontent-%COMP%]{position:absolute;left:35px;top:8px;font-size:x-large;text-shadow:0 0 6px #000000}.head-icon[_ngcontent-%COMP%]{height:25px;top:6px;right:30px;position:absolute;filter:invert(1) drop-shadow(1px 1px 3px rgba(0,0,0,.25))!important}.armor-text[_ngcontent-%COMP%]{position:absolute;right:4px;top:9px;text-shadow:0 0 6px #000000;font-size:small}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})();var Yr=_(7580);let Br=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-mod-description-tooltip"]],inputs:{mod:"mod"},decls:9,vars:2,consts:[[1,"tooltip-container"],[1,"exotic-name"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"td"),t._uU(8),t.qZA()()()()()),2&e&&(t.xp6(5),t.Oqu(null==o.mod?null:o.mod.name),t.xp6(3),t.Oqu(null==o.mod?null:o.mod.description))},styles:["[_nghost-%COMP%]{width:350px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}"]}),n})(),Vr=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a}ngOnInit(){const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){this._overlayRef&&!this._overlayRef.hasAttached()&&(this._overlayRef.attach(new le.C5(Br)).instance.mod=this.mod)}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Lt.aV),t.Y36(Lt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","modTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{mod:["modTooltip","mod"]}}),n})();function Qr(n,i){if(1&n){const e=t.EpF();t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"mat-button-toggle-group",4)(3,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Arc))}),t._uU(4," Arc "),t.qZA(),t.TgZ(5,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Solar))}),t._uU(6," Solar "),t.qZA(),t.TgZ(7,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Void))}),t._uU(8," Void "),t.qZA(),t.TgZ(9,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Stasis))}),t._uU(10," Stasis "),t.qZA(),t.TgZ(11,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Strand))}),t._uU(12," Strand "),t.qZA(),t.TgZ(13,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Prismatic))}),t._uU(14," Prismatic "),t.qZA()(),t.BQk()}if(2&n){const e=t.oxw(2);t.xp6(2),t.Q6J("value",e.selectedElement),t.xp6(1),t.Q6J("value",e.ModifierType.Arc),t.xp6(2),t.Q6J("value",e.ModifierType.Solar),t.xp6(2),t.Q6J("value",e.ModifierType.Void),t.xp6(2),t.Q6J("value",e.ModifierType.Stasis),t.xp6(2),t.Q6J("value",e.ModifierType.Strand),t.xp6(2),t.Q6J("value",e.ModifierType.Prismatic)}}function Hr(n,i){if(1&n&&(t.TgZ(0,"h3",8),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).$implicit;t.xp6(1),t.Oqu(e.name)}}function Wr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"There are no fragments configured yet. Please be patient."),t.qZA())}function jr(n,i){1&n&&(t.TgZ(0,"th",22),t._uU(1,"Name"),t.qZA())}function Gr(n,i){if(1&n&&(t.TgZ(0,"td",23)(1,"mat-slide-toggle",24),t._UZ(2,"app-item-icon",25),t._uU(3),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw(4);t.Q6J("modTooltip",e),t.xp6(1),t.Q6J("checked",o.selectedMods.indexOf(e.id)>-1),t.xp6(1),t.Q6J("itemHash",e.hash),t.xp6(1),t.hij(" ",e.name," ")}}function zr(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",0))}function Kr(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function $r(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function Xr(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Kr,2,1,"span",29),t.YNc(2,$r,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function tl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,Xr,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,0))}}function el(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",1))}function nl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function ol(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function il(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,nl,2,1,"span",29),t.YNc(2,ol,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function al(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,il,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,1))}}function sl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",2))}function rl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function ll(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function cl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,rl,2,1,"span",29),t.YNc(2,ll,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function ml(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,cl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,2))}}function dl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",3))}function ul(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function pl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function gl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ul,2,1,"span",29),t.YNc(2,pl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function _l(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,gl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,3))}}function fl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",4))}function hl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function xl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function yl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,hl,2,1,"span",29),t.YNc(2,xl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function Cl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,yl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,4))}}function Tl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",5))}function vl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function bl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function Al(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,vl,2,1,"span",29),t.YNc(2,bl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function wl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,Al,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,5))}}function Il(n,i){1&n&&t._UZ(0,"tr",33)}function Zl(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr",34),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(4);return t.KtG(r.handleRowClick(s))}),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(4);t.ekj("selected",o.selectedMods.indexOf(e.id)>-1)}}function Sl(n,i){if(1&n&&(t.TgZ(0,"table",9),t.ynx(1,10),t.YNc(2,jr,2,0,"th",11),t.YNc(3,Gr,4,4,"td",12),t.BQk(),t.ynx(4,13),t.YNc(5,zr,2,1,"th",11),t.YNc(6,tl,2,1,"td",14),t.BQk(),t.ynx(7,15),t.YNc(8,el,2,1,"th",11),t.YNc(9,al,2,1,"td",14),t.BQk(),t.ynx(10,16),t.YNc(11,sl,2,1,"th",11),t.YNc(12,ml,2,1,"td",14),t.BQk(),t.ynx(13,17),t.YNc(14,dl,2,1,"th",11),t.YNc(15,_l,2,1,"td",14),t.BQk(),t.ynx(16,18),t.YNc(17,fl,2,1,"th",11),t.YNc(18,Cl,2,1,"td",14),t.BQk(),t.ynx(19,19),t.YNc(20,Tl,2,1,"th",11),t.YNc(21,wl,2,1,"td",14),t.BQk(),t.YNc(22,Il,1,0,"tr",20),t.YNc(23,Zl,1,2,"tr",21),t.qZA()),2&n){const e=t.oxw(2).$implicit,o=t.oxw();t.Q6J("dataSource",e.data),t.xp6(22),t.Q6J("matHeaderRowDef",o.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns)}}function Ml(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Hr,2,1,"h3",6),t.YNc(2,Wr,2,0,"span",3),t.YNc(3,Sl,24,3,"table",7),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngIf",!e.group),t.xp6(1),t.Q6J("ngIf",0===e.data.length),t.xp6(1),t.Q6J("ngIf",e.data.length>0)}}function Ol(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Qr,15,7,"ng-container",3),t.YNc(2,Ml,4,3,"ng-container",3),t.qZA()),2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngIf",!e.group||e.type===a.selectedElement)}}let kl=(()=>{class n{constructor(e){this.config=e,this.ModifierType=U.O,this.ModOrAbility=Yr.U,this.displayedColumns=["name","mobility","resilience","recovery","discipline","intellect","strength"],this.selectedClass=3,this.selectedMods=[],this.selectedElement=U.O.Solar,this.ngUnsubscribe=new R.xQ;const o=Object.values(N.F).sort((a,s)=>a.name.toLowerCase()s.name.toLowerCase()?1:0);this.data=[{name:"Stasis Fragments",data:o.filter(a=>a.type==U.O.Stasis),group:!0,type:U.O.Stasis},{name:"Void Fragments",data:o.filter(a=>a.type==U.O.Void),group:!0,type:U.O.Void},{name:"Solar Fragments",data:o.filter(a=>a.type==U.O.Solar),group:!0,type:U.O.Solar},{name:"Arc Fragments",data:o.filter(a=>a.type==U.O.Arc),group:!0,type:U.O.Arc},{name:"Strand Fragments",data:o.filter(a=>a.type==U.O.Strand),group:!0,type:U.O.Strand},{name:"Prismatic Fragments",data:o.filter(a=>a.type==U.O.Prismatic),group:!0,type:U.O.Prismatic}],this.dataSource=o}ngOnInit(){this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{this.selectedMods=e.enabledMods,this.selectedClass=e.characterClass,this.selectedElement=e.selectedModElement})}getModifierTextForValue(e,o){return e.filter(a=>a.stat==o||a.stat==c.AR.ClassAbilityRegenerationStat&&(0==this.selectedClass&&o==c.WB.Resilience||1==this.selectedClass&&o==c.WB.Mobility||2==this.selectedClass&&o==c.WB.Recovery)).reduce((a,s)=>a+s.value,0)}handleRowClick(e){this.config.modifyConfiguration(o=>{const a=o.enabledMods.indexOf(e.id);a>-1?o.enabledMods.splice(a,1):o.enabledMods.push(e.id)})}clear(){this.config.modifyConfiguration(e=>{e.enabledMods=[]})}setElement(e){this.selectedElement!=e&&this.config.modifyConfiguration(o=>{const a=o.enabledMods.filter(s=>N.F[s].type!=U.O.CombatStyleMod&&N.F[s].type!=e);o.selectedModElement=e;for(let s of a){const r=o.enabledMods.indexOf(s);o.enabledMods.splice(r,1)}})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-mods-selection"]],features:[t._Bn([{provide:ne.HT,useValue:{disableToggleValue:!1,disableDragValue:!0}}])],decls:4,vars:1,consts:[[4,"ngFor","ngForOf"],["id","clear-container"],["color","warn","mat-stroked-button","",3,"click"],[4,"ngIf"],[3,"value"],[3,"value","click"],["class","stat-part-title",4,"ngIf"],["mat-table","",3,"dataSource",4,"ngIf"],[1,"stat-part-title"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",3,"modTooltip",4,"matCellDef"],["matColumnDef","mobility"],["mat-cell","",4,"matCellDef"],["matColumnDef","resilience"],["matColumnDef","recovery"],["matColumnDef","discipline"],["matColumnDef","intellect"],["matColumnDef","strength"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"selected","click",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell","",3,"modTooltip"],["color","primary","disabled","",2,"cursor","pointer !important",3,"checked"],[3,"itemHash"],[3,"stat"],["mat-cell",""],[4,"ngVar"],["class","stat-positive",4,"ngIf"],["class","stat-negative",4,"ngIf"],[1,"stat-positive"],[1,"stat-negative"],["mat-header-row",""],["mat-row","",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Ol,3,2,"span",0),t.TgZ(1,"div",1)(2,"button",2),t.NdJ("click",function(){return o.clear()}),t._uU(3,"Clear the whole selection"),t.qZA()()),2&e&&t.Q6J("ngForOf",o.data)},dependencies:[Z.sg,Z.O5,rt.lW,ne.Rr,W.BZ,W.fO,W.as,W.w1,W.Dz,W.nj,W.ge,W.ev,W.XQ,W.Gk,Rt.A9,Rt.Yi,he,Kt,_e,Vr],styles:[".mat-slide-toggle.mat-disabled[_ngcontent-%COMP%]{opacity:1}.stat-part-title[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:5px}.modTable[_ngcontent-%COMP%]{width:100%}.mat-header-row[_ngcontent-%COMP%], .mat-row[_ngcontent-%COMP%]{height:30px}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-resilience[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-discipline[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%], .mat-column-strength[_ngcontent-%COMP%], .mat-column-cost[_ngcontent-%COMP%]{min-width:40px;text-align:center}.mat-row[_ngcontent-%COMP%]:hover{background-color:#494949}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%]{background-color:#464646}.mat-column-name[_ngcontent-%COMP%]{padding-right:4px;border-right:1px solid currentColor;min-width:150px}.mat-column-name[_ngcontent-%COMP%] app-item-icon[_ngcontent-%COMP%]{float:left;margin-right:5px}.mat-row[_ngcontent-%COMP%]{cursor:pointer}th.mat-header-cell[_ngcontent-%COMP%]:last-of-type, td.mat-cell[_ngcontent-%COMP%]:last-of-type, td.mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.mat-cell[_ngcontent-%COMP%]:last-of-type, .mat-header-cell[_ngcontent-%COMP%]:last-of-type, .mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.stat-negative[_ngcontent-%COMP%], .stat-positive[_ngcontent-%COMP%]{margin-right:3px}.stat-negative[_ngcontent-%COMP%]{color:#f08080}.stat-positive[_ngcontent-%COMP%]{color:#b6cbfc}.stat-display[_ngcontent-%COMP%]{width:60px;float:left;align-content:end;text-align:right}.mat-row[_ngcontent-%COMP%]:hover, .mat-row[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#494949}.mat-row.selected[_ngcontent-%COMP%]:hover, .mat-row.selected[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#89b2ff30}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-mobility[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-recovery[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-intellect[_ngcontent-%COMP%]{background-color:#89b2ff1c}.mat-column-name[_ngcontent-%COMP%]{min-width:190px}.element-icon[_ngcontent-%COMP%]{width:22px}#clear-container[_ngcontent-%COMP%]{padding-top:10px}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%]{width:22px;display:inline-block}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{position:relative}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%] app-stat-icon[_ngcontent-%COMP%]{position:absolute;top:-22px;left:-10px}"]}),n})();function El(n,i){if(1&n&&(t.TgZ(0,"mat-icon",8,9),t._uU(2," help "),t.qZA()),2&n){const e=t.oxw().$implicit;t.s9C("matTooltip",e.help)}}function Ul(n,i){1&n&&(t.TgZ(0,"mat-icon",10,9),t._uU(2," report_problem "),t.qZA())}function Dl(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",4)(1,"mat-slide-toggle",5),t.NdJ("change",function(a){const r=t.CHM(e).$implicit;return t.KtG(r.cp(a.checked))}),t._uU(2),t.qZA(),t.YNc(3,El,3,1,"mat-icon",6),t.YNc(4,Ul,3,0,"mat-icon",7),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("disabled",e.disabled)("checked",e.value),t.xp6(1),t.hij(" ",e.name," "),t.xp6(1),t.Q6J("ngIf",e.help),t.xp6(1),t.Q6J("ngIf",e.impactsResultCount)}}function Pl(n,i){if(1&n&&(t.TgZ(0,"div")(1,"span",1),t._uU(2),t.qZA(),t.YNc(3,Dl,5,5,"div",2),t._UZ(4,"div",3),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.Oqu(e),t.xp6(1),t.Q6J("ngForOf",o.fields2[e])}}let Rl=(()=>{class n{constructor(e){this.config=e,this.fields2={},this.fieldKeys=[],this.ngUnsubscribe=new R.xQ}ngOnInit(){this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>{this.fields2={Events:[{name:"Enforce the usage of a Festival of the Lost Mask.",cp:o=>this.config.modifyConfiguration(a=>a.useFotlArmor=o),value:e.useFotlArmor,disabled:!1,impactsResultCount:!0,help:"Only use a FotL masks. You will not get results if you do not own the mask."}],Masterwork:[{name:"Assume all legendary items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeLegendariesMasterworked=o),value:e.assumeLegendariesMasterworked,disabled:!1,impactsResultCount:!1,help:void 0},{name:"Assume all legendary class items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeClassItemMasterworked=o),value:e.assumeClassItemMasterworked,disabled:!1,impactsResultCount:!1,help:"If this setting is enabled, a plain +2 is added to every stat. This means that your Class Item must be masterworked. Ignored if you select an exotic class item."},{name:"Assume all exotic items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeExoticsMasterworked=o),value:e.assumeExoticsMasterworked,disabled:!1,impactsResultCount:!1,help:"If this setting is enabled, the tool will treat non-masterworked exotic armor as if it were masterworked-."},{name:"Only use already masterworked exotic items",cp:o=>this.config.modifyConfiguration(a=>a.onlyUseMasterworkedExotics=o),value:e.onlyUseMasterworkedExotics,disabled:!1,impactsResultCount:!0,help:void 0},{name:"Only use already masterworked legendary items",cp:o=>this.config.modifyConfiguration(a=>a.onlyUseMasterworkedLegendaries=o),value:e.onlyUseMasterworkedLegendaries,disabled:!1,impactsResultCount:!0,help:void 0}],"Artifice Slots":[{name:"Assume every legendary class item is an artifice armor.",cp:o=>this.config.modifyConfiguration(a=>a.assumeClassItemIsArtifice=o),value:e.assumeClassItemIsArtifice||e.assumeEveryLegendaryIsArtifice,disabled:e.assumeEveryLegendaryIsArtifice,impactsResultCount:!0,help:"This is for debugging purposes. No support if you enable this."},{name:"Assume every legendary is an artifice armor.",cp:o=>this.config.modifyConfiguration(a=>a.assumeEveryLegendaryIsArtifice=o),value:e.assumeEveryLegendaryIsArtifice,disabled:!1,impactsResultCount:!0,help:"This is for debugging purposes. No support if you enable this."},{name:"Assume every exotic has an artifice slot.",cp:o=>this.config.modifyConfiguration(a=>a.assumeEveryExoticIsArtifice=o),value:e.assumeEveryExoticIsArtifice,disabled:!1,impactsResultCount:!0,help:"Preparation for the upcoming Artifice Mod Slot for exotics."}],"Performance Optimization":[{name:"Use security features to prevent app crashes (resets on reload).",cp:o=>this.config.modifyConfiguration(a=>a.limitParsedResults=o),value:e.limitParsedResults,disabled:!1,impactsResultCount:!0,help:"Only parse the first 30,000 results. Deactivating this may crash your browser. The results will still be limited to 1,000,000 entries. Note that you will not miss any significant results by leaving this enabled."}],"Extra Columns":[{name:"Show maximum reachable tiers in the Tiers-Column instead of real Tiers.",cp:o=>this.config.modifyConfiguration(a=>a.showPotentialTierColumn=o),value:e.showPotentialTierColumn,disabled:!1,impactsResultCount:!1,help:"Shows an additional column in the table that shows how many tiers this build would have, if all stat mods were used. This is important when builds do not use all 5 stat mods."},{name:"Show the wasted stats in an extra column.",cp:o=>this.config.modifyConfiguration(a=>a.showWastedStatsColumn=o),value:e.showWastedStatsColumn,disabled:!1,impactsResultCount:!1,help:"Shows an additional column in the table that shows how many stats are wasted in a build."}],"Wasted Stats":[{name:"Try to optimize wasted stats (slower)",cp:o=>this.config.modifyConfiguration(a=>a.tryLimitWastedStats=o),value:e.tryLimitWastedStats,disabled:!1,impactsResultCount:!1,help:"The tool will try to add minor stat mods to minimize wasted stats. This only works for combinations that fulfill your desired stat combination with enough mods so at least one mod slot is still open."},{name:"Only show builds with no wasted stats",cp:o=>this.config.modifyConfiguration(a=>a.onlyShowResultsWithNoWastedStats=o),value:g.N.featureFlags.enableZeroWaste&&e.onlyShowResultsWithNoWastedStats,disabled:!g.N.featureFlags.enableZeroWaste,impactsResultCount:!0,help:"Only show builds with zero wasted stats - this means, its highly likely that you won't get any results."}],"Data-Science":[{name:"Add a constant +1 resilience to the results with non-exotic chests (resets on reload).",cp:o=>this.config.modifyConfiguration(a=>a.addConstent1Resilience=o),value:e.addConstent1Resilience,disabled:!1,impactsResultCount:!1,help:"You usually do not want to use this."},{name:"Replace the tier selection with text fields for exact stat values.",cp:o=>this.config.modifyConfiguration(a=>{if(a.allowExactStats=o,!o)for(let s of Object.values(a.minimumStatTiers))s.value=Math.floor(s.value)}),value:e.allowExactStats,disabled:!1,impactsResultCount:!0,help:"This is a beta feature. Usability and quality may vary a lot."}]},this.fieldKeys=Object.keys(this.fields2)})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-advanced-settings"]],decls:1,vars:1,consts:[[4,"ngFor","ngForOf"],[1,"category-header"],["class","adv-settings",4,"ngFor","ngForOf"],[1,"category-spacer"],[1,"adv-settings"],["color","primary",3,"disabled","checked","change"],["inline","","aria-hidden","false","aria-label","Help",3,"matTooltip",4,"ngIf"],["inline","","aria-hidden","false","aria-label","Help","class","report-problem-icon","matTooltip","This setting might impact the amount of results. It may happen that you won't get any results if you change this setting. In this case, simply switch it back to its default state.",4,"ngIf"],["inline","","aria-hidden","false","aria-label","Help",3,"matTooltip"],["tooltip","matTooltip"],["inline","","aria-hidden","false","aria-label","Help","matTooltip","This setting might impact the amount of results. It may happen that you won't get any results if you change this setting. In this case, simply switch it back to its default state.",1,"report-problem-icon"]],template:function(e,o){1&e&&t.YNc(0,Pl,5,2,"div",0),2&e&&t.Q6J("ngForOf",o.fieldKeys)},dependencies:[Z.sg,Z.O5,ne.Rr,pt.gM,St.Hw],styles:[".category-spacer[_ngcontent-%COMP%]{height:3px}.category-header[_ngcontent-%COMP%]{font-style:italic}.adv-settings[_ngcontent-%COMP%]{margin-left:20px}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}"]}),n})(),ce=(()=>{class n{constructor(e,o){this.dialogRef=e,this.data=o}onNoClick(){this.dialogRef.close()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Et.so),t.Y36(Et.WI))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-confirm-dialog"]],decls:10,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions",""],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"mat-dialog-close"]],template:function(e,o){1&e&&(t.TgZ(0,"h1",0),t._uU(1,"Confirm"),t.qZA(),t.TgZ(2,"div",1)(3,"p"),t._uU(4),t.qZA()(),t.TgZ(5,"div",2)(6,"button",3),t.NdJ("click",function(){return o.onNoClick()}),t._uU(7,"No Thanks"),t.qZA(),t.TgZ(8,"button",4),t._uU(9,"Ok"),t.qZA()()),2&e&&(t.xp6(4),t.Oqu(o.data.description),t.xp6(4),t.Q6J("mat-dialog-close",!0))},dependencies:[rt.lW,Et.ZT,Et.uh,Et.xY,Et.H8]}),n})();var Nl=_(4385);function ql(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Fl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Jl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function Ll(n,i){if(1&n&&(t.TgZ(0,"mat-option",30)(1,"span"),t._uU(2,"("),t.YNc(3,ql,2,0,"span",26),t.YNc(4,Fl,2,0,"span",26),t.YNc(5,Jl,2,0,"span",26),t._uU(6,") "),t.qZA(),t.TgZ(7,"span"),t._uU(8),t.qZA()()),2&n){const e=i.$implicit;t.Q6J("value",e.name),t.xp6(3),t.Q6J("ngIf",0===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",1===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",2===e.configuration.characterClass),t.xp6(3),t.hij(" ",e.name,"")}}function Yl(n,i){1&n&&(t.TgZ(0,"th",31),t._uU(1,"Name"),t.qZA())}function Bl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij("",e.name," ")}}function Vl(n,i){1&n&&(t.TgZ(0,"th",31),t._uU(1," Class "),t.qZA())}function Ql(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Hl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Wl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function jl(n,i){if(1&n&&(t.TgZ(0,"td",32),t.YNc(1,Ql,2,0,"span",26),t.YNc(2,Hl,2,0,"span",26),t.YNc(3,Wl,2,0,"span",26),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",0===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",1===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",2===e.configuration.characterClass)}}function Gl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",0))}function zl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[0].value," ")}}function Kl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",1))}function $l(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[1].value," ")}}function Xl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",2))}function tc(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[2].value," ")}}function ec(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",3))}function nc(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[3].value," ")}}function oc(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",4))}function ic(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[4].value," ")}}function ac(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",5))}function sc(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[5].value," ")}}function rc(n,i){1&n&&t._UZ(0,"th",31)}function lc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"td",32)(1,"button",34),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.delete(s.name))}),t.TgZ(2,"mat-icon"),t._uU(3,"delete_forever"),t.qZA()(),t.TgZ(4,"button",35),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.load(s.name))}),t.TgZ(5,"mat-icon"),t._uU(6,"check_circle_outline"),t.qZA()(),t.TgZ(7,"button",36),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.copySingleSettingToClipboard(s))}),t.TgZ(8,"mat-icon"),t._uU(9,"get_app"),t.qZA()()()}}function cc(n,i){1&n&&t._UZ(0,"tr",37)}function mc(n,i){1&n&&t._UZ(0,"tr",38)}function dc(n,i){if(1&n){const e=t.EpF();t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"button",39),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.copyAllSettingsToClipboard())}),t._uU(3," Copy all saved configurations to the clipboard "),t.qZA(),t.BQk()}}let uc=(()=>{class n{constructor(e,o,a,s,r){this.config=e,this.formBuilder=o,this.dialog=a,this._snackBar=s,this.clipboard=r,this.selectedEntry="",this.storedConfigs=[],this.displayedColumns=["name","class","mobility","resilience","recovery","discipline","intellect","strength","delete"],this.ngUnsubscribe=new R.xQ,this.settingsNameForm=this.formBuilder.group({name:[null]}),this.importTextForm=this.formBuilder.group({content:[null]})}ngOnInit(){this.config.storedConfigurations.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(e=>this.storedConfigs=e)}submit(){const e=this.settingsNameForm.get("name")?.value;!e||(this.config.doesSavedConfigurationExist(e)?this.dialog.open(ce,{width:"300px",data:{description:"Do you want to overwrite this configuration?"}}).afterClosed().subscribe(a=>{a&&(this.config.saveCurrentConfigurationToName(e),this.settingsNameForm.reset(),this.selectedEntry=e)}):(this.config.saveCurrentConfigurationToName(e),this.settingsNameForm.reset(),this.selectedEntry=e))}delete(e){this.dialog.open(ce,{width:"300px",data:{description:"Do you want to delete this configuration?"}}).afterClosed().subscribe(a=>{a&&this.config.deleteStoredConfiguration(e)})}clearEverything(){this.dialog.open(ce,{width:"300px",data:{description:"Do you want to clear all settings?"}}).afterClosed().subscribe(o=>{o&&this.config.resetCurrentConfiguration()})}load(e){this.dialog.open(ce,{width:"300px",data:{description:"Do you want to load this preset?"}}).afterClosed().subscribe(a=>{a&&this.config.loadSavedConfiguration(e)})}runImport(){const e=this.importTextForm.get("content")?.value;if(!e)return this.openSnackBar("Invalid input.");try{const o=E.decompress(e,{inputEncoding:"Base64"}),a="["==o.substr(0,1);let s=JSON.parse(o);a||(s=[s]),console.log("Incoming json:",s);for(let r of s)this.config.checkAndFixOldSavedConfigurations(r),r.hasOwnProperty("name")?a?this.config.saveConfiguration(r.name,r.configuration):this.config.saveCurrentConfiguration(r.configuration):this.config.saveCurrentConfiguration(r);this.openSnackBar("Successfully loaded this configuration"),this.importTextForm.get("content")?.reset()}catch(o){this.openSnackBar("Invalid input."),console.error(o)}}copySingleSettingToClipboard(e){this.clipboard.copy(this.config.getStoredConfigurationBase64Compressed(e.name)),this.openSnackBar("Copied the configuration to your clipboard. You can share it with your friends.")}copyAllSettingsToClipboard(){this.clipboard.copy(this.config.getAllStoredConfigurationsBase64Compressed()),this.openSnackBar("Exported all configurations to the clipboard. You can then save and share them.")}openSnackBar(e){this._snackBar.open(e,"",{duration:2500,politeness:"polite"})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(wt.QS),t.Y36(Et.uw),t.Y36(pe.ux),t.Y36(ee.TU))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-load-and-save-settings"]],decls:78,vars:13,consts:[[3,"formGroup","submit"],["id","settings"],["appearance","outline"],["formControlName","name","matInput","","maxlength","30","minlength","4","placeholder","Awesome Discipline Build 4"],["color","primary","mat-raised-button","","type","submit",3,"disabled"],["color","warn","mat-raised-button","","matTooltip","Clears the ENTIRE configuration and uses the default settings. Use with caution.",3,"click"],["color","primary","mat-raised-button","","matTooltip","Copy your current configuration into your clipboard. You will be able to share it with others and import it later.",3,"cdkCopyToClipboard","click"],[2,"display","none"],[3,"value","disabled","valueChange"],[3,"value",4,"ngFor","ngForOf"],["color","primary","mat-raised-button","","matTooltip","Load the currently selected configuration.",3,"disabled","click"],["color","warn","mat-stroked-button","","matTooltip","Delete the currently selected configuration. Can not be undone.",3,"disabled","click"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","class"],["matColumnDef","mobility"],["matColumnDef","resilience"],["matColumnDef","recovery"],["matColumnDef","discipline"],["matColumnDef","intellect"],["matColumnDef","strength"],["matColumnDef","delete"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[4,"ngIf"],[3,"formGroup"],["formControlName","content","matInput",""],["color","primary","mat-raised-button","","matTooltip","Import the given configuration",3,"click"],[3,"value"],["mat-header-cell",""],["mat-cell",""],[3,"stat"],["color","warn","mat-icon-button","","matTooltip","Delete this configuration permanently.",3,"click"],["color","primary","mat-icon-button","","matTooltip","Load this configuration. Your current settings will be overwritten.",3,"click"],["color","primary","mat-icon-button","","matTooltip","Copy this configuration into your clipboard. You will be able to share it with others and import it later.",3,"click"],["mat-header-row",""],["mat-row",""],["color","primary","mat-raised-button","","matTooltip","Export all configurations to the clipboard. You can then save and share them.",3,"click"]],template:function(e,o){if(1&e&&(t.TgZ(0,"form",0),t.NdJ("submit",function(){return o.submit()}),t.TgZ(1,"table",1)(2,"tr")(3,"td")(4,"mat-form-field",2)(5,"mat-label"),t._uU(6,"Name to save the configuration"),t.qZA(),t._UZ(7,"input",3),t.qZA()(),t.TgZ(8,"td")(9,"button",4),t._uU(10," Save current "),t.qZA()(),t.TgZ(11,"td")(12,"button",5),t.NdJ("click",function(){return o.clearEverything()}),t._uU(13,"Clear everything "),t.qZA()(),t.TgZ(14,"td")(15,"button",6),t.NdJ("click",function(){return o.openSnackBar("Copied the configuration to your clipboard. You can share it with your friends.")}),t._uU(16," Copy Current "),t.qZA()()(),t.TgZ(17,"tr",7)(18,"td")(19,"mat-form-field",2)(20,"mat-label"),t._uU(21,"Load saved configuration"),t.qZA(),t.TgZ(22,"mat-select",8),t.NdJ("valueChange",function(s){return o.selectedEntry=s}),t.YNc(23,Ll,9,5,"mat-option",9),t.qZA()()(),t.TgZ(24,"td")(25,"button",10),t.NdJ("click",function(){return o.load(o.selectedEntry)}),t._uU(26,"Load "),t.qZA()(),t.TgZ(27,"td")(28,"button",11),t.NdJ("click",function(){return o.delete(o.selectedEntry)}),t._uU(29,"Delete "),t.qZA()()()()(),t._UZ(30,"br"),t.TgZ(31,"table",12),t.ynx(32,13),t.YNc(33,Yl,2,0,"th",14),t.YNc(34,Bl,2,1,"td",15),t.BQk(),t.ynx(35,16),t.YNc(36,Vl,2,0,"th",14),t.YNc(37,jl,4,3,"td",15),t.BQk(),t.ynx(38,17),t.YNc(39,Gl,2,1,"th",14),t.YNc(40,zl,2,1,"td",15),t.BQk(),t.ynx(41,18),t.YNc(42,Kl,2,1,"th",14),t.YNc(43,$l,2,1,"td",15),t.BQk(),t.ynx(44,19),t.YNc(45,Xl,2,1,"th",14),t.YNc(46,tc,2,1,"td",15),t.BQk(),t.ynx(47,20),t.YNc(48,ec,2,1,"th",14),t.YNc(49,nc,2,1,"td",15),t.BQk(),t.ynx(50,21),t.YNc(51,oc,2,1,"th",14),t.YNc(52,ic,2,1,"td",15),t.BQk(),t.ynx(53,22),t.YNc(54,ac,2,1,"th",14),t.YNc(55,sc,2,1,"td",15),t.BQk(),t.ynx(56,23),t.YNc(57,rc,1,0,"th",14),t.YNc(58,lc,10,0,"td",15),t.BQk(),t.YNc(59,cc,1,0,"tr",24),t.YNc(60,mc,1,0,"tr",25),t.qZA(),t.YNc(61,dc,4,0,"ng-container",26),t._UZ(62,"br"),t.TgZ(63,"div"),t._UZ(64,"hr"),t.TgZ(65,"h2"),t._uU(66,"Import a previously exported configuration"),t.qZA(),t.TgZ(67,"form",27)(68,"table")(69,"tr")(70,"td")(71,"mat-form-field",2)(72,"mat-label"),t._uU(73,"Copied configuration"),t.qZA(),t._UZ(74,"input",28),t.qZA()(),t.TgZ(75,"td")(76,"button",29),t.NdJ("click",function(){return o.runImport()}),t._uU(77," Start the import "),t.qZA()()()()()()),2&e){let a;t.Q6J("formGroup",o.settingsNameForm),t.xp6(9),t.Q6J("disabled",!(null!=(a=o.settingsNameForm.get("name"))&&a.value)||(null==(a=o.settingsNameForm.get("name"))?null:a.value.length)<4||(null==(a=o.settingsNameForm.get("name"))?null:a.value.length)>30),t.xp6(6),t.Q6J("cdkCopyToClipboard",o.config.getCurrentConfigBase64Compressed()),t.xp6(7),t.Q6J("value",o.selectedEntry)("disabled",0===o.storedConfigs.length),t.xp6(1),t.Q6J("ngForOf",o.storedConfigs),t.xp6(2),t.Q6J("disabled",!o.selectedEntry||0===o.storedConfigs.length),t.xp6(3),t.Q6J("disabled",!o.selectedEntry||0===o.storedConfigs.length),t.xp6(3),t.Q6J("dataSource",o.storedConfigs),t.xp6(28),t.Q6J("matHeaderRowDef",o.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns),t.xp6(1),t.Q6J("ngIf",o.storedConfigs.length>0),t.xp6(6),t.Q6J("formGroup",o.importTextForm)}},dependencies:[Z.sg,Z.O5,wt._Y,wt.Fj,wt.JJ,wt.JL,wt.wO,wt.nD,wt.sg,wt.u,rt.lW,Nt.KE,Nt.hX,Nl.gD,Ze.ey,oe.Nt,W.BZ,W.fO,W.as,W.w1,W.Dz,W.nj,W.ge,W.ev,W.XQ,W.Gk,pt.gM,St.Hw,ee.i3,he],styles:[".modTable[_ngcontent-%COMP%]{width:100%}.mat-header-row[_ngcontent-%COMP%], .mat-row[_ngcontent-%COMP%]{height:30px}.mat-column-class[_ngcontent-%COMP%]{min-width:55px;padding-right:2px;padding-left:2px;text-align:center;border-right:1px solid currentColor}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-resilience[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-discipline[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%], .mat-column-strength[_ngcontent-%COMP%]{min-width:40px;text-align:center}.mat-row[_ngcontent-%COMP%]:hover{background-color:#494949}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%]{background-color:#464646}.mat-column-name[_ngcontent-%COMP%]{padding-right:4px;border-right:1px solid currentColor;min-width:150px}th.mat-header-cell[_ngcontent-%COMP%]:last-of-type, td.mat-cell[_ngcontent-%COMP%]:last-of-type, td.mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.mat-cell[_ngcontent-%COMP%]:last-of-type, .mat-header-cell[_ngcontent-%COMP%]:last-of-type, .mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.stat-negative[_ngcontent-%COMP%], .stat-positive[_ngcontent-%COMP%]{margin-right:3px}.stat-negative[_ngcontent-%COMP%]{color:#f08080}.stat-positive[_ngcontent-%COMP%]{color:#6495ed}.stat-display[_ngcontent-%COMP%]{width:60px;float:left;align-content:end;text-align:right}.mat-row[_ngcontent-%COMP%]:hover, .mat-row[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#494949}.mat-row.selected[_ngcontent-%COMP%]:hover, .mat-row.selected[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#89b2ff30}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-mobility[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-recovery[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-intellect[_ngcontent-%COMP%]{background-color:#89b2ff1c}.mat-column-load[_ngcontent-%COMP%], .mat-column-delete[_ngcontent-%COMP%]{padding-left:3px;padding-right:3px}[_nghost-%COMP%] .mat-form-field-wrapper{margin:0!important;padding:0}"]}),n})();function pc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Helmets"),t.qZA())}function gc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Gauntlets"),t.qZA())}function _c(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Chest Pieces"),t.qZA())}function fc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Legs"),t.qZA())}function hc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Class Items"),t.qZA())}function xc(n,i){1&n&&t._UZ(0,"br")}function yc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",5)(1,"img",6),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(3);return t.KtG(r.enableItem(s.itemInstanceId))}),t.qZA(),t.YNc(2,xc,1,0,"br",3),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw(3);t.xp6(1),t.MGl("src","https://bungie.net/",e.icon,"",t.LSH),t.Q6J("matTooltip",a.generateTooltip(e)),t.xp6(1),t.Q6J("ngIf",(o+1)%10==0)}}function Cc(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,pc,2,0,"div",3),t.YNc(2,gc,2,0,"div",3),t.YNc(3,_c,2,0,"div",3),t.YNc(4,fc,2,0,"div",3),t.YNc(5,hc,2,0,"div",3),t.YNc(6,yc,3,3,"span",4),t.qZA()),2&n){const e=i.$implicit,o=i.index;t.xp6(1),t.Q6J("ngIf",1===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",2===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",3===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",4===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",5===o&&e.length>0),t.xp6(1),t.Q6J("ngForOf",e)}}function Tc(n,i){if(1&n&&(t.TgZ(0,"div",1),t.YNc(1,Cc,7,6,"div",2),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.disabledItems)}}let vc=(()=>{class n{constructor(e,o){this.config=e,this.db=o,this.disabledItems=[],this.characterClass=null,this.ngUnsubscribe=new R.xQ}enableItem(e){this.config.modifyConfiguration(o=>{o.disabledItems.splice(o.disabledItems.indexOf(e),1)})}generateTooltip(e){return"Click this icon to activate this item again.\r\n"+e.name+" "+(e.mobility+(e.masterworked?2:0))+"/"+(e.resilience+(e.masterworked?2:0))+"/"+(e.recovery+(e.masterworked?2:0))+"/"+(e.discipline+(e.masterworked?2:0))+"/"+(e.intellect+(e.masterworked?2:0))+"/"+(e.strength+(e.masterworked?2:0))}ngOnInit(){var e=this;this.config.configuration.pipe((0,yt.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,x.Z)(function*(a){e.characterClass=null;const s=[[],[],[],[],[],[]];let r=[];for(let m of a.disabledItems){let p=yield e.db.inventoryArmor.where("itemInstanceId").equals(m).first();p&&r.push(p)}for(let m of r)s[m.slot].push(m);e.characterClass=a.characterClass;for(let m of s)m.sort((p,C)=>p.hash-C.hash);e.disabledItems=s});return function(a){return o.apply(this,arguments)}}())}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(z),t.Y36(I))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-ignored-items-list"]],decls:1,vars:1,consts:[["class","item-icon-container",4,"ngIf"],[1,"item-icon-container"],[4,"ngFor","ngForOf"],[4,"ngIf"],["class","item-sub",4,"ngFor","ngForOf"],[1,"item-sub"],["matTooltipClass","allow-cr",1,"item-icon",3,"src","matTooltip","click"]],template:function(e,o){1&e&&t.YNc(0,Tc,2,1,"div",0),2&e&&t.Q6J("ngIf",null!==o.characterClass)},dependencies:[Z.sg,Z.O5,pt.gM],styles:[".item-icon[_ngcontent-%COMP%]{width:40px}.item-icon[_ngcontent-%COMP%]:hover{filter:brightness(.8) hue-rotate(350deg) saturate(3) blur(2px) contrast(.6);cursor:not-allowed}.item-sub[_ngcontent-%COMP%]{margin-right:3px}.item-icon-container[_ngcontent-%COMP%]{position:relative;contain:layout paint style;box-sizing:border-box;width:var(--item-size);transition:opacity .2s,transform .2s}"]}),n})(),bc=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-settings"]],decls:71,vars:0,consts:[["id","card-config"],["id","content-char-selection"],["inline","","aria-hidden","false","aria-label","Help","matTooltip","Cooldowns and Stats provided by Clarity."],["tooltip","matTooltip"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"mat-card")(2,"mat-card-title"),t._uU(3,"Character Selection"),t.qZA(),t.TgZ(4,"mat-card-content",1),t._UZ(5,"app-desired-class-selection"),t.qZA()(),t.TgZ(6,"mat-card")(7,"mat-card-title"),t._uU(8,"Select the stats you want to achieve"),t.qZA(),t.TgZ(9,"mat-card-subtitle"),t._uU(10,"The heart of this tool. Select the stats you want! "),t.TgZ(11,"mat-icon",2,3),t._uU(13," info "),t.qZA()(),t.TgZ(14,"mat-card-content"),t._UZ(15,"app-desired-stat-selection"),t.qZA()(),t.TgZ(16,"mat-card")(17,"mat-card-title"),t._uU(18,"Armor Selection"),t.qZA(),t.TgZ(19,"mat-card-subtitle"),t._uU(20," This section allows you to limit the armor pieces that are used in the buildcrafting process."),t._UZ(21,"br"),t._uU(22," If you want, limit all results to one exotic. "),t._UZ(23,"br"),t._uU(24," Exotics you do not have in the inventory or vault are grayed out. "),t.qZA(),t.TgZ(25,"mat-card-content"),t._UZ(26,"app-desired-exotic-selection"),t.qZA()(),t.TgZ(27,"mat-card")(28,"mat-card-title"),t._uU(29,"Armor limitation"),t.qZA(),t.TgZ(30,"mat-card-subtitle"),t._uU(31," This section allows you to further specify what kind of armor and mods you want. "),t.qZA(),t.TgZ(32,"mat-card-content"),t._UZ(33,"app-desired-mod-selection"),t.qZA()(),t.TgZ(34,"mat-card")(35,"mat-card-title"),t._uU(36,"Stat-Boost Selection"),t.qZA(),t.TgZ(37,"mat-card-subtitle"),t._uU(38,"Select Mods and Skills that affect your overall stats."),t._UZ(39,"br"),t._uU(40," Please note that D2AP also allows theoretical, but impossible input."),t._UZ(41,"br"),t.TgZ(42,"b"),t._uU(43,"Only fragments that affect stats are shown."),t.qZA()(),t.TgZ(44,"mat-card-content"),t._UZ(45,"app-desired-mods-selection"),t.qZA()(),t.TgZ(46,"mat-card")(47,"mat-card-title"),t._uU(48,"Advanced Settings"),t.qZA(),t.TgZ(49,"mat-card-subtitle"),t._uU(50,"More settings! Use them to fine-tune your buildcrafting process."),t.qZA(),t.TgZ(51,"mat-card-content"),t._UZ(52,"app-advanced-settings"),t.qZA()(),t.TgZ(53,"mat-card")(54,"mat-card-title"),t._uU(55,"Disabled Armor Pieces"),t.qZA(),t.TgZ(56,"mat-card-subtitle"),t._uU(57," These armor pieces are disabled. Click them to enable them again."),t._UZ(58,"br"),t._uU(59," They won't show up in any results."),t._UZ(60,"br"),t._uU(61," You can disable items in the detailed result overview. "),t.qZA(),t.TgZ(62,"mat-card-content"),t._UZ(63,"app-ignored-items-list"),t.qZA()(),t.TgZ(64,"mat-card")(65,"mat-card-title"),t._uU(66,"Configuration Management"),t.qZA(),t.TgZ(67,"mat-card-subtitle"),t._uU(68,"Save and load your buildcrafting settings for another day!"),t.qZA(),t.TgZ(69,"mat-card-content"),t._UZ(70,"app-load-and-save-settings"),t.qZA()()())},dependencies:[Y.a8,Y.dn,Y.n5,Y.$j,pt.gM,St.Hw,Vs,ur,Er,Lr,kl,Rl,uc,vc],styles:["#card-config[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;display:inline-block;vertical-align:top;white-space:normal;margin-bottom:20px;margin-left:3px;margin-right:3px}#card-config[_ngcontent-%COMP%] > mat-card[_ngcontent-%COMP%]{margin-bottom:4px}#content-char-selection[_ngcontent-%COMP%]{margin-bottom:0}"]}),n})(),Ac=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-picker-page"]],decls:3,vars:0,consts:[["id","container"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"app-settings")(2,"app-results"),t.qZA())},dependencies:[bc,we],styles:["#container[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;margin-right:3px;white-space:nowrap}"]}),n})();const ke=function(){return["","Mobility","Resilience","Recovery","Discipline","Intellect","Strength"]};function wc(n,i){if(1&n&&(t.TgZ(0,"tr",27)(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td",22)(4,"div",28),t._UZ(5,"div",29),t.TgZ(6,"span",30),t._uU(7),t.ALo(8,"number"),t.qZA()()()()),2&n){const e=t.oxw().index,o=t.oxw(2).index,a=t.oxw();t.Q6J("matTooltip",t.DdM(9,ke)[e]),t.xp6(2),t.hij(" ",t.DdM(10,ke)[e]," "),t.xp6(3),t.Jzz("width:",a.clusterInformation[o].mean[e]/32*100,"%"),t.xp6(2),t.hij(" ",t.xi3(8,6,a.clusterInformation[o].mean[e],"1.0-0")," ")}}function Ic(n,i){if(1&n&&(t.ynx(0),t.YNc(1,wc,9,11,"tr",26),t.BQk()),2&n){const e=i.index;t.xp6(1),t.Q6J("ngIf",e>0)}}function Zc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-card",21)(1,"mat-card-title"),t._uU(2),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t._uU(4),t.qZA(),t.TgZ(5,"mat-card-content")(6,"div")(7,"table",22),t.YNc(8,Ic,2,1,"ng-container",18),t.qZA()(),t.TgZ(9,"mat-form-field",23)(10,"mat-label"),t._uU(11,"DIM Search Query"),t.qZA(),t._UZ(12,"input",24),t.qZA(),t.TgZ(13,"button",25),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.openSnackBar("Copied the DIM search query to your clipboard."))}),t._uU(14," Copy DIM query to clipboard "),t.qZA()()()}if(2&n){const e=t.oxw(),o=e.index,a=e.$implicit,s=t.oxw();t.xp6(2),t.hij(" Cluster ",o+1," "),t.xp6(2),t.AsE(" Contains ",a.length," item",a.length>1?"s":""," "),t.xp6(4),t.Q6J("ngForOf",s.clusterInformation[o].mean),t.xp6(4),t.Q6J("value",s.getDIMStringForCluster(a)),t.xp6(1),t.Q6J("cdkCopyToClipboard",s.getDIMStringForCluster(a))}}function Sc(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Zc,15,6,"mat-card",20),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",e.length>0)}}var Ee=[{id:0,size:214,centroids:[5.242990654205609,3.4392523364485994,23.074766355140188,4.52336448598131,17.99532710280374,8.074766355140188],std:[3.262185500658884,3.137958193527344,2.0745611905196912,3.223158380401712,2.6478649185881147,3.356022774004607,3.3823650213485315],mean:[62.350467289719624,5.242990654205608,3.439252336448598,23.074766355140188,4.5233644859813085,17.99532710280374,8.074766355140186]},{id:1,size:264,centroids:[13.613636363636365,3.060606060606063,14.431818181818182,6.731060606060606,12.575757575757574,10.575757575757576],std:[4.915624932359143,2.735897756946947,1.897597343200423,3.036390647550984,3.2253188618447473,3.0097969617389406,3.1372197425220545],mean:[60.98863636363637,13.613636363636363,3.0606060606060606,14.431818181818182,6.731060606060606,12.575757575757576,10.575757575757576]},{id:2,size:220,centroids:[5.209090909090909,15.586363636363636,10.936363636363636,13.281818181818181,13.604545454545452,3.8818181818181836],std:[3.3631090204013643,2.931782865076046,2.9200605883727038,3.289049973803757,2.6349662061268395,2.6591750828428204,2.395703224398619],mean:[62.5,5.209090909090909,15.586363636363636,10.936363636363636,13.281818181818181,13.604545454545455,3.881818181818182]},{id:3,size:230,centroids:[8.6,15.330434782608698,6.943478260869563,6.408695652173913,5.578260869565216,18.26086956521739],std:[4.27370926113142,3.855014315301441,3.2487061290912984,3.5081098914433078,3.559587955581114,3.1761194803539676,3.596667444705349],mean:[61.12173913043478,8.6,15.330434782608696,6.943478260869565,6.408695652173913,5.578260869565217,18.26086956521739]},{id:4,size:261,centroids:[11.74712643678161,5.655172413793104,13.873563218390803,11.022988505747126,16.57088122605364,3.0038314176245224],std:[3.5878146263573103,2.8197860971981994,2.9890605143791737,2.9825309245974925,2.7497287061744258,2.8324620286123516,1.8428616632651005],mean:[61.87356321839081,11.74712643678161,5.655172413793103,13.873563218390805,11.022988505747126,16.57088122605364,3.003831417624521]},{id:5,size:249,centroids:[6.598393574297189,7.2289156626506035,7.674698795180722,6.831325301204822,5.995983935742974,7.425702811244981],std:[12.188382924990831,3.7780346472852226,3.7855581933977014,3.9659084518463055,3.2508780840166134,2.4288222155150856,3.23718036285365],mean:[41.75502008032129,6.598393574297189,7.228915662650603,7.674698795180723,6.831325301204819,5.995983935742972,7.42570281124498]},{id:6,size:241,centroids:[4.580912863070541,10.62655601659751,15.72199170124481,20.186721991701248,5.7634854771784205,4.8672199170124495],std:[4.0360666526825675,2.5776864620318327,2.726712032141287,2.7236414380869185,3.4135743182998106,3.164594939982558,2.8952195061747896],mean:[61.74688796680498,4.580912863070539,10.62655601659751,15.721991701244812,20.186721991701244,5.763485477178423,4.867219917012448]},{id:7,size:352,centroids:[4.96875,10.849431818181818,15.676136363636362,5.085227272727275,13.079545454545453,12.113636363636365],std:[3.864447558701623,2.876694966732471,2.825917840642513,2.8500410080793133,2.604753041986593,2.753797030174534,3.084495990290069],mean:[61.77272727272727,4.96875,10.849431818181818,15.676136363636363,5.0852272727272725,13.079545454545455,12.113636363636363]},{id:8,size:219,centroids:[21.401826484018265,4.529680365296804,4.954337899543379,14.022831050228312,7.168949771689496,6.8036529680365305],std:[7.654498360234386,3.856746305047457,3.0774088630224354,3.486239910130717,4.509361233853425,3.691515724130434,3.433882092856456],mean:[58.881278538812786,21.401826484018265,4.529680365296803,4.954337899543379,14.02283105022831,7.168949771689498,6.80365296803653]},{id:9,size:183,centroids:[4.448087431693989,22.114754098360656,4.868852459016392,7.459016393442623,11.240437158469945,9.765027322404372],std:[7.900837110469869,3.265921971202623,3.896032191192026,3.424902708986657,3.3556927380910535,3.7206143627650876,3.9564220813839577],mean:[59.89617486338798,4.448087431693989,22.114754098360656,4.868852459016393,7.459016393442623,11.240437158469945,9.765027322404372]},{id:10,size:197,centroids:[13.563451776649746,10.761421319796954,6.527918781725887,20.654822335025383,4.934010152284262,5.18274111675127],std:[4.239153654030002,3.3077343290831713,2.8924486501981233,2.9338771160608355,3.5098461495889413,3.192898794854312,2.920215710334156],mean:[61.6243654822335,13.563451776649746,10.761421319796954,6.527918781725888,20.65482233502538,4.934010152284264,5.182741116751269]},{id:11,size:176,centroids:[8.255681818181818,16.181818181818183,7.11931818181818,4.619318181818182,21.0625,5.505681818181819],std:[3.349621998445128,3.4620343467651815,3.3296776490755446,2.945693532873097,2.7583580190103967,3.126214049887545,3.078027492852078],mean:[62.74431818181818,8.255681818181818,16.181818181818183,7.119318181818182,4.619318181818182,21.0625,5.505681818181818]},{id:12,size:194,centroids:[3.5670103092783503,14.773195876288659,13.036082474226804,13.185567010309278,4.979381443298967,12.144329896907218],std:[3.89886364980042,2.255251632823776,2.5893570716174388,3.248552824613239,3.1004926799108317,2.8845824993776903,2.8864151735009584],mean:[61.68556701030928,3.5670103092783507,14.77319587628866,13.036082474226804,13.185567010309278,4.979381443298969,12.144329896907216]},{id:13,size:302,centroids:[5.311258278145695,4.4701986754966905,21.897350993377486,10.688741721854305,6.834437086092715,12.605960264900663],std:[5.1142628152416245,2.9920946350614983,2.6882491851253567,3.071581172564087,2.99431450280505,3.116626644660552,2.58548804104293],mean:[61.80794701986755,5.311258278145695,4.470198675496689,21.897350993377483,10.688741721854305,6.8344370860927155,12.605960264900663]},{id:14,size:364,centroids:[12.263736263736265,11.32967032967033,5.936813186813188,8.524725274725274,12.07142857142857,7.782967032967034],std:[6.666392881793753,2.8942239993391565,2.947866371540881,3.041289192757803,3.0876888182534996,2.4540644069260296,2.6803305558675676],mean:[57.90934065934066,12.263736263736265,11.32967032967033,5.936813186813187,8.524725274725276,12.071428571428571,7.782967032967033]},{id:15,size:219,centroids:[6.981735159817351,5.9908675799086755,18.127853881278536,4.97716894977169,5.182648401826483,20.89041095890411],std:[4.3335830659244685,3.5503759593138464,3.5270785628911785,4.123339305032141,2.7998081886699646,3.283747903424203,2.8311584355558064],mean:[62.15068493150685,6.981735159817352,5.9908675799086755,18.12785388127854,4.9771689497716896,5.1826484018264845,20.89041095890411]},{id:16,size:147,centroids:[6.285714285714285,20.836734693877553,4.8639455782312915,17.510204081632654,5.897959183673469,7.394557823129253],std:[3.358145469360083,3.4877476344546254,3.2245649941865486,3.0557367019327,4.0937094190209065,3.1136788219952605,3.842013283457479],mean:[62.7891156462585,6.285714285714286,20.836734693877553,4.863945578231292,17.510204081632654,5.8979591836734695,7.394557823129252]},{id:17,size:202,centroids:[18.425742574257423,6.871287128712871,6.678217821782177,5.06930693069307,20.40594059405941,5.876237623762377],std:[3.0226636827682554,3.292828132097339,3.518715749263091,3.4627255810748356,3.075363266145594,3.5804283293104753,3.315804113390658],mean:[63.32673267326733,18.425742574257427,6.871287128712871,6.678217821782178,5.069306930693069,20.405940594059405,5.876237623762377]},{id:18,size:286,centroids:[11.22027972027972,7.073426573426573,12.65034965034965,12.594405594405593,4.209790209790211,13.220279720279722],std:[4.720510224882134,2.8685361372318168,2.6005789112305338,3.052197922484291,2.451602446915686,2.7244266014541174,2.7638787756329526],mean:[60.96853146853147,11.22027972027972,7.073426573426573,12.65034965034965,12.594405594405595,4.20979020979021,13.22027972027972]},{id:19,size:197,centroids:[6.263959390862944,8.568527918781726,16.80710659898477,4.000000000000003,22.593908629441625,4.883248730964468],std:[2.7333118141791917,3.3626657547151964,3.4540163497542435,2.646397291854302,2.565469285152567,3.018237668617547,2.8287109641017594],mean:[63.11675126903553,6.2639593908629445,8.568527918781726,16.80710659898477,4,22.593908629441625,4.883248730964467]},{id:20,size:279,centroids:[18.025089605734767,6.150537634408602,6.161290322580646,5.767025089605736,7.999999999999998,15.602150537634408],std:[6.590788110639117,3.6436721401086296,3.165505073725202,3.13700467469825,2.7769973891540207,3.4672154149710614,4.017425492621824],mean:[59.70609318996416,18.025089605734767,6.150537634408602,6.161290322580645,5.767025089605735,8,15.602150537634408]},{id:21,size:78,centroids:[15.96153846153846,16.85897435897436,16.807692307692307,3552713678800501e-30,5329070518200751e-30,-5329070518200751e-30],std:[2.095815090231219,7.438828122504502,7.482836393563639,8.12413063050432,0,0,0],mean:[49.62820512820513,15.961538461538462,16.858974358974358,16.807692307692307,0,0,0]},{id:22,size:137,centroids:[4.525547445255475,3.583941605839417,23.532846715328468,19.948905109489054,4.3576642335766405,6.248175182481752],std:[2.9351806639916567,2.7575572416084317,2.2707939003224227,2.908029186302962,3.3306093063017315,2.6644092885703916,3.4848010785869454],mean:[62.197080291970806,4.525547445255475,3.5839416058394162,23.532846715328468,19.94890510948905,4.357664233576642,6.248175182481752]},{id:23,size:194,centroids:[13.242268041237114,3.5103092783505163,14.675257731958762,19.55154639175258,6.139175257731957,5.092783505154641],std:[3.810494814771566,2.886105181640385,2.0818477512276696,2.6197152448917316,3.409818599464837,3.0311357231629183,2.9733966349516936],mean:[62.21134020618557,13.242268041237113,3.5103092783505154,14.675257731958762,19.551546391752577,6.139175257731959,5.092783505154639]},{id:24,size:239,centroids:[5.569037656903766,5.401673640167365,20.92468619246862,13.09205020920502,13.497907949790793,4.096234309623432],std:[3.8502204432228733,3.071015816571908,3.081143061480697,2.79904271710946,2.169280265760518,2.62802363192924,2.3450167178621983],mean:[62.58158995815899,5.569037656903766,5.401673640167364,20.92468619246862,13.092050209205022,13.497907949790795,4.096234309623431]}];let Mc=(()=>{class n{constructor(e,o,a){this.db=e,this._snackBar=o,this.inventory=a,this.clusterInformation=Ee,this.items=[],this.clusters=[],this.exoticFilter=0,this.masterworkFilter=0,this.classFilter=-1,this.clusterInformation=Ee.sort((s,r)=>r.mean[3]-s.mean[3])}ngAfterViewInit(){var e=this;return(0,x.Z)(function*(){e.inventory.inventory.pipe((0,L.b)(200)).subscribe((0,x.Z)(function*(){yield e.Update(),e.openSnackBar("Clusters were updated.")}))})()}Update(){var e=this;return(0,x.Z)(function*(){var o=(yield e.db.inventoryArmor.toArray()).filter(r=>r.source===w.Inventory),a=[];for(let r=0;r`id:'${o.itemInstanceId}'`).join(" or ")}vectorDistance(e,o){return Math.sqrt(e.reduce((a,s,r)=>a+Math.pow(s-o[r],2),0))}getClusterid(e){var o=Number.MAX_VALUE,a=-1;for(let r=0;r=3?3:0),"")}}const Ue=function(){return["Mobility","Resilience","Recovery","Discipline","Intellect","Strength"]};function Ec(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"tr",16)(2,"td"),t._uU(3),t.qZA(),t.TgZ(4,"td"),t._uU(5),t.ALo(6,"number"),t.qZA(),t.TgZ(7,"td",17)(8,"div",18),t.YNc(9,kc,1,6,"div",19),t.qZA()()(),t.BQk()),2&n){const e=i.$implicit,o=i.index,a=t.oxw().$implicit;t.xp6(1),t.Q6J("matTooltip",t.DdM(7,Ue)[o]),t.xp6(2),t.hij(" ",t.DdM(8,Ue)[o]," "),t.xp6(2),t.Oqu(t.xi3(6,4,a.totalStats[o],"1.0-0")),t.xp6(4),t.Q6J("ngForOf",e)}}function Uc(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td")(2,"a",20),t._UZ(3,"img",15),t.qZA(),t._uU(4),t.qZA(),t.TgZ(5,"td",21),t._uU(6),t.qZA(),t.TgZ(7,"td"),t._uU(8),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw(3);t.xp6(2),t.MGl("href","https://data.destinysets.com/i/InventoryItem:",e,"",t.LSH),t.xp6(2),t.hij(" ",e,""),t.xp6(2),t.Oqu(o.getPlugSum(e)),t.xp6(2),t.Oqu(o.getPlugString(e))}}const Dc=function(n,i,e,o,a,s){return[n,i,e,o,a,s]};function Pc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"mat-card",12)(2,"mat-card-title"),t._uU(3),t.qZA(),t.TgZ(4,"mat-card-content")(5,"table")(6,"tr")(7,"td",13),t._uU(8,"Hash:"),t.qZA(),t.TgZ(9,"td")(10,"a",14),t._UZ(11,"img",15),t.qZA(),t._uU(12),t.qZA()(),t.TgZ(13,"tr")(14,"td",13),t._uU(15,"ItemInstanceId:"),t.qZA(),t.TgZ(16,"td"),t._uU(17),t.qZA()(),t.TgZ(18,"tr")(19,"td",13),t._uU(20,"Sunset?"),t.qZA(),t.TgZ(21,"td"),t._uU(22),t.qZA()(),t.TgZ(23,"tr")(24,"td"),t._uU(25,"Total"),t.qZA(),t.TgZ(26,"td"),t._uU(27),t.qZA()(),t.YNc(28,Ec,10,9,"ng-container",10),t.qZA()(),t.TgZ(29,"mat-card-content"),t._uU(30," Plugs: "),t.TgZ(31,"table")(32,"tr")(33,"td"),t._uU(34,"Plug"),t.qZA(),t.TgZ(35,"td"),t._uU(36,"Total"),t.qZA(),t.TgZ(37,"td"),t._uU(38,"Values"),t.qZA()(),t.YNc(39,Uc,9,4,"tr",10),t.qZA()()(),t.BQk()),2&n){const e=i.$implicit;t.xp6(3),t.hij(" ",e.name," "),t.xp6(7),t.MGl("href","https://data.destinysets.com/i/InventoryItem:",e.hash,"",t.LSH),t.xp6(2),t.hij(" ",e.hash,""),t.xp6(5),t.Oqu(e.itemInstanceId),t.xp6(5),t.Oqu(e.isSunset),t.xp6(5),t.Oqu(e.totalSum),t.xp6(1),t.Q6J("ngForOf",t.HTZ(8,Dc,e.mobility,e.resilience,e.recovery,e.discipline,e.intellect,e.strength)),t.xp6(11),t.Q6J("ngForOf",e.statPlugHashes)}}function Rc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"mat-toolbar"),t._uU(2),t.qZA(),t._UZ(3,"br"),t.TgZ(4,"div",11),t.YNc(5,Pc,40,15,"ng-container",10),t.qZA(),t.BQk()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.hij(" ",o.getCategoryName(e.key)," "),t.xp6(3),t.Q6J("ngForOf",e.value)}}let Nc=(()=>{class n{constructor(e,o){this.inventory=e,this.db=o,this.minMobility=0,this.minResilience=0,this.minRecovery=0,this.minDiscipline=0,this.minIntellect=0,this.minStrength=0,this.anyPlugWithN=0,this.anyPlugBelowN=17,this.allPlugsWithN=0,this.allPlugsBelowN=17,this.armorName="",this.armorHash="",this.armorId="",this.armorItemsPerSlot=new Map,this.plugData={},this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.inventory.inventory.pipe((0,L.b)(10),(0,yt.R)(this.ngUnsubscribe)).subscribe((0,x.Z)(function*(){e.updateItems()}))}getPlugString(e){var o=this.plugData[e];let a=[0,0,0,0,0,0];for(let s of o.investmentStats)switch(s.statTypeHash){case 2996146975:a[0]+=s.value;break;case 392767087:a[1]+=s.value;break;case 1943323491:a[2]+=s.value;break;case 1735777505:a[3]+=s.value;break;case 144602215:a[4]+=s.value;break;case 4244567218:a[5]+=s.value}return"["+a.join(" ")+"]"}updateItems(){var e=this;return(0,x.Z)(function*(){const a=(yield e.db.manifestArmor.toArray()).filter(m=>19==m.itemType);let s=Object.fromEntries(a.map(m=>[m.hash,m]));e.plugData=s;let r=(yield e.db.inventoryArmor.toArray()).filter(m=>m.source===w.Inventory).sort((m,p)=>(""+m.name).localeCompare(p.name)).map(m=>{var p={name:m.name,hash:m.hash,isSunset:m.isSunset,itemInstanceId:m.itemInstanceId,statPlugHashes:m.statPlugHashes,mobility:[],resilience:[],recovery:[],discipline:[],intellect:[],strength:[],totalStats:[0,0,0,0,0,0],totalSum:0,slot:m.slot};if(m.statPlugHashes)for(let d of m.statPlugHashes){var C=s[d];for(let S of C.investmentStats)switch(S.statTypeHash){case 2996146975:p.mobility.push(S.value),p.totalStats[0]+=S.value;break;case 392767087:p.resilience.push(S.value),p.totalStats[1]+=S.value;break;case 1943323491:p.recovery.push(S.value),p.totalStats[2]+=S.value;break;case 1735777505:p.discipline.push(S.value),p.totalStats[3]+=S.value;break;case 144602215:p.intellect.push(S.value),p.totalStats[4]+=S.value;break;case 4244567218:p.strength.push(S.value),p.totalStats[5]+=S.value}}if(m.investmentStats)for(let d of m.investmentStats)switch(d.statTypeHash){case 2996146975:p.mobility.push(d.value),p.totalStats[0]+=d.value;break;case 392767087:p.resilience.push(d.value),p.totalStats[1]+=d.value;break;case 1943323491:p.recovery.push(d.value),p.totalStats[2]+=d.value;break;case 1735777505:p.discipline.push(d.value),p.totalStats[3]+=d.value;break;case 144602215:p.intellect.push(d.value),p.totalStats[4]+=d.value;break;case 4244567218:p.strength.push(d.value),p.totalStats[5]+=d.value}for(let d of p.totalStats)p.totalSum+=d;return p});r=e.filterItems(r),e.armorItemsPerSlot=r.reduce((m,p)=>{const C=p.slot?p.slot:10;return m.has(C)||m.set(C,[]),m.get(C)?.push(p),m},new Map)})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}getCategoryName(e){switch(e){case 1:return"Helmets";case 2:return"Gauntlets";case 3:return"Chest Pieces";case 4:return"Legs";case 5:return"Class Items"}return"Unknown Category"}getPlugSum(e){var o=this.plugData[e],a=0;for(let s of o.investmentStats)switch(s.statTypeHash){case 2996146975:case 392767087:case 1943323491:case 1735777505:case 144602215:case 4244567218:a+=s.value}return a}clear(){this.armorName="",this.armorHash="",this.armorId="",this.minMobility=0,this.minResilience=0,this.minRecovery=0,this.minDiscipline=0,this.minIntellect=0,this.minStrength=0,this.anyPlugWithN=0,this.anyPlugBelowN=17}filterItems(e){return this.armorName&&(e=e.filter(o=>o.name.toLowerCase().indexOf(this.armorName)>-1)),this.armorHash&&(e=e.filter(o=>(o.hash||0).toString().indexOf(this.armorHash)>-1)),this.armorId&&(e=e.filter(o=>(o.itemInstanceId||0).toString().indexOf(this.armorId)>-1)),e=(e=(e=(e=(e=(e=e.filter(o=>o.totalStats[0]>=(this.minMobility||0))).filter(o=>o.totalStats[1]>=(this.minResilience||0))).filter(o=>o.totalStats[2]>=(this.minRecovery||0))).filter(o=>o.totalStats[3]>=(this.minDiscipline||0))).filter(o=>o.totalStats[4]>=(this.minIntellect||0))).filter(o=>o.totalStats[5]>=(this.minStrength||0)),(this.anyPlugWithN??0)>0&&(e=e.filter(o=>(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)>=(this.anyPlugWithN||0)).length>0)),(this.anyPlugBelowN??0)<17&&(e=e.filter(o=>(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)<=(this.anyPlugBelowN||0)).length>0)),(this.allPlugsWithN??0)>0&&(e=e.filter(o=>0==(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)<(this.allPlugsWithN||0)).length)),(this.allPlugsBelowN??0)<17&&(e=e.filter(o=>0==(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)>(this.allPlugsBelowN||0)).length)),e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(At),t.Y36(I))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-investigation-page"]],decls:112,vars:26,consts:[["id","description"],["href","https://www.reddit.com/r/DestinyTheGame/comments/mpaopq/how_armor_stats_roll_an_advanced_insight_into/","target","_blank"],["colspan","3"],["appearance","outline"],["matInput","","placeholder","Stronghold",3,"ngModel","ngModelChange"],["matInput","",3,"ngModel","ngModelChange"],["max","32","min","0","step","1","thumbLabel","","tickInterval","1",3,"value","valueChange"],["max","17","min","0","step","1","thumbLabel","","tickInterval","1",3,"value","valueChange"],["mat-raised-button","","color","primary",3,"click"],["mat-raised-button","","color","warn",3,"click"],[4,"ngFor","ngForOf"],["fxLayout","row","fxLayout.xs","column","fxLayoutGap","10px",1,"armor-container"],[1,"cluster-item"],["colspan","2"],["alt","This armor on data.destinysets.com","target","_blank",3,"href"],["src","https://data.destinysets.com/static/media/logo.556bd7bd.svg",2,"width","15px"],[3,"matTooltip"],["width","100%"],[1,"stat-range"],[3,"class","style",4,"ngFor","ngForOf"],["alt","This plug on data.destinysets.com","target","_blank",3,"href"],[1,"plug-sum-col"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card",0)(1,"mat-card-title"),t._uU(2," Armor Investigation "),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t._uU(4," A visualization tool for data scientists. "),t.qZA(),t.TgZ(5,"mat-card-content"),t._uU(6," This part of the D2ArmorPicker lists all of your armor items. For each armor it shows how it is generated. It shows every used "),t.TgZ(7,"i"),t._uU(8,'"plug"'),t.qZA(),t._uU(9,", as well as the intrinsic stats of exotics. For more information about plugs, see "),t.TgZ(10,"a",1),t._uU(11,"here"),t.qZA(),t._uU(12,". Make sure to give the author an upvote for the hard work! "),t._UZ(13,"br")(14,"br"),t._uU(15," Please note that this feature is mainly targeted for data nerds and people interested in the basic stats of armor. It is just a data visualization. Mobile layout and a search function "),t.TgZ(16,"i"),t._uU(17,"may"),t.qZA(),t._uU(18," happen in the future. "),t.qZA(),t.TgZ(19,"mat-card-title"),t._uU(20," Filters "),t.qZA(),t.TgZ(21,"mat-card-subtitle"),t._uU(22," Some filters. Nothing fancy but it works. Sorry ;) "),t.qZA(),t.TgZ(23,"mat-card-content")(24,"table")(25,"tr")(26,"td",2)(27,"mat-form-field",3)(28,"mat-label"),t._uU(29,"Item Name"),t.qZA(),t.TgZ(30,"input",4),t.NdJ("ngModelChange",function(s){return o.armorName=s}),t.qZA()()(),t.TgZ(31,"td",2)(32,"mat-form-field",3)(33,"mat-label"),t._uU(34,"Item Hash"),t.qZA(),t.TgZ(35,"input",5),t.NdJ("ngModelChange",function(s){return o.armorHash=s}),t.qZA()()(),t.TgZ(36,"td",2)(37,"mat-form-field",3)(38,"mat-label"),t._uU(39,"Item ID"),t.qZA(),t.TgZ(40,"input",5),t.NdJ("ngModelChange",function(s){return o.armorId=s}),t.qZA()()()(),t.TgZ(41,"tr")(42,"td"),t._uU(43," Mobility: "),t.qZA(),t.TgZ(44,"td"),t._uU(45),t.qZA(),t.TgZ(46,"td")(47,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minMobility=s}),t.qZA()(),t.TgZ(48,"td"),t._uU(49," Resilience: "),t.qZA(),t.TgZ(50,"td"),t._uU(51),t.qZA(),t.TgZ(52,"td")(53,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minResilience=s}),t.qZA()(),t.TgZ(54,"td"),t._uU(55," Recovery: "),t.qZA(),t.TgZ(56,"td"),t._uU(57),t.qZA(),t.TgZ(58,"td")(59,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minRecovery=s}),t.qZA()()(),t.TgZ(60,"tr")(61,"td"),t._uU(62," Discipline: "),t.qZA(),t.TgZ(63,"td"),t._uU(64),t.qZA(),t.TgZ(65,"td")(66,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minDiscipline=s}),t.qZA()(),t.TgZ(67,"td"),t._uU(68," Intellect: "),t.qZA(),t.TgZ(69,"td"),t._uU(70),t.qZA(),t.TgZ(71,"td")(72,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minIntellect=s}),t.qZA()(),t.TgZ(73,"td"),t._uU(74," Strength: "),t.qZA(),t.TgZ(75,"td"),t._uU(76),t.qZA(),t.TgZ(77,"td")(78,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minStrength=s}),t.qZA()()(),t.TgZ(79,"tr")(80,"td"),t._uU(81," Any plug >=: "),t.qZA(),t.TgZ(82,"td"),t._uU(83),t.qZA(),t.TgZ(84,"td")(85,"mat-slider",7),t.NdJ("valueChange",function(s){return o.anyPlugWithN=s}),t.qZA()(),t.TgZ(86,"td"),t._uU(87," Any Plug <=: "),t.qZA(),t.TgZ(88,"td"),t._uU(89),t.qZA(),t.TgZ(90,"td")(91,"mat-slider",7),t.NdJ("valueChange",function(s){return o.anyPlugBelowN=s}),t.qZA()()(),t.TgZ(92,"tr")(93,"td"),t._uU(94," All plugs >=: "),t.qZA(),t.TgZ(95,"td"),t._uU(96),t.qZA(),t.TgZ(97,"td")(98,"mat-slider",7),t.NdJ("valueChange",function(s){return o.allPlugsWithN=s}),t.qZA()(),t.TgZ(99,"td"),t._uU(100," All Plugs <=: "),t.qZA(),t.TgZ(101,"td"),t._uU(102),t.qZA(),t.TgZ(103,"td")(104,"mat-slider",7),t.NdJ("valueChange",function(s){return o.allPlugsBelowN=s}),t.qZA()()()(),t.TgZ(105,"a",8),t.NdJ("click",function(){return o.updateItems()}),t._uU(106,"Update"),t.qZA(),t._uU(107,"\xa0 "),t.TgZ(108,"a",9),t.NdJ("click",function(){return o.clear()}),t._uU(109,"Clear"),t.qZA()()(),t.YNc(110,Rc,6,2,"ng-container",10),t.ALo(111,"keyvalue")),2&e&&(t.xp6(30),t.Q6J("ngModel",o.armorName),t.xp6(5),t.Q6J("ngModel",o.armorHash),t.xp6(5),t.Q6J("ngModel",o.armorId),t.xp6(5),t.hij(" ",o.minMobility,""),t.xp6(2),t.Q6J("value",o.minMobility),t.xp6(4),t.hij(" ",o.minResilience,""),t.xp6(2),t.Q6J("value",o.minResilience),t.xp6(4),t.hij(" ",o.minRecovery,""),t.xp6(2),t.Q6J("value",o.minRecovery),t.xp6(5),t.hij(" ",o.minDiscipline,""),t.xp6(2),t.Q6J("value",o.minDiscipline),t.xp6(4),t.hij(" ",o.minIntellect,""),t.xp6(2),t.Q6J("value",o.minIntellect),t.xp6(4),t.Oqu(o.minStrength),t.xp6(2),t.Q6J("value",o.minStrength),t.xp6(5),t.Oqu(o.anyPlugWithN),t.xp6(2),t.Q6J("value",o.anyPlugWithN),t.xp6(4),t.Oqu(o.anyPlugBelowN),t.xp6(2),t.Q6J("value",o.anyPlugBelowN),t.xp6(5),t.Oqu(o.allPlugsWithN),t.xp6(2),t.Q6J("value",o.allPlugsWithN),t.xp6(4),t.Oqu(o.allPlugsBelowN),t.xp6(2),t.Q6J("value",o.allPlugsBelowN),t.xp6(6),t.Q6J("ngForOf",t.lcZ(111,24,o.armorItemsPerSlot)))},dependencies:[Z.sg,ft.xw,ft.SQ,wt.Fj,wt.JJ,wt.On,rt.zs,Nt.KE,Nt.hX,Oc.pH,oe.Nt,Y.a8,Y.dn,Y.n5,Y.$j,pt.gM,It.Ye,Z.JJ,Z.Nd],styles:["#description[_ngcontent-%COMP%], #filter[_ngcontent-%COMP%]{max-width:700px;margin-bottom:10px;margin-left:auto;margin-right:auto}.cluster-item[_ngcontent-%COMP%]{flex-grow:1;flex-basis:0;min-width:250px;max-width:350px;margin-bottom:10px}.armor-container[_ngcontent-%COMP%], .plug-sum-col[_ngcontent-%COMP%]{padding-left:5px}.armor-container[_ngcontent-%COMP%]{flex-wrap:wrap}.stat-range[_ngcontent-%COMP%]{height:20px;width:100%;margin-bottom:3px;float:left;background-color:gray}.stat-range-bar[_ngcontent-%COMP%]{height:100%;float:left;background-color:#fff}.stat-range-bar0[_ngcontent-%COMP%]{background-color:#acfff1}.stat-range-bar1[_ngcontent-%COMP%]{background-color:#5e9eff}.stat-range-bar3[_ngcontent-%COMP%]{background-color:#ffc2ac}.stat-range-bar4[_ngcontent-%COMP%]{background-color:#ffb45e}.stat-range-bar2[_ngcontent-%COMP%], .stat-range-bar5[_ngcontent-%COMP%]{background-color:#c246ff}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})(),qc=(()=>{class n{constructor(e,o,a){this.db=e,this.inv=o,this.loginService=a}downloadArmorInformation(){var e=this;return(0,x.Z)(function*(){const o=yield e.db.inventoryArmor.toArray(),a=window.URL.createObjectURL(new Blob([JSON.stringify(o,null,2)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_armor.json"),document.body.appendChild(s),s.click()})()}downloadManifestInformation(){var e=this;return(0,x.Z)(function*(){const o=yield e.db.manifestArmor.toArray(),a=window.URL.createObjectURL(new Blob([JSON.stringify(o,null,1)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_manifest.json"),document.body.appendChild(s),s.click()})()}resetDatabase(){var e=this;return(0,x.Z)(function*(){yield e.db.resetDatabase(),yield e.inv.refreshAll(!0,!0)})()}resetEverything(){var e=this;return(0,x.Z)(function*(){localStorage.clear(),yield e.db.resetDatabase(),yield e.loginService.logout()})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(I),t.Y36(At),t.Y36(gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-account-config-page"]],decls:35,vars:0,consts:[["id","account-config-container"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-raised-button","","routerLink","/",1,"returnbutton"],["color","primary","mat-raised-button","",1,"btn-download",3,"click"],["color","warn","mat-raised-button","",1,"btn-download",3,"click"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"a",1),t._uU(2," Return to D2ArmorPicker "),t.qZA(),t.TgZ(3,"mat-card")(4,"mat-card-title"),t._uU(5," Account Configuration "),t.qZA(),t.TgZ(6,"mat-card-subtitle"),t._uU(7," The configuration on this page will not be reset when you reset your build settings. "),t.qZA(),t.TgZ(8,"mat-card-content"),t._uU(9,' This will come in a future update. Right now, I just wanted to push the "Debugging" section out. '),t.qZA()(),t.TgZ(10,"mat-card")(11,"mat-card-title"),t._uU(12," Debugging "),t.qZA(),t.TgZ(13,"mat-card-subtitle"),t._uU(14," Some options for debugging purposes. "),t.qZA(),t.TgZ(15,"mat-card-content"),t._uU(16," If the team asks you to send some specific data, you can find it here:"),t._UZ(17,"br"),t.TgZ(18,"a",2),t.NdJ("click",function(){return o.downloadArmorInformation()}),t._uU(19," Download armor information (d2ap_armor.json) "),t.qZA(),t.TgZ(20,"a",2),t.NdJ("click",function(){return o.downloadManifestInformation()}),t._uU(21," Download manifest information (d2ap_manifest.json) "),t.qZA(),t._UZ(22,"br")(23,"br"),t._uU(24," If you experience issues with the local database - for example, exotics not being found, try this:"),t._UZ(25,"br"),t.TgZ(26,"a",3),t.NdJ("click",function(){return o.resetDatabase()}),t._uU(27," Delete Database "),t.qZA(),t._UZ(28,"br"),t._uU(29," If you really want to reset EVERYTHING, use this: "),t._UZ(30,"br"),t.TgZ(31,"a",3),t.NdJ("click",function(){return o.resetEverything()}),t._uU(32," Reset the whole application "),t.qZA()()(),t.TgZ(33,"a",1),t._uU(34," Return to D2ArmorPicker "),t.qZA()())},dependencies:[M.b8,rt.zs,Y.a8,Y.dn,Y.n5,Y.$j,ot.yS],styles:[".returnbutton[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:15px;width:100%}#account-config-container[_ngcontent-%COMP%]{max-width:800px;margin-left:auto;margin-right:auto}mat-card[_ngcontent-%COMP%]{margin-bottom:8px}.btn-download[_ngcontent-%COMP%]{margin-right:10px}"]}),n})();var Fc=_(4661),De=_(7331);const Jc=[{path:"",component:tn,canActivate:[f],children:[{path:"",component:Ac},{path:"help",component:gs},{path:"cluster",component:Mc},{path:"investigate",component:Nc},{path:"theory",loadChildren:()=>_.e(613).then(_.bind(_,8613)).then(n=>n.TheorizerPageModule)},{path:"account",component:qc}]},{path:"login",component:Vt,canActivate:[T]},{path:"login-bungie",component:qt},{path:"**",redirectTo:"/"}];let Lc=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n,bootstrap:[h]}),n.\u0275inj=t.cJS({imports:[Z.ez,Fc.V,u.b2,Yt.PW,Ut.JF,ot.Bz.forRoot(Jc,{useHash:!0}),ee.Iq,D.xu]}),n})();t.B6R(we,function(){return[Z.sg,Z.O5,ft.xw,ft.SQ,ft.Wh,ft.yH,rt.lW,Nt.KE,Nt.hX,Nt.R9,oe.Nt,W.BZ,W.fO,W.as,W.w1,W.Dz,W.nj,W.ge,W.ev,W.XQ,W.Gk,Y.a8,Y.dn,Y.n5,Y.$j,Y.hq,pt.gM,St.Hw,ue.YE,ue.nU,Ae.NW,De.qn,De.HS,ss,Ks]},function(){return[Z.JJ]}),t.B6R(ve,function(){return[rt.lW,Et.ZT,Et.uh,Et.xY,Et.H8,Se]},[]),g.N.production&&(0,t.G48)(),u.q6().bootstrapModule(Lc).catch(n=>console.error(n))}},ht=>{ht.O(0,[736],()=>ht(ht.s=1379)),ht.O()}]); \ No newline at end of file diff --git a/runtime.99192955752d2c46.js b/runtime.19a182f4b2da43c4.js similarity index 95% rename from runtime.99192955752d2c46.js rename to runtime.19a182f4b2da43c4.js index 6336f9a1..ae52deb7 100644 --- a/runtime.99192955752d2c46.js +++ b/runtime.19a182f4b2da43c4.js @@ -1 +1 @@ -(()=>{"use strict";var e,m={},v={};function r(e){var n=v[e];if(void 0!==n)return n.exports;var t=v[e]={id:e,loaded:!1,exports:{}};return m[e].call(t.exports,t,t.exports,r),t.loaded=!0,t.exports}r.m=m,r.c=v,e=[],r.O=(n,t,o,f)=>{if(!t){var a=1/0;for(i=0;i=f)&&Object.keys(r.O).every(b=>r.O[b](t[l]))?t.splice(l--,1):(c=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,o,f]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{613:"7e58c29d7f8694a9",982:"371b9cd840d69b6e"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="D2ArmorPicker:";r.l=(t,o,f,i)=>{if(e[t])e[t].push(o);else{var a,c;if(void 0!==f)for(var l=document.getElementsByTagName("script"),d=0;d{a.onerror=a.onload=null,clearTimeout(p);var h=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),h&&h.forEach(_=>_(b)),g)return g(b)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=s.bind(null,a.onerror),a.onload=s.bind(null,a.onload),c&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{r.b=document.baseURI||self.location.href;var e={666:0};r.f.j=(o,f)=>{var i=r.o(e,o)?e[o]:void 0;if(0!==i)if(i)f.push(i[2]);else if(666!=o){var a=new Promise((u,s)=>i=e[o]=[u,s]);f.push(i[2]=a);var c=r.p+r.u(o),l=new Error;r.l(c,u=>{if(r.o(e,o)&&(0!==(i=e[o])&&(e[o]=void 0),i)){var s=u&&("load"===u.type?"missing":u.type),p=u&&u.target&&u.target.src;l.message="Loading chunk "+o+" failed.\n("+s+": "+p+")",l.name="ChunkLoadError",l.type=s,l.request=p,i[1](l)}},"chunk-"+o,o)}else e[o]=0},r.O.j=o=>0===e[o];var n=(o,f)=>{var l,d,[i,a,c]=f,u=0;if(i.some(p=>0!==e[p])){for(l in a)r.o(a,l)&&(r.m[l]=a[l]);if(c)var s=c(r)}for(o&&o(f);u{"use strict";var e,m={},v={};function r(e){var n=v[e];if(void 0!==n)return n.exports;var t=v[e]={id:e,loaded:!1,exports:{}};return m[e].call(t.exports,t,t.exports,r),t.loaded=!0,t.exports}r.m=m,r.c=v,e=[],r.O=(n,t,o,f)=>{if(!t){var a=1/0;for(i=0;i=f)&&Object.keys(r.O).every(b=>r.O[b](t[l]))?t.splice(l--,1):(c=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,o,f]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>e+"."+{613:"7e58c29d7f8694a9",982:"eb396bfa7a0b7c45"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="D2ArmorPicker:";r.l=(t,o,f,i)=>{if(e[t])e[t].push(o);else{var a,c;if(void 0!==f)for(var l=document.getElementsByTagName("script"),d=0;d{a.onerror=a.onload=null,clearTimeout(p);var h=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),h&&h.forEach(_=>_(b)),g)return g(b)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=s.bind(null,a.onerror),a.onload=s.bind(null,a.onload),c&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{r.b=document.baseURI||self.location.href;var e={666:0};r.f.j=(o,f)=>{var i=r.o(e,o)?e[o]:void 0;if(0!==i)if(i)f.push(i[2]);else if(666!=o){var a=new Promise((u,s)=>i=e[o]=[u,s]);f.push(i[2]=a);var c=r.p+r.u(o),l=new Error;r.l(c,u=>{if(r.o(e,o)&&(0!==(i=e[o])&&(e[o]=void 0),i)){var s=u&&("load"===u.type?"missing":u.type),p=u&&u.target&&u.target.src;l.message="Loading chunk "+o+" failed.\n("+s+": "+p+")",l.name="ChunkLoadError",l.type=s,l.request=p,i[1](l)}},"chunk-"+o,o)}else e[o]=0},r.O.j=o=>0===e[o];var n=(o,f)=>{var l,d,[i,a,c]=f,u=0;if(i.some(p=>0!==e[p])){for(l in a)r.o(a,l)&&(r.m[l]=a[l]);if(c)var s=c(r)}for(o&&o(f);u