// ==UserScript== // @name HWH Titan Trainer Lite // @name:en HWH Titan Trainer Lite // @namespace http://tampermonkey.net/ // @version 1.4.10-lite.1 // @updateURL https://raw.githubusercontent.com/Askja/hwh-extensions-greasyfork/main/hwhtitanartifact-lite.meta.js // @downloadURL https://raw.githubusercontent.com/Askja/hwh-extensions-greasyfork/main/hwhtitanartifact-lite.user.js // @supportURL https://t.me/+ppLK1qqObB43NjMy // @description Облегчённый Titan Trainer без Vue, анимаций, тем, иконок и игровой графики. // @description:en Lightweight Titan Trainer without Vue, animations, themes, icons, or game artwork. // @author Askja // @match https://www.hero-wars.com/* // @match https://apps-1701433570146040.apps.fbsbx.com/* // @grant none // @license MIT // ==/UserScript== (function(){function e(){try{var e;return(e=globalThis.localStorage)==null?null:e}catch(e){return null}}function t(e,t){console.warn(e,t)}function n(t,n=e()){return{clear(){try{if(!n)return;for(let e=n.length-1;e>=0;e--){let r=n.key(e);r!=null&&r.startsWith(t)&&n.removeItem(r)}}catch(e){}},getItem(e){try{var r;return(r=n==null?void 0:n.getItem(`${t}${e}`))==null?null:r}catch(e){return null}},keys(){let e=[];try{if(!n)return e;for(let r=0;r`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function a(e={}){let t=Object.entries(e).filter(([e,t])=>/^--[a-z0-9_-]+$/i.test(e)&&t!=null&&t!==``).map(([e,t])=>`${e}:${String(t).replaceAll(`;`,``)}`).join(`;`);return t?` style="${i(t)}"`:``}function o(e=`en`){var t,n,i,a,o,s;let c=r.get(e);if(c)return c;let l=String((t=(n=globalThis.document)==null||(n=n.documentElement)==null?void 0:n.lang)==null?``:t).toLowerCase().trim(),u=[...Array.isArray((i=globalThis.navigator)==null?void 0:i.languages)?globalThis.navigator.languages:[],(a=globalThis.navigator)==null?void 0:a.language].map(e=>String(e==null?``:e).toLowerCase().trim()).filter(Boolean),d=typeof((o=globalThis.HWHFuncs)==null?void 0:o.I18N)==`function`?String((s=globalThis.HWHFuncs.I18N(`~D`))==null?``:s):``;return l.startsWith(`ru`)||u.some(e=>e.startsWith(`ru`))||d.trim().toLowerCase()===`ок`?(r.set(e,`ru`),`ru`):l.startsWith(`en`)||u.some(e=>e.startsWith(`en`))||d.trim().toLowerCase()===`ok`?(r.set(e,`en`),`en`):(r.set(e,e),e)}var s=`injectedStyleCacheV1`,c=new Map;function l(){let e=globalThis.HWHSharedUI&&typeof globalThis.HWHSharedUI==`object`?globalThis.HWHSharedUI:globalThis.HWHSharedUI={},t=e[s];return t instanceof Map?t:(e[s]=c,c)}function u(e,t){var n;let r=document.getElementById(e),i=l(),a=i.get(e);if((a==null?void 0:a.source)===t&&r===a.element)return;if((r==null?void 0:r.tagName)===`STYLE`){r.textContent!==t&&(r.textContent=t),i.set(e,{source:t,normalized:t,element:r});return}let o=document.createElement(`style`);o.id=e,o.textContent=t,((n=document.head)==null?document.documentElement:n).appendChild(o),i.set(e,{source:t,normalized:t,element:o})}var d=new Map;function f(e){let t=d.get(e);return t||(t=new Intl.NumberFormat(e),d.set(e,t)),t}function p(e=`en-US`){var t,n;let r=String((t=(n=globalThis.document)==null||(n=n.documentElement)==null?void 0:n.lang)==null?``:t).trim();return r?r.toLowerCase().startsWith(`ru`)?`ru-RU`:r:e}function m(e={}){var t,n;let r=(t=e.locale)==null?p():t,i=(n=e.minimum)==null?0:n,a=f(r);return function(e){return a.format(Math.max(i,Number(e)||0))}}function h(e={}){var t;let n=f((t=e.locale)==null?p():t);return function(e){let t=Number(e)||0;return`${t>0?`+`:``}${n.format(t)}`}}function g({load:e,ttlMs:t,now:n=Date.now}){let r,i,a=0;function o(){r=void 0,i=void 0,a+=1}async function s(){if(r&&r.expiresAt>n())return r.value;let o=a;i!=null||(i=e().then(e=>(o===a&&(r={expiresAt:n()+Math.max(0,t),value:e}),e)));let s=i;try{return await s}finally{i===s&&(i=void 0)}}return{get:s,invalidate:o}}function _(e=0){let t=Math.max(0,Math.floor(Number(e)||0));return new Promise(e=>{globalThis.setTimeout(e,t)})}function v(e){return typeof e==`object`&&!!e}function y(e,t=``){var n,r,i,a;return e?typeof e==`string`?e:v(e)?String((n=(r=(i=(a=e.description)==null?e.message:a)==null?e.name:i)==null?t:r)==null?``:n):String(t==null?``:t):``}async function b({calls:e,transport:t,mapCall:n=e=>e,normalizeResults:r=e=>Array.isArray(e)?e:[e],onAfterSend:i,fallbackErrorMessage:a=`Request failed.`}){let o=Array.isArray(e)?e:[],s=o.map(e=>n(e)),c=await t(s);if(c.error)throw Error(y(c.error,a));let l=Array.isArray(c.results)?c.results:r(c);return await(i==null?void 0:i({calls:o,mappedCalls:s,response:c,results:l})),l}async function x({calls:e,chunkSize:t=20,delayMs:n=0,sendChunk:r,onChunk:i}){let a=Array.isArray(e)?e:[],o=Math.max(1,Math.floor(Number(t)||1)),s=Math.max(0,Math.floor(Number(n)||0)),c=Math.max(1,Math.ceil(a.length/o)),l=[];for(let e=0;e0&&await _(s)}return l}function S({chunkSize:e=20,delayMs:t=0,sendChunk:n,mapOnChunk:r=e=>e}){if(typeof n!=`function`)throw Error(`Chunked call sender requires sendChunk.`);return function(i,a=e,o=void 0,s=t){return x({calls:i,chunkSize:a,delayMs:s,sendChunk:n,onChunk:r(o)})}}var C=`hwhx-shared-ui-lite-style`,w=`.hwhx-build-lite.hwhx-modal{z-index:10000;color:#eee;box-sizing:border-box;background:#000000b8;justify-content:center;align-items:center;padding:8px;font:14px/1.35 Arial,sans-serif;display:flex;position:fixed;inset:0}.hwhx-build-lite.hwhx-modal .hwhx-modal__dialog{color:#eee;box-sizing:border-box;background:#181818;border:1px solid #777;border-radius:3px;flex-direction:column;align-items:stretch;display:flex;position:relative;overflow:hidden;width:min(1040px,100vw - 16px)!important;height:auto!important;min-height:0!important;max-height:calc(100vh - 16px)!important}.hwhx-build-lite.hwhx-modal[data-hwhx-modal-kind=hero-selection] .hwhx-modal__dialog,.hwhx-build-lite.hwhx-modal[data-hwhx-modal-kind=tier-selection] .hwhx-modal__dialog{width:min(1160px,100vw - 16px)!important}.hwhx-build-lite.hwhx-modal .hwhx-modal__header{box-sizing:border-box;background:#222;border-bottom:1px solid #555;justify-content:space-between;align-items:center;gap:8px;min-height:42px;padding:7px 10px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-modal__identity,.hwhx-build-lite.hwhx-modal .hwhx-modal__brand,.hwhx-build-lite.hwhx-modal .hwhx-modal__meta,.hwhx-build-lite.hwhx-modal .hwhx-modal__toolbar,.hwhx-build-lite.hwhx-modal .hwhx-button-group,.hwhx-build-lite.hwhx-modal .hwhx-icon-label{align-items:center;gap:7px;min-width:0;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-modal__title{text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:700;overflow:hidden}.hwhx-build-lite.hwhx-modal .hwhx-modal__body{scrollbar-gutter:stable;box-sizing:border-box;align-self:stretch;min-width:0;min-height:0;max-height:calc(100vh - 116px);padding:10px;flex:0 auto!important;width:100%!important;overflow:hidden scroll!important}.hwhx-build-lite.hwhx-modal .hwhx-modal__body>.hwhx-native-body,.hwhx-build-lite.hwhx-modal .hwhx-modal__body>.hwhx-popup,.hwhx-build-lite.hwhx-modal .hwhx-hwhauto-managed-popup-panel,.hwhx-build-lite.hwhx-modal .hwhx-hwhauto-managed-popup-panel__body,.hwhx-build-lite.hwhx-modal .hwhx-settings-summary,.hwhx-build-lite.hwhx-modal .hwhx-settings-summary__scroll,.hwhx-build-lite.hwhx-modal .hwhx-selection-body,.hwhx-build-lite.hwhx-modal .hwhx-selection-groups{box-sizing:border-box;align-self:stretch;width:100%!important;min-width:0!important;max-width:none!important}.hwhx-build-lite.hwhx-modal .hwhx-modal__actions{background:#202020;border-top:1px solid #555;justify-content:space-between;gap:8px;padding:8px 10px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-modal__actions-side{flex-wrap:wrap;gap:6px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-button,.hwhx-build-lite.hwhx-modal button.hwhx-button,.hwhx-build-lite.hwhx-modal .hwhx-icon-button,.hwhx-build-lite.hwhx-modal .hwhx-custom-select__button,.hwhx-build-lite.hwhx-progress .hwhx-button,.hwhx-build-lite.hwhx-progress .hwhx-icon-button,.hwhx-build-lite.hwhx-toast-stack .hwhx-button{color:#eee;cursor:pointer;box-sizing:border-box;background:#292929;border:1px solid #777;border-radius:2px;min-height:32px;margin:0;padding:5px 10px;font:700 14px/1.2 Arial,sans-serif}.hwhx-build-lite.hwhx-modal .hwhx-button:hover,.hwhx-build-lite.hwhx-modal .hwhx-button:focus,.hwhx-build-lite.hwhx-modal .hwhx-icon-button:hover,.hwhx-build-lite.hwhx-modal .hwhx-custom-select__button:hover{background:#333;border-color:#bbb;outline:1px solid #bbb}.hwhx-build-lite.hwhx-modal .hwhx-button:disabled,.hwhx-build-lite.hwhx-modal .hwhx-button.is-disabled,.hwhx-build-lite.hwhx-modal .hwhx-icon-button:disabled{cursor:not-allowed;opacity:.55}.hwhx-build-lite.hwhx-modal .hwhx-lite-glyph,.hwhx-build-lite.hwhx-progress .hwhx-lite-glyph,.hwhx-build-lite.hwhx-toast-stack .hwhx-lite-glyph{text-align:center;min-width:1em;font:700 14px/1 Segoe UI Emoji,Apple Color Emoji,Noto Color Emoji,sans-serif;display:inline-block}.hwhx-build-lite.hwhx-modal .hwhx-field,.hwhx-build-lite.hwhx-modal .hwhx-input,.hwhx-build-lite.hwhx-modal .hwhx-number-input,.hwhx-build-lite.hwhx-modal input.hwhx-field,.hwhx-build-lite.hwhx-modal select.hwhx-field,.hwhx-build-lite.hwhx-modal textarea.hwhx-field{color:#eee;box-sizing:border-box;background:#111;border:1px solid #777;border-radius:2px;width:100%;min-height:32px;padding:5px 8px;font:14px/1.2 Arial,sans-serif}.hwhx-build-lite.hwhx-modal .hwhx-field:focus,.hwhx-build-lite.hwhx-modal .hwhx-input:focus{border-color:#ccc;outline:1px solid #ccc}.hwhx-build-lite.hwhx-modal .hwhx-settings-search,.hwhx-build-lite.hwhx-modal .hwhx-selection-head,.hwhx-build-lite.hwhx-modal .hwhx-search-toolbar{box-sizing:border-box;align-items:center;gap:8px;width:100%;margin:0 0 8px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-settings-search .hwhx-field,.hwhx-build-lite.hwhx-modal .hwhx-search-toolbar .hwhx-field{flex:auto}.hwhx-build-lite.hwhx-modal .hwhx-settings-grid,.hwhx-build-lite.hwhx-modal .hwhx-selection-groups,.hwhx-build-lite.hwhx-modal .hwhx-stack,.hwhx-build-lite.hwhx-modal .hwhx-checkbox-list,.hwhx-build-lite.hwhx-modal .hwhx-native-checkboxes{box-sizing:border-box;flex-direction:column;align-items:stretch;gap:6px;width:100%;min-width:0;max-width:none;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-accordion{box-sizing:border-box;background:#1e1e1e;border:1px solid #555;border-radius:2px;flex:none;align-self:stretch;margin:0 0 6px;padding:0;display:block;overflow:hidden;inline-size:100%!important;width:100%!important;min-inline-size:0!important;max-inline-size:none!important}.hwhx-build-lite.hwhx-modal .hwhx-accordion__summary{inline-size:100%;color:#eee;cursor:pointer;box-sizing:border-box;background:#252525;justify-content:space-between;align-items:center;gap:8px;width:100%;min-width:0;min-height:36px;padding:7px 9px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-accordion__summary:focus{outline:1px solid #aaa}.hwhx-build-lite.hwhx-modal .hwhx-accordion__heading{flex:auto;align-items:center;gap:7px;min-width:0;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-accordion__title{text-overflow:ellipsis;min-width:0;overflow:hidden}.hwhx-build-lite.hwhx-modal .hwhx-accordion__arrow:empty:before{content:"+";font-weight:700}.hwhx-build-lite.hwhx-modal .hwhx-accordion[data-open="1"]>.hwhx-accordion__summary .hwhx-accordion__arrow:empty:before{content:"−"}.hwhx-build-lite.hwhx-modal .hwhx-accordion__body{inline-size:100%;box-sizing:border-box;width:100%;min-width:0;padding:8px 9px}.hwhx-build-lite.hwhx-modal .hwhx-accordion__body>*{box-sizing:border-box;min-width:0;max-width:100%}.hwhx-build-lite.hwhx-modal .hwhx-accordion--nested{margin:0 0 5px}.hwhx-build-lite.hwhx-modal .hwhx-checkbox-row,.hwhx-build-lite.hwhx-modal .hwhx-checkbox-list__item,.hwhx-build-lite.hwhx-modal .hwhx-custom-row{color:#eee;box-sizing:border-box;background:#202020;border:1px solid #444;align-items:center;gap:8px;width:100%;min-width:0;min-height:32px;margin:0;padding:5px 7px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-checkbox-input{-webkit-appearance:none;appearance:none;outline-offset:1px;box-sizing:border-box;cursor:pointer;outline:1px solid #aaa;flex:0 0 18px;justify-content:center;align-items:center;margin:0;display:inline-flex;position:relative;opacity:1!important;background:#fff!important;border:1px solid #000!important;border-radius:0!important;width:18px!important;height:18px!important}.hwhx-build-lite.hwhx-modal .hwhx-checkbox-input:checked{background:#fff!important;border-color:#000!important}.hwhx-build-lite.hwhx-modal .hwhx-checkbox-input:checked:after{content:""!important;clip-path:polygon(14% 52%,0 66%,38% 100%,100% 18%,84% 4%,35% 70%)!important;background:#000!important;border:0!important;width:12px!important;height:12px!important;display:block!important;position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}.hwhx-build-lite.hwhx-modal .hwhx-checkbox-input:focus-visible{outline-offset:2px;outline:2px solid #fff!important}.hwhx-build-lite.hwhx-modal .hwhx-checkbox-input:disabled{cursor:not-allowed;opacity:.55!important}.hwhx-build-lite.hwhx-modal .hwhx-checkbox-label{flex:auto;align-items:center;min-width:0;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-checkbox-list__toolbar,.hwhx-build-lite.hwhx-modal .hwhx-selection-modes,.hwhx-build-lite.hwhx-modal .hwhx-selection-mode,.hwhx-build-lite.hwhx-modal .hwhx-selection-mode__control{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-custom-select{min-width:0;position:relative}.hwhx-build-lite.hwhx-modal .hwhx-custom-select__menu{z-index:11000;color:#eee;background:#191919;border:1px solid #888;max-height:260px;position:fixed;overflow:auto}.hwhx-build-lite.hwhx-modal .hwhx-custom-select__option{cursor:pointer;align-items:center;gap:6px;min-height:30px;padding:5px 8px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-custom-select__option:hover,.hwhx-build-lite.hwhx-modal .hwhx-custom-select__option.is-selected{background:#353535}.hwhx-build-lite.hwhx-modal .hwhx-settings-row,.hwhx-build-lite.hwhx-modal .hwhx-settings-field,.hwhx-build-lite.hwhx-modal .hwhx-field-row{box-sizing:border-box;grid-template-columns:minmax(180px,1fr) minmax(120px,auto);align-items:center;gap:8px;width:100%;padding:5px 0;display:grid}.hwhx-build-lite.hwhx-modal .hwhx-settings-label,.hwhx-build-lite.hwhx-modal .hwhx-selection-label,.hwhx-build-lite.hwhx-modal .hwhx-selection-label__lead,.hwhx-build-lite.hwhx-modal .hwhx-selection-label__identity,.hwhx-build-lite.hwhx-modal .hwhx-selection-label__main{align-items:center;gap:6px;min-width:0;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-selection-label__identity{flex-direction:column;align-items:flex-start;gap:1px}.hwhx-build-lite.hwhx-modal .hwhx-selection-label__details{color:#bbb;align-items:center;gap:8px;margin-left:auto;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-badges,.hwhx-build-lite.hwhx-modal .hwhx-selection-badges,.hwhx-build-lite.hwhx-modal .hwhx-token-list{align-items:center;gap:5px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-badge,.hwhx-build-lite.hwhx-modal .hwhx-selection-badge,.hwhx-build-lite.hwhx-modal .hwhx-token,.hwhx-build-lite.hwhx-modal .hwhx-modal-badge{color:#ddd;background:#292929;border:1px solid #666;border-radius:2px;padding:2px 6px;font-size:12px}.hwhx-build-lite.hwhx-modal .hwhx-data-table{border-collapse:collapse;color:#eee;width:100%}.hwhx-build-lite.hwhx-modal .hwhx-data-table th,.hwhx-build-lite.hwhx-modal .hwhx-data-table td{text-align:left;border:1px solid #555;padding:5px 7px}.hwhx-build-lite.hwhx-modal .hwhx-panel,.hwhx-build-lite.hwhx-modal .hwhx-ui-panel,.hwhx-build-lite.hwhx-modal .hwhx-popup{color:#eee;box-sizing:border-box;background:#202020;border:1px solid #555;border-radius:2px;flex-direction:column;align-items:stretch;gap:8px;width:100%;min-width:0;margin:0 0 8px;padding:9px 10px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-popup>.hwhx-panel:last-child,.hwhx-build-lite.hwhx-modal .hwhx-popup>.hwhx-ui-panel:last-child,.hwhx-build-lite.hwhx-modal .hwhx-panel:last-child,.hwhx-build-lite.hwhx-modal .hwhx-ui-panel:last-child{margin-bottom:0}.hwhx-build-lite.hwhx-modal .hwhx-ui-panel__head{border-bottom:1px solid #444;justify-content:space-between;align-items:center;gap:10px;min-width:0;padding-bottom:6px;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-ui-panel__title,.hwhx-build-lite.hwhx-modal .hwhx-ui-panel__actions{align-items:center;gap:6px;min-width:0;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-ui-panel__title{font-size:14px;font-weight:700;line-height:1.25}.hwhx-build-lite.hwhx-modal .hwhx-ui-panel__description{color:#bbb;margin:0;font-size:13px;line-height:1.4}.hwhx-build-lite.hwhx-modal .hwhx-ui-panel__body{flex-direction:column;gap:7px;width:100%;min-width:0;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-ui-panel__body>p,.hwhx-build-lite.hwhx-modal .hwhx-popup>p{margin:0;line-height:1.4}.hwhx-build-lite.hwhx-modal .hwhx-info-list{flex-direction:column;gap:6px;width:100%;min-width:0;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-info-list__row{box-sizing:border-box;background:#1b1b1b;border:1px solid #444;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:7px 9px;display:grid}.hwhx-build-lite.hwhx-modal .hwhx-info-list__label,.hwhx-build-lite.hwhx-modal .hwhx-info-list__value,.hwhx-build-lite.hwhx-modal .hwhx-info-line__label,.hwhx-build-lite.hwhx-modal .hwhx-info-line__value{align-items:center;gap:6px;min-width:0;line-height:1.3;display:flex}.hwhx-build-lite.hwhx-modal .hwhx-info-list__value,.hwhx-build-lite.hwhx-modal .hwhx-info-line__value{text-align:right;justify-content:flex-end;font-weight:700}.hwhx-build-lite.hwhx-modal .hwhx-form-row,.hwhx-build-lite.hwhx-modal .hwhx-info-line{box-sizing:border-box;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;max-width:none;margin:0;padding:5px 0;display:grid}.hwhx-build-lite.hwhx-modal .hwhx-hint,.hwhx-build-lite.hwhx-modal .hwhx-note,.hwhx-build-lite.hwhx-modal .hwhx-empty-state{color:#ddd;box-sizing:border-box;background:#242424;border:1px solid #666;width:100%;margin:0 0 8px;padding:8px 9px;line-height:1.4}.hwhx-build-lite.hwhx-modal .hwhx-hint{grid-template-columns:18px minmax(0,1fr);gap:8px}.hwhx-build-lite.hwhx-modal [class^=hwhx-][class*=__icon]:empty,.hwhx-build-lite.hwhx-modal [class*= hwhx-][class*=__icon]:empty,.hwhx-build-lite.hwhx-modal .hwhx-modal__script-logo,.hwhx-build-lite.hwhx-modal .hwhx-modal__forum-link,.hwhx-build-lite.hwhx-modal .hwhx-brand-icon,.hwhx-build-lite.hwhx-modal .hwhx-help-button,.hwhx-build-lite.hwhx-modal .hwhx-motion-icon:empty{display:none!important}.hwhx-build-lite.hwhx-modal .hwhx-empty-state,.hwhx-build-lite.hwhx-modal .hwhx-help-links-panel__card,.hwhx-build-lite.hwhx-modal .hwhx-link-list__item,.hwhx-build-lite.hwhx-modal .hwhx-release-card,.hwhx-build-lite.hwhx-modal .hwhx-daily-resource-metric{grid-template-columns:minmax(0,1fr)!important}.hwhx-build-lite.hwhx-progress{z-index:10002;color:#eee;box-sizing:border-box;background:#181818;border:1px solid #777;border-radius:3px;flex-direction:column;gap:7px;max-height:calc(100vh - 16px);padding:9px;font:14px/1.35 Arial,sans-serif;display:none;position:fixed;overflow:auto;width:min(620px,100vw - 16px)!important}.hwhx-build-lite.hwhx-progress.is-visible{display:flex}.hwhx-build-lite.hwhx-progress .hwhx-progress__header,.hwhx-build-lite.hwhx-progress .hwhx-progress__body,.hwhx-build-lite.hwhx-progress .hwhx-progress__content{box-sizing:border-box;width:100%;min-width:0}.hwhx-build-lite.hwhx-progress .hwhx-progress__header{border-bottom:1px solid #555;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding-bottom:7px;display:grid}.hwhx-build-lite.hwhx-progress .hwhx-progress__stage{color:#dff8e5;white-space:normal;background:#202923;border:1px solid #5d826e;padding:6px 8px;font-weight:700}.hwhx-build-lite.hwhx-progress .hwhx-progress__content{white-space:pre-line}.hwhx-build-lite.hwhx-progress .hwhx-progress__title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.hwhx-build-lite.hwhx-progress .hwhx-progress__header-actions{align-items:center;gap:6px;min-width:0;display:flex}.hwhx-build-lite.hwhx-progress .hwhx-status-badge{color:#ccc;white-space:nowrap;box-sizing:border-box;background:#242424;border:1px solid #777;border-radius:2px;align-items:center;min-height:30px;padding:0 8px;font-size:12px;font-weight:700;display:inline-flex}.hwhx-build-lite.hwhx-progress .hwhx-status-badge[data-tone=active]{color:#a8d3fa;border-color:#6684a0}.hwhx-build-lite.hwhx-progress .hwhx-status-badge[data-tone=success]{color:#a8d9a8;border-color:#5d865d}.hwhx-build-lite.hwhx-progress .hwhx-status-badge[data-tone=warning]{color:#ead48f;border-color:#8e7a46}.hwhx-build-lite.hwhx-progress .hwhx-status-badge[data-tone=danger]{color:#efaaa6;border-color:#965b58}.hwhx-build-lite.hwhx-progress[data-hwhx-progress-style=compact]{width:min(360px,100vw - 16px)!important}.hwhx-build-lite.hwhx-progress[data-hwhx-progress-style=compact] .hwhx-status-badge__label{font-size:0}.hwhx-build-lite.hwhx-progress[data-hwhx-progress-style=compact] .hwhx-status-badge__label:before{content:"•";font-size:18px;line-height:1}.hwhx-build-lite.hwhx-progress[data-hwhx-progress-style=dashboard]{padding:0;width:min(800px,100vw - 16px)!important}.hwhx-build-lite.hwhx-progress[data-hwhx-progress-style=dashboard] .hwhx-progress__header{min-height:46px;padding:7px 9px}.hwhx-build-lite.hwhx-progress[data-hwhx-progress-style=dashboard] .hwhx-progress__body{padding:9px}.hwhx-build-lite.hwhx-progress [class^=hwhx-][class*=__icon]:empty,.hwhx-build-lite.hwhx-progress [class*= hwhx-][class*=__icon]:empty,.hwhx-build-lite.hwhx-progress .hwhx-progress__title-marker:empty{display:none!important}.hwhx-build-lite.hwhx-progress .hwhx-result-message{grid-template-columns:minmax(0,1fr)!important;min-height:0!important}.hwhx-build-lite.hwhx-progress .hwhx-progress-bar{background:#111;border:1px solid #666;height:8px}.hwhx-build-lite.hwhx-progress .hwhx-progress-bar__fill{background:#7abf7a;height:100%}.hwhx-build-lite.hwhx-toast-stack{z-index:12000;flex-direction:column;gap:5px;width:min(340px,100vw - 16px);font:14px/1.35 Arial,sans-serif;display:flex;position:fixed;top:8px;right:8px}.hwhx-build-lite.hwhx-toast-stack .hwhx-toast{color:#eee;box-sizing:border-box;background:#202020;border:1px solid #777;align-items:flex-start;gap:8px;padding:8px;display:flex;position:relative}.hwhx-build-lite.hwhx-toast-stack .hwhx-toast__icon:empty{display:none}.hwhx-build-lite.hwhx-toast-stack .hwhx-toast__content{flex:auto;min-width:0}.hwhx-build-lite.hwhx-toast-stack .hwhx-toast__title{font-weight:700}.hwhx-build-lite.hwhx-toast-stack .hwhx-toast__actions{flex-wrap:wrap;gap:5px;margin-top:6px;display:flex}.hwhx-build-lite.hwhx-tooltip{z-index:13000;color:#eee;background:#202020;border:1px solid #777;border-radius:2px;max-width:min(320px,100vw - 16px);padding:5px 7px;font:12px/1.3 Arial,sans-serif;position:fixed}.hwhx-build-lite.hwhx-splash{font-family:Arial,sans-serif}.hwhx-build-lite.hwhx-modal,.hwhx-build-lite.hwhx-modal *,.hwhx-build-lite.hwhx-progress,.hwhx-build-lite.hwhx-progress *,.hwhx-build-lite.hwhx-toast-stack,.hwhx-build-lite.hwhx-toast-stack *,.hwhx-build-lite.hwhx-tooltip,.hwhx-build-lite.hwhx-splash,.hwhx-build-lite.hwhx-splash *{scroll-behavior:auto!important;filter:none!important;backdrop-filter:none!important;box-shadow:none!important;text-shadow:none!important;transition:none!important;animation:none!important}@media (width<=640px){.hwhx-build-lite.hwhx-modal{padding:0}.hwhx-build-lite.hwhx-modal .hwhx-modal__dialog{border-radius:0;width:100vw!important;max-height:100vh!important}.hwhx-build-lite.hwhx-modal .hwhx-settings-row,.hwhx-build-lite.hwhx-modal .hwhx-settings-field,.hwhx-build-lite.hwhx-modal .hwhx-field-row,.hwhx-build-lite.hwhx-modal .hwhx-info-line{grid-template-columns:1fr}.hwhx-build-lite.hwhx-modal .hwhx-modal__actions{flex-direction:column}.hwhx-build-lite.hwhx-modal .hwhx-selection-label__details{display:none}}`;function T(){u(C,w)}function E(){T()}function D(){T()}function O(){T()}var ee=[`top-right`,`bottom-right`,`top-left`,`bottom-left`],k=`top-right`,te=1e4,ne=12e4,re=Object.freeze({position:k,stackSize:3,timeoutMs:te}),ie=new Set(ee);function ae(e){let t=String(e==null?``:e);return ie.has(t)?t:k}function oe(e){let t=Math.trunc(Number(e));return Number.isFinite(t)?Math.min(6,Math.max(1,t)):3}function se(e){let t=Math.trunc(Number(e));return Number.isFinite(t)?Math.min(ne,Math.max(0,t)):te}function ce(e){let t=ue(e)?e:{};return{position:ae(t.position),stackSize:oe(t.stackSize),timeoutMs:se(t.timeoutMs)}}function le(t=e()){try{var n;return ce(JSON.parse((n=t==null?void 0:t.getItem(`hwhx_toast_preferences`))==null?`null`:n))}catch(e){return console.warn(`[hwhx] Не удалось прочитать настройки уведомлений:`,e),{...re}}}function ue(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var A=le(),j=0,M=null,de=new Map;function fe(e){var t,n;O();let r=String((t=e.id)==null?ye():t);pe(r,`overflow`);let i=me(),a=ge(r,e),o=ce({timeoutMs:(n=e.timeoutMs)==null?A.timeoutMs:n}).timeoutMs,s={element:a,onClose:e.onClose,timeoutId:o>0?globalThis.setTimeout(()=>pe(r,`timeout`),o):null};return de.set(r,s),i.appendChild(a),ve(),r}function pe(e,t=`close`){var n;let r=de.get(e);r&&(de.delete(e),r.timeoutId!==null&&globalThis.clearTimeout(r.timeoutId),r.element.remove(),(n=r.onClose)==null||n.call(r,t),de.size===0&&(M==null||M.remove(),M=null))}function me(){return M!=null&&M.isConnected?M:(M=document.createElement(`div`),M.className=`hwhx-toast-stack hwhx-build-lite`,he(),document.body.appendChild(M),M)}function he(){if(!M)return;M.dataset.position=A.position,M.style.inset=`auto`;let e=A.position.startsWith(`bottom`),t=A.position.endsWith(`left`);M.style[e?`bottom`:`top`]=`8px`,M.style[t?`left`:`right`]=`8px`,M.style.flexDirection=e?`column-reverse`:`column`}function ge(e,t){var n;let r=document.createElement(`article`);r.className=`hwhx-toast`,r.dataset.tone=(n=t.tone)==null?`info`:n;let i=document.createElement(`div`);if(i.className=`hwhx-toast__content`,t.title){let e=document.createElement(`div`);e.className=`hwhx-toast__title`,e.textContent=t.title,i.appendChild(e)}if(t.text){let e=document.createElement(`div`);e.className=`hwhx-toast__text`,e.textContent=t.text,i.appendChild(e)}if(_e(i,e,t.actions),r.appendChild(i),t.closable!==!1){let n=document.createElement(`button`);n.type=`button`,n.className=`hwhx-icon-button`,n.textContent=`×`,n.ariaLabel=t.closeLabel||`Закрыть`,n.addEventListener(`click`,()=>pe(e,`close`)),r.appendChild(n)}return r}function _e(e,t,n){if(!Array.isArray(n)||n.length===0)return;let r=document.createElement(`div`);r.className=`hwhx-toast__actions`;for(let e of n){var i;if(!(e!=null&&e.id)||!e.label)continue;let n=document.createElement(e.href?`a`:`button`);n.className=`hwhx-button hwhx-button--mini`,n.textContent=e.label,n.dataset.tone=(i=e.tone)==null?`secondary`:i,n instanceof HTMLAnchorElement?(n.href=String(e.href),n.target=`_blank`,n.rel=`noopener noreferrer`):n.type=`button`,n.addEventListener(`click`,()=>{try{var n;Promise.resolve((n=e.onClick)==null?void 0:n.call(e)).catch(e=>console.error(`[hwhx] Ошибка действия уведомления:`,e))}catch(e){console.error(`[hwhx] Ошибка действия уведомления:`,e)}e.closeOnClick!==!1&&pe(t,`action`)}),r.appendChild(n)}r.childElementCount>0&&e.appendChild(r)}function ve(){for(;de.size>A.stackSize;){let e=de.keys().next().value;if(typeof e!=`string`)break;pe(e,`overflow`)}}function ye(){return j+=1,`hwhx-toast-${Date.now()}-${j}`}function be(e){return fe(e)}async function xe(e,t){return await t()}var Se=new Set([`https:`,`http:`]);function Ce(e){let t=String(e==null?``:e).trim();if(!t)return``;try{let e=new URL(t);return Se.has(e.protocol)?e.href:``}catch(e){return``}}var we=`https://greasyfork.org/ru/scripts/450693-herowarshelper`,Te=!1;function Ee(e){if(e==null)return``;let t=String(e).trim();return t.length>0?t:``}function De(e,t=we){return Ce(e)||t}function Oe({scriptName:e=``,installUrl:t=we}={}){if(typeof document>`u`||Te)return;if(!document.body){globalThis.setTimeout(()=>Oe({scriptName:e,installUrl:t}),0);return}let n=De(t),r=Ee(e);Te=!0,be({id:`hero-wars-helper-install`,title:`Нужен HeroWarsHelper`,text:`${r?`${r}: `:``}runtime игры не найден. Установите HeroWarsHelper и обновите вкладку.`,tone:`warning`,icon:`plug-zap`,actions:[{id:`install`,label:`Установить на GreasyFork`,icon:`download`,tone:`success`,href:n}],closeLabel:`Закрыть`,onClose:()=>{Te=!1}})}function ke(e=[`HWHClasses`,`HWHFuncs`,`HWHData`],t){let n=globalThis;if(!e.every(e=>!!n[e]))return!1;if(!t)return!0;try{return t()}catch(e){return!1}}function Ae({attempt:e=0,maxAttempts:t=120,delayMs:n=500,requiredKeys:r=[`HWHClasses`,`HWHFuncs`,`HWHData`],retry:i,readyWhen:a,logPrefix:o=`[HWH]`,scriptName:s=``,showInstallNotice:c=!0}={}){let l=Number(e)||0;return ke(r,a)?!0:li(l+1),n),!1):(console.log(`%c${o} Объект расширения не найден`,`color: red`),c&&Oe({scriptName:s}),!1)}var je=`none`,Me=`start`,Ne=`before:`,Pe=`after:`;function Fe(e,t){return typeof e==`object`&&!!e&&typeof e[t]==`function`}function Ie(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function Le(e){if(typeof e!=`function`)return!1;let t=e.prototype;return Fe(t,`start`)&&Fe(t,`end`)&&Fe(t,`errorHandling`)}function Re(e){return Le(e)?e:null}function ze(e){return Re(e==null?void 0:e.doYourBest)}function Be(e){var t;let n=Ie(e);return String((t=n==null?void 0:n.name)==null?``:t).trim()}function Ve(e){let t=Ie(e);return String((t==null?void 0:t.label)||(t==null?void 0:t.title)||(t==null?void 0:t.name)||``).trim()}function He(e,{allowStart:t=!1,fallbackValue:n=`end`}={}){let r=String(e==null?``:e).trim();return r===`none`||r===`end`||t&&r===`start`||r.startsWith(`before:`)&&r.length>7||r.startsWith(`after:`)&&r.length>6?r:n}function Ue(e){if(typeof e!=`function`)return e;let t=e;for(;;){let e=Object.getPrototypeOf(t.prototype);if(!e||e===Object.prototype)return t;let n=e.constructor;if(typeof n!=`function`||n===t)return t;t=n}}function We(e,{logPrefix:t=`[HWH]`}={}){let n=Re(e);if(!n)return[];try{let e=new n;return Array.isArray(e.funcList)?e.funcList.filter(Boolean):[]}catch(e){return console.warn(`${t} checklist snapshot failed`,e),[]}}function Ge({getDoYourBestClass:e,logPrefix:t=`[HWH]`}={}){return function(){return We(e==null?void 0:e(),{logPrefix:t})}}function Ke(e={}){return function(t){return He(t,e)}}function qe(e,t,{allowStart:n=!1,normalizePlacement:r=void 0}={}){let i=typeof r==`function`?r(t):He(t,{allowStart:n});if(n&&i===`start`)return 0;if(i===`end`)return e.length;let a=i.startsWith(Pe),o=i.slice(a?6:7),s=e.findIndex(e=>Be(e)===o);return s<0?e.length:s+ +!!a}function Je({taskList:e=[],translate:t,keys:n,includeStart:r=!1}={}){var i,a;let o=typeof t==`function`?t:e=>e,s=(e==null?[]:e).filter(e=>Be(e)),c=[{value:je,label:o((i=n==null?void 0:n.none)==null?`DO_YOUR_BEST_PLACEMENT_NONE`:i),icon:`x`}];if(r){var l;c.push({value:Me,label:o((l=n==null?void 0:n.start)==null?`DO_YOUR_BEST_PLACEMENT_START`:l),icon:`arrow-up-to-line`})}if(s.length<=0){var u;return c.push({value:`end`,label:o((u=n==null?void 0:n.end)==null?`DO_YOUR_BEST_PLACEMENT_END`:u),icon:`arrow-down`}),c}let d=s[0],f=Be(d),p=Ve(d)||f;return c.push({value:`${Ne}${f}`,label:o((a=n==null?void 0:n.before)==null?`DO_YOUR_BEST_PLACEMENT_BEFORE`:a,{label:p}),icon:`arrow-up`}),s.forEach(e=>{var t;let r=Be(e),i=Ve(e)||r;c.push({value:`${Pe}${r}`,label:o((t=n==null?void 0:n.after)==null?`DO_YOUR_BEST_PLACEMENT_AFTER`:t,{label:i}),icon:`arrow-down`})}),c}function Ye(e){return e===`gold`?`gold`:e===`blue`?`blue`:e===`pink`||e===`purple`?`purple`:`green`}function Xe({actionKey:e,color:t=`pink`,icon:n=``,getLabel:r,getTitle:i,onClick:a,buildIconLabel:o=(e,t)=>String(t==null?``:t),splash:s=!0}={}){let c=()=>typeof r==`function`?r():String(r==null?``:r),l=()=>typeof i==`function`?i():String(i==null?``:i),u=a?(...e)=>s?xe({title:String(c()),status:String(l()),icon:n||`settings-2`,tone:Ye(t)},()=>a(...e)):a(...e):void 0;function d(){return{get name(){return String(c())},get title(){return String(l())},color:t,onClick:u}}function f(){return{actionKey:e,get msg(){return String(o(n,c()))},get title(){return String(l())},color:t,result:u}}return{createMainButton:d,createOtherButton:f}}var Ze=`main`,Qe=`other`;function $e(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function et(e){return e!=null&&e.buttons&&typeof e.buttons==`object`?e.buttons:e.buttons={}}function tt(e){return Array.isArray(e==null?void 0:e.othersPopupButtons)?e.othersPopupButtons:e.othersPopupButtons=[]}function nt(e,t=Ze){return e===`other`||e===`main`?e:t}function rt({normalizePlacement:e=nt,readStoredPlacement:t,settings:n,settingsKey:r}){let i=$e(n)?n:{},a=$e(n)&&r?Object.prototype.hasOwnProperty.call(i,r)?i[r]:t==null?void 0:t():n;return e(a===void 0?t==null?void 0:t():a)}function it({HWHData:e,mainMenuButtons:t,othersPopupButtons:n,placement:r,mainKey:i,actionKey:a,createMainButton:o,createOtherButton:s,mainPlacementValue:c=Ze,otherPlacementValue:l=Qe}){let u=e==null?{}:e,d=t==null?et(u):t,f=n==null?tt(u):n,p=f.findIndex(e=>(e==null?void 0:e.actionKey)===a);return p>=0&&f.splice(p,1),i&&delete d[i],r===l&&typeof s==`function`?f.push(s()):i&&r===c&&typeof o==`function`&&(d[i]=o()),u.buttons=d,{mainMenuButtons:d,othersPopupButtons:f}}function at({normalizePlacement:e=nt,persistPlacement:t,readStoredPlacement:n,settings:r,settingsKey:i,...a}){let o=rt({normalizePlacement:e,readStoredPlacement:n,settings:r,settingsKey:i});return t==null||t(o),{...it({...a,placement:o}),placement:o}}function ot(e=`hwh`){if(typeof console>`u`)return;let t=globalThis,n={HWHClasses:t.HWHClasses,HWHFuncs:t.HWHFuncs,HWHData:t.HWHData,lib:t.lib,cheats:t.cheats,userId:t.userId},r=`[${e}] game library dump`,i=typeof console.groupCollapsed==`function`?console.groupCollapsed.bind(console):typeof console.group==`function`?console.group.bind(console):null,a=typeof console.groupEnd==`function`?console.groupEnd.bind(console):null;if(i&&a){i(r),Object.entries(n).forEach(([e,t])=>console.log(e,t)),a();return}console.log(r,n)}function st({cheats:e=globalThis.cheats,buildMessage:t=()=>``}={}){let n=e==null?void 0:e.refreshGame;return typeof n==`function`?(n.call(e),t()):``}function ct({settings:e,options:t=void 0,skipSource:n=`checklist`,runSync:r=st,buildSuccessMessage:i,buildFailureMessage:a=()=>``,logPrefix:o=`[HWHShared]`}={}){if(!(e!=null&&e.syncAfterRun)||(t==null?void 0:t.source)===n)return``;try{return r({buildMessage:i})}catch(e){return console.error(`${o} post-run sync failed`,e),a(e)}}function lt(e={}){return function(t={}){return ct({...e,...t})}}function ut(e=void 0){var t,n,r,i;let a=String((t=(n=globalThis.NXFlashVars)==null?void 0:n.interface_lang)==null?``:t).slice(0,2),o=String((r=(i=globalThis.navigator)==null?void 0:i.language)==null?``:r).slice(0,2),s=a||o||`en`;return e!=null&&e[s]?s:`en`}function dt(e,t){let n=String(e==null?``:e).trim(),r=String(t==null?``:t).trim();return!!n&&n!==r&&n!==`% ${r} %`&&n!==`%${r}%`&&!n.includes(`undefined`)}function ft({I18N:e,cheats:t,i18nLangData:n,defaultLanguage:r=`en`,fallbackLanguage:i=`en`,preferGameI18N:a=!0,forceLanguage:o=void 0,cacheMissingTranslations:s=!1}={}){var c;let l=new Map,u=(c=o==null?ut(n):o)==null?r:c,d=e=>{var t,a,o,s,c,l;return String((t=(a=(o=n==null||(s=n[u])==null?void 0:s[e])==null?n==null||(c=n[i])==null?void 0:c[e]:o)==null?n==null||(l=n[r])==null?void 0:l[e]:a)==null?``:t)};return function(n,r){let i=String(n==null?``:n),o=l.get(i),c=o==null?``:o;if(o===void 0){if(a||(c=d(i)),!dt(c,i)&&typeof e==`function`)try{var u;c=String((u=e(i))==null?``:u)}catch(e){c=``}if(!dt(c,i)&&typeof(t==null?void 0:t.translate)==`function`)try{var f;c=String((f=t.translate(i))==null?``:f)}catch(e){c=``}dt(c,i)||(c=d(i)),dt(c,i)||(c=i),(s||c!==i)&&l.set(i,c)}if(r)for(let[e,t]of Object.entries(r))c=String(c).split(`{${e}}`).join(String(t));return String(c)}}var pt;function mt(e,t){return pt!=null||(pt=new Intl.Collator(`ru`)),pt.compare(String(e==null?``:e),String(t==null?``:t))}var ht={"~dC":`Starting extension {name} by {author} (v.{version})`,"~dp":`Game runtime is still missing. The code is pretending not to exist again.`,"~dU":`userId still did not show up. The game decided to stay mysterious.`,"~bZ":`Titan artifacts`,"~c0":`Levels selected titan artifacts by the configured titan and artifact priority.`,"~eZ":`Titans`,"~f3":`Opens titan level, artifact and skin tools.`,"~fR":`General`,"~fQ":`Artifacts`,"~fS":`Levels`,"~fT":`Skins`,"~fU":`Additional`,"~fb":`Project support`,"~fa":`Direct transfer to an Alfa Bank card. No wallet relay, no mystery payment circus.`,"~fc":`Alfa Bank card: {wallet}`,"~f8":`Donation QR code`,"~f9":`Bank transfer`,"~fP":`Ready`,"~fg":`If you have problems not covered in the documentation, or a suggestion, please message me in`,"~f7":`Documentation`,"~f6":`Useful links for setup, mirrors and the shared UI kit.`,"~f5":`Documentation`,"~f4":`Mirror {number}`,"~fd":`Game library`,"~fe":`Print Hero Wars runtime and library objects to the console.`,"~ff":`Export settings`,"~fs":`Import settings`,"~fJ":`Run current tab`,"~ft":`Interface and information panel`,HWHTITANTRAINER_UI_THEME_LABEL:`Interface theme`,HWHTITANTRAINER_UI_THEME_CLASSIC:`Classic`,HWHTITANTRAINER_UI_THEME_DOMINION:`Golden Dominion`,HWHTITANTRAINER_UI_THEME_ASTRAL_PREMIERE:`Astral Premiere`,HWHTITANTRAINER_UI_THEME_EMERALD_CROWN:`Emerald Crown`,HWHTITANTRAINER_UI_THEME_STORM_WORKSHOP:`Storm Workshop`,HWHTITANTRAINER_UI_THEME_FLAT_GRAPHITE:`Flat Graphite`,HWHTITANTRAINER_UI_THEME_FLUENT_2_DARK:`Fluent 2 Dark`,HWHTITANTRAINER_UI_THEME_MATERIAL_3_EXPRESSIVE:`Material 3 Expressive`,HWHTITANTRAINER_UI_THEME_CONTRAST_AMBER:`Contrast Amber`,"~fV":`Show interface tooltips`,"~eX":`Accordion auto-scroll`,"~eY":`Controls whether opened accordions scroll into view automatically.`,"~fG":`Reorder controls`,"~fH":`Full`,"~fI":`Minimal`,"~fW":`Upgrade distribution`,"~fY":`Sequential`,"~fX":`Parallel by cost`,"~fu":`Priority order is disabled in parallel mode: the cheapest available next upgrade is selected automatically.`,"~fh":`Hotkeys`,"~fm":`Open settings`,"~fo":`Run all modules`,"~fp":`Level artifacts`,"~fq":`Level titans`,"~fr":`Level skins`,"~fl":`Not assigned`,"~fi":`Record shortcut`,"~fn":`Press a shortcut`,"~fj":`Clear shortcut`,"~fk":`Shortcut is already assigned`,"~fv":`Hide result window by timeout`,"~fw":`Result timeout, ms`,"~fF":`Information panel`,"~fx":`Result window position`,"~fz":`Top center`,"~fA":`Top right`,"~fy":`Bottom right`,"~fB":`Result window style`,"~fE":`Default`,"~fC":`Compact`,"~fD":`Panel`,"~fK":`Settings exported to JSON.`,"~fL":`Settings imported.`,"~fN":`This JSON is not a HWH Titan Trainer settings export.`,"~fO":`Could not parse JSON settings.`,"~fM":`Settings import failed: {message}`,"~dT":`Titan artifact settings`,"~ct":`Select titans for artifact leveling and set artifact priority with a level limit inside each titan.`,"~dt":`Selected titans`,"~dS":`Titan list`,"~dc":`Artifact priority`,"~dd":`Titan order is read from top to bottom. Inside each titan, selected artifacts are leveled in their own order up to their own level limit.`,"~bU":`Artifact order`,"~d0":`+{amount} levels`,"~c2":`Cost calculator`,"~cd":`Titan`,"~c3":`Artifact`,"~cb":`Skin`,"~c7":`From level`,"~cf":`To level`,"~ce":`Total`,"~cc":`Per level`,"~c5":`Select a higher end level.`,"~c6":`Enough: {amount}`,"~ca":`Missing: {amount}`,"~c9":`Lv. {level}`,"~c8":`Level`,"~c4":`Cost`,"~dl":`Resource`,"~cD":`Essence reserve`,"~dA":`Artifacts to level`,"~dB":`Only the selected artifact slots are included in leveling. The third one spends gold, because of course it does.`,"~cY":`Leveling`,"~dm":`Resources`,"~bY":`Automation`,"~cF":`Evolution`,"~cG":`Evolve selected artifacts`,"~c1":`Buy missing fragments`,"~cH":`Artifacts to evolve`,"~cM":`Artifacts to buy fragments for`,"~cE":`Maximum artifact star`,"~d2":`Nothing selected`,"~d4":`{count} selected`,"~d3":`Search`,"~d5":`All`,"~d1":`Reset`,"~dv":`No matching options`,"~cN":`Element tournament coin reserve`,"~cO":`Element tournament coins`,"~cZ":`Limit`,"~eC":`Limit`,"~gj":`Max mode spends the available budget up to limits. Amount mode asks for a run cap.`,"~gz":`Sequential mode follows the configured order. Parallel mode selects the cheapest available next upgrade across all selected targets.`,"~gd":`Controls whether Do all skips this module or uses the default amount in Amount mode.`,"~ge":`How many upgrades Do all may perform when Amount mode uses the default.`,"~gt":`Refreshes game data after successful work so the UI catches up.`,"~g4":`Enables this artifact slot for level upgrades.`,"~g3":`The script will not level this artifact slot above this level.`,"~gf":`Artifact essence that must remain untouched.`,"~gi":`Gold that must remain untouched for seal upgrades.`,"~gh":`Element tournament coins that must remain untouched when buying fragments.`,"~gg":`Allows titan artifact evolution for selected artifacts.`,"~g6":`Allows buying missing fragments from the element tournament shop.`,"~g0":`Upper star limit for artifact evolution and fragment need calculation.`,"~g1":`Artifacts selected here may be evolved if there are enough fragments.`,"~g2":`Fragments are bought only for artifacts selected here. Only first and second artifacts are buyable.`,"~gl":`Shows next artifact upgrade costs in the titan list.`,"~gw":`The script will not level selected titans above this level.`,"~gk":`Titan XP potions that must remain untouched.`,"~g7":`Buys only the XP potions missing for the current plan from the Titan Soul shop.`,"~gs":`Titan Soul coins that must remain untouched when buying XP potions.`,"~gm":`Shows next titan level cost in the titan list.`,"~gn":`Shows titan star and soul fragment progress in the titan list.`,"~gv":`Titans selected here may be evolved if enough soul fragments exist.`,"~gu":`Upper star limit for titan evolution.`,"~gp":`Enables this skin type for titan skin upgrades.`,"~gq":`The script will not level this skin type above this level.`,"~gr":`Titan skin stones that must remain untouched.`,"~go":`Shows next titan skin upgrade costs in the titan list.`,"~gb":`Titan used only for this cost calculation.`,"~g8":`Artifact slot used only for this cost calculation.`,"~ga":`Skin type used only for this cost calculation.`,"~g9":`Current level for the calculation.`,"~gc":`Target level. It is capped by game data.`,"~gy":`Disables or enables custom tooltips inside script windows.`,"~gx":`Changes only the titan settings window theme. Other scripts keep their own theme.`,"~dz":`Show next artifact upgrade cost in titan list`,"~cV":`Leveling mode`,"~cX":`To maximum`,"~cW":`Ask amount on start`,"~cR":`Levels to upgrade`,"~cU":`Upgrade amount`,"~cT":`How many levels should this run upgrade?`,"~cS":`OK`,"~ch":`Do all amount mode`,"~ci":`Ignore module`,"~cg":`Use default amount`,"~co":`Default levels for Do all`,"~cl":`Fragments in Do all`,"~cn":`Use artifact settings`,"~cm":`Do not buy fragments`,"~ck":`Do all: module skipped because amount mode needs a level count.`,"~cj":`Controls what happens when Do all starts this module while leveling mode is Ask amount on start.`,"~dL":`Run synchronization after work`,"~da":`Synchronization done.`,"~db":`Synchronization failed. Details are in the console, naturally.`,"~cK":`First artifact`,"~dr":`Second artifact`,"~dP":`Third artifact`,"~cL":`First artifact limit`,"~ds":`Second artifact limit`,"~dQ":`Third artifact limit`,"~cP":`Gold reserve`,"~cQ":`Gold`,"~bS":`All titan artifacts are already at maximum level.`,"~dx":`Could not save settings. The popup got dramatic again.`,"~dq":`Save settings`,"~dy":`saved`,"~du":`Select all`,"~cp":`Clear all`,"~do":`Start leveling`,"~cq":`Close`,"~d6":`Nothing is selected yet. Very minimalist strategy, truly.`,"~d8":`not unlocked`,"~d9":`This titan is not unlocked, so there is nothing to level here yet.`,"~dw":`Select titans first. The script is not guessing your priorities from the void.`,"~d7":`Nothing to level. Either the resource is gone, or the selected artifacts are already at the useful ceiling.`,"~di":`Building the upgrade queue. We are trying to spend the resource with at least some dignity.`,"~dj":`Loading titan artifact fragment shop. Commerce, sadly, remains undefeated.`,"~de":`Buying {artifactName}: {amount} fragments`,"~dh":`Evolving {titanName} · {slot} · {fromStar} → {toStar}`,"~dk":`Leveling {titanName} · {slot} · {fromLevel} → {toLevel}`,"~df":`Leveling complete. {count} upgrades were pushed through.`,"~dg":`Leveling crashed mid-process. The console already has the usual horror story.`,"~dK":`Upgrades`,"~dG":`Evolutions`,"~dH":`Fragment purchases`,"~dE":`No artifact evolutions.`,"~dF":`No fragments were bought.`,"~dJ":`Spent`,"~dD":`Nothing was leveled. The resource survived.`,"~dI":`{resourceName}: -{spentAmount} ({leftAmount})`,"~dR":`Titan {id}`,"~bW":`slot {slot}`,"~bX":`Weapon`,"~bT":`Crown`,"~bV":`Seal`,"~dn":`Artifact resource`,"~cC":`Something went wrong. The console is already collecting evidence.`,"~dX":`Titan levels`,"~dY":`Levels selected titans by the cheapest next levels first.`,"~eu":`Titan level settings`,"~e0":`Select titans for level-up. The queue is built from the cheapest next levels, not from mindless potion dumping.`,"~ef":`Potions`,"~e6":`Potion reserve`,"~ek":`Show next level cost in titan list`,"~ej":`Show evolution progress in titan list`,"~e4":`Titan level limit`,"~et":`Target level`,"~e7":`Titan level priority`,"~e8":`In sequential mode titans are leveled from top to bottom. Every titan keeps its own target level.`,"~dZ":`Buy missing XP potions`,"~el":`Titan Soul coin reserve`,"~e3":`Titans to evolve`,"~e2":`Maximum titan star`,"~eo":`Titan evolutions`,"~en":`No titan evolutions.`,"~ec":`Evolving {titanName}: {fromStar} → {toStar}`,"~eh":`Start leveling`,"~ei":`Select titans first. The script is still not a fortune teller.`,"~e5":`Nothing to level. Either potions are gone, or selected titans already hit the ceiling.`,"~ed":`Building the titan level queue. We are trying not to waste potions like amateurs.`,"~fZ":`Refreshing the game state after applying changes.`,"~ee":`Leveling {titanName} · {fromLevel} → {toLevel}`,"~e9":`Buying {potionAmount} XP potions for {coinAmount} Titan Soul coins`,"~ea":`Titan leveling complete. {count} upgrades went through.`,"~eb":`Titan leveling crashed. The console already knows why, probably.`,"~ep":`Titan levels`,"~es":`Spent`,"~em":`Nothing was leveled. The potion stash survives for another day.`,"~er":`{resourceName}: -{spentAmount} ({leftAmount})`,"~eq":`Bought potions: +{potionAmount}; Titan Soul coins: -{coinSpentAmount} ({coinLeftAmount})`,"~eg":`Titan potion`,"~e1":`ABS`,"~ev":`Titan skins`,"~ew":`Levels selected titan skins by the configured titan and skin priority.`,"~eW":`Titan skin settings`,"~ey":`Select titans for skin leveling and set skin priority with a level limit inside each titan.`,"~eL":`Skin stones`,"~eK":`Skin stone reserve`,"~ez":`Skins to level`,"~eE":`Skin priority`,"~eF":`Titan order is read from top to bottom. Inside each titan, selected skins are leveled in their own order up to their own level limit.`,"~eR":`Skin order`,"~eA":`Filters are grouped by shared localeKey so the per-titan config clones do not turn the popup into a landfill.`,"~eB":`Skin level limit`,"~eP":`Show next skin upgrade cost in titan list`,"~eN":`Start leveling`,"~eO":`Select titans first. The script is still not supposed to guess your priorities.`,"~eD":`Nothing to level. Either skin stones are gone, or the selected skins already hit the ceiling.`,"~eI":`Building the titan skin queue. We are trying not to burn stones like total savages.`,"~eJ":`Leveling {titanName} · {skinName} · {fromLevel} → {toLevel}`,"~eG":`Titan skin leveling complete. {count} upgrades went through.`,"~eH":`Titan skin leveling crashed. The console already wrote the obituary.`,"~eU":`Titan skins`,"~eV":`Spent`,"~eS":`Nothing was leveled. The skin stones remain unmolested.`,"~eT":`{resourceName}: -{spentAmount} ({leftAmount})`,"~eM":`Titan skin stone`,"~eQ":`Skin {id}`,"~ex":`Titan skin config is empty. The game hid the skins again.`,"~cI":`Feedback`,"~cJ":`Opens Telegram. For feedback, bug reports, gratitude, or the usual respectable swearing.`,"~dV":`What's new`,"~dW":`Opens the version history page for this script.`,"~cr":`Close`,"~cs":`Closes the popup without inventing extra drama.`,"~dN":`Titans: levels`,"~dM":`Titans: artifacts`,"~dO":`Titans: skins`,"~cx":`Do all checkbox`,"~cz":`Titan checkboxes position`,"~cA":`Do not add`,"~cB":`At the top`,"~cw":`At the bottom`,"~cv":`Before: {label}`,"~cu":`After: {label}`,"~cy":`Choose where the script inserts its titan checkboxes inside the Do all list.`,"~f0":`Titans button`,"~f1":`Main menu`,"~f2":`Other menu`,"~g5":`Moves the Titans button between the main menu and the Other menu.`},gt={"~dC":`Старт расширения {name} от {author} (v.{version})`,"~dp":`Игровой рантайм ещё не загрузился. Код снова делает вид, что его нет.`,"~dU":`userId так и не появился. Игра решила поиграть в загадочность.`,"~bZ":`Артефакты титанов`,"~c0":`Качает артефакты выбранных титанов по заданному порядку титанов и артефактов.`,"~eZ":`Титаны`,"~f3":`Открывает прокачку уровней, артефактов и обликов титанов.`,"~fR":`Общее`,"~fQ":`Артефакты`,"~fS":`Уровни`,"~fT":`Облики`,"~fU":`Дополнительно`,"~fb":`Поддержка проекта`,"~fa":`Прямой перевод на карту Альфа-Банка. Без старого кошелька и платежного цирка.`,"~fc":`Карта Альфа-Банка: {wallet}`,"~f8":`QR-код для доната`,"~f9":`Банковский перевод`,"~fP":`Готов к работе`,"~fg":`Если у Вас возникли проблемы не описанные в документации, или же есть пожелание, просьба отписать мне в`,"~f7":`Документация`,"~f6":`Полезные ссылки по установке, зеркалам и общему UI kit.`,"~f5":`Документация`,"~f4":`Зеркало {number}`,"~fd":`Игровая библиотека`,"~fe":`Вывести runtime Hero Wars и игровые библиотеки в консоль.`,"~ff":`Экспорт настроек`,"~fs":`Импорт настроек`,"~fJ":`Запустить вкладку`,"~ft":`Интерфейс и информационная панель`,HWHTITANTRAINER_UI_THEME_LABEL:`Тема интерфейса`,HWHTITANTRAINER_UI_THEME_CLASSIC:`Классическая`,HWHTITANTRAINER_UI_THEME_DOMINION:`Золотой Доминион`,HWHTITANTRAINER_UI_THEME_ASTRAL_PREMIERE:`Астральная премьера`,HWHTITANTRAINER_UI_THEME_EMERALD_CROWN:`Изумрудная корона`,HWHTITANTRAINER_UI_THEME_STORM_WORKSHOP:`Штормовая мастерская`,HWHTITANTRAINER_UI_THEME_FLAT_GRAPHITE:`Плоский графит`,HWHTITANTRAINER_UI_THEME_FLUENT_2_DARK:`Fluent 2 темная`,HWHTITANTRAINER_UI_THEME_MATERIAL_3_EXPRESSIVE:`Material 3 Expressive`,HWHTITANTRAINER_UI_THEME_CONTRAST_AMBER:`Контрастный янтарь`,"~fV":`Показывать всплывающие подсказки`,"~eX":`Прокрутка аккордеонов`,"~eY":`Управляет автопрокруткой открытого аккордеона в видимую область.`,"~fG":`Кнопки сортировки списков`,"~fH":`Полный`,"~fI":`Минимальный`,"~fW":`Распределение прокачки`,"~fY":`Последовательно`,"~fX":`Параллельно по цене`,"~fu":`В параллельном режиме порядок отключен: скрипт сам выбирает самое дешевое доступное следующее улучшение.`,"~fh":`Горячие клавиши`,"~fm":`Открыть настройки`,"~fo":`Запустить все модули`,"~fp":`Прокачать артефакты`,"~fq":`Прокачать уровни`,"~fr":`Прокачать облики`,"~fl":`Не назначено`,"~fi":`Записать сочетание`,"~fn":`Нажми сочетание`,"~fj":`Очистить сочетание`,"~fk":`Сочетание уже назначено`,"~fv":`Скрывать окно результата по таймауту`,"~fw":`Таймаут результата, мс`,"~fF":`Информационная панель`,"~fx":`Положение окна результата`,"~fz":`Сверху по центру`,"~fA":`Правый верхний угол`,"~fy":`Правый нижний угол`,"~fB":`Стиль окна результата`,"~fE":`Обычный`,"~fC":`Компактный`,"~fD":`Панель`,"~fK":`Настройки выгружены в JSON.`,"~fL":`Настройки импортированы.`,"~fN":`Этот JSON не похож на экспорт HWH Titan Trainer.`,"~fO":`Не удалось прочитать JSON настроек.`,"~fM":`Импорт настроек упал: {message}`,"~dT":`Настройки артефактов титанов`,"~ct":`Выбери титанов для прокачки артефактов и задай внутри каждого порядок артефактов с отдельным лимитом уровня.`,"~dt":`Выбрано титанов`,"~dS":`Список титанов`,"~dc":`Приоритет артефактов`,"~dd":`Порядок титанов читается сверху вниз. Внутри титана выбранные артефакты качаются в своём порядке и до своего лимита уровня.`,"~bU":`Порядок артефактов`,"~d0":`+{amount} ур.`,"~c2":`Калькулятор стоимости`,"~cd":`Титан`,"~c3":`Артефакт`,"~cb":`Облик`,"~c7":`С уровня`,"~cf":`До уровня`,"~ce":`Итого`,"~cc":`По уровням`,"~c5":`Выбери конечный уровень выше начального.`,"~c6":`Хватает: {amount}`,"~ca":`Не хватает: {amount}`,"~c9":`Ур. {level}`,"~c8":`Уровень`,"~c4":`Цена`,"~dl":`Ресурс`,"~cD":`Остаток эссенции`,"~dA":`Какие артефакты качать`,"~dB":`В прокачку идут только отмеченные слоты артефактов. Третий жрёт золото, ну конечно же.`,"~cY":`Прокачка`,"~dm":`Ресурсы`,"~bY":`Автоматизация`,"~cF":`Эволюция`,"~cG":`Эволюционировать выбранные артефакты`,"~c1":`Докупать недостающие фрагменты`,"~cH":`Какие артефакты эволюционировать`,"~cM":`Для каких артефактов докупать фрагменты`,"~cE":`Максимальная звезда артефакта`,"~d2":`Ничего не выбрано`,"~d4":`Выбрано: {count}`,"~d3":`Поиск`,"~d5":`Все`,"~d1":`Сброс`,"~dv":`Ничего не найдено`,"~cN":`Остаток монет турнира стихий`,"~cO":`Монеты турнира стихий`,"~cZ":`Лимит`,"~eC":`Лимит`,"~gj":`Максимум тратит доступный бюджет до лимитов. N-уровни спрашивают ограничение на запуск.`,"~gz":`Последовательный режим идет по заданному порядку. Параллельный выбирает самое дешевое следующее улучшение среди всех выбранных целей.`,"~gd":`Что делать в «Сделать всё», если у модуля выбран режим N-уровней.`,"~ge":`Сколько улучшений разрешено модулю при запуске из «Сделать всё».`,"~gt":`Обновляет данные игры после успешной работы, чтобы интерфейс не врал.`,"~g4":`Разрешает прокачивать этот слот артефакта.`,"~g3":`Выше этого уровня скрипт этот слот артефакта не качает.`,"~gf":`Сколько эссенции артефактов надо оставить нетронутой.`,"~gi":`Сколько золота надо оставить нетронутым для прокачки печатей.`,"~gh":`Сколько монет турнира стихий нельзя тратить на фрагменты.`,"~gg":`Разрешает эволюционировать выбранные артефакты титанов.`,"~g6":`Разрешает докупать недостающие фрагменты в магазине турнира стихий.`,"~g0":`Потолок звёзд для эволюции артефактов и расчёта нужных фрагментов.`,"~g1":`Только выбранные здесь артефакты будут эволюционировать.`,"~g2":`Фрагменты покупаются только для выбранных здесь артефактов. Купить можно только 1 и 2 артефакт.`,"~gl":`Показывает цену следующей прокачки артефактов в списке титанов.`,"~gw":`Выше этого уровня скрипт выбранных титанов не качает.`,"~gk":`Сколько зелий опыта титанов надо оставить нетронутыми.`,"~g7":`Докупает в магазине душ титанов только те зелья опыта, которых не хватает текущему плану.`,"~gs":`Сколько монет душ титанов нельзя тратить на покупку зелий опыта.`,"~gm":`Показывает цену следующего уровня в списке титанов.`,"~gn":`Показывает звёзды титана и прогресс фрагментов душ в списке.`,"~gv":`Только выбранные здесь титаны будут эволюционировать.`,"~gu":`Потолок звёзд для эволюции титанов.`,"~gp":`Разрешает прокачивать этот тип облика.`,"~gq":`Выше этого уровня скрипт этот тип облика не качает.`,"~gr":`Сколько монет обликов титанов надо оставить нетронутыми.`,"~go":`Показывает цену следующей прокачки обликов в списке титанов.`,"~gb":`Титан только для расчёта стоимости.`,"~g8":`Слот артефакта только для расчёта стоимости.`,"~ga":`Тип облика только для расчёта стоимости.`,"~g9":`Текущий уровень для расчёта.`,"~gc":`Целевой уровень. Ограничен данными игры.`,"~gy":`Включает или отключает кастомные подсказки внутри окон скрипта.`,"~gx":`Меняет тему только у окон титанов. Остальные скрипты не трогаем, хватит уже этого балагана.`,"~dz":`Показывать цену следующего уровня в списке титанов`,"~cV":`Режим прокачки`,"~cX":`На максимум`,"~cW":`Спросить при запуске`,"~cR":`Сколько уровней качать`,"~cU":`Сколько уровней качать`,"~cT":`Сколько уровней прокачать именно в этом запуске?`,"~cS":`Ок`,"~ch":`N-уровни в «Сделать всё»`,"~ci":`Пропускать модуль`,"~cg":`Брать значение по умолчанию`,"~co":`Уровни по умолчанию для «Сделать всё»`,"~cl":`Фрагменты за монеты в «Сделать всё»`,"~cn":`Как в настройках артефактов`,"~cm":`Не докупать фрагменты`,"~ck":`«Сделать всё»: модуль пропущен, потому что режим N-уровней требует количество.`,"~cj":`Что делать, когда «Сделать всё» запускает этот модуль, а режим прокачки стоит «Спросить при запуске».`,"~dL":`Запускать синхронизацию после работы`,"~da":`Синхронизация выполнена.`,"~db":`Синхронизация упала. Подробности, как обычно, в консоли.`,"~cK":`Первый артефакт`,"~dr":`Второй артефакт`,"~dP":`Третий артефакт`,"~cL":`Лимит первого артефакта`,"~ds":`Лимит второго артефакта`,"~dQ":`Лимит третьего артефакта`,"~cP":`Остаток золота`,"~cQ":`Золото`,"~bS":`У титана все артефакты уже максимального уровня.`,"~dx":`Настройки не сохранились. Попап опять решил покапризничать.`,"~dq":`Сохранить настройки`,"~dy":`сохранено`,"~du":`Выбрать всё`,"~cp":`Снять всё`,"~do":`Запустить прокачку`,"~cq":`Закрыть`,"~d6":`Пока ничего не выбрано. Стратегия уровня «ну и ладно».`,"~d8":`не открыт`,"~d9":`Этот титан у тебя не открыт, так что качать там пока особо нечего.`,"~dw":`Сначала выбери титанов. Скрипт не обязан угадывать твои планы по звёздам.`,"~d7":`Качать нечего. Либо ресурс закончился, либо выбранные арты уже упёрлись в потолок.`,"~di":`Строим очередь прокачки. Пытаемся слить ресурс хотя бы без откровенного позора.`,"~dj":`Загружаем магазин фрагментов артефактов титанов. Без торговли никуда, ага.`,"~de":`Покупаем {artifactName}: {amount} фрагм.`,"~dh":`Эволюция {titanName} · {slot} · {fromStar} → {toStar}`,"~dk":`Качаем {titanName} · {slot} · {fromLevel} → {toLevel}`,"~df":`Прокачка закончена. Протолкнули {count} улучшений.`,"~dg":`Прокачка рухнула посреди процесса. В консоли уже лежит весь привычный цирк.`,"~dK":`Прокачали`,"~dG":`Эволюция`,"~dH":`Покупка фрагментов`,"~dE":`Эволюции артефактов не было.`,"~dF":`Фрагменты не покупали.`,"~dJ":`Потратили`,"~dD":`Ничего не прокачали. Ресурс пока выжил.`,"~dI":`{resourceName}: -{spentAmount} ({leftAmount})`,"~dR":`Титан {id}`,"~bW":`слот {slot}`,"~bX":`Оружие`,"~bT":`Корона`,"~bV":`Печать`,"~dn":`Ресурс артефактов`,"~cC":`Что-то опять пошло не так. Консоль, как обычно, всё видела.`,"~dX":`Уровни титанов`,"~dY":`Качает уровни выбранных титанов, начиная с самых дешёвых следующих уровней.`,"~eu":`Настройки уровней титанов`,"~e0":`Выбери титанов для прокачки уровней. Очередь строится по самым дешёвым следующим уровням, а не по тупому сливу зелий в первого попавшегося.`,"~ef":`Зелья`,"~e6":`Остаток зелий`,"~ek":`Показывать цену следующего уровня в списке титанов`,"~ej":`Показывать прогресс эволюции в списке титанов`,"~e4":`Лимит уровня титана`,"~et":`До уровня`,"~e7":`Приоритет уровней титанов`,"~e8":`В последовательном режиме титаны качаются сверху вниз. У каждого титана остается свой целевой уровень.`,"~dZ":`Докупать недостающие зелья опыта`,"~el":`Остаток монет душ титанов`,"~e3":`Каких титанов эволюционировать`,"~e2":`Максимальная звезда титана`,"~eo":`Эволюция титанов`,"~en":`Эволюции титанов не было.`,"~ec":`Эволюция {titanName}: {fromStar} → {toStar}`,"~eh":`Запустить прокачку`,"~ei":`Сначала выбери титанов. Скрипт всё ещё не обязан угадывать твои планы.`,"~e5":`Качать нечего. Либо зелья закончились, либо выбранные титаны уже упёрлись в потолок.`,"~ed":`Строим очередь уровней титанов. Пытаемся не сливать зелья как последние варвары.`,"~fZ":`Обновляем состояние игры после применения изменений.`,"~ee":`Качаем {titanName} · {fromLevel} → {toLevel}`,"~e9":`Покупаем {potionAmount} зелий опыта за {coinAmount} монет душ титанов`,"~ea":`Прокачка титанов закончена. Протолкнули {count} улучшений.`,"~eb":`Прокачка титанов рухнула. Консоль, как обычно, уже всё знает.`,"~ep":`Уровни титанов`,"~es":`Потратили`,"~em":`Ничего не прокачали. Склад зелий пока жив.`,"~er":`{resourceName}: -{spentAmount} ({leftAmount})`,"~eq":`Купили зелий: +{potionAmount}; монеты душ титанов: -{coinSpentAmount} ({coinLeftAmount})`,"~eg":`Зелье титанов`,"~e1":`ABS`,"~ev":`Облики титанов`,"~ew":`Качает облики выбранных титанов по заданному порядку титанов и обликов.`,"~eW":`Настройки обликов титанов`,"~ey":`Выбери титанов для прокачки обликов и задай внутри каждого порядок обликов с отдельным лимитом уровня.`,"~eL":`Монеты обликов`,"~eK":`Остаток монет обликов`,"~ez":`Какие облики качать`,"~eE":`Приоритет обликов`,"~eF":`Порядок титанов читается сверху вниз. Внутри титана выбранные облики качаются в своём порядке и до своего лимита уровня.`,"~eR":`Порядок обликов`,"~eA":`Фильтры сгруппированы по общему localeKey, чтобы одинаковые конфиги для каждого титана не превращали попап в помойку.`,"~eB":`Лимит уровня облика`,"~eP":`Показывать цену следующего уровня облика в списке титанов`,"~eN":`Запустить прокачку`,"~eO":`Сначала выбери титанов. Скрипт всё ещё не обязан угадывать твои хотелки.`,"~eD":`Качать нечего. Либо монеты обликов закончились, либо выбранные облики уже упёрлись в потолок.`,"~eI":`Строим очередь обликов титанов. Пытаемся не спалить монеты как пещерные люди.`,"~eJ":`Качаем {titanName} · {skinName} · {fromLevel} → {toLevel}`,"~eG":`Прокачка обликов титанов закончена. Протолкнули {count} улучшений.`,"~eH":`Прокачка обликов титанов рухнула. Консоль уже привычно хранит весь кринж.`,"~eU":`Облики титанов`,"~eV":`Потратили`,"~eS":`Ничего не прокачали. Монеты обликов пока не пострадали.`,"~eT":`{resourceName}: -{spentAmount} ({leftAmount})`,"~eM":`Монета облика титана`,"~eQ":`Облик {id}`,"~ex":`Конфиг обликов титанов пустой. Игра опять решила спрятать данные.`,"~cI":`Обратная связь`,"~cJ":`Открывает Telegram. Для фидбэка, багов, благодарностей и умеренно культурного мата.`,"~dV":`Что нового`,"~dW":`Открывает страницу истории версий этого скрипта.`,"~cr":`Закрыть`,"~cs":`Закрывает попап без лишней драмы.`,"~dN":`Титаны: уровни`,"~dM":`Титаны: артефакты`,"~dO":`Титаны: облики`,"~cx":`Галочка «Сделать всё»`,"~cz":`Куда поставить галочку`,"~cA":`Не добавлять`,"~cB":`В начало`,"~cw":`В конец`,"~cv":`Перед: {label}`,"~cu":`После: {label}`,"~cy":`Выбирает, куда скрипт вставит свои титановые галочки внутри списка «Сделать всё».`,"~f0":`Кнопка «Титаны»`,"~f1":`Главное меню`,"~f2":`Разное`,"~g5":`Переносит кнопку «Титаны» между главным меню и разделом «Разное».`};function _t(e){e.en!=null||(e.en={}),e.ru!=null||(e.ru={}),Object.assign(e.en,ht),Object.assign(e.ru,gt)}async function vt({isReady:e,timeoutMs:t=5e3,pollDelayMs:n=100,errorMessage:r=`Runtime is not ready.`}={}){if(typeof e!=`function`)throw Error(`Runtime wait requires isReady predicate.`);let i=Date.now(),a=Math.max(0,Number(t)||0),o=Math.max(0,Number(n)||0);for(;Date.now()-i{throw i&&(a=void 0),e})),a}function c(){a=void 0}return{ensureReady:s,reset:c,waitReady:o}}function bt({timeoutMs:e=5e3,pollDelayMs:t=100,errorMessage:n=`User id is not ready.`,getUserId:r=()=>globalThis.userId,resetOnError:i=!0}={}){let a,o=yt({timeoutMs:e,pollDelayMs:t,errorMessage:n,resetOnError:i,isReady:()=>{let e=r();return e==null||e===``?!1:(a=e,e)}});async function s(){if(a!=null&&a!==``)return a;let e=r();if(e!=null&&e!==``)return a=e,a;let t=await o.ensureReady();if(t==null||t===``)throw Error(typeof n==`function`?n():n);return a=t,a}function c(){a=void 0,o.reset()}return{ensureReady:s,reset:c,waitReady:o.waitReady,get value(){return a}}}function xt(e,t=0){if(e==null)return t;let n=String(e==null?``:e).trim();if(!n)return 0;let r=n.replace(/[\s\u00a0\u202f]/g,``).replace(`,`,`.`).replace(/[^\d.-]/g,``),i=r.startsWith(`-`),[a=``,...o]=r.replaceAll(`-`,``).split(`.`),s=`${i?`-`:``}${a}${o.length>0?`.${o.join(``)}`:``}`,c=Number(s);return Number.isFinite(c)?c:t}function St(e){if(globalThis.structuredClone)try{return globalThis.structuredClone(e)}catch(e){}return e==null?e:JSON.parse(JSON.stringify(e))}function N(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ct(e){return N(e)?St(e):{}}function wt({storage:e,defaultValue:t,normalize:n,getScopeKey:r=()=>``,beforeRead:i,afterRead:a,beforeWrite:o,afterWrite:s}={}){if(!e||typeof e.read!=`function`||typeof e.write!=`function`)throw Error(`Settings repository requires storage with read/write methods.`);let c=e,l=typeof n==`function`?n:e=>e===void 0?t:e,u=async()=>{var e;return String((e=await r())==null?``:e)};async function d(e=t){await(i==null?void 0:i());let n=await u(),r=c.read(n,e),o=l(r==null?e:r);return await(a==null?void 0:a(o,{scopeKey:n,rawValue:r})),o}async function f(e){let n=await u(),r=l(e==null?t:e);return await(o==null?void 0:o(r,{scopeKey:n})),c.write(n,r),await(s==null?void 0:s(r,{scopeKey:n})),r}function p(e=t,n=``){let r=c.read(String(n==null?``:n),e),i=l(r==null?e:r);return a==null||a(i,{scopeKey:String(n==null?``:n),rawValue:r}),i}function m(e,n=``){let r=l(e==null?t:e);return o==null||o(r,{scopeKey:String(n==null?``:n)}),c.write(String(n==null?``:n),r),s==null||s(r,{scopeKey:String(n==null?``:n)}),r}return{read:d,write:f,readSync:p,writeSync:m,normalize:l}}function Tt(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function Et(e,t){Tt(e,t),t.add(e)}function P(e,t,n){Tt(e,t),t.set(e,n)}function F(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function I(e,t,n){return e.set(F(e,t),n),n}function L(e,t){return e.get(F(e,t))}function Dt(e){"@babel/helpers - typeof";return Dt=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Dt(e)}function Ot(e,t){if(Dt(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Dt(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function kt(e){var t=Ot(e,`string`);return Dt(t)==`symbol`?t:t+``}function R(e,t,n){return(t=kt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var At=`localforage`,jt=`keyvaluepairs`,z=new Map;function Mt(){try{var e;return(e=globalThis.indexedDB)==null?null:e}catch(e){return null}}function Nt(e){return Error(e)}function Pt(e,t,n,r){return new Promise((i,a)=>{let o=!1,s=r===void 0?e.open(t):e.open(t,r);s.addEventListener(`upgradeneeded`,()=>{s.result.objectStoreNames.contains(n)||s.result.createObjectStore(n)}),s.addEventListener(`error`,()=>{var e;o=!0,a((e=s.error)==null?Nt(`IndexedDB open failed`):e)}),s.addEventListener(`blocked`,()=>{o=!0,a(Nt(`IndexedDB open blocked`))}),s.addEventListener(`success`,()=>{if(o){s.result.close();return}o=!0,i(s.result)})})}function Ft(e){return new Promise((t,n)=>{e.addEventListener(`error`,()=>{var t;return n((t=e.error)==null?Nt(`IndexedDB request failed`):t)}),e.addEventListener(`success`,()=>t(e.result))})}function It(e){return new Promise((t,n)=>{e.addEventListener(`abort`,()=>{var t;return n((t=e.error)==null?Nt(`IndexedDB transaction aborted`):t)}),e.addEventListener(`error`,()=>{var t;return n((t=e.error)==null?Nt(`IndexedDB transaction failed`):t)}),e.addEventListener(`complete`,()=>t())})}function Lt(e){return new Promise((t,n)=>{let r=[],i=e.openKeyCursor();i.addEventListener(`error`,()=>{var e;return n((e=i.error)==null?Nt(`IndexedDB cursor failed`):e)}),i.addEventListener(`success`,()=>{let e=i.result;if(!e){t(r);return}r.push(String(e.key)),e.continue()})})}function Rt(e){return e===void 0?null:e}function zt(e){return JSON.parse(e)}function Bt(e){return JSON.stringify(Rt(e))}var Vt=new WeakMap,Ht=new WeakMap,Ut=new WeakMap,B=new WeakMap,Wt=new WeakMap,V=new WeakMap,H=new WeakMap,Gt=new WeakMap,U=new WeakSet,Kt=class{constructor({databaseName:t=At,indexedDb:r=Mt(),localStorage:i=e(),storeName:a=jt}={}){var o;Et(this,U),P(this,Vt,void 0),P(this,Ht,void 0),P(this,Ut,void 0),P(this,B,void 0),P(this,Wt,void 0),P(this,V,void 0),P(this,H,null),P(this,Gt,null),I(Vt,this,t),I(Ut,this,r),I(V,this,a),I(Wt,this,`${t}/${a===jt?``:`${a}/`}`),I(Ht,this,n(L(Wt,this),i));let s=`${t}/${a}`;I(B,this,(o=z.get(s))==null?new Map:o),z.set(s,L(B,this))}async getItem(e){let t=String(e),n=await F(U,this,qt).call(this);if(n)try{let e=await Ft(n.transaction(L(V,this),`readonly`).objectStore(L(V,this)).get(t));if(e!==void 0)return e}catch(e){F(U,this,Yt).call(this)}let r=F(U,this,Zt).call(this,t);return r.found?(n&&await F(U,this,Xt).call(this,n,t,r.value).catch(()=>void 0),r.value):L(B,this).has(t)?L(B,this).get(t):null}async setItem(e,t){let n=String(e),r=Rt(t),i=await F(U,this,qt).call(this);if(i)try{return await F(U,this,Xt).call(this,i,n,r),F(U,this,$t).call(this,n),L(B,this).delete(n),r}catch(e){F(U,this,Yt).call(this)}return F(U,this,Qt).call(this,n,r)?(L(B,this).delete(n),r):(L(B,this).set(n,r),r)}async removeItem(e){let t=String(e),n=await F(U,this,qt).call(this);if(n)try{let e=n.transaction(L(V,this),`readwrite`);e.objectStore(L(V,this)).delete(t),await It(e)}catch(e){F(U,this,Yt).call(this)}F(U,this,$t).call(this,t),L(B,this).delete(t)}async clear(){let e=await F(U,this,qt).call(this);if(e)try{let t=e.transaction(L(V,this),`readwrite`);t.objectStore(L(V,this)).clear(),await It(t)}catch(e){F(U,this,Yt).call(this)}F(U,this,tn).call(this),L(B,this).clear()}async keys(){let e=new Set,t=await F(U,this,qt).call(this);if(t)try{let n=t.transaction(L(V,this),`readonly`);for(let t of await Lt(n.objectStore(L(V,this))))e.add(t)}catch(e){F(U,this,Yt).call(this)}for(let t of F(U,this,en).call(this))e.add(t);for(let t of L(B,this).keys())e.add(t);return[...e]}};async function qt(){if(!L(Ut,this))return null;if(L(H,this))return L(H,this);L(Gt,this)||I(Gt,this,F(U,this,Jt).call(this).catch(()=>null));let e=await L(Gt,this);return I(Gt,this,null),e?(I(H,this,e),e.addEventListener(`versionchange`,()=>{e.close(),L(H,this)===e&&I(H,this,null)}),e):null}async function Jt(){let e=await Pt(L(Ut,this),L(Vt,this),L(V,this));if(e.objectStoreNames.contains(L(V,this)))return e;let t=e.version+1;return e.close(),Pt(L(Ut,this),L(Vt,this),L(V,this),t)}function Yt(){var e;(e=L(H,this))==null||e.close(),I(H,this,null),I(Gt,this,null)}async function Xt(e,t,n){let r=e.transaction(L(V,this),`readwrite`);r.objectStore(L(V,this)).put(n,t),await It(r)}function Zt(e){try{let t=L(Ht,this).getItem(e);return t===null?{found:!1,value:void 0}:{found:!0,value:zt(t)}}catch(e){return{found:!1,value:void 0}}}function Qt(e,t){try{return L(Ht,this).setItem(e,Bt(t))}catch(e){return!1}}function $t(e){L(Ht,this).removeItem(e)}function en(){return L(Ht,this).keys()}function tn(){L(Ht,this).clear()}var nn;function rn(){var e;return(e=nn)==null?nn=new Kt:e}var an=new WeakSet,on=class{constructor({name:e,schemaVersion:t,migrations:n={},store:r}={}){Et(this,an),R(this,`store`,void 0),R(this,`schemaVersion`,void 0),R(this,`migrations`,void 0),this.store=r==null?new Kt({databaseName:`hwh_${e==null?`hwh`:e}`,storeName:`settings`}):r,this.schemaVersion=t==null?1:t,this.migrations=n}async read(e,t){try{let n=await this.store.getItem(String(e));return n==null?t:F(an,this,sn).call(this,n)}catch(e){return t}}async write(e,t){let n={schemaVersion:this.schemaVersion,value:t};await this.store.setItem(String(e),n)}async remove(e){await this.store.removeItem(String(e))}async clear(){await this.store.clear()}async keys(){return this.store.keys()}};function sn(e){var t,n;let r=e;for(let e=((t=r==null?void 0:r.schemaVersion)==null?0:t)+1;e<=this.schemaVersion;e++){let t=this.migrations[e];typeof t==`function`&&(r=t(r))}return(n=r==null?void 0:r.value)==null?r:n}function cn(e,t){if(e.file){t();return}let n=e.requestFile;if(!n){e.submitAfterFileSelection=!1;return}e.submitAfterFileSelection=!0,n()}function ln(e,t,n){if(e.file=t,!t){e.submitAfterFileSelection=!1;return}e.submitAfterFileSelection&&(e.submitAfterFileSelection=!1,n())}function un(e){e.submitAfterFileSelection=!1}function dn(e=[]){let t=[];if(!Array.isArray(e))return t;for(let a of e){var n,r,i;if(!a||typeof a!=`object`||Array.isArray(a))continue;let e=a;e.key!=null&&t.push({key:String(e.key),label:String((n=e.label)==null?e.key:n),icon:String((r=e.icon)==null?`database`:r),checked:e.checked!==!1,disabled:!!e.disabled,title:String((i=e.title)==null?``:i)})}return t}function fn(e,t){return Object.freeze({kind:e,render:t})}function pn(e,t,n){if(mn(e))return e.render(hn(t),n);let r=document.createElement(`div`);return r.className=`hwhx-native-body hwhx-empty-state`,r.textContent=`Этот экран недоступен в Lite-сборке.`,r}function mn(e){return typeof e==`object`&&!!e&&typeof e.render==`function`}function hn(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function gn(e,t){return t?e.closeOnClick===!0?{notifyAction:!1,close:!0}:{notifyAction:!0,close:!1}:{notifyAction:!0,close:e.closeOnClick!==!1}}var _n=null;function vn(){E(),D()}function yn(e){return vn(),bn(!1),new Promise(t=>{var n,r;let i=document.createElement(`div`);i.className=[`hwhx-modal`,`hwhx-build-lite`,e.className].filter(Boolean).join(` `),i.dataset.hwhxBuildProfile=`lite`,i.dataset.hwhxModalKind=(n=e.kind)==null?`generic`:n,i.dataset.hwhxUiTheme=(r=e.uiTheme)==null?`classic`:r;let a=document.createElement(`section`);a.className=`hwhx-modal__dialog`,a.tabIndex=-1,i.appendChild(a);let o={actions:En(e.actions),dialog:a,footer:null,keydown:()=>void 0,onAction:e.onAction,onBeforeClose:e.onBeforeClose,overlay:i,resolve:t};_n=o,a.appendChild(Sn(e,o));let s=document.createElement(`div`);s.className=`hwhx-modal__body`,s.appendChild(pn(e.component,e.props,{close:bn})),a.appendChild(s),wn(o),i.addEventListener(`pointerdown`,e=>{e.target===i&&bn(!1)}),o.keydown=e=>{e.key!==`Escape`||_n!==o||(e.preventDefault(),e.stopPropagation(),bn(!1))},document.addEventListener(`keydown`,o.keydown,!0),document.body.appendChild(i),queueMicrotask(()=>a.focus({preventScroll:!0}))})}function bn(e=!1){var t;let n=_n;if(!n)return;_n=null,document.removeEventListener(`keydown`,n.keydown,!0),n.overlay.remove();let r=(t=n.onBeforeClose)==null?void 0:t.call(n,e);n.resolve(r===void 0?e:r)}function xn(){return _n!==null}function Sn(e,t){let n=document.createElement(`header`);n.className=`hwhx-modal__header`;let r=document.createElement(`div`);r.className=`hwhx-modal__identity`;let i=document.createElement(`strong`);i.className=`hwhx-modal__title`,i.textContent=Dn(e.header)||e.title||``,r.appendChild(i),Cn(r,e.header),n.appendChild(r);let a=document.createElement(`div`);a.className=`hwhx-modal__toolbar`;for(let n of En(e.headerActions))a.appendChild(Tn(n,t,!0));let s=document.createElement(`button`);return s.type=`button`,s.className=`hwhx-button hwhx-modal__close`,s.dataset.tone=`danger`,s.textContent=`×`,s.ariaLabel=e.closeLabel||(o()===`ru`?`Закрыть`:`Close`),s.addEventListener(`click`,()=>bn(!1)),a.appendChild(s),n.appendChild(a),n}function Cn(e,t){let n=On(t).badges;if(!Array.isArray(n)||n.length===0)return;let r=document.createElement(`div`);r.className=`hwhx-modal__meta`;for(let e of n){var i,a;let t=On(e),n=document.createElement(`span`);n.className=`hwhx-modal-badge`,n.dataset.tone=String((i=t.tone)==null?`gray`:i),n.textContent=String((a=t.label)==null?``:a),t.title&&(n.dataset.hwhxNativeTitle=String(t.title)),r.appendChild(n)}e.appendChild(r)}function wn(e){var t;if((t=e.footer)==null||t.remove(),e.footer=null,e.actions.length===0)return;let n=document.createElement(`footer`);n.className=`hwhx-modal__actions`;let r=document.createElement(`div`);r.className=`hwhx-modal__actions-side hwhx-modal__actions-side--left`;let i=document.createElement(`div`);i.className=`hwhx-modal__actions-side hwhx-modal__actions-side--right`;for(let t of e.actions)(t.placement===`left`?r:i).appendChild(Tn(t,e,!1));n.append(r,i),e.dialog.appendChild(n),e.footer=n}function Tn(e,t,n){var r;let i=document.createElement(`button`);i.type=`button`,i.className=`hwhx-button hwhx-button--modal`,i.dataset.action=e.result,i.dataset.tone=(r=e.tone)==null?`secondary`:r,i.disabled=!!e.disabled||!!e.loading,i.textContent=e.loading?`…`:e.label;let a=e.tooltip||e.title;return a&&(i.dataset.hwhxNativeTitle=a),i.addEventListener(`click`,()=>{var r;if(i.disabled||_n!==t)return;let a=gn(e,n);a.notifyAction&&((r=t.onAction)==null||r.call(t,e.result)),a.close&&bn(e.result)}),i}function En(e){return Array.isArray(e)?e.filter(e=>typeof e==`object`&&!!e&&typeof e.result==`string`):[]}function Dn(e){var t;return String((t=On(e).title)==null?``:t).trim()}function On(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}var kn=fn(`settings-transfer-checklist`,jn);async function An({title:e=`Выберите блоки`,options:t=[],mode:n=`export`,confirmLabel:r=`Продолжить`,cancelLabel:i=`Отмена`,fileLabel:a=`JSON файл`,searchPlaceholder:o=`Поиск`,emptyLabel:s=`Ничего не найдено`}={}){let c=dn(t),l={selectedKeys:c.filter(e=>e.checked&&!e.disabled).map(e=>e.key)};return l.onFileSelected=e=>ln(l,e,()=>bn(`confirm`)),l.onFileSelectionCanceled=()=>un(l),await yn({title:e,kind:`checklist`,className:`hwhx-modal--checklist`,component:kn,props:{state:l,mode:n,fileLabel:a,searchPlaceholder:o,emptyLabel:s,options:c},actions:[{result:`cancel`,label:i,tone:`danger`},{result:`confirm`,label:r,tone:`success`,closeOnClick:n!==`import`}],onAction:e=>{n===`import`&&e===`confirm`&&cn(l,()=>bn(`confirm`))}})===`confirm`?{confirmed:!0,selectedKeys:l.selectedKeys,file:l.file}:{confirmed:!1,selectedKeys:[]}}function jn(e){var t;let n=e.state,r=e.options,i=document.createElement(`div`);if(i.className=`hwhx-settings-transfer-checklist`,e.mode===`import`){var a;i.appendChild(Mn(n,String((a=e.fileLabel)==null?`JSON файл`:a)))}let o=document.createElement(`input`);o.type=`search`,o.className=`hwhx-input hwhx-settings-transfer-checklist__search`,o.placeholder=String((t=e.searchPlaceholder)==null?`Поиск`:t),i.appendChild(o);let s=document.createElement(`div`);s.className=`hwhx-checkbox-list`,i.appendChild(s);let c=()=>{let t=o.value.trim().toLocaleLowerCase();s.replaceChildren();let i=0;for(let e of r)t&&!e.label.toLocaleLowerCase().includes(t)||(s.appendChild(Nn(e,n)),i+=1);if(i===0){var a;let t=document.createElement(`div`);t.className=`hwhx-empty-state`,t.textContent=String((a=e.emptyLabel)==null?`Ничего не найдено`:a),s.appendChild(t)}};return o.addEventListener(`input`,c),c(),i}function Mn(e,t){let n=document.createElement(`label`);n.className=`hwhx-settings-field`;let r=document.createElement(`span`);r.textContent=t;let i=document.createElement(`input`);return i.type=`file`,i.accept=`application/json,.json`,i.addEventListener(`change`,()=>{var t,n;(t=e.onFileSelected)==null||t.call(e,(n=i.files)==null?void 0:n[0])}),i.addEventListener(`cancel`,()=>{var t;return(t=e.onFileSelectionCanceled)==null?void 0:t.call(e)}),e.requestFile=()=>{if(typeof i.showPicker==`function`)try{i.showPicker();return}catch(e){}i.click()},n.append(r,i),n}function Nn(e,t){let n=document.createElement(`label`);n.className=`hwhx-checkbox-list__item`,e.title&&(n.dataset.hwhxNativeTitle=e.title);let r=document.createElement(`input`);r.type=`checkbox`,r.disabled=!!e.disabled,r.checked=t.selectedKeys.includes(e.key),r.addEventListener(`change`,()=>{let n=new Set(t.selectedKeys);r.checked?n.add(e.key):n.delete(e.key),t.selectedKeys=[...n]});let i=document.createElement(`span`);return i.textContent=e.label,n.append(r,i),n}var Pn=`hwhx:settings-transfer:download-json`,W=`__hwhxSettingsDownloadBridgeInstalled`,Fn=10*1024*1024,In=`null`;function Ln(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function G(e,t){return e==null?t:String(e)}function Rn({scriptId:e,scriptName:t,scriptVersion:n=``,exportVersion:r,storageSchemaVersion:i,userId:a=void 0,data:o,extra:s={}}){return{scriptId:String(e==null?``:e),scriptName:String(t==null?``:t),scriptVersion:String(n==null?``:n),exportVersion:r,storageSchemaVersion:i,exportedAt:new Date().toISOString(),...a===void 0?{}:{userId:String(a)},...s,data:o}}function zn(e,t){return`${String(e==null?`unknown`:e).trim().replaceAll(/[^\w.-]+/g,`_`)||`unknown`}.${String(t==null?`settings.json`:t).trim().replace(/^\.*/,``)}`}function Bn(){try{return globalThis.self!==globalThis.top}catch(e){return!0}}function Vn(e){let t=String(e==null?``:e).trim();if(!t||t===In)return``;try{let e=new URL(t).origin;return e===In?``:e}catch(e){return``}}function Hn(){var e,t;return Vn((e=globalThis.location)==null?void 0:e.origin)||Vn((t=globalThis.location)==null?void 0:t.href)}function Un(){let e=globalThis.location,t=e==null?void 0:e.ancestorOrigins;return t?Array.from({length:t.length},(e,n)=>Vn(t[n])).filter(Boolean):[]}function Wn(){try{return Vn(document.referrer)}catch(e){return``}}function Gn(){return Un()[0]||Wn()}function Kn(e){let t=Vn(e);return!!(t&&[Hn(),Wn(),...Un()].includes(t))}function K(e){if(!e)return!1;try{for(let t of document.querySelectorAll(`iframe`))if(t.contentWindow===e)return!0}catch(e){}return!1}function qn(e){let t=String(e==null?`settings.json`:e).trim().replaceAll(/[\\/:*?"<>|]+/g,`_`)||`settings.json`;return t.toLowerCase().endsWith(`.json`)?t:`${t}.json`}function Jn(e,t,n){let r=new globalThis.Blob([t],{type:n}),i=globalThis.URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=qn(e),a.style.display=`none`,document.body.appendChild(a),a.click(),a.remove(),globalThis.setTimeout(()=>globalThis.URL.revokeObjectURL(i),1e3)}function Yn(e){if(typeof e!=`string`||e.length===0||e.length>Fn)return!1;try{return JSON.parse(e),!0}catch(e){return!1}}function Xn(e){let t=e;return!!t&&t.hwhx===`settings-transfer`&&t.type===Pn&&Yn(t.content)}function Zn(e){if(!Xn(e.data))return!1;let t=e.source;return!t||t===globalThis?!1:K(t)?!0:Kn(e.origin)}function Qn(){if(Bn())return;let e=globalThis;e[W]||(e[W]=!0,globalThis.addEventListener(`message`,e=>{Bn()||!Zn(e)||Jn(e.data.fileName,e.data.content,`application/json;charset=utf-8`)}))}function $n(e,t){if(!Bn())return!1;let n=Gn();if(!n)return!1;try{var r;return(r=globalThis.top)==null||r.postMessage({hwhx:`settings-transfer`,type:Pn,fileName:e,content:t},n),!0}catch(e){return!1}}function er(e,t){let n=`${JSON.stringify(t,null,2)}\n`;Qn(),!$n(e,n)&&Jn(e,n,`application/json;charset=utf-8`)}function tr(e){return e?typeof e.text==`function`?e.text():new Promise((t,n)=>{let r=new globalThis.FileReader;r.addEventListener(`load`,()=>{var e;return t(String((e=r.result)==null?``:e))}),r.addEventListener(`error`,()=>n(r.error)),r.readAsText(e)}):Promise.resolve(void 0)}function nr(e=[]){return(Array.isArray(e)?e:[]).flatMap(e=>{var t,n,r;let i=Ln(e);return!i||i.key==null?[]:[{key:String(i.key),label:String((t=i.label)==null?i.key:t),icon:String((n=i.icon)==null?`database`:n),checked:i.checked!==!1,title:String((r=i.title)==null?``:r)}]})}function rr(e){let t=Ln(e),n=Ln(t==null?void 0:t.data);return n?Object.keys(n):[]}function ir(e){return(Array.isArray(e)?e:[]).map(e=>({key:String(e),label:String(e),icon:`database`,checked:!0,title:``}))}function ar(e,t=[]){let n=Ln(e),r=Ln(n==null?void 0:n.data);if(!n||!r||!Array.isArray(t)||t.length===0)return e;let i=new Set(t.map(String));return{...n,data:Object.fromEntries(Object.entries(r).filter(([e])=>i.has(e)))}}function or(e={},t=`export`){var n,r;let i=t===`export`;return{title:G(e[i?`exportSelectTitle`:`importSelectTitle`],i?`Выберите блоки для экспорта`:`Выберите блоки для импорта`),confirmLabel:G(e[i?`exportSelectConfirm`:`importSelectConfirm`],i?`Экспортировать`:`Импортировать`),cancelLabel:G(e.cancel,`Отмена`),fileLabel:G(e.importFileLabel,`JSON файл`),searchPlaceholder:G((n=e.searchPlaceholder)==null?e.search:n,`Поиск`),clearSearchLabel:G(e.clearSearch,`Очистить поиск`),emptyLabel:G((r=e.empty)==null?e.noOptions:r,`Ничего не найдено`),selectAllLabel:G(e.selectAll,`Выбрать все`),clearAllLabel:G(e.clearAll,`Снять все`),sortLabel:G(e.sort,`Сортировка`),sortByLabelLabel:G(e.sortByLabel,`По названию`),sortSelectedLabel:G(e.sortSelected,`Выбранные сверху`),sortAscendingLabel:G(e.sortAsc,`По возрастанию`),sortDescendingLabel:G(e.sortDesc,`По убыванию`)}}function sr(e,t){return{uiTheme:t,searchPlaceholder:e.searchPlaceholder,clearSearchLabel:e.clearSearchLabel,emptyLabel:e.emptyLabel,selectAllLabel:e.selectAllLabel,clearAllLabel:e.clearAllLabel,sortLabel:e.sortLabel,sortAscendingLabel:e.sortAscendingLabel,sortDescendingLabel:e.sortDescendingLabel,sortOptions:[{value:`label`,label:e.sortByLabelLabel,icon:`align-center`},{value:`selected`,label:e.sortSelectedLabel,icon:`check`}],sortWidthPx:210}}async function cr(e,t=[],n={},r=void 0,i=!1){let a=nr(t),o=a.length>0?a:ir(rr(e));if(!i&&o.length<=1)return o.map(e=>e.key);let s=or(n,`export`),c=await An({title:s.title,options:o,mode:`export`,confirmLabel:s.confirmLabel,cancelLabel:s.cancelLabel,...sr(s,r)});return c.confirmed?c.selectedKeys:void 0}async function lr({parsedValue:e,options:t=[],labels:n={},uiTheme:r=void 0,alwaysShowChecklist:i=!1}){let a=rr(e),o=new Set(a),s=nr(t),c=s.length>0?s.map(e=>({...e,checked:e.checked!==!1&&o.has(e.key),disabled:!o.has(e.key)})):ir(a);if(!i&&c.length<=1)return a;let l=or(n,`import`),u=await An({title:l.title,options:c,mode:`export`,confirmLabel:l.confirmLabel,cancelLabel:l.cancelLabel,...sr(l,r)});return u.confirmed?u.selectedKeys:void 0}async function ur(e=[],t={},n=void 0){let r=nr(e),i=or(t,`import`),a=await An({title:i.title,options:r,mode:`import`,confirmLabel:i.confirmLabel,cancelLabel:i.cancelLabel,fileLabel:i.fileLabel,...sr(i,n)});return a.confirmed?{fileText:await tr(a.file),selectedKeys:a.selectedKeys}:{fileText:void 0,selectedKeys:void 0}}function dr(e,t){try{return JSON.parse(String(e==null?``:e))}catch(e){throw typeof t==`function`?t():Error(`Invalid JSON.`)}}function fr({buildPayload:e,buildFileName:t,parseImport:n,applyImport:r,showNotice:i=()=>{},labels:a={},exportOptions:o=[],importOptions:s=o,uiTheme:c=void 0,alwaysShowChecklist:l=!1}={}){async function u(...n){if(typeof e!=`function`||typeof t!=`function`)throw Error(`Settings export requires buildPayload and buildFileName.`);let r=await e(...n),s=await cr(r,o,a,c,l);if(s===void 0)return!1;let u=ar(r,s);return er(t(u),u),await i(a.exportDone,{phase:`export`}),u}async function d(...e){var t;if(typeof n!=`function`||typeof r!=`function`)throw Error(`Settings import requires parseImport and applyImport.`);let o=await ur(s,a,c),u=o.fileText;if(u===void 0||u===``)return!1;let d=dr(u,a.parseError?()=>Error(String(a.parseError)):void 0),f=(t=o.selectedKeys)==null?await lr({parsedValue:d,options:s,labels:a,uiTheme:c,alwaysShowChecklist:l}):t;return f===void 0?!1:(await r(await n(ar(d,f),...e),...e),await i(a.importDone,{phase:`import`}),!0)}return{exportToJson:u,importFromJson:d}}var pr=new WeakSet,mr=class{constructor({keyPrefix:n,schemaVersion:r,migrations:i={},storage:a=e(),warn:o=t}){Et(this,pr),R(this,`keyPrefix`,void 0),R(this,`schemaVersion`,void 0),R(this,`migrations`,void 0),R(this,`storage`,void 0),R(this,`warn`,void 0),this.keyPrefix=n,this.schemaVersion=r,this.migrations=i,this.storage=a,this.warn=o}key(e){return`${this.keyPrefix}${e}`}read(e,t){let n;try{var r,i;n=(r=(i=this.storage)==null?void 0:i.getItem(this.key(e)))==null?null:r}catch(e){return this.warn(`[hwh] versioned storage read failed`,e),t}if(!n)return t;let a;try{a=JSON.parse(n)}catch(e){return t}return F(pr,this,gr).call(this,a)}write(e,t){let n={schemaVersion:this.schemaVersion,value:t};try{var r;(r=this.storage)==null||r.setItem(this.key(e),JSON.stringify(n))}catch(e){this.warn(`[hwh] versioned storage write failed`,e)}}remove(e){try{var t;(t=this.storage)==null||t.removeItem(this.key(e))}catch(e){this.warn(`[hwh] versioned storage remove failed`,e)}}};function hr(e){let t=e;for(let e=0;e<8&&!(!t||typeof t!=`object`||!Object.prototype.hasOwnProperty.call(t,`value`));e+=1)t=t.value;return t}function gr(e){let t=Number(e==null?void 0:e.schemaVersion)||1,n=F(pr,this,hr).call(this,e);for(;t${Nr(e,{className:n.iconClassName,title:n.title})} ${i(t)}`}function Nr(e,t={}){var n,r;let a=(n=Ar[String(e==null?``:e)])==null?``:n;if(!a)return``;let o=[`hwhx-lite-glyph`,`hwhx-emoji-icon`,t.className].filter(Boolean).join(` `),s=String((r=t.title)==null?``:r).trim(),c=s?` data-hwhx-native-title="${i(s)}"`:``,l=Math.max(10,Math.min(32,Number(t.size)||16));return``}var Pr=`full`,Fr=`minimal`,Ir={[Pr]:[`top`,`up`,`down`,`bottom`],[Fr]:[`up`,`down`]};function Lr(e,t=Pr){return e===`minimal`||e===`full`?e:t===`minimal`||t===`full`?t:Pr}function Rr(e){return Ir[Lr(e)]}var zr=[`top-center`,`top-right`,`bottom-right`],Br=[`default`,`compact`,`dashboard`],Vr={progressWindowPosition:`top-right`,progressWindowStyle:`default`,progressAutoHideResult:!1,progressAutoHideResultTimeoutMs:5e3};function Hr(e,t=Vr){let n=Kr(e),r={...Vr,...t};return{progressWindowPosition:Ur(n.progressWindowPosition,zr,r.progressWindowPosition),progressWindowStyle:Ur(n.progressWindowStyle,Br,r.progressWindowStyle),progressAutoHideResult:Wr(n.progressAutoHideResult,r.progressAutoHideResult),progressAutoHideResultTimeoutMs:Gr(n.progressAutoHideResultTimeoutMs,r.progressAutoHideResultTimeoutMs,1e3)}}function Ur(e,t,n){return t.includes(e)?e:n}function Wr(e,t){return e===!0||e===1||e===`1`||e===`true`?!0:e===!1||e===0||e===`0`||e===`false`?!1:t}function Gr(e,t,n=1){let r=Math.trunc(Number(e));return Number.isFinite(r)?Math.max(n,r):Math.max(n,t)}function Kr(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}var qr=`.hwhx-modal,.hwhx-custom-select.is-open,.hwhx-multiselect.is-open,.hwhx-hotkey-input.is-recording`;function Jr(e,t,n=document){var r;if(!t||e.key!==`Escape`||e.defaultPrevented||n.querySelector(`.hwhx-modal`))return!1;let i=e.target;if(!(i==null||(r=i.closest)==null)&&r.call(i,qr))return!1;let a=n.querySelectorAll(`.hwhx-progress.is-visible`);return a.item(a.length-1)===t}var Yr={preparing:{emoji:`🚦`,label:`Подготавливаем запуск`,description:`Проверяем настройки и доступные ресурсы.`},loading:{emoji:`📥`,label:`Получаем данные игры`,description:`Загружаем актуальное состояние с игрового сервера.`},planning:{emoji:`🧭`,label:`Строим план действий`,description:`Считаем цели, ограничения и оптимальный порядок операций.`},batching:{emoji:`🧩`,label:`Формируем пакет команд`,description:`Объединяем совместимые операции в серверный пакет.`},sending:{emoji:`🌐`,label:`Отправляем пакет на сервер`,description:`Передаём подготовленные команды игровому серверу.`},waiting:{emoji:`⏳`,label:`Ждём ответ сервера`,description:`Сервер выполняет отправленные команды.`},processing:{emoji:`⚙️`,label:`Обрабатываем ответ сервера`,description:`Проверяем результаты и изменения ресурсов.`},applying:{emoji:`📦`,label:`Применяем изменения`,description:`Обновляем локальный план по подтверждённым результатам.`},syncing:{emoji:`🔄`,label:`Синхронизируем состояние`,description:`Сверяем локальные данные с состоянием игры.`},finalizing:{emoji:`✅`,label:`Подводим итог`,description:`Собираем итоговые результаты запуска.`}},Xr={preparing:{emoji:`🚦`,label:`Preparing the run`,description:`Checking settings and available resources.`},loading:{emoji:`📥`,label:`Loading game data`,description:`Fetching the latest state from the game server.`},planning:{emoji:`🧭`,label:`Building the action plan`,description:`Calculating goals, limits, and operation order.`},batching:{emoji:`🧩`,label:`Building a command batch`,description:`Combining compatible operations into a server batch.`},sending:{emoji:`🌐`,label:`Sending the batch`,description:`Sending prepared commands to the game server.`},waiting:{emoji:`⏳`,label:`Waiting for the server`,description:`The game server is executing the submitted commands.`},processing:{emoji:`⚙️`,label:`Processing the server response`,description:`Checking results and resource changes.`},applying:{emoji:`📦`,label:`Applying changes`,description:`Updating the local plan with confirmed results.`},syncing:{emoji:`🔄`,label:`Synchronizing state`,description:`Reconciling local data with the game state.`},finalizing:{emoji:`✅`,label:`Finalizing results`,description:`Building the final run summary.`}},Zr=new Set([`batching`,`sending`,`waiting`,`processing`]);function Qr(e){let t=$r(e.language)===`ru`,n=(t?Yr:Xr)[e.phase],r=ni(e.current),i=ni(e.total),a=ri(e.itemCount),o=[n.description];if(r!==void 0&&i!==void 0){let n=ii(e.counterLabel)||(t?`Пакет`:`Batch`);o.push(t?`${n} ${Math.min(r,i)} из ${i}.`:`${n} ${Math.min(r,i)} of ${i}.`)}if(a!==void 0){let n=ii(e.itemLabel)||(t?`Команд в пакете`:`Commands in this batch`);o.push(`${n}: ${a}.`)}let s=ii(e.requestName);s&&o.push(`${t?`Команда сервера`:`Server command`}: ${s}.`);let c=ii(e.detail);return c&&o.push(c),i===1&&Zr.has(e.phase)&&e.explainSingleBatch!==!1&&o.push(t?`Один пакет может содержать много объединённых команд — это не объём потраченной энергии.`:`One batch may contain many combined commands; it is not the amount of energy spent.`),{stageLabel:`${n.emoji} ${n.label}`,content:o.join(` `),percent:ei(e.percent,r,i),intermediate:!0}}function $r(e){let t=ii(e).toLowerCase();return t.startsWith(`ru`)?`ru`:t.startsWith(`en`)?`en`:o()===`ru`?`ru`:`en`}function ei(e,t,n){let r=Number(e);if(Number.isFinite(r))return ti(r);if(!(t===void 0||n===void 0||n<=0))return ti(t/n*100)}function ti(e){return Math.max(0,Math.min(100,e))}function ni(e){let t=Math.trunc(Number(e));return Number.isFinite(t)&&t>0?t:void 0}function ri(e){let t=Math.trunc(Number(e));return Number.isFinite(t)&&t>=0?t:void 0}function ii(e){return String(e==null?``:e).trim()}var ai=new Map,oi=!1;function si({scriptId:e,title:t,settings:n}){let r=`hwhx-progress-${bi(e)}`,i=_i(n),a=null;function o(e=0){d();let t=Math.max(0,Number(e)||0);t>0?a=globalThis.setTimeout(()=>li(r),t):li(r)}function s(e,n=!1,a=void 0){var s,c,l,u;d();let f=Ti(a);a===void 0&&(f.autoHide=n);let p=String(e==null?``:e),m=Number(f.percent),h=Number.isFinite(m)?Si(m):xi(p),g=f.autoHide;ci({id:r,title:String(t==null?``:t),content:p,contentHtml:Ci(p)?wi(p):``,component:f.component,props:Ti(f.props),isResult:!!f.result,resultLabel:String((s=(c=f.resultLabel)==null?f.completeText:c)==null?``:s),resultTone:String((l=f.resultTone)==null?`success`:l),percent:Number.isFinite(h)?h:null,position:i.progressWindowPosition,style:i.progressWindowStyle,stageLabel:String((u=f.stage)==null?``:u)}),g&&o(typeof g==`number`?Math.max(0,g):3e3)}function c(e,t=void 0){var n;let r={...Ti(t),result:!0},a=(n=r.autoHide)==null?i.progressAutoHideResult?i.progressAutoHideResultTimeoutMs:!1:n;s(e,a,{...r,autoHide:a})}function l(e,t=!1,n=void 0){var r,i;let a=Qr(e),o=Ti(n);s(a.content,t,{...o,percent:(r=o.percent)==null?a.percent:r,stage:(i=o.stage)==null?a.stageLabel:i})}function u(e){i=_i({...i,...Ti(e)})}function d(){a!==null&&(globalThis.clearTimeout(a),a=null)}return{configure:u,setProgress:s,setStageProgress:l,showResult:c,hideProgress:o}}function ci(e){var t,n;O();let r=ai.get(e.id);r||(r=pi(e.id),ai.set(e.id,r),document.body.appendChild(r.root),di());let i=r.root;if(i.className=`hwhx-progress hwhx-build-lite is-visible`,i.dataset.hwhxProgressStyle=(t=e.style)==null?`default`:t,i.dataset.hwhxProgressResult=e.isResult?`1`:`0`,i.dataset.hwhxProgressResultTone=vi(e.resultTone),gi(i,e.position),r.title.textContent=e.title,r.status.dataset.tone=e.isResult?vi(e.resultTone):`active`,r.statusLabel.textContent=yi(e.isResult,e.resultTone),r.stage.textContent=(n=e.stageLabel)==null?``:n,r.stage.hidden=!e.stageLabel||!!e.component,e.component?(r.body.replaceChildren(pn(e.component,e.props,{close:()=>li(e.id)})),r.mode=`component`):(r.mode!==`content`&&(r.body.replaceChildren(r.content),r.mode=`content`),mi(r.content,e.content,e.contentHtml)),hi(r,e.percent),e.isResult&&e.resultLabel){var a;r.result.dataset.tone=(a=e.resultTone)==null?`success`:a,r.result.textContent=e.resultLabel,r.body.appendChild(r.result)}else r.result.remove()}function li(e){let t=ai.get(e);t&&(ai.delete(e),t.root.remove(),ai.size===0&&fi())}function ui(e){var t,n;let r=document.querySelectorAll(`.hwhx-progress.is-visible`),i=r.item(r.length-1);if(!Jr(e,i))return;let a=(t=i==null?void 0:i.id)==null?``:t;((n=ai.get(a))==null?void 0:n.root)===i&&(e.preventDefault(),e.stopPropagation(),li(a))}function di(){oi||(oi=!0,document.addEventListener(`keydown`,ui,!0))}function fi(){oi&&(oi=!1,document.removeEventListener(`keydown`,ui,!0))}function pi(e){let t=document.createElement(`section`);t.id=e;let n=document.createElement(`header`);n.className=`hwhx-progress__header`;let r=document.createElement(`strong`);r.className=`hwhx-progress__title`;let i=document.createElement(`div`);i.className=`hwhx-progress__header-actions`;let a=document.createElement(`span`);a.className=`hwhx-status-badge hwhx-progress__state`;let o=document.createElement(`span`);o.className=`hwhx-status-badge__label`,a.appendChild(o);let s=document.createElement(`button`);s.type=`button`,s.className=`hwhx-icon-button`,s.textContent=`×`,s.ariaLabel=`Закрыть`,s.addEventListener(`click`,()=>li(e)),i.append(a,s),n.append(r,i);let c=document.createElement(`div`);c.className=`hwhx-progress__stage`,c.hidden=!0;let l=document.createElement(`div`);l.className=`hwhx-progress__body`;let u=document.createElement(`div`);u.className=`hwhx-progress__content`;let d=document.createElement(`div`);d.className=`hwhx-progress-bar`;let f=document.createElement(`div`);f.className=`hwhx-progress-bar__fill`,d.appendChild(f);let p=document.createElement(`strong`);return p.className=`hwhx-progress__result`,l.appendChild(u),t.append(n,c,l),{root:t,title:r,status:a,statusLabel:o,stage:c,body:l,content:u,progressBar:d,progressFill:f,result:p,mode:`content`}}function mi(e,t,n){if(n){e.innerHTML!==n&&(e.innerHTML=n);return}let r=t==null?``:t;e.textContent!==r&&(e.textContent=r)}function hi(e,t){if(t==null){e.progressBar.remove();return}e.progressFill.style.width=`${Si(t)}%`,e.body.appendChild(e.progressBar)}function gi(e,t){e.style.inset=`auto`,e.style.transform=``,e.style.top=`8px`,t===`bottom-right`?(e.style.top=`auto`,e.style.bottom=`8px`,e.style.right=`8px`):t===`top-center`?(e.style.left=`50%`,e.style.transform=`translateX(-50%)`):e.style.right=`8px`}var _i=Hr;function vi(e){let t=String(e==null?`success`:e);return t===`danger`||t===`warning`?t:`success`}function yi(e,t){return e?t===`danger`?`Ошибка`:t===`warning`?`Остановлено`:`Завершено`:`Выполняется`}function bi(e){return String(e==null?`script`:e).toLowerCase().replace(/[^a-z0-9_-]+/g,`-`).replace(/^-+|-+$/g,``)}function xi(e){let t=String(e==null?``:e).match(/(?:^|\D)(\d+)\s*\/\s*(\d+)(?:\D|$)/);if(!t)return;let n=Number(t[1]),r=Number(t[2]);return r>0?Si(n/r*100):void 0}function Si(e){return Math.max(0,Math.min(100,e))}function Ci(e){return/<\/?[a-z][\s\S]*>/i.test(String(e==null?``:e))}function wi(e){return String(e==null?``:e).replace(/<(script|style|iframe|object|embed|link|meta)\b[\s\S]*?<\/\1>/gi,``).replace(/<(script|style|iframe|object|embed|link|meta)\b[^>]*\/?>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src|xlink:href)\s*=\s*(["'])\s*javascript:[\s\S]*?\2/gi,``)}function Ti(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function Ei(e){var t;let n=document.createElement(`div`);n.className=`hwhx-result-summary`,n.dataset.resultTone=String((t=e.resultTone)==null?`success`:t);let r=document.createElement(`div`);if(r.className=`hwhx-result-stack`,e.messageHtml){let t=document.createElement(`div`);t.className=`hwhx-result-message`,t.innerHTML=ki(e.messageHtml),r.appendChild(t)}let i=Array.isArray(e.accordions)?e.accordions:[];for(let e of i)r.appendChild(Di(e));return n.appendChild(r),n}function Di(e){let t=document.createElement(`details`);t.className=`hwhx-result-accordion`,t.dataset.tone=e.tone,t.open=e.defaultOpen!==!1;let n=document.createElement(`summary`);n.className=`hwhx-result-accordion__summary`,n.textContent=`${e.title} (${e.countText})`;let r=document.createElement(`div`);r.className=`hwhx-result-accordion__body`;for(let t of e.rows)r.appendChild(Oi(t));return t.append(n,r),t}function Oi(e){let t=document.createElement(`div`);return t.className=`hwhx-result-row`,t.dataset.kind=e.kind,t.innerHTML=ki(e.html),t}function ki(e){return String(e==null?``:e).replace(/<(script|style|iframe|object|embed|link|meta)\b[\s\S]*?<\/\1>/gi,``).replace(/<(script|style|iframe|object|embed|link|meta)\b[^>]*\/?>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src|xlink:href)\s*=\s*(["'])\s*javascript:[\s\S]*?\2/gi,``)}function Ai(e){let t=document.createElement(`div`);if(t.className=`hwhx-native-body hwhx-popup`,e.note){let n=document.createElement(`p`);n.className=`hwhx-hint`,n.textContent=String(e.note),t.appendChild(n)}let n=Array.isArray(e.links)?e.links:[];for(let e of n){var r,i,a;let n=ji(e),o=document.createElement(`a`);o.className=`hwhx-button`,o.textContent=String((r=(i=n.label)==null?n.url:i)==null?``:r),o.href=String((a=n.url)==null?`#`:a),o.target=`_blank`,o.rel=`noopener noreferrer`,t.appendChild(o)}return t}function ji(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}var Mi={donate:{wallet:`2200154655410578`,icon:`alfabank`,accentColor:`#ef3124`,qrDataUrl:``},contacts:[{key:`askja`,displayName:`Askja`,telegramUsername:`askja_tlgrm`,qrPath:`/contacts/telegram-askja.png`},{key:`zingery`,displayName:`ZingerY`,telegramUsername:`AlysonWi`,qrPath:`/contacts/telegram-zingery.png`}],feedback:{contact:`askja`},community:{forumUrl:`https://t.me/+ppLK1qqObB43NjMy`},documentation:{links:[{key:`primary`,url:`https://ext-askja.zingery.ru`},{key:`mirror-1`,url:`https://hwhx-askja.h0w.top/`}]}},Ni,Pi,Fi,Ii,Li,Ri,zi=Mi.donate,Bi=Mi.community,Vi=String((Ni=zi.wallet)==null?``:Ni);String((Pi=zi.icon)==null?`wallet-cards`:Pi),String((Fi=zi.accentColor)==null?`#ef3124`:Fi),String((Ii=zi.qrDataUrl)==null?``:Ii),String((Li=Bi.forumUrl)==null?``:Li);var Hi=Object.freeze(Mi.contacts.map(e=>{let t=String(e.telegramUsername).replace(/^@/,``);return Object.freeze({key:String(e.key),displayName:String(e.displayName),telegramUsername:t,telegramUrl:`https://t.me/${t}`,qrPath:String(e.qrPath)})}));function Ui(e){return String(e==null?``:e).replace(/^@/,``).replace(/[^a-zA-Z0-9_]/g,``)}function Wi(e){return Ui(e).toLocaleLowerCase(`en`)}function Gi(e){let t=Wi(e);return Hi.find(e=>Wi(e.key)===t||Wi(e.displayName)===t||Wi(e.telegramUsername)===t)}function Ki(e,t=`askja`){let n=Gi(e);if(n)return n.telegramUrl;let r=Gi(t);return`https://t.me/${Ui(e)||(r==null?void 0:r.telegramUsername)||Ui(t)}`}Ki(String((Ri=Mi.feedback.contact)==null?`askja`:Ri),`askja`);var qi=Object.freeze(Mi.documentation.links.map(e=>({key:String(e.key),url:String(e.url)}))),Ji=fn(`titan-result-summary`,Ei),Yi=fn(`titan-text-panel`,Ai),Xi=si,Zi=vn,Qi=xn;function $i(e){return e}function ea(e){return e}function ta(e){return{title:e||`HWH Titan Trainer Lite`,badges:[{label:`v1.4.10-lite.1`,tone:`blue`},{label:`Lite`,tone:`gray`}]}}function na(e){return[aa(`exportSettings`,e(`~ff`)),aa(`importSettings`,e(`~fs`),!0),aa(`dumpGameLibrary`,e(`~fe`)),aa(`help`,e(`~f7`),!0)]}async function ra(e,t){await yn({kind:`documentation`,title:e(`~f7`),header:ta(e(`~f7`)),component:Yi,props:{note:e(`~f6`),links:qi.map((t,n)=>({label:e(n===0?`~f5`:`~f4`),url:t.url}))},actions:[{result:`close`,label:e(`~cq`)}]})}async function ia(e,t){await yn({kind:`donate`,title:e(`~fb`),header:ta(e(`~fb`)),component:Yi,props:{note:`${e(`~fa`)}\n${e(`~fc`,{wallet:Vi})}`},actions:[{result:`close`,label:e(`~cq`)}]})}function aa(e,t,n=!1){return{result:e,label:t,title:t,iconOnly:!0,closeOnClick:n}}function oa({setProgress:e,setStageProgress:t}){return(n,r)=>{if(!r){e(n);return}let i=sa(n);if(typeof r==`string`){t({phase:r,detail:i,explainSingleBatch:!1});return}let{event:a,requestName:o}=r;t({phase:a.phase===`processed`?`processing`:`sending`,current:a.requestIndex,total:a.totalRequests,itemCount:a.chunkSize,requestName:o,detail:i})}}function sa(e){return String(e==null?``:e).replace(/<[^>]+>/g,` `).replace(/\s+/g,` `).trim()}function ca(e){return zn(e,`hwhtitantrainer.json`)}function la(e){return[{key:`artifactSettings`,label:e(`~fQ`),icon:`hammer`},{key:`levelSettings`,label:e(`~fS`),icon:`arrow-up`},{key:`skinSettings`,label:e(`~fT`),icon:`shirt`},{key:`doYourBestPlacement`,label:e(`~cx`),icon:`list-checks`}]}function ua(e,t){let{translate:n,normalizeSettings:r,normalizeLevelSettings:i,normalizeSkinSettings:a,normalizeDoYourBestPlacementMap:o}=t,s=N(e)?e:{};if(!N(e)||s.scriptId!==`hwhtitantrainer`&&s.scriptId!==`hwhtitanartifact`)throw Error(n(`~fN`));let c=N(s.data)?s.data:{};if(!N(s.data))throw Error(n(`~fN`));return{artifactSettings:c.artifactSettings==null?void 0:r(c.artifactSettings),levelSettings:c.levelSettings==null?void 0:i(c.levelSettings),skinSettings:c.skinSettings==null?void 0:a(c.skinSettings),doYourBestPlacement:c.doYourBestPlacement==null?void 0:o(c.doYourBestPlacement)}}async function da(e,t){let n=ua({scriptId:`hwhtitantrainer`,data:e},t);if(n.artifactSettings&&await t.writeSettings(n.artifactSettings),n.levelSettings&&await t.writeLevelSettings(n.levelSettings),n.skinSettings&&await t.writeSkinSettings(n.skinSettings),n.doYourBestPlacement!==void 0){var r;await t.writeDoYourBestPlacement(n.doYourBestPlacement),await((r=t.afterDoYourBestPlacementImport)==null?void 0:r.call(t))}return n}function fa([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_]){let v={translate:e,normalizeSettings:t,normalizeLevelSettings:n,normalizeSkinSettings:r,normalizeDoYourBestPlacementMap:i};async function y(){var e,i;let d=await a(),f=o();return Rn({scriptId:`hwhtitantrainer`,scriptName:String((e=f.name)==null?`HWH Titan Trainer`:e),scriptVersion:String((i=f.version)==null?``:i),storageSchemaVersion:_,userId:String(d),data:{artifactSettings:t(await s()),levelSettings:n(await c()),skinSettings:r(await l()),doYourBestPlacement:u()}})}let b=la(e),x=fr({buildPayload:y,buildFileName:e=>ca((N(e)?e:{}).userId),showNotice:g,exportOptions:b,labels:{exportDone:e(`~fK`)}}),S=fr({parseImport:e=>ua(e,v),applyImport:e=>da(e,{...v,writeSettings:d,writeLevelSettings:f,writeSkinSettings:p,writeDoYourBestPlacement:m,afterDoYourBestPlacementImport:h}),showNotice:g,importOptions:b,labels:{parseError:e(`~fO`),importDone:e(`~fL`)}});return[y,x.exportToJson,S.importFromJson]}var pa=`classic`,ma=Object.freeze([pa]);new Set(ma);var ha=Object.freeze([{value:pa,labelKey:`HWHX_UI_THEME_CLASSIC`,icon:``,label:`Classic`}]),ga=Object.freeze({classic:[]}),_a=Object.freeze({classic:`Arial, sans-serif`}),va=Object.freeze({classic:[`1px`,`2px`,`solid`]}),ya=Object.freeze([{definition:ha[0],preview:ga.classic,previewFont:_a.classic,previewGeometry:va.classic,css:``}]);function ba(){return pa}var xa=`hwhtitanartifact_settings_`,Sa=`hwhtitanartifact_do_your_best_placement`,Ca=`hwhtitantrainer_button_placement`,wa=`hwhtitanlevel_settings_`,Ta=`hwhtitanskin_settings_`,Ea=6e4,q=[0,1,2],Da=new Set(q),Oa=`amount`,ka=`sequential`,Aa=`parallel`,ja=`skip`,Ma=`default`,Na=`use-settings`,Pa=`main`,Fa=`other`,Ia=`hwhTitanTrainerAction`,La=`hwhtitantrainer-active-tab`,Ra=`general`,za=`artifacts`,Ba=`levels`,Va=`skins`,Ha=`runTitanArtifactChecklistTask`,Ua=`runTitanLevelChecklistTask`,Wa=`runTitanSkinChecklistTask`,Ga=`hwhtitantrainer-accordion-auto-scroll-mode`,Ka=`hwhtitantrainer-reorder-list-variant`,qa=`hwhtitantrainer-button-placement`,Ja=`hwhtitantrainer-ui-tooltips`,Ya=`hwhtitantrainer-hotkey-open-settings`,Xa=`hwhtitantrainer-hotkey-run-all`,Za=`hwhtitantrainer-hotkey-run-artifacts`,Qa=`hwhtitantrainer-hotkey-run-levels`,$a=`hwhtitantrainer-hotkey-run-skins`;Object.freeze(ha.map(e=>({value:e.value,labelKey:`HWHTITANTRAINER_UI_THEME_${e.value.toUpperCase().replace(/-/g,`_`)}`,icon:e.icon}))),Object.freeze(ya.map(e=>({...e,definition:{...e.definition,labelKey:`HWHTITANTRAINER_UI_THEME_${e.definition.value.toUpperCase().replace(/-/g,`_`)}`}})));var eo=`hwhtitan-selection-`,to=`hwhtitanartifact-slot-filter-`,no=`hwhtitanartifact-level-cap-`,ro=`data-hwhtitanartifact-titan-reorder`,io=`data-hwhtitanartifact-slot-reorder`,ao=`hwhtitanartifact-essence-reserve`,oo=`hwhtitanartifact-gold-reserve`,so=`hwhtitanartifact-fragment-coin-reserve`,co=`hwhtitanartifact-evolve-artifacts`,lo=`hwhtitanartifact-buy-fragments`,uo=`hwhtitanartifact-evolve-targets`,fo=`hwhtitanartifact-fragment-buy-targets`,po=`hwhtitanartifact-evolution-max-star`,mo=`hwhtitanartifact-leveling-mode`,ho=`hwhtitanartifact-upgrade-mode`,go=`hwhtitanartifact-checklist-amount-behavior`,_o=`hwhtitanartifact-checklist-amount`,vo=`hwhtitanartifact-checklist-fragment-behavior`,yo=`hwhtitanartifact-show-full-cost`,bo=`hwhtitanlevel-potion-reserve`,xo=`hwhtitanlevel-buy-xp-potions`,So=`hwhtitanlevel-xp-potion-coin-reserve`,Co=`hwhtitanlevel-leveling-mode`,wo=`hwhtitanlevel-upgrade-mode`,To=`hwhtitanlevel-checklist-amount-behavior`,Eo=`hwhtitanlevel-checklist-amount`,Do=`hwhtitanlevel-cap-`,Oo=`data-hwhtitanlevel-titan-reorder`,ko=`hwhtitanlevel-evolve-targets`,Ao=`hwhtitanlevel-evolution-max-star`,jo=`hwhtitanlevel-show-next-cost`,Mo=`hwhtitanlevel-show-evolution`,No=`hwhtitanskin-reserve`,Po=`hwhtitanskin-leveling-mode`,Fo=`hwhtitanskin-upgrade-mode`,Io=`hwhtitanskin-checklist-amount-behavior`,Lo=`hwhtitanskin-checklist-amount`,Ro=`hwhtitanskin-filter-`,zo=`hwhtitanskin-level-cap-`,Bo=`data-hwhtitanskin-titan-reorder`,Vo=`data-hwhtitanskin-skin-reorder`,Ho=`hwhtitanskin-show-next-cost`,Uo=`hwhtitanartifact-calc-`,Wo=`hwhtitanlevel-calc-`,Go=`hwhtitanskin-calc-`,Ko=`${Uo}titan`,qo=`${Uo}slot`,Jo=`${Uo}start`,Yo=`${Uo}end`,Xo=`${Wo}titan`,Zo=`${Wo}start`,Qo=`${Wo}end`,$o=`${Go}titan`,es=`${Go}group`,ts=`${Go}start`,ns=`${Go}end`,J={selectedTitanIds:[],selectedArtifactSlotIds:[0,1],levelingMode:`max`,upgradeMode:ka,checklistAmountBehavior:ja,checklistLevelingAmount:1,checklistFragmentPurchaseBehavior:Na,essenceReserve:0,artifactGoldReserve:0,artifactFragmentCoinReserve:0,evolveArtifacts:!1,buyArtifactFragments:!1,selectedArtifactEvolutionKeys:[],selectedArtifactFragmentBuyKeys:[],artifactEvolutionMaxStar:void 0,showFullCosts:!1,syncAfterRun:!1,uiTheme:pa,uiTooltipsEnabled:!0,progressAutoHideResult:!1,progressAutoHideResultTimeoutMs:5e3,progressWindowPosition:`top-right`,progressWindowStyle:`default`,accordionAutoScrollMode:`smooth`,reorderListVariant:Pr,titanTrainerButtonPlacement:Pa,hotkeys:{openSettings:``,runAll:``,runArtifacts:``,runLevels:``,runSkins:``},artifactLevelCaps:[],artifactRules:{}},rs={selectedTitanIds:[],levelingMode:`max`,upgradeMode:Aa,checklistAmountBehavior:ja,checklistLevelingAmount:1,potionReserve:0,buyXpPotions:!1,xpPotionCoinReserve:0,showNextCosts:!1,showEvolutionProgress:!0,syncAfterRun:!1,titanLevelCaps:{},selectedTitanEvolutionIds:[],titanEvolutionMaxStar:void 0},is={selectedTitanIds:[],selectedSkinLocaleKeys:[],levelingMode:`max`,upgradeMode:ka,checklistAmountBehavior:ja,checklistLevelingAmount:1,skinStoneReserve:0,showNextCosts:!1,syncAfterRun:!1,skinLevelCaps:{},skinRules:{}};function as(e,t){for(let t of Object.keys(e))delete e[t];Object.assign(e,t)}function os(e,t,n,r={}){var i;let a=`hwhx-settings-${e}`,o=(i=r.storage)==null?rn():i,s={...t},c=new Map,l=new Map;async function u(){var e,t;let n=String((e=await((t=r.getStorageScopeKey)==null?void 0:t.call(r)))==null?``:e).trim();return n?`${a}:${encodeURIComponent(n)}`:a}function d(e){return n?n(e):e&&typeof e==`object`?e:{...t}}async function f({force:e=!1,preferSource:t=!1}={}){let n=await u(),r=c.get(n);if(!e&&r){as(s,{...r});return}let i=`${n}:${t?`source`:`cache`}`,a=l.get(i);a||(a=p(n,t),l.set(i,a));try{let e=await a;c.set(n,e),as(s,{...e})}finally{l.get(i)===a&&l.delete(i)}}async function p(e,n){try{var i;if(!n){let t=await o.getItem(e);if(t!=null)return d(t)}let t=await((i=r.read)==null?void 0:i.call(r));if(t!==void 0){let n=d(t);return await o.setItem(e,n),n}}catch(e){}return{...t}}async function m(){var e;let t=d({...s});as(s,t);let n=await u();await o.setItem(n,t),await((e=r.write)==null?void 0:e.call(r,t)),c.set(n,t)}function h(){as(s,{...t})}let g={state:s,load:f,save:m,reset:h};return{storageKey:a,resolveStorageKey:u,useStore:()=>g}}async function ss({normalizers:e,repository:t}){let{useStore:n}=os(`hwhtitanartifact-artifacts`,J,e.artifact,{read:t.readArtifact,write:t.writeArtifact}),{useStore:r}=os(`hwhtitanartifact-levels`,rs,e.level,{read:t.readLevel,write:t.writeLevel}),{useStore:i}=os(`hwhtitanartifact-skins`,is,e.skin,{read:t.readSkin,write:t.writeSkin}),a=n(),o=r(),s=i(),c={artifactStore:a,levelStore:o,skinStore:s};return await a.load(),await o.load(),await s.load(),{stores:c,artifactSettings:e.artifact(a.state),levelSettings:e.level(o.state),skinSettings:e.skin(s.state)}}async function cs({artifactSettings:e,levelSettings:t,skinSettings:n,stores:r,normalizers:i,repository:a}){let o=i.artifact(e),s=i.level(t),c=i.skin(n);if(r){ls(r.artifactStore,o),ls(r.levelStore,s),ls(r.skinStore,c),await r.artifactStore.save(),await r.levelStore.save(),await r.skinStore.save();return}await a.writeArtifact(o),await a.writeLevel(s),await a.writeSkin(c)}function ls(e,t){e!=null&&e.state&&as(e.state,t)}var us=new Set([`AltLeft`,`AltRight`,`ControlLeft`,`ControlRight`,`MetaLeft`,`MetaRight`,`ShiftLeft`,`ShiftRight`]),ds={alt:`Alt`,cmd:`Meta`,command:`Meta`,control:`Ctrl`,ctrl:`Ctrl`,meta:`Meta`,option:`Alt`,shift:`Shift`,win:`Meta`,windows:`Meta`},fs=256,ps=new Map;function ms(e){let t=String(e==null?``:e).trim();return!t||us.has(t)?``:/^Key[A-Z]$/.test(t)||/^Digit\d$/.test(t)||/^F(?:[1-9]|1[0-2])$/.test(t)||/^[A-Za-z][A-Za-z0-9]*$/.test(t)?t:``}function hs(e){let t=String(e==null?``:e).trim(),n=ps.get(t);if(n!==void 0)return n;let r=t.split(`+`).map(e=>e.trim()).filter(Boolean);if(r.length===0)return gs(t,``);let i=new Set,a=``;for(let e of r){let t=ds[e.toLowerCase()];if(t){i.add(t);continue}a=ms(e)}return a?gs(t,[`Ctrl`,`Alt`,`Shift`,`Meta`].filter(e=>i.has(e)).concat(a).join(`+`)):gs(t,``)}function gs(e,t){return ps.size>=fs&&ps.clear(),ps.set(e,t),t}function _s(e,t={}){let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{},r={};for(let e of new Set([...Object.keys(t),...Object.keys(n)])){var i;let a=String(e).trim();a&&(r[a]=hs((i=n[a])==null?t[e]:i))}return r}function vs(e){var t;if(e.isComposing||(t=e.getModifierState)!=null&&t.call(e,`AltGraph`))return``;let n=ms(e.code||e.key);if(!n)return``;let r=[e.ctrlKey?`Ctrl`:``,e.altKey?`Alt`:``,e.shiftKey?`Shift`:``,e.metaKey?`Meta`:``].filter(Boolean);return r.length===0&&!/^F(?:[1-9]|1[0-2])$/.test(n)?``:[...r,n].join(`+`)}function ys(e){return typeof Element>`u`||!(e instanceof Element)?!1:!!e.closest(`input,select,textarea,[contenteditable="true"],[data-hwhx-hotkey-capture="1"]`)}function bs(e){return typeof e.enabled==`function`?e.enabled():e.enabled!==!1}function xs(){let e={scopes:new Map};return globalThis.addEventListener(`keydown`,t=>{let n=t;if(n.defaultPrevented||n.repeat||n.isComposing||ys(n.target))return;let r=vs(n);if(!r)return;let i=null,a=null;for(let t of e.scopes.values())for(let e of t.getBindings())hs(e.shortcut)!==r||!bs(e)||(i?(a!=null||(a=[i.id]),a.push(e.id)):i=e);if(!i||a){a&&console.warn(`[hwhx] hotkey conflict: ${r}`,a);return}n.preventDefault(),n.stopPropagation(),Promise.resolve(i.handler(n)).catch(e=>{console.error(`[hwhx] hotkey failed: ${i.id}`,e)})},!0),e}function Ss(){let e=globalThis;return e.__hwhxHotkeyRegistryV1!=null||(e.__hwhxHotkeyRegistryV1=xs()),e.__hwhxHotkeyRegistryV1}function Cs(e,t){let n=String(e==null?``:e).trim();if(!n)throw Error(`Hotkey scope id is required`);let r=Ss();return r.scopes.set(n,t),()=>{r.scopes.get(n)===t&&r.scopes.delete(n)}}function ws(e,t=[]){return Array.isArray(e)?e:t}function Ts(e,t){return N(e)?e[String(t)]:void 0}function Es(e,t){if(Array.isArray(e)){let n=Number(t);return Number.isInteger(n)?e[n]:void 0}return Ts(e,t)}function Ds(e){return ba(e)}function Os(e){let t=String(e==null?``:e).toLowerCase();return/(brown|корич)/.test(t)?`#8d6e63`:/(red|крас)/.test(t)?`#d9534f`:/(orange|gold|yellow|оранж|желт)/.test(t)?`#f0ad4e`:/(violet|purple|фиол|пурп)/.test(t)?`#b388ff`:/(blue|син)/.test(t)?`#67c7ff`:/(green|зел)/.test(t)?`#7fe3ba`:`#f0d59f`}function ks(e){let t=String(e==null?``:e).toLowerCase();return t.includes(`8f7a68`)?`muted`:t.includes(`9fe0a8`)?`green`:t.includes(`8fd3ff`)?`blue`:t.includes(`d7b2ff`)?`purple`:t.includes(`b388ff`)?`violet`:t.includes(`ffd36e`)||t.includes(`f0d59f`)?`gold`:t.includes(`f0ad4e`)?`orange`:t.includes(`d9534f`)?`red`:t.includes(`8d6e63`)?`brown`:t.includes(`ff9f9f`)?`danger`:`gold`}function As(){return[{key:`levels`,taskName:`runTitanLevelChecklistTask`,labelKey:`~dN`},{key:`artifacts`,taskName:`runTitanArtifactChecklistTask`,labelKey:`~dM`},{key:`skins`,taskName:`runTitanSkinChecklistTask`,labelKey:`~dO`}]}function js(e){return`hwhtitanartifact-do-your-best-placement-${String(e==null?`all`:e)}`}function Ms(e){return Array.isArray(e)?e.length:Object.keys(e&&typeof e==`object`?e:{}).map(e=>Number(e)).filter(e=>Number.isFinite(e)&&e>0).reduce((e,t)=>Math.max(e,t),0)}function Y(e,t){let n=Math.max(0,Math.floor(Number(t)||0)),r=xt(e,n);return Number.isFinite(r)?Math.max(0,Math.floor(r)):n}function Ns(e){return e===`amount`?`amount`:`max`}function Ps(e,t=`sequential`){return e===`sequential`||e===`parallel`?e:t===`parallel`?`parallel`:`sequential`}function Fs(e){return e==="default"?`default`:`skip`}function Is(e){return e===`skip`?`skip`:`use-settings`}function Ls(e){return e===`other`?`other`:`main`}function Rs(e,t=void 0){if(e==null||e===``)return t;try{return JSON.parse(String(e))}catch(e){return t}}function zs(e,t){return`${Math.max(0,Number(e)||0)}:${Math.max(0,Number(t)||0)}`}function Bs(e){let[t,n]=String(e==null?``:e).split(`:`),r=Number(t),i=Number(n);if(!(!Number.isFinite(r)||!Number.isFinite(i)||!Da.has(i)))return{titanId:r,slotId:i}}function Vs(e,t=q){let n=new Set(ws(t,q).map(e=>Number(e)).filter(e=>Da.has(e)));return[...new Set(ws(e))].map(Bs).filter(e=>e!=null&&Number.isFinite(e.titanId)&&n.has(Number(e.slotId))).map(e=>zs(e.titanId,e.slotId))}function Hs(e){return[...new Set(ws(e))].map(e=>Number(e)).filter(e=>Number.isFinite(e))}function Us(e,t=[0,1]){let n=ws(e,t);return[...new Set(n)].map(e=>Number(e)).filter(e=>Da.has(e))}function Ws(e,t,n=[]){let r=ws(e,n);return[...new Set(r)].map(e=>String(e==null?``:e).trim()).filter(e=>e&&t.has(e))}function X(e){return N(e)?e:{}}function Gs(e){return Math.max(0,Math.floor(Number(e)||0))}function Ks(e){return Y(X(e).checklistLevelingAmount,1)}function qs(e){function t(t,n=J){let r=X(t),i=X(r.levelCaps),a=Us(n.selectedArtifactSlotIds,[0,1]);return{slotIds:Us(Array.isArray(r.slotIds)?r.slotIds:a,a),levelCaps:Object.fromEntries(q.map(t=>{var r,a,o;return[t,Y((r=(a=i[t])==null?i[String(t)]:a)==null?(o=n.artifactLevelCaps)==null?void 0:o[t]:r,e.getDefaultArtifactLevelCap(t))]}))}}function n(n=J){let r=X(n.artifactRules);return Object.fromEntries(e.getConfigTitanIds().map(e=>{var i;return[e,t((i=r[e])==null?r[String(e)]:i,n)]}))}function r(e,n){var r;let i=Number(n),a=X(e.artifactRules);return t((r=a[i])==null?a[String(i)]:r,e)}function i(e,t){return r(e,t).slotIds}function a(t,n,i){var a,o,s;let c=Number(i);return Y((a=(o=r(t,n).levelCaps)==null?void 0:o[c])==null?(s=t.artifactLevelCaps)==null?void 0:s[c]:a,e.getDefaultArtifactLevelCap(c))}function o(e,t=[]){let n=[];return Hs(t).forEach(t=>{i(e,t).forEach(e=>{n.includes(e)||n.push(e)})}),n.length>0?n:Us(e==null?void 0:e.selectedArtifactSlotIds,[0,1])}function s(t,n=is,r=e.getTitanSkinGroups()){let i=X(t),a=X(i.levelCaps),o=new Set(r.map(e=>e.localeKey)),s=Array.isArray(n.selectedSkinLocaleKeys)&&n.selectedSkinLocaleKeys.length>0?n.selectedSkinLocaleKeys:r.map(e=>e.localeKey);return{localeKeys:Ws(Array.isArray(i.localeKeys)?i.localeKeys:s,o,s),levelCaps:Object.fromEntries(r.map(t=>{var r,i;return[t.localeKey,Y((r=a[t.localeKey])==null?(i=n.skinLevelCaps)==null?void 0:i[t.localeKey]:r,e.getDefaultTitanSkinLevelCap(t.localeKey))]}))}}function c(t=is){let n=e.getTitanSkinGroups(),r=X(t.skinRules);return Object.fromEntries(e.getConfigTitanIds().map(e=>{var i;return[e,s((i=r[e])==null?r[String(e)]:i,t,n)]}))}function l(e,t){var n;let r=Number(t),i=X(e.skinRules);return s((n=i[r])==null?i[String(r)]:n,e)}function u(t,n,r){var i,a,o;let s=String(r==null?``:r).trim();return Y((i=(a=l(t,n).levelCaps)==null?void 0:a[s])==null?(o=t.skinLevelCaps)==null?void 0:o[s]:i,e.getDefaultTitanSkinLevelCap(s))}function d(t,n=[]){let r=[];return Hs(n).forEach(e=>{l(t,e).localeKeys.forEach(e=>{r.includes(e)||r.push(e)})}),r.length>0?r:e.getTitanSkinGroups().map(e=>e.localeKey)}function f(t){var r,i,a;let o=X(t),s=Hr(o,J),c=Hs(o.selectedTitanIds),l=Us(o.selectedArtifactSlotIds,[0,1]).sort((e,t)=>e-t),u=q.map(t=>Y(X(o.artifactLevelCaps)[t],e.getDefaultArtifactLevelCap(t))),d=l.length>0?l:[0,1],f=n({...J,...o,selectedArtifactSlotIds:d,artifactLevelCaps:u});return{selectedTitanIds:c,selectedArtifactSlotIds:d,levelingMode:Ns(o.levelingMode),upgradeMode:Ps(o.upgradeMode,J.upgradeMode),checklistAmountBehavior:Fs(o.checklistAmountBehavior),checklistLevelingAmount:Ks(t),checklistFragmentPurchaseBehavior:Is((r=o.checklistFragmentPurchaseBehavior)==null?Na:r),essenceReserve:Gs(o.essenceReserve),artifactGoldReserve:Gs(o.artifactGoldReserve),artifactFragmentCoinReserve:Gs(o.artifactFragmentCoinReserve),evolveArtifacts:!!o.evolveArtifacts,buyArtifactFragments:!!o.buyArtifactFragments,selectedArtifactEvolutionKeys:Vs(o.selectedArtifactEvolutionKeys),selectedArtifactFragmentBuyKeys:Vs(o.selectedArtifactFragmentBuyKeys,[0,1]),artifactEvolutionMaxStar:Y(o.artifactEvolutionMaxStar,e.getMaxKnownTitanArtifactStar()),showFullCosts:!!o.showFullCosts,syncAfterRun:!!o.syncAfterRun,uiTheme:Ds(o.uiTheme),uiTooltipsEnabled:o.uiTooltipsEnabled!==!1,...s,accordionAutoScrollMode:Cr(o.accordionAutoScrollMode,J.accordionAutoScrollMode),reorderListVariant:Lr(o.reorderListVariant,J.reorderListVariant),titanTrainerButtonPlacement:Ls((i=(a=o.titanTrainerButtonPlacement)==null?e.getTitanTrainerButtonPlacementFallback():a)==null?Pa:i),hotkeys:_s(o.hotkeys,J.hotkeys),artifactLevelCaps:u,artifactRules:f}}function p(t){let n=X(t),r=Hs(n.selectedTitanIds),i=X(n.titanLevelCaps),a=Y(n.maxTitanLevel,e.getMaxTitanLevel()),o=Object.fromEntries(e.getConfigTitanIds().map(e=>{var t;return[e,Y((t=i[e])==null?i[String(e)]:t,a)]}));return{selectedTitanIds:r,levelingMode:Ns(n.levelingMode),upgradeMode:Ps(n.upgradeMode,rs.upgradeMode),checklistAmountBehavior:Fs(n.checklistAmountBehavior),checklistLevelingAmount:Ks(t),potionReserve:Gs(n.potionReserve),buyXpPotions:!!n.buyXpPotions,xpPotionCoinReserve:Gs(n.xpPotionCoinReserve),showNextCosts:!!n.showNextCosts,showEvolutionProgress:n.showEvolutionProgress!==!1,syncAfterRun:!!n.syncAfterRun,titanLevelCaps:o,selectedTitanEvolutionIds:[...new Set(Array.isArray(n.selectedTitanEvolutionIds)?n.selectedTitanEvolutionIds:[])].map(e=>Number(e)).filter(e=>Number.isFinite(e)),titanEvolutionMaxStar:Y(n.titanEvolutionMaxStar,e.getMaxTitanEvolutionStar())}}function m(t,n){var r,i;let a=Number(n),o=X(t.titanLevelCaps);return Y((r=(i=o[a])==null?o[String(a)]:i)==null?t.maxTitanLevel:r,e.getMaxTitanLevel())}function h(t){let n=X(t),r=Hs(n.selectedTitanIds),i=e.getTitanSkinGroups(),a=new Set(i.map(e=>e.localeKey)),o=Ws(n.selectedSkinLocaleKeys,a),s=o.length>0?o:i.map(e=>e.localeKey),l=Object.fromEntries(i.map(t=>[t.localeKey,Y(X(n.skinLevelCaps)[t.localeKey],e.getDefaultTitanSkinLevelCap(t.localeKey))])),u=c({...is,...n,selectedSkinLocaleKeys:s,skinLevelCaps:l});return{selectedTitanIds:r,selectedSkinLocaleKeys:s,levelingMode:Ns(n.levelingMode),upgradeMode:Ps(n.upgradeMode,is.upgradeMode),checklistAmountBehavior:Fs(n.checklistAmountBehavior),checklistLevelingAmount:Ks(t),skinStoneReserve:Gs(n.skinStoneReserve),showNextCosts:!!n.showNextCosts,syncAfterRun:!!n.syncAfterRun,skinLevelCaps:l,skinRules:u}}return{getArtifactLevelCapForTitan:a,getArtifactRuleForTitan:r,getArtifactSlotIdsForTitan:i,getChecklistLevelingAmount:Ks,getSelectedArtifactSlotIdsFromRules:o,getSelectedSkinLocaleKeysFromRules:d,getSkinLevelCapForTitan:u,getSkinRuleForTitan:l,getTitanLevelCapForTitan:m,normalizeArtifactRules:n,normalizeLevelSettings:p,normalizeSettings:f,normalizeSkinRules:c,normalizeSkinSettings:h,normalizeTitanArtifactRule:t,normalizeTitanSkinRule:s}}var Js=(e,t)=>{console.warn(e,t)};function Ys(){return e()}function Xs({storage:e=Ys(),warn:t=Js}={}){try{return Ls(Rs(e==null?void 0:e.getItem(Ca),Pa))}catch(e){return t(`[TitanTrainer] button placement read failed`,e),Pa}}function Zs(e,{storage:t=Ys(),warn:n=Js}={}){try{t==null||t.setItem(`hwhtitantrainer_button_placement`,JSON.stringify(Ls(e)))}catch(e){n(`[TitanTrainer] button placement write failed`,e)}}var Qs=[`coin`,`consumable`,`fragmentTitan`,`fragmentTitanArtifact`],$s={titans:{name:`titanGetAll`,args:{},ident:`titanGetAll`},inventory:{name:`inventoryGet`,args:{},ident:`inventoryGet`},userInfo:{name:`userGetInfo`,args:{},ident:`userGetInfo`}};function ec(e){return N(e)?e:{}}function tc(e,t){var n;let r=e[t];return ec((n=ec(r==null?void 0:r.result).response)==null?r==null?void 0:r.response:n)}function nc(e){let t={};return Object.entries(ec(e)).forEach(([e,n])=>{t[e]=Qs.includes(e)?ec(n):n}),t}function rc(e=!0,t=!1){let n=[$s.titans];return e&&n.push($s.inventory),t&&n.push($s.userInfo),n}function ic(e,t=!0,n=!1){let r=Array.isArray(e)?e:[],i=0;return{titans:tc(r,i++),inventory:t?nc(tc(r,i++)):{},userInfo:n?ec(tc(r,i)):{}}}async function ac(e,t=!0,n=!1){return ic(await e(rc(t,n)),t,n)}function Z(e){return N(e)?e:{}}function oc(e,t){return Z(e)[String(t)]}function sc(e,t){return Z(oc(e,t))}function cc(e,t){return Z(Es(e,t))}function lc(e){var t;return Z(Z((t=globalThis.lib)==null?void 0:t.data)[e])}function uc(e){return N(e)?e:{response:e}}function dc(e){return e?N(e)?e:{message:String(e)}:null}function fc(e){let t=Z(e);return{error:dc(t.error),results:Array.isArray(t.results)?t.results.map(uc):void 0}}function pc(e,t){var n;let r=e[t];return Z((n=Z(r==null?void 0:r.result).response)==null?r==null?void 0:r.response:n)}function mc([e,t]){return async function(n){let r=e();if(typeof r!=`function`)throw Error(String(t(`~dp`)));return b({calls:[...n],transport:async e=>fc(await r({calls:e})),normalizeResults:e=>{var t;return(t=e.results)==null?[]:t},fallbackErrorMessage:String(t(`~cC`))})}}var hc={allowStart:!0};function gc(e){let t=typeof e==`string`?He(e,hc):void 0,n=N(e)?e:{};return Object.fromEntries(As().map(e=>{var r,i,a;return[e.key,He((r=(i=(a=n[e.key])==null?n[e.taskName]:a)==null?t:i)==null?`end`:r,hc)]}))}function _c(){return new Set([Ua,Ha,Wa])}function vc(e){return _c().has(Be(e))}function yc({handlers:e,translate:t}){return As().map(n=>{let r=e[n.key];if(typeof r!=`function`)throw Error(`Missing Titan DoYourBest handler for ${n.key}`);return{moduleKey:n.key,name:n.taskName,label:t(n.labelKey),handler:r}})}function bc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function xc({currentFunctions:e={},currentTaskList:t,readPlacement:n,taskDefinitions:r}){let i=t.filter(bc),a=new Map(i.filter(vc).map(e=>[Be(e),e])),o=i.filter(e=>!vc(e));r.forEach(e=>{var t;let r=n(e.moduleKey);if(r===`none`)return;let i={name:e.name,label:e.label,checked:!!((t=a.get(e.name))!=null&&t.checked)},s=qe(o,r,{allowStart:!0});if(String(r).startsWith(`after:`))for(;stypeof e[t.name]==`function`),u={...e,...Object.fromEntries(r.map(e=>[e.name,e.handler]))};return{changed:s!==c||!l,functions:u,taskList:o}}function Sc(e){return N(e)?e:{}}function Cc(e,t){return Object.entries(Sc(Sc(e).slots)).map(([e,n])=>{var r;let i=Sc(n),a=Sc(i.reward),o=Sc(i.cost),[s,c]=(r=Object.entries(Sc(a.fragmentTitanArtifact))[0])==null?[]:r,l=Number(s),u=Math.max(0,Number(Sc(o.coin)[18])||0),d=Number(i.amountAvailable),f=Number.isFinite(d)&&d>0?Math.floor(d):1/0;return!Number.isFinite(l)||l<=0||Math.max(0,Number(c)||0)<=0||u<=0?null:{shopId:13,slotId:Number(e),artifactId:l,artifactName:t(l),fragmentAmount:Math.max(0,Number(c)||0),coinCost:u,reward:Ct(i.reward),cost:Ct(i.cost),bought:!!i.bought,rawAmountAvailable:i.amountAvailable,amountAvailable:f}}).filter(e=>!!e)}function wc(e){return e?{shopId:e.shopId,slotId:e.slotId,artifactId:e.artifactId,artifactName:e.artifactName,fragmentAmount:e.fragmentAmount,coinCost:e.coinCost,bought:!!e.bought,rawAmountAvailable:e.rawAmountAvailable,amountAvailable:Number.isFinite(Number(e.amountAvailable))?e.amountAvailable:`unlimited`}:null}function Tc(e){return e?{shopId:e.shopId,slotId:e.slotId,artifactId:e.artifactId,artifactName:e.artifactName,amount:e.amount,purchaseCount:e.purchaseCount,fragmentAmount:e.fragmentAmount,coinCost:e.coinCost,coinSpentAmount:e.coinSpentAmount,missingFragments:e.missingFragments}:null}function Ec(e,t){let n=String(t.artifactId);e.has(n)||e.set(n,{artifactName:t.artifactName,amount:0,coinSpentAmount:0});let r=e.get(n);r&&(r.amount+=t.amount,r.coinSpentAmount+=Number(t.coinSpentAmount)||t.coinCost*(t.purchaseCount||t.amount))}function Dc(e,t){let n=`${t.titanId}:${t.slotId}`;e.has(n)||e.set(n,{titanName:t.titanName,artifactLabel:t.artifactLabel,startStar:t.fromStar,endStar:t.toStar,count:0});let r=e.get(n);r&&(r.endStar=t.toStar,r.count+=1)}function Oc(e){return e.evolutions.length*1e3+e.fragmentTargetCount}function kc(e,t){var n,r,i,a;if(!t)return!0;let o=Oc(e),s=Oc(t);if(o!==s)return o>s;let c=Math.max(0,Number(e.coinSpentAmount)||0),l=Math.max(0,Number(t.coinSpentAmount)||0);if(c!==l)return cMath.max(0,Number(e.coinSpentAmount)||0)-Math.max(0,Number(t.coinSpentAmount)||0));let n=[],r=-1;for(let e of t){let t=Oc(e);t>r&&(n.push(e),r=t)}return n}function jc(e,t,n){let r=new Map;for(let i of e)for(let e of t){let t=n(i,e);if(!t)continue;let a=Math.max(0,Number(t.coinSpentAmount)||0);kc(t,r.get(a))&&r.set(a,t)}return Ac(r.values())}function Mc(e,t){return(Number(e.missingFragments)||0)-(Number(t.missingFragments)||0)||e.coinCost-t.coinCost||mt(e.artifactName,t.artifactName)}function Nc({artifactId:e,artifactName:t,chains:n,inventory:r,shopSlot:i,buyMissingFragments:a,debugEntries:o=void 0},[s]){var c;let l=[{fragmentCost:0,fragmentTargetCount:0,evolutions:[]}];n.forEach(e=>{let t=[{fragmentCost:0,fragmentTargetCount:0,evolutions:[]}],n=0,r=[];e.evolutionSteps.forEach(e=>{n+=e.fragmentCost,r.push(e),t.push({fragmentCost:n,fragmentTargetCount:0,evolutions:r.slice()})}),e.evolutionSteps.length<=0&&e.nextStarFragmentCost>0&&t.push({fragmentCost:e.nextStarFragmentCost,fragmentTargetCount:1,evolutions:[]}),l=jc(l,t,(e,t)=>({coinSpentAmount:e.fragmentCost+t.fragmentCost,fragmentCost:e.fragmentCost+t.fragmentCost,fragmentTargetCount:e.fragmentTargetCount+t.fragmentTargetCount,evolutions:[...e.evolutions,...t.evolutions]}))});let u=s(r,e),d=n.some(e=>e.canBuyFragments);return o==null||o.push({stage:`group:init`,artifactId:e,artifactName:t,availableFragments:u,canBuyFragments:d,buyMissingFragments:!!a,shopSlot:wc(i),chainCount:(c=n==null?void 0:n.length)==null?0:c,optionCount:l.length}),l.map(n=>{let r=Math.max(0,n.fragmentCost-u);if(r<=0)return o==null||o.push({stage:`purchase:covered`,artifactId:e,artifactName:t,fragmentCost:n.fragmentCost,availableFragments:u}),{...n,coinSpentAmount:0,fragmentPurchases:[]};let s=[];if(a||s.push(`setting-disabled`),d||s.push(`artifact-not-selected-for-fragment-buy`),i||s.push(`shop-slot-not-found`),i&&i.coinCost<=0&&s.push(`shop-slot-without-coin-cost`),s.length>0)return o==null||o.push({stage:`purchase:rejected`,artifactId:e,artifactName:t,fragmentCost:n.fragmentCost,availableFragments:u,missingFragments:r,reasons:s,shopSlot:wc(i)}),null;if(!i)return null;let c=Math.max(10,r),l=Math.max(1,Math.floor(Number(i.fragmentAmount)||0)),f=Math.ceil(c/l);if(f>i.amountAvailable)return o==null||o.push({stage:`purchase:rejected`,artifactId:e,artifactName:t,fragmentCost:n.fragmentCost,availableFragments:u,missingFragments:r,targetFragmentAmount:c,fragmentsPerPurchase:l,purchaseCount:f,amountAvailable:i.amountAvailable,reasons:[`not-enough-shop-amount`],shopSlot:wc(i)}),null;let p=f*l;return o==null||o.push({stage:`purchase:planned`,artifactId:e,artifactName:t,fragmentCost:n.fragmentCost,availableFragments:u,missingFragments:r,targetFragmentAmount:c,fragmentsPerPurchase:l,purchaseCount:f,purchasedFragmentAmount:p,coinSpentAmount:f*i.coinCost,shopSlot:wc(i)}),{...n,coinSpentAmount:f*i.coinCost,fragmentPurchases:f>0?[{...i,artifactId:e,artifactName:t,amount:p,purchaseCount:f,coinSpentAmount:f*i.coinCost}]:[]}}).filter(e=>!!e)}function Pc(e,t){let n=Cc(e.shopData,t),r=new Map;for(let e of n)e.bought||r.set(e.artifactId,e);let i=Math.max(0,Number(e.coinAmount)||0),a=Math.max(0,Number(e.coinReserveAmount)||0);return{fragmentShopSlots:n,shopSlotByArtifactId:r,evolutionKeySet:new Set(Vs(e.selectedArtifactEvolutionKeys)),buyKeySet:new Set(Vs(e.selectedArtifactFragmentBuyKeys,[0,1])),maxArtifactStar:Math.max(0,Number(e.maxArtifactStar)||0),totalCoinAmount:i,coinReserveAmount:a,coinBudget:Math.max(0,i-a)}}function Fc(e,t){var n,r;(n=e.debugEntries)==null||n.push({stage:`plan:start`,buyMissingFragments:!!e.buyMissingFragments,selectedTitanIds:[...(r=e.selectedTitanIds)==null?[]:r],selectedArtifactEvolutionKeys:[...t.evolutionKeySet],selectedArtifactFragmentBuyKeys:[...t.buyKeySet],coinAmount:t.totalCoinAmount,coinReserveAmount:t.coinReserveAmount,coinBudget:t.coinBudget,shopSlots:t.fragmentShopSlots.map(e=>wc(e))})}function Ic(e,t,n){var r;let[i,a,o,s,c,l,u]=n,d=Sc(e.ownedTitans),f=new Map;for(let n of(r=e.selectedTitanIds)==null?[]:r){let r=d[String(n)];if(!r){var p;(p=e.debugEntries)==null||p.push({stage:`target:skipped`,reason:`titan-not-owned`,titanId:n});continue}let v=a(n),y=s(r);for(let r of q){var m,h;let a=zs(n,r),s=t.evolutionKeySet.has(a),d=t.buyKeySet.has(a);if(!s&&!d)continue;let p=c(n,r),b=Math.max(0,Number(p==null?void 0:p.artifactId)||0);if(!p||b<=0){var g;(g=e.debugEntries)==null||g.push({stage:`target:skipped`,reason:`artifact-config-not-found`,titanId:n,titanName:v,slotId:r,artifactKey:a,shouldEvolveArtifact:s,shouldBuyArtifactFragments:d});continue}let x=i(b),S=(m=y[r])==null?{star:0}:m,C=Math.max(0,Number(S.star)||0),w=l(n,r),T=t.maxArtifactStar>0?Math.min(t.maxArtifactStar,w):w,E=u(n,r,C,T);if(E.length<=0){var _;(_=e.debugEntries)==null||_.push({stage:`target:skipped`,reason:`no-evolution-steps`,titanId:n,titanName:v,slotId:r,artifactKey:a,artifactId:b,artifactName:x,currentStar:C,targetStar:T,shouldEvolveArtifact:s,shouldBuyArtifactFragments:d});continue}let D=f.get(b);D||(D={artifactId:b,artifactName:x,chains:[]},f.set(b,D));let O=[];if(s){let e=C;for(let t of E)O.push({titanId:n,titanName:v,slotId:r,artifactId:b,artifactLabel:o(r),artifactName:x,fromStar:e,toStar:t.star,fragmentCost:t.fragmentCost}),e=t.star}let ee=E[0];ee&&(D.chains.push({titanId:n,slotId:r,canBuyFragments:d,nextStarFragmentCost:!s&&d?ee.fragmentCost:0,evolutionSteps:O}),(h=e.debugEntries)==null||h.push({stage:`target:registered`,titanId:n,titanName:v,slotId:r,artifactKey:a,artifactId:b,artifactName:x,currentStar:C,targetStar:T,nextStarFragmentCost:ee.fragmentCost,evolutionStepCount:O.length,shouldEvolveArtifact:s,shouldBuyArtifactFragments:d,shopSlot:wc(t.shopSlotByArtifactId.get(b))}))}}return f}function Lc(){return{coinSpentAmount:0,fragmentCost:0,fragmentTargetCount:0,fragmentPurchases:[],evolutions:[]}}function Rc(e,t,n,r){var i;let a=[Lc()];for(let i of n.values()){let n=Nc({...i,inventory:e.inventory,shopSlot:t.shopSlotByArtifactId.get(i.artifactId),buyMissingFragments:!!e.buyMissingFragments,debugEntries:e.debugEntries},[r]),s=jc(a,n,(n,r)=>{let a=n.coinSpentAmount+r.coinSpentAmount;if(a>t.coinBudget){var o;(o=e.debugEntries)==null||o.push({stage:`plan:budget-rejected`,artifactId:i.artifactId,artifactName:i.artifactName,baseCoinSpentAmount:n.coinSpentAmount,groupCoinSpentAmount:r.coinSpentAmount,nextCoinSpent:a,coinBudget:t.coinBudget,fragmentPurchases:r.fragmentPurchases.map(e=>Tc(e))});return}return{coinSpentAmount:a,fragmentCost:n.fragmentCost+r.fragmentCost,fragmentTargetCount:n.fragmentTargetCount+r.fragmentTargetCount,fragmentPurchases:n.fragmentPurchases.concat(r.fragmentPurchases),evolutions:n.evolutions.concat(r.evolutions)}});if(s.length<=0){var o;(o=e.debugEntries)==null||o.push({stage:`plan:group-skipped`,artifactId:i.artifactId,artifactName:i.artifactName,reason:`no-options-inside-budget`,groupOptionCount:n.length,coinBudget:t.coinBudget});continue}a=s}let s=(i=a[0])==null?Lc():i;for(let e=1;e0||t.coinBudget<=0)return;let o;for(let r of n.values()){let n=t.shopSlotByArtifactId.get(r.artifactId);if(!n||n.coinCost<=0){var s;(s=e.debugEntries)==null||s.push({stage:`fallback:rejected`,artifactId:r.artifactId,artifactName:r.artifactName,reason:n?`shop-slot-without-coin-cost`:`shop-slot-not-found`,shopSlot:wc(n)});continue}let a=i(e.inventory,r.artifactId),d=1/0;for(let e of r.chains){var c;if(!e.canBuyFragments)continue;let t=Number(e.nextStarFragmentCost)||Number((c=e.evolutionSteps[0])==null?void 0:c.fragmentCost)||0,n=Math.max(0,t-a);n>0&&nTc(e))});let r=new Map,i=new Map;for(let t of e.fragmentPurchases)Ec(r,t);for(let t of e.evolutions)Dc(i,t);return{fragmentPurchases:e.fragmentPurchases,evolutions:e.evolutions,purchaseSummary:r,evolutionSummary:i,coinSpentAmount:e.coinSpentAmount,coinLeftAmount:Math.max(0,t.totalCoinAmount-e.coinSpentAmount),coinReserveAmount:t.coinReserveAmount}}function Hc(e){return t=>Uc(t,e)}function Uc(e,t){let n=Pc(e,t[0]);Fc(e,n);let r=Ic(e,n,t),i=Rc(e,n,r,t[7]);return zc(e,n,r,i,t[7]),Bc(i,e.maxOperationCount,e.debugEntries),Vc(i,n,e.debugEntries)}var Wc=new WeakMap,Gc=new WeakMap,Kc=new WeakSet,qc=class{constructor(e,t=[]){Et(this,Kc),P(this,Wc,void 0),P(this,Gc,void 0),I(Wc,this,e),I(Gc,this,Array.from(t));for(let e=Math.floor(L(Gc,this).length/2)-1;e>=0;--e)F(Kc,this,Jc).call(this,e)}get size(){return L(Gc,this).length}push(e){let t=L(Gc,this);t.push(e);let n=t.length-1;for(;n>0;){let e=Math.floor((n-1)/2);if(L(Wc,this).call(this,t[n],t[e])>=0)break;[t[n],t[e]]=[t[e],t[n]],n=e}}pop(){let e=L(Gc,this);if(e.length===0)return;let t=e[0],n=e.pop();return e.length>0&&n!==void 0&&(e[0]=n,F(Kc,this,Jc).call(this,0)),t}};function Jc(e){let t=L(Gc,this),n=e;for(;;){let e=n*2+1;if(e>=t.length)return;let r=e+1,i=r=0)return;[t[n],t[i]]=[t[i],t[n]],n=i}}function Yc(e,t,n=!0){let r=[],i;for(;e.size>0;){let n=e.pop();if(n===void 0)break;if(t(n)){i=n;break}r.push(n)}if(n)for(let t of r)e.push(t);return i}function Xc(e){return N(e)?e:{}}function Zc(e,t,n=`sequential`){if(n===`parallel`){let n=e.cost-t.cost;if(n!==0)return n}return e.titanPriority-t.titanPriority||e.slotPriority-t.slotPriority||e.nextLevel-t.nextLevel||e.cost-t.cost||e.titanId-t.titanId||e.slotId-t.slotId}function Qc(e,t){let n=`${t.titanId}:${t.slotId}`;e.has(n)||e.set(n,{titanName:t.titanName,artifactLabel:t.artifactLabel,startLevel:t.fromLevel,endLevel:t.toLevel,count:0});let r=e.get(n);r&&(r.endLevel=t.toLevel,r.count+=1)}function $c([e,t,n,r,i,a]){return function([o,s,c,l,u,d,f,p=void 0]){var m;let h=Xc(c),g=[],_=!1;o.forEach((o,c)=>{let l=h[String(o)],u=e(l);t(s,o).forEach((e,t)=>{if(!Da.has(Number(e)))return;let l=Number(e);_||(_=l===2);let d=Math.max(0,Number(u[l])||0),f=n(s,o,l);if(f>0&&d>=f)return;let p=r(o,l,d);p&&g.push({titanId:o,titanName:i(o),slotId:l,artifactLabel:a(l),currentLevel:d,nextLevel:p.nextLevel,cost:p.cost,resourceCost:p.resourceCost,goldCost:p.goldCost,titanPriority:c,slotPriority:t,targetLevel:f})})});let v=[],y=new Map,b=Math.max(0,Number(l)||0),x=Math.max(0,Number(u)||0),S=Math.max(0,Number(d)||0),C=Math.max(0,Number(f)||0),w=Math.max(0,b-x),T=Math.max(0,S-C),E=Number.isFinite(Number(p))?Math.max(0,Math.floor(Number(p))):1/0,D=String((m=Xc(s).upgradeMode)==null?`sequential`:m),O=new qc((e,t)=>Zc(e,t,D),g.filter(e=>e.cost>0));for(;O.size>0&&v.lengthe.resourceCost<=w&&e.goldCost<=T,!1);if(!e)break;let t={titanId:e.titanId,titanName:e.titanName,slotId:e.slotId,artifactLabel:e.artifactLabel,fromLevel:e.currentLevel,toLevel:e.nextLevel,cost:e.cost,resourceCost:e.resourceCost,goldCost:e.goldCost};if(v.push(t),Qc(y,t),w-=e.resourceCost,T-=e.goldCost,e.currentLevel=e.nextLevel,e.targetLevel>0&&e.currentLevel>=e.targetLevel)continue;let n=r(e.titanId,e.slotId,e.currentLevel);n&&(e.nextLevel=n.nextLevel,e.cost=n.cost,e.resourceCost=n.resourceCost,e.goldCost=n.goldCost,O.push(e))}let ee=Math.max(0,b-x)-w,k=Math.max(0,S-C)-T;return{queue:v,summary:y,spentAmount:ee,leftAmount:Math.max(0,b-ee),reserveAmount:x,goldSpentAmount:k,goldLeftAmount:Math.max(0,S-k),goldReserveAmount:C,usesGoldBudget:_}}}function el({resourceAmount:e,goldAmount:t,fragmentCoinAmount:n,usesGoldBudget:r}){return{summary:new Map,evolutionSummary:new Map,purchaseSummary:new Map,spentAmount:0,leftAmount:Math.max(0,Number(e)||0),goldSpentAmount:0,goldLeftAmount:Math.max(0,Number(t)||0),fragmentCoinSpentAmount:0,fragmentCoinLeftAmount:Math.max(0,Number(n)||0),usesGoldBudget:r}}function tl(e){return e.map((e,t)=>{var n;return{name:`shopBuy`,args:{shopId:e.shopId,slot:e.slotId,cost:e.cost,reward:e.reward,amount:(n=e.purchaseCount)==null?e.amount:n},ident:`shopBuyTitanArtifactFragment_${e.artifactId}_${t}`}})}function nl(e){return e.map((e,t)=>({name:`titanArtifactEvolve`,args:{titanId:e.titanId,slotId:e.slotId},ident:`titanArtifactEvolve_${e.titanId}_${e.slotId}_${t}`}))}function rl(e){return e.map((e,t)=>({name:`titanArtifactLevelUp`,args:{titanId:e.titanId,slotId:e.slotId},ident:`titanArtifactLevelUp_${e.titanId}_${e.slotId}_${t}`}))}function il(e,t,n){var r;Ec(e.purchaseSummary,t),e.fragmentCoinSpentAmount+=Number(t.coinSpentAmount)||t.coinCost*((r=t.purchaseCount)==null?t.amount:r),e.fragmentCoinLeftAmount=Math.max(0,Math.max(0,Number(n)||0)-e.fragmentCoinSpentAmount)}function al(e,t){Dc(e.evolutionSummary,t)}function ol(e,t,n,r){Qc(e.summary,t),e.spentAmount+=t.resourceCost,e.leftAmount=Math.max(0,Math.max(0,Number(n)||0)-e.spentAmount),e.goldSpentAmount+=t.goldCost,e.goldLeftAmount=Math.max(0,Math.max(0,Number(r)||0)-e.goldSpentAmount)}function sl(e,t){let n=e==null?void 0:e.error;if(n)throw Error(n.description||t())}function cl([e,t,n,r,i,a,o,s]){return async function({evolutionPlan:c,upgradePlan:l,executedPlan:u,fragmentCoinAmount:d,resourceAmount:f,goldAmount:p,buyArtifactFragments:m}){let h=c.fragmentPurchases,g=c.evolutions,_=l.queue,v=tl(h);m&&o(`purchase calls`,v.map((e,t)=>({index:t,call:e})));let y=await e(v,20,async e=>{let{chunkStart:r,chunkEnd:i}=e,a=h[r-1];a&&t(n(a,r,i,h.length),{event:e,requestName:`shopBuy`})});for(let e=0;e{let{chunkStart:n,chunkEnd:i}=e,a=g[n-1];a&&t(r(a,n,i,g.length),{event:e,requestName:`titanArtifactEvolve`})});for(let e=0;e{let{chunkStart:n,chunkEnd:r}=e,a=_[n-1];a&&t(i(a,u,n,r,_.length),{event:e,requestName:`titanArtifactLevelUp`})});for(let e=0;e({name:`titanSkinUpgrade`,args:{titanId:e.titanId,skinId:e.skinId,paid:!1},ident:`titanSkinUpgrade_${e.titanId}_${e.skinId}_${t}`}))}function _l(e,t,n){hl(e.summary,t),e.spentAmount+=t.cost,e.leftAmount=Math.max(0,Math.max(0,Number(n)||0)-e.spentAmount)}function vl(e){return N(e)?e:{}}function yl(e,t,n=`sequential`){if(n===`parallel`){let n=e.cost-t.cost;if(n!==0)return n}return e.titanPriority-t.titanPriority||e.skinPriority-t.skinPriority||e.nextLevel-t.nextLevel||e.cost-t.cost||e.titanId-t.titanId||mt(e.name,t.name)||e.skinId-t.skinId}function bl([e,t,n,r,i]){return function([a,o,s,c,l,u=void 0]){let d=vl(s),f=[];a.forEach((a,s)=>{let c=new Map(e(d[String(a)]).map(e=>[e.localeKey,e]));t(o,a).localeKeys.forEach((e,t)=>{let l=c.get(e);if(!l)return;let u=n(o,a,l.localeKey);if(u>0&&l.currentLevel>=u)return;let d=r(l.skinId,l.currentLevel);d&&f.push({titanId:a,titanName:i(a),skinId:l.skinId,localeKey:l.localeKey,name:l.name,currentLevel:l.currentLevel,nextLevel:d.nextLevel,cost:d.cost,titanPriority:s,skinPriority:t,targetLevel:u})})});let p=[],m=new Map,h=Math.max(0,Number(c)||0),g=Math.max(0,Number(l)||0),_=Math.max(0,h-g),v=Number.isFinite(Number(u))?Math.max(0,Math.floor(Number(u))):1/0,y=new qc((e,t)=>yl(e,t,o.upgradeMode),f.filter(e=>e.cost>0));for(;y.size>0&&p.lengthe.cost>0&&e.cost<=_,!1);if(!e)break;let t={titanId:e.titanId,titanName:e.titanName,skinId:e.skinId,localeKey:e.localeKey,name:e.name,fromLevel:e.currentLevel,toLevel:e.nextLevel,cost:e.cost};if(p.push(t),hl(m,t),_-=e.cost,e.currentLevel=e.nextLevel,e.targetLevel>0&&e.currentLevel>=e.targetLevel)continue;let n=r(e.skinId,e.currentLevel);n&&(e.nextLevel=n.nextLevel,e.cost=n.cost,y.push(e))}let b=Math.max(0,h-g)-_;return{queue:p,summary:m,spentAmount:b,leftAmount:Math.max(0,h-b)}}}function xl(e,t){let n=e==null?void 0:e.error;if(n)throw Error(n.description||t())}function Sl([e,t,n,r,i]){return async function({plan:a,executedPlan:o,skinStoneAmount:s}){let c=a.queue,l=await e(gl(c),20,async e=>{let{chunkStart:r,chunkEnd:i}=e,a=c[r-1];a&&t(n(a,o,r,i,c.length),{event:e,requestName:`titanSkinUpgrade`})});for(let e=0;e({name:`titanEvolve`,args:{titanId:e.titanId},ident:`titanEvolve_${e.titanId}_${t}`}))}function El(e){return e.map((e,t)=>({name:`consumableUseTitanXp`,args:{titanId:e.titanId,libId:20,amount:e.cost},ident:`consumableUseTitanXp_${e.titanId}_${t}`}))}function Dl(e,t){wl(e.evolutionSummary,t)}function Ol(e,t,n){Cl(e.summary,t),e.spentAmount+=t.cost,e.leftAmount=Math.max(0,Math.max(0,Number(n)||0)-e.spentAmount)}function kl(e){return N(e)?e:{}}function Al(e,t,n){if(n!==`parallel`){let n=e.titanPriority-t.titanPriority;if(n!==0)return n}return e.cost-t.cost||e.nextLevel-t.nextLevel||e.titanId-t.titanId}function jl([e,t,n,r,i]){return function([a,o,s,c=0]){let l=kl(o),u=new Set(a.map(e=>Number(e)).filter(e=>Number.isFinite(e))),d=e(),f=Math.max(0,Number(c)||0)>0?Math.min(Math.max(0,Number(c)||0),d):d,p=new Map,m=[],h=new Map;return u.forEach(e=>{let a=l[String(e)];if(!a||f<=0)return;let o=t(a);if(o>=f)return;let c=n(s,e);for(p.set(e,c);o{var i;let a=kl(l[String(n)]),o=Math.max(0,Number(a.level)||0),s=Math.max(0,Number((i=d[n])==null?d[String(n)]:i)||0);if(s>0&&o>=s)return;let c=e(o);c&&u.push({titanId:n,titanName:t(n),currentLevel:o,nextLevel:o+1,targetLevel:s,cost:c,titanPriority:r})});let f=[],p=new Map,m=Math.max(0,Number(i)||0),h=Math.max(0,Number(a)||0),g=Math.max(0,m-h),_=Number.isFinite(Number(s))?Math.max(0,Math.floor(Number(s))):1/0,v=new qc((e,t)=>Al(e,t,c),u.filter(e=>e.cost>0));for(;v.size>0&&f.length<_;){let t=Yc(v,e=>e.cost>0&&e.cost<=g,!1);if(!t)break;let n={titanId:t.titanId,titanName:t.titanName,fromLevel:t.currentLevel,toLevel:t.nextLevel,cost:t.cost};if(f.push(n),Cl(p,n),g-=t.cost,t.currentLevel=t.nextLevel,t.targetLevel>0&&t.currentLevel>=t.targetLevel)continue;t.nextLevel+=1;let r=e(t.currentLevel);r&&(t.cost=r,v.push(t))}let y=Math.max(0,m-h)-g;return{queue:f,summary:p,spentAmount:y,leftAmount:Math.max(0,m-y)}}}function Nl(e){return N(e)?e:{}}function Pl(e,t){return Math.max(0,Number(Nl(e)[String(t)])||0)}function Fl(e){return e==null||e===``?1/0:Math.max(0,Math.floor(Number(e)||0))}function Il(e,t){let n=Nl(Nl(e.slots)[String(t)]),r=Nl(n.cost),i=Nl(n.reward),a=Pl(r.coin,15),o=Pl(i.consumable,20);if(!(a<=0||o<=0))return{shopId:Math.max(0,Number(e.id)||12),slotId:t,potionAmount:o,coinCost:a,cost:r,reward:i,amountAvailable:Fl(n.amountAvailable)}}function Ll(e){let t=Nl(e);return[5,6].map(e=>Il(t,e)).filter(e=>e!==void 0).sort((e,t)=>e.potionAmount-t.potionAmount)}function Rl(e,t,n){if(!t)return!0;let r=Math.min(e.potionAmount,n),i=Math.min(t.potionAmount,n);if(r!==i)return r>i;let a=e.potionAmount>=n;return a===t.potionAmount>=n?a&&e.coinSpentAmount!==t.coinSpentAmount?e.coinSpentAmountt.potionAmount:a}function zl(e,t){let n=new Map,r=0,i=0,a=0,o=0;return e.forEach((e,s)=>{let c=Math.max(0,Math.floor(Number(t[s])||0));c<=0||(n.set(e.slotId,c),r+=e.potionAmount*c,i+=e.coinCost*c,a+=1,o+=c)}),{counts:n,potionAmount:r,coinSpentAmount:i,callCount:a,purchaseCount:o}}function Bl(e,t,n){var r;if(e.length===0||t<=0||n<=0)return zl(e,[]);let[i,a]=e;if(!a)return zl(e,[Math.min(Math.ceil(t/i.potionAmount),Math.floor(n/i.coinCost),i.amountAvailable)]);let o=Math.min(Math.ceil(t/a.potionAmount),Math.floor(n/a.coinCost),a.amountAvailable),s;for(let r=0;r<=o;r+=1){let o=r*a.potionAmount,c=r*a.coinCost,l=Math.max(0,t-o),u=Math.max(0,n-c),d=zl(e,[Math.min(Math.ceil(l/i.potionAmount),Math.floor(u/i.coinCost),i.amountAvailable),r]);Rl(d,s,t)&&(s=d)}return(r=s)==null?zl(e,[]):r}function Vl({shop:e,currentPotionAmount:t,potionReserve:n,requiredPotionAmount:r,coinAmount:i,coinReserve:a}){let o=Math.max(0,Math.floor(Number(t)||0)),s=Math.max(0,Math.floor(Number(n)||0)),c=Math.max(0,Math.floor(Number(r)||0)),l=Math.max(0,Math.floor(Number(i)||0)),u=Math.max(0,Math.floor(Number(a)||0)),d=Math.max(0,c-Math.max(0,o-s)),f=Math.max(0,l-u),p=Ll(e),m=Bl(p,d,f);return{purchases:p.map(e=>{var t;let n=(t=m.counts.get(e.slotId))==null?0:t;return n>0?{...e,purchaseCount:n,potionAmountTotal:e.potionAmount*n,coinSpentAmount:e.coinCost*n}:void 0}).filter(e=>e!==void 0).sort((e,t)=>t.potionAmount-e.potionAmount),requiredPotionAmount:c,missingPotionAmount:d,potionAmountBought:m.potionAmount,coinSpentAmount:m.coinSpentAmount,coinLeftAmount:Math.max(0,l-m.coinSpentAmount),coinReserveAmount:u}}function Hl(e){return e.map((e,t)=>({name:`shopBuy`,args:{shopId:e.shopId,slot:e.slotId,cost:e.cost,reward:e.reward,amount:e.purchaseCount},ident:`shopBuyTitanXpPotion_${e.slotId}_${t}`}))}function Ul(e,t){let n=e==null?void 0:e.error;if(n)throw Error(n.description||t())}function Wl([e,t,n,r,i,a,o=e=>`+${e.potionAmountTotal} / -${e.coinSpentAmount}`]){return async function({evolutionPlan:s,plan:c,executedPlan:l,potionAmount:u,purchasePlan:d={purchases:[]}}){let f=d.purchases,p=f.length>0?await e(Hl(f),20,async e=>{let{chunkStart:n}=e,r=f[n-1];r&&t(o(r,n,f.length),{event:e,requestName:`shopBuy`})}):[];for(let e=0;e0?await e(v,20,async e=>{let{chunkStart:r,chunkEnd:i}=e,a=_[r-1];a&&t(n(a,r,i,_.length),{event:e,requestName:`titanEvolve`})}):[];for(let e=0;e0?await e(x,20,async e=>{let{chunkStart:n,chunkEnd:i}=e,a=b[n-1];a&&t(r(a,l,n,i,b.length),{event:e,requestName:`consumableUseTitanXp`})}):[];for(let e=0;e0)try{D=g({shop:await h(),currentPotionAmount:C,potionReserve:o.potionReserve,requiredPotionAmount:E.spentAmount,coinAmount:w,coinReserve:o.xpPotionCoinReserve})}catch(e){a(`[TitanLevel] potion shop error:`,e),r(...b([{summary:new Map,evolutionSummary:new Map,spentAmount:0,leftAmount:C,potionAmountBought:0,potionCoinSpentAmount:0,potionCoinLeftAmount:w},S,e]));return}let O=C+D.potionAmountBought,ee=v([u,s,O,o.potionReserve,o.titanLevelCaps,l==null?void 0:l.maxUpgradeCount,o.upgradeMode]);if(ee.queue.length<=0&&T.evolutions.length<=0&&D.purchases.length<=0){r(e(`~e5`));return}let k={summary:new Map,evolutionSummary:new Map,spentAmount:0,leftAmount:C,potionAmountBought:0,potionCoinSpentAmount:0,potionCoinLeftAmount:w};try{await y({evolutionPlan:T,plan:ee,executedPlan:k,potionAmount:O,purchasePlan:D})}catch(e){a(`[TitanLevel] Error:`,e),r(...b([k,S,e]));return}n(e(`~fZ`),`syncing`),await i(),r(...x([k,S,ee.queue.length+T.evolutions.length+D.purchases.length,o,l]))}return[S,C]}function Kl(e){return String(e==null?``:e).trim()}function ql(e){let t=Kl(e);return t===`active`||t===`inactive`?t:``}function Jl(e){return N(e)?Object.entries(e).reduce((e,[t,n])=>{let r=Kl(t);return r&&(e[r]=!!n),e},{}):{}}function Yl(e){return N(e)?Object.entries(e).reduce((e,[t,n])=>{let r=Kl(t),i=ql(n);return r&&i&&(e[r]=i),e},{}):{}}function Xl(e,t,n){let r=``,i={},a={};function o(t,n){let a=Kl(t);!a||!r||(i=Jl({...i,[a]:!!n}),e.write(r,i).catch(e=>console.warn(`[TitanArtifact] accordion state write failed`,e)))}function s(e,n){let i=Kl(e);if(!i||!r)return;let o={...a},s=ql(n);s?o[i]=s:delete o[i],a=Yl(o),t.write(r,a)}async function c(){let c=String(await n());return r!==c&&(r=c,i=Jl(await e.read(c,{})),a=Yl(t.read(c,{}))),{accordionState:{...i},accordionFilterState:{...a},onAccordionStateChange:o,onAccordionFilterChange:s}}return{getTitanAccordionUiProps:c,persistTitanAccordionState:o,persistTitanAccordionFilterState:s}}function Zl(e){return e===!1||e==null?``:String(e==null?``:e).trim()}function Ql(e,t){let n=Zl(e);return n===`exportSettings`?(t.exportSettings(),!0):n===`dumpGameLibrary`?(t.dumpGameLibrary(),!0):n===`selectAll`?(t.selectAll(),!0):n===`clearAll`?(t.clearAll(),!0):!1}function $l({persistSettings:e,exportSettings:t,dumpGameLibrary:n,selectAll:r,clearAll:i}){return{exportSettings:()=>{Promise.resolve(e()).then(()=>t())},dumpGameLibrary:n,selectAll:()=>{r()},clearAll:()=>{i()}}}function eu({getActiveTab:e,getArtifactSettings:t,setArtifactSettings:n,setLevelSettings:r,setSkinSettings:i,persistSettings:a,selectAll:o,clearAll:s,exportSettings:c,donate:l,help:u,dumpGameLibrary:d,importSettings:f,readArtifactSettings:p,readLevelSettings:m,readSkinSettings:h,reportImportError:g,runArtifact:_,runLevel:v,runSkin:y}){return{persistSettings:a,selectAll:o,clearAll:s,exportSettings:async()=>{await a(),await c()},donate:()=>l(t()),help:()=>u(t()),dumpGameLibrary:d,importSettings:async()=>{try{await f()&&(n(await p()),r(await m()),i(await h()),await a())}catch(e){g(e)}},run:async()=>{await a();let t=e();return t===`levels`?v():t===`skins`?y():_()}}}function tu({getSettings:e,resolveRunOptions:t,run:n}){return async()=>{let r=e(),i=await t(r);return i.confirmed?(await n(r,i.options),`return`):`continue`}}function nu({readSettings:e,resolveRunOptions:t,run:n}){return async()=>{let r=await e(),i=await t(r,{source:`checklist`});i.confirmed&&await n(r,i.options)}}async function ru({activeTab:e,answer:t,handlers:n}){let r=Zl(t);return r?e===`general`&&[`selectAll`,`clearAll`,`run`].includes(r)?(await n.persistSettings(),`continue`):r===`selectAll`?(await n.selectAll(),`continue`):r===`clearAll`?(await n.clearAll(),`continue`):r===`saveSettings`?(await n.persistSettings(),`continue`):r===`exportSettings`?(await n.exportSettings(),`continue`):r===`donate`?(await n.donate(),`continue`):r===`help`?(await n.help(),`continue`):r===`dumpGameLibrary`?(await n.dumpGameLibrary(),`continue`):r===`importSettings`?(await n.importSettings(),`continue`):r===`run`?n.run():`continue`:`return`}function iu(e,t=!1){let n=document.createElement(`details`);n.className=`hwhx-accordion`,n.open=t;let r=document.createElement(`summary`);r.className=`hwhx-accordion__summary`,r.textContent=uu(e);let i=document.createElement(`div`);return i.className=`hwhx-accordion__body`,n.append(r,i),{root:n,body:i}}function au(e,t,n,r=!1){let i=document.createElement(`label`);i.className=`hwhx-checkbox-row`;let a=document.createElement(`input`);return a.type=`checkbox`,a.className=`hwhx-checkbox-input`,a.checked=!!t,a.disabled=r,a.addEventListener(`change`,()=>n(a.checked)),i.append(a,lu(`span`,`hwhx-checkbox-label`,e)),i}function ou(e,t,n,r,i){let a=du(e);return a.appendChild(su(t,n,r,i)),a}function su(e,t,n,r){let i=document.createElement(`input`);return i.type=`number`,i.className=`hwhx-field hwhx-number`,i.value=String(Math.max(0,Number(e)||0)),Number.isFinite(Number(t))&&(i.min=String(t)),Number.isFinite(Number(n))&&(i.max=String(n)),i.addEventListener(`change`,()=>{r(Math.max(0,Math.trunc(Number(i.value)||0)))}),i}function cu(e,t,n,r){let i=du(e),a=document.createElement(`select`);a.className=`hwhx-field hwhx-select`;for(let e of n){var o,s;let t=document.createElement(`option`);t.value=String((o=e.value)==null?``:o),t.textContent=uu((s=e.label)==null?e.value:s),t.disabled=!!e.disabled,a.appendChild(t)}return a.value=String(t==null?``:t),a.addEventListener(`change`,()=>r(a.value)),i.appendChild(a),i}function lu(e,t,n){let r=document.createElement(e);return r.className=t,r.textContent=uu(n),r}function Q(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function $(e){return Array.isArray(e)?e.map(Q):[]}function uu(e){return String(e==null?``:e).replace(/<[^>]+>/g,` `).replace(/ /g,` `).replace(/&/g,`&`).replace(/\s+/g,` `).trim()}function du(e){let t=document.createElement(`label`);return t.className=`hwhx-field-row`,t.appendChild(lu(`span`,`hwhx-settings-label`,e)),t}function fu(e,t,n){var r;return String((r=e[t])==null?n:r)}function pu(e={}){let t={"top-center":{key:`topCenter`,fallback:`Top center`,icon:`align-center`},"top-right":{key:`topRight`,fallback:`Top right`,icon:`corner-right-up`},"bottom-right":{key:`bottomRight`,fallback:`Bottom right`,icon:`corner-right-down`}};return zr.map(n=>({value:n,label:fu(e,t[n].key,t[n].fallback),icon:t[n].icon}))}function mu(e={}){let t={default:{fallback:`Default`,icon:`panel-top`},compact:{fallback:`Compact`,icon:`minus`},dashboard:{fallback:`Dashboard`,icon:`boxes`}};return Br.map(n=>({value:n,label:fu(e,n,t[n].fallback),icon:t[n].icon}))}function hu({value:e,labels:t,positionOptions:n,styleOptions:r,open:i=!1,onUpdate:a}){let o={...e},s=iu(t.title,i),c=ou(t.autoHideMs,o.autoHideMs,1e3,void 0,e=>l(`autoHideMs`,Math.max(1e3,e)));return c.hidden=!o.autoHide,s.body.append(au(t.autoHide,o.autoHide,e=>{c.hidden=!e,l(`autoHide`,e)}),c,cu(t.position,o.position,n==null?pu(t):n,e=>l(`position`,e)),cu(t.style,o.style,r==null?mu(t):r,e=>l(`style`,e))),s.root;function l(e,t){o[e]=t,a({...o})}}function gu(e){var t,n,r;let i=document.createElement(`div`);i.className=`hwhx-native-body hwhx-popup hwhx-titan-trainer-lite`;let a=$(e.tabs),o=String((t=(n=e.activeTab)==null?(r=a[0])==null?void 0:r.value:n)==null?``:t),s=document.createElement(`nav`);s.className=`hwhx-tabs__nav`;let c=document.createElement(`div`);c.className=`hwhx-tabs__panels`,i.append(s,c);let l=()=>{for(let r of a){var t,n;let i=String((t=r.value)==null?``:t),a=document.createElement(`button`);a.type=`button`,a.className=`hwhx-button hwhx-tabs__tab`,a.classList.toggle(`is-active`,i===o),a.textContent=String((n=r.label)==null?i:n),a.disabled=!!r.disabled,a.addEventListener(`click`,()=>{if(i!==o){o=i,Mu(e.onActiveTabChange,i);for(let e of s.querySelectorAll(`.hwhx-tabs__tab`))e.classList.toggle(`is-active`,e.dataset.value===o);u()}}),a.dataset.value=i,s.appendChild(a)}},u=()=>{c.replaceChildren(p())},d=!1,f=()=>{d||(d=!0,queueMicrotask(()=>{d=!1,u()}))},p=()=>{var t;let n=(t=a.find(e=>{var t;return String((t=e.value)==null?``:t)===o}))==null?{}:t;return n.kind===`general`?_u(n,e,f):vu(Q(Q(n.contentProps).model),e,f)};return l(),u(),i}function _u(e,t,n){var r,i;let a=Q(e.generalProps),o=Q(a.labels),s=Q(a.options),c={...Q(a.artifactSettings)},l={...Q(a.levelSettings)},u={...Q(a.skinSettings)},d=document.createElement(`div`);d.className=`hwhx-settings-grid`;let f=iu(ju(o,`interfaceTitle`,`Интерфейс`),!0);return f.body.append(cu(ju(o,`buttonPlacement`,`Положение кнопки`),c.titanTrainerButtonPlacement,$(s.buttonPlacement),e=>Ou(c,`titanTrainerButtonPlacement`,e,t.onArtifactSettingsChange)),au(ju(o,`showFullCost`,`Полная стоимость артефактов`),c.showFullCosts,e=>Ou(c,`showFullCosts`,e,t.onArtifactSettingsChange)),au(ju(o,`showLevelCost`,`Стоимость уровней`),l.showNextCosts,e=>Ou(l,`showNextCosts`,e,t.onLevelSettingsChange)),au(ju(o,`showSkinCost`,`Стоимость обликов`),u.showNextCosts,e=>Ou(u,`showNextCosts`,e,t.onSkinSettingsChange)),au(ju(o,`showLevelEvolution`,`Эволюция титанов`),l.showEvolutionProgress,e=>Ou(l,`showEvolutionProgress`,e,t.onLevelSettingsChange))),d.appendChild(f.root),d.appendChild(hu({value:{autoHide:!!c.progressAutoHideResult,autoHideMs:Number(c.progressAutoHideResultTimeoutMs)||5e3,position:String((r=c.progressWindowPosition)==null?`top-right`:r),style:String((i=c.progressWindowStyle)==null?`default`:i)},labels:{title:ju(o,`progressTitle`,`Информационная панель`),autoHide:ju(o,`progressAutoHide`,`Скрывать результат`),autoHideMs:ju(o,`progressTimeout`,`Таймаут, мс`),position:ju(o,`progressPosition`,`Положение`),style:ju(o,`progressStyle`,`Стиль`)},positionOptions:$(s.progressPosition),styleOptions:$(s.progressStyle),onUpdate:e=>{Object.assign(c,{progressAutoHideResult:e.autoHide,progressAutoHideResultTimeoutMs:e.autoHideMs,progressWindowPosition:e.position,progressWindowStyle:e.style}),Mu(t.onArtifactSettingsChange,{...c})}})),ku(d,n),d}function vu(e,t,n){var r;let i=document.createElement(`div`);i.className=`hwhx-settings-grid hwhx-titan-body-panel`,i.dataset.hwhtitanBodyKind=String((r=e.kind)==null?`unknown`:r);let a=Q(e.header);if(a.title||a.description){let e=document.createElement(`section`);e.className=`hwhx-panel`,e.append(lu(`strong`,`hwhx-section-title`,a.title),lu(`p`,``,a.description)),i.appendChild(e)}let o=Q(e.priority);o.kind&&i.appendChild(yu(o,e,t,n));for(let r of $(e.sections))i.appendChild(xu(r,e,t,n));let s=Q(e.calculator);if(s.key||s.title){let r=xu(s,e,t,n),a=Q(s.result);if(Object.keys(a).length>0){var c;(c=r.querySelector(`.hwhx-accordion__body`))==null||c.appendChild(Du(a))}i.appendChild(r)}let l=Q(e.doYourBest);return(l.key||l.title)&&i.appendChild(xu(l,e,t,n)),i}function yu(e,t,n,r){var i;let a=iu(String((i=e.title)==null?`Титаны`:i),e.defaultOpen!==!1),o=$(e.badges);if(o.length>0){let e=document.createElement(`div`);e.className=`hwhx-badges`;for(let t of o)e.appendChild(lu(`span`,`hwhx-badge`,t.text));a.body.appendChild(e)}e.note&&a.body.appendChild(lu(`p`,`hwhx-hint`,e.note));let s=$(e.rows),c=document.createElement(`div`);return c.className=`hwhx-reorder-list`,s.forEach((i,a)=>{c.appendChild(bu(i,a,s,e,t,n,r))}),a.body.appendChild(c),a.root}function bu(e,t,n,r,i,a,o){var s,c,l,u;let d=document.createElement(`div`);d.className=`hwhx-checkbox-row hwhx-titan-priority-row`;let f=document.createElement(`input`);f.type=`checkbox`,f.className=`hwhx-checkbox-input`,f.checked=!!e.checked,f.disabled=!!e.disabled;let p=Q(e.option),m=lu(`span`,`hwhx-checkbox-label`,(s=(c=p.name)==null?e.label:c)==null?e.key:s);d.append(f,m),e.capInputId&&d.appendChild(su(e.capValue,1,e.capMaxValue,t=>{e.capValue=t,Cu(r,i,n,a),o()})),r.kind===`priority`&&!r.reorderDisabled&&d.append(Eu(`↑`,t<=0,()=>wu(n,t,-1,r,i,a,o)),Eu(`↓`,t>=n.length-1,()=>wu(n,t,1,r,i,a,o))),f.addEventListener(`change`,()=>{e.checked=f.checked,Cu(r,i,n,a),o()});let h=$(e.children);if(h.length===0)return d;let g=document.createElement(`details`);g.className=`hwhx-accordion hwhx-accordion--nested`;let _=document.createElement(`summary`);_.className=`hwhx-accordion__summary`,_.textContent=String((l=(u=e.childrenTitle)==null?p.name:u)==null?e.key:l);let v=document.createElement(`div`);return v.className=`hwhx-accordion__body`,v.appendChild(d),h.forEach(e=>{var t;let s=document.createElement(`label`);s.className=`hwhx-checkbox-row`;let c=document.createElement(`input`);c.type=`checkbox`,c.className=`hwhx-checkbox-input`,c.checked=!!e.checked,c.disabled=!!e.disabled,c.addEventListener(`change`,()=>{e.checked=c.checked,Cu(r,i,n,a),o()}),s.append(c,lu(`span`,`hwhx-checkbox-label`,(t=e.label)==null?e.key:t),su(e.capValue,1,e.capMaxValue,t=>{e.capValue=t,Cu(r,i,n,a),o()})),v.appendChild(s)}),g.append(_,v),g}function xu(e,t,n,r){var i,a;let o=iu(String((i=(a=e.title)==null?e.key:a)==null?`Настройки`:i),e.defaultOpen!==!1);for(let i of $(e.controls))if(i.kind===`group`){var s;let e=document.createElement(`div`);e.className=String((s=i.className)==null?`hwhx-stack`:s);for(let a of $(i.controls))e.appendChild(Su(a,t,n,r));o.body.appendChild(e)}else o.body.appendChild(Su(i,t,n,r));return o.root}function Su(e,t,n,r){var i;if(e.kind===`hint`)return lu(`div`,`hwhx-hint`,e.text);let a=String((i=e.inputId)==null?``:i),o=i=>{var o,s;e.value=i,e.checked=i,e.values=i,Mu(n.onControlChange,{panelKind:String((o=t.kind)==null?``:o),inputId:a,controlKind:String((s=e.kind)==null?``:s),value:i}),r()};if(e.kind===`checkbox`)return au(e.label,e.checked,o,!!e.disabled);if(e.kind===`number`)return ou(e.label,e.value,e.minValue,e.maxValue,o);if(e.kind===`multiSelect`){let t=$(e.groups).flatMap(e=>$(e.options));return Tu(e.label,e.values,t,o)}return cu(e.label,e.value,Au(e.options),o)}function Cu(e,t,n,r){var i,a,o,s;Mu(r.onPriorityChange,{panelKind:String((i=t.kind)==null?``:i),kind:e.kind,stateKey:String((a=e.stateKey)==null?``:a),accordionKey:String((o=e.accordionKey)==null?``:o),optionVariant:String((s=e.optionVariant)==null?``:s),changedInputId:`lite-priority`,selectedTitanIds:n.filter(e=>e.checked&&!e.disabled).map(e=>Number(e.titanId)).filter(Number.isFinite),rows:n.map(e=>{var t,n,r;return{key:String((t=e.key)==null?``:t),orderKey:String((n=(r=e.orderKey)==null?e.key:r)==null?``:n),titanId:Number(e.titanId),checked:!!e.checked,disabled:!!e.disabled,capValue:Math.max(0,Number(e.capValue)||0),children:$(e.children).map(e=>{var t,n,r;return{key:String((t=e.key)==null?``:t),orderKey:String((n=(r=e.orderKey)==null?e.key:r)==null?``:n),checked:!!e.checked,disabled:!!e.disabled,capValue:Math.max(0,Number(e.capValue)||0)}})}})})}function wu(e,t,n,r,i,a,o){let s=t+n;s<0||s>=e.length||([e[t],e[s]]=[e[s],e[t]],Cu(r,i,e,a),o())}function Tu(e,t,n,r){let i=new Set(Array.isArray(t)?t.map(String):[]),a=du(e),o=document.createElement(`select`);o.className=`hwhx-field hwhx-select`,o.multiple=!0,o.size=Math.min(8,Math.max(3,n.length));for(let e of n){var s,c;let t=document.createElement(`option`);t.value=String((s=e.value)==null?``:s),t.textContent=uu((c=e.label)==null?e.value:c),t.selected=i.has(t.value),t.disabled=!!e.disabled,o.appendChild(t)}return o.addEventListener(`change`,()=>r([...o.selectedOptions].map(e=>e.value))),a.appendChild(o),a}function Eu(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=`hwhx-button`,r.textContent=e,r.disabled=t,r.addEventListener(`click`,n),r}function Du(e){let t=document.createElement(`div`);t.className=`hwhx-info-list`;for(let[n,r]of Object.entries(e)){if(r===null||typeof r==`object`)continue;let e=document.createElement(`div`);e.className=`hwhx-info-list__row`,e.append(lu(`span`,`hwhx-info-list__label`,n),lu(`strong`,`hwhx-info-list__value`,r)),t.appendChild(e)}return t}function Ou(e,t,n,r){e[t]=n,Mu(r,{...e})}function ku(e,t){e.addEventListener(`change`,t,{once:!0})}function Au(e){return $(e).flatMap(e=>Array.isArray(e.options)?$(e.options):[e])}function ju(e,t,n){var r;return String((r=e[t])==null?n:r)}function Mu(e,...t){return typeof e==`function`?e(...t):void 0}var Nu=fn(`titan-trainer`,gu),Pu=`titan-trainer`,Fu=`hwhx-popup--xwide`;function Iu(){return{serial:0,panelKind:``,checked:!1}}function Lu(){return{serial:0,panelKind:``,gainText:``}}function Ru(e,t,n){let r=Bu(t);return r?(e.serial+=1,e.panelKind=r,e.checked=!!n,!0):!1}function zu(e,t,n){let r=Bu(t);return r?(e.serial+=1,e.panelKind=r,e.gainText=String(n==null?``:n),!0):!1}function Bu(e){return e===`levels`?`level`:e===`skins`?`skin`:e===`artifacts`?`artifact`:``}function Vu(){return{"data-hwhtitan-lite-settings-panel":``}}function Hu(e){return{activeTab:e.activeTab,tabInputId:La,tabs:e.tabs,selectionCommand:e.selectionCommand,selectionPreview:e.selectionPreview,rootAttrs:Vu(),onActiveTabChange:e.onActiveTabChange,onArtifactSettingsChange:e.onArtifactSettingsChange,onLevelSettingsChange:e.onLevelSettingsChange,onSkinSettingsChange:e.onSkinSettingsChange,onControlChange:e.onControlChange,onPriorityChange:e.onPriorityChange}}function Uu(e,t){return{activeTab:e,tabs:[n(Ra,`~fR`,`general`),n(za,`~fQ`),n(Ba,`~fS`),n(Va,`~fT`)]};function n(e,n,r){return{value:e,label:t(n),kind:r}}}function Wu(e){return[{result:`donate`,label:e(`~fb`),tone:`secondary`,placement:`left`},{result:`saveSettings`,label:e(`~dq`),tone:`success`},{result:`run`,label:e(`~fJ`),tone:`primary`}]}function Gu(e){return yn({kind:Pu,title:e.title,header:e.header,headerActions:e.headerActions,component:Nu,props:Hu(e),actions:Wu(e.translate),className:Fu,closeLabel:e.closeLabel,onBeforeClose:e.onBeforeClose,onAction:e.onAction})}function Ku([e,t,n,r]){return{artifactSettings:t,levelSettings:n,skinSettings:r,ids:{uiTooltips:Ja,buttonPlacement:qa,accordionAutoScroll:Ga,reorderListVariant:Ka,showFullCost:yo,showLevelCost:jo,showSkinCost:Ho,showLevelEvolution:Mo,hotkeyOpenSettings:Ya,hotkeyRunAll:Xa,hotkeyRunArtifacts:Za,hotkeyRunLevels:Qa,hotkeyRunSkins:$a},labels:{interfaceTitle:e(`~ft`),selectSearch:e(`~d3`),selectEmpty:e(`~dv`),uiTooltips:e(`~fV`),uiTooltipsTooltip:e(`~gy`),buttonPlacement:e(`~f0`),buttonPlacementTooltip:e(`~g5`),accordionAutoScroll:e(`~eX`),accordionAutoScrollTooltip:e(`~eY`),reorderListVariant:e(`~fG`),showFullCost:e(`~dz`),showFullCostTooltip:e(`~gl`),showLevelCost:e(`~ek`),showLevelCostTooltip:e(`~gm`),showSkinCost:e(`~eP`),showSkinCostTooltip:e(`~go`),showLevelEvolution:e(`~ej`),showLevelEvolutionTooltip:e(`~gn`),progressAutoHide:e(`~fv`),progressTimeout:e(`~fw`),progressPosition:e(`~fx`),progressStyle:e(`~fB`),progressTitle:e(`~fF`),hotkeysTitle:e(`~fh`),hotkeyOpenSettings:e(`~fm`),hotkeyRunAll:e(`~fo`),hotkeyRunArtifacts:e(`~fp`),hotkeyRunLevels:e(`~fq`),hotkeyRunSkins:e(`~fr`),hotkeyEmpty:e(`~fl`),hotkeyCapture:e(`~fi`),hotkeyRecording:e(`~fn`),hotkeyClear:e(`~fj`),hotkeyConflict:e(`~fk`)},options:{buttonPlacement:[{value:Pa,label:e(`~f1`),icon:`play`},{value:Fa,label:e(`~f2`),icon:`settings`}],accordionAutoScroll:Er(),reorderListVariant:[{value:`full`,label:e(`~fH`),icon:`list-checks`},{value:`minimal`,label:e(`~fI`),icon:`list`}],progressPosition:pu({topRight:e(`~fA`),topCenter:e(`~fz`),bottomRight:e(`~fy`)}),progressStyle:mu({default:e(`~fE`),compact:e(`~fC`),dashboard:e(`~fD`)})}}}function qu({translate:e,buildArtifactSettingsModel:t,buildLevelSettingsModel:n,buildSkinSettingsModel:r,getResourceAmount:i,getXpPotionAmount:a,getSkinStoneAmount:o,getSoulCoinAmount:s,getFragmentCoinAmount:c,getGoldAmount:l}){return function(u,{artifactSettings:d,levelSettings:f,skinSettings:p,artifactTitanOptions:m,levelTitanOptions:h,skinTitanOptions:g,ownedTitans:_,inventory:v,userInfo:y,skinGroups:b,accordionUiProps:x={}}){if(u===`general`)return{generalProps:Ku([e,d,f,p])};let S={...p,reorderListVariant:d.reorderListVariant},C={includeHeader:!1,includeDisplaySettings:!1,includeSupportPanels:!1};return u===`levels`?{contentProps:{...x,model:n(f,h,a(v),s(v),v,{...C,titanAccordionKey:`titan-list-levels`})}}:u===`skins`?{contentProps:{...x,model:r(S,g,b,o(v),{...C,titanAccordionKey:`titan-list-skins`})}}:{contentProps:{...x,model:t(d,m,_,i(v),l(y),c(v),v,{...C,titanAccordionKey:`titan-list-artifacts`})}}}}function Ju(e,t,n){return{label:n(`~cV`),inputId:e,value:Ns(t==null?void 0:t.levelingMode),icon:`arrow-up`,widthPx:168,tooltip:n(`~gj`),options:[{value:`max`,label:n(`~cX`),icon:`arrow-up`},{value:Oa,label:n(`~cW`),icon:`calculator`}]}}function Yu(e,t,n){return{label:n(`~fW`),inputId:e,value:Ps(t==null?void 0:t.upgradeMode),icon:`route`,widthPx:210,tooltip:n(`~gz`),options:[{value:ka,label:n(`~fY`),icon:`list-ordered`},{value:Aa,label:n(`~fX`),icon:`shuffle`}]}}function Xu(e,t=`select`){let n={searchPlaceholder:e(`~d3`),emptyLabel:e(`~dv`)};return t===`multiSelect`?{placeholder:e(`~d2`),selectedLabel:e(`~d4`),...n,selectAllLabel:e(`~d5`),clearLabel:e(`~d1`)}:n}function Zu(e){return{searchPlaceholder:e(`~d3`),clearAllLabel:e(`~cp`),selectAllLabel:e(`~du`)}}function Qu(e,t=`hwhx-title-accent`){return jr(e,{className:t})}function $u(e,t,n,r,o,s,c=void 0,l=void 0){let u=c===void 0||l===void 0?`${Qu(`star`,`hwhx-gold`)}${i(`${s(n)}/${s(r)}`)}`:`${Qu(`package`,`hwhx-gold`)}${i(`${s(c)}/${s(l)}`)}`;return`${Qu(t.icon,t.className)}${i(e)}${u}`}function ed(e,t,n,r,a,o){return`${Qu(`users`,`hwhx-blue`)}${i(e)}${Qu(`star`,`hwhx-gold`)}${i(`${o(t)}/${o(n)}`)} · ${Qu(`sparkles`,`hwhx-purple`)}${i(`${o(r)}/${o(a)}`)}`}function td(e,t){let n=0,r=0;for(let i of e)i.owned&&(r+=1,t.has(Number(i.id))&&(n+=1));return[n,r]}function nd(e){return Array.isArray(e)?e:e==null?[]:[e]}function rd(e){return String(e==null?``:e).trim().replace(/^()+/i,``)}function id(e){return typeof e==`string`?{kind:e}:e}function ad(e,t={},n=0){let{kind:r=`technical`}=id(t);return{key:`${r}-${n}`,html:String(e==null?``:e),kind:r}}function od({key:e,title:t,icon:n,rows:r,count:i,tone:a=`technical`,rowKind:o=`technical`,wrapRows:s=!0,defaultOpen:c=!0,formatCount:l=e=>String(e),normalizeRows:u=nd}={}){let d=u(r),f=[];for(let e=0;eString(e),normalizeRows:o=nd}={}){return{buildAccordionModel(e={}){return od({tone:t,rowKind:n,wrapRows:r,defaultOpen:i,formatCount:a,normalizeRows:o,...e})}}}function cd(e){return String(e==null?``:e).replace(/<[^>]+>/g,` `).replace(/\s+/g,` `).trim()}function ld({translate:e,formatNumber:t,getFragmentCoinResourceName:n}){let{buildAccordionModel:r}=sd({kind:`technical`,tone:`technical`,rowKind:`technical`,formatCount:t}),a=t=>!t||t.size<=0?[e(`~em`)]:[...t.values()].map(e=>`+ ${i(e.titanName)} ${i(String(e.startLevel))}→${i(String(e.endLevel))} (+${i(String(e.count))})`),o=t=>!t||t.size<=0?[e(`~en`)]:[...t.values()].map(e=>`★ ${i(e.titanName)} ${i(String(e.startStar))}→${i(String(e.endStar))} (+${i(String(e.count))})`),s=t=>!t||t.size<=0?[e(`~eS`)]:[...t.values()].map(e=>`+ ${i(e.titanName)} · ${i(e.skinName)} ${i(String(e.startLevel))}→${i(String(e.endLevel))} (+${i(String(e.count))})`),c=t=>!t||t.size<=0?[e(`~dD`)]:[...t.values()].map(e=>`+ ${i(e.titanName)} · ${i(e.artifactLabel)} ${i(String(e.startLevel))}→${i(String(e.endLevel))} (+${i(String(e.count))})`),l=t=>!t||t.size<=0?[e(`~dE`)]:[...t.values()].map(e=>`★ ${i(e.titanName)} · ${i(e.artifactLabel)} ${i(String(e.startStar))}→${i(String(e.endStar))} (+${i(String(e.count))})`),u=n=>!n||n.size<=0?[e(`~dF`)]:[...n.values()].map(e=>`+ ${i(e.artifactName)}: ${i(t(e.amount))} [${i(t(e.coinSpentAmount))}]`),d=(...e)=>e.map(ud).filter(e=>e!==``).join(`
`),f=e=>e.filter(e=>e!==null);return{buildFinalSummaryProps:(a,o,s=``,p=``,m)=>{let h=[i(e(`~dI`,{resourceName:o,spentAmount:t(a.spentAmount),leftAmount:t(a.leftAmount)}))];(a.usesGoldBudget||Number(a.goldSpentAmount)>0)&&h.push(i(e(`~dI`,{resourceName:m,spentAmount:t(a.goldSpentAmount),leftAmount:t(a.goldLeftAmount)}))),Number(a.fragmentCoinSpentAmount)>0&&h.push(i(e(`~dI`,{resourceName:n(),spentAmount:t(a.fragmentCoinSpentAmount),leftAmount:t(a.fragmentCoinLeftAmount)})));let g=a.evolutionSummary&&a.evolutionSummary.size>0||a.purchaseSummary&&a.purchaseSummary.size>0;return{messageHtml:d(s,p),accordions:f([r({title:e(`~dK`),icon:`hammer`,rows:c(a.summary),tone:`farm`,rowKind:`farm`}),g?r({title:e(`~dG`),icon:`sparkles`,rows:l(a==null?void 0:a.evolutionSummary),tone:`craft`,rowKind:`craft`}):null,g?r({title:e(`~dH`),icon:`shopping-bag`,rows:u(a==null?void 0:a.purchaseSummary),tone:`shop`,rowKind:`shop`}):null,r({title:e(`~dJ`),icon:`flask`,rows:h})])}},buildFinalTitanLevelSummaryProps:(n,s,c=``,l=``)=>{let u=[i(e(`~er`,{resourceName:s,spentAmount:t(n.spentAmount),leftAmount:t(n.leftAmount)}))];return Number(n.potionAmountBought)>0&&u.push(i(e(`~eq`,{potionAmount:t(n.potionAmountBought),coinSpentAmount:t(n.potionCoinSpentAmount),coinLeftAmount:t(n.potionCoinLeftAmount)}))),{messageHtml:d(c,l),accordions:f([r({title:e(`~ep`),icon:`arrow-up`,rows:a(n==null?void 0:n.summary),tone:`farm`,rowKind:`farm`}),n.evolutionSummary&&n.evolutionSummary.size>0?r({title:e(`~eo`),icon:`sparkles`,rows:o(n==null?void 0:n.evolutionSummary),tone:`craft`,rowKind:`craft`}):null,r({title:e(`~es`),icon:`flask`,rows:u})])}},buildFinalTitanSkinSummaryProps:(n,a,o=``,c=``)=>({messageHtml:d(o,c),accordions:f([r({title:e(`~eU`),icon:`shirt`,rows:s(n==null?void 0:n.summary),tone:`farm`,rowKind:`farm`}),r({title:e(`~eV`),icon:`coins`,rows:[i(e(`~eT`,{resourceName:a,spentAmount:t(n.spentAmount),leftAmount:t(n.leftAmount)}))]})])})}}function ud(e){return String(e==null?``:e).trim().replace(/^()+/i,``)}function dd([e,t,n,r,a]){let o=(e,t,r,i,o=``)=>[``,{component:a,props:n(e,t,i,o,r),resultLabel:cd(i)}];return[([t,n,r,a])=>{let s=a instanceof Error?a.message:e(`~cC`),c=i(`${e(`~dg`)} ${s}`);return o(t,n,r,c)},([n,a,s,c,l,u])=>{let d=i(e(`~df`,{count:t(c)}));return o(n,a,s,d,r({settings:l,options:u}))}]}function fd([e,t,n,r,a,o]){let s=(e,t)=>[``,{component:o,props:e,resultLabel:cd(t)}];return[([t,r,a])=>{let o=a instanceof Error?a.message:e(`~cC`),c=i(`${e(`~eH`)} ${o}`);return s(n(t,r,c),c)},([r,o,c,l,u])=>{let d=i(e(`~eG`,{count:t(c)}));return s(n(r,o,d,a({settings:l,options:u})),d)},([t,n,a])=>{let o=a instanceof Error?a.message:e(`~cC`),c=i(`${e(`~eb`)} ${o}`);return s(r(t,n,c),c)},([n,o,c,l,u])=>{let d=i(e(`~ea`,{count:t(c)}));return s(r(n,o,d,a({settings:l,options:u})),d)}]}function pd(e,t,n,r){return r(`activity`,`${e}/${n(t)}`)}function md([e,t,n]){function r(t){return i(e(`~dk`,{titanName:t.titanName,slot:t.artifactLabel,fromLevel:String(t.fromLevel),toLevel:String(t.toLevel)}))}return[function(r,a,o,s){return`${i(e(`~de`,{artifactName:r.artifactName,amount:t(r.amount)}))}
${pd(`${t(a)}-${t(o)}`,s,t,n)}`},function(r,a,o,s){return`${i(e(`~dh`,{titanName:r.titanName,slot:r.artifactLabel,fromStar:String(r.fromStar),toStar:String(r.toStar)}))}
${pd(`${t(a)}-${t(o)}`,s,t,n)}`},function(e,i,a,o,s){let c=[n(`flask`,`-${t(i.spentAmount)} (${t(i.leftAmount)})`)];return i.usesGoldBudget&&c.push(n(`coins`,`-${t(i.goldSpentAmount)} (${t(i.goldLeftAmount)})`,`hwhx-gold`)),`${r(e)}
${c.join(`
`)}
${pd(`${t(a)}-${t(o)}`,s,t,n)}`},function(e,i,a){return`${r(e)}
${pd(t(i),a,t,n)}`}]}function hd(e,t,n,r){return r(`activity`,`${e}/${n(t)}`)}function gd([e,t,n]){function r(t){return i(e(`~eJ`,{titanName:t.titanName,skinName:t.name,fromLevel:String(t.fromLevel),toLevel:String(t.toLevel)}))}return[function(e,i,a,o,s){return`${r(e)}
${n(`coins`,`-${t(i.spentAmount)} (${t(i.leftAmount)})`)}
${hd(`${t(a)}-${t(o)}`,s,t,n)}`},function(e,i,a){return`${r(e)}
${hd(t(i),a,t,n)}`}]}function _d(e,t,n,r){return r(`activity`,`${e}/${n(t)}`)}function vd([e,t,n]){function r(t){return i(e(`~ee`,{titanName:t.titanName,fromLevel:String(t.fromLevel),toLevel:String(t.toLevel)}))}return[function(r,a,o,s){return`${i(e(`~ec`,{titanName:r.titanName,fromStar:String(r.fromStar),toStar:String(r.toStar)}))}
${_d(`${t(a)}-${t(o)}`,s,t,n)}`},function(e,i,a,o,s){return`${r(e)}
${n(`flask`,`-${t(i.spentAmount)} (${t(i.leftAmount)})`)}
${_d(`${t(a)}-${t(o)}`,s,t,n)}`},function(e,i,a){return`${r(e)}
${_d(t(i),a,t,n)}`},function(r,a,o){return`${i(e(`~e9`,{potionAmount:t(r.potionAmountTotal),coinAmount:t(r.coinSpentAmount)}))}
${_d(t(a),o,t,n)}`}]}function yd(e,t){var n;let r=String(t==null?``:t);return((n=e==null?void 0:e.controls)==null?[]:n).find(e=>{var t;return String((t=e==null?void 0:e.inputId)==null?``:t)===r})}function bd(e,t,n=``){var r,i;let a=yd(e,t);return String((r=(i=a==null?void 0:a.value)==null?n:i)==null?``:r)}function xd(e,t,n=0){return Math.max(0,Math.floor(Number(bd(e,t,n))||0))}function Sd(e,t,n){let r=yd(e,t);return!r||!(`value`in r)?!1:(r.value=r.kind===`number`?Math.max(0,Math.floor(Number(n)||0)):String(n==null?``:n),!0)}function Cd(e,t,n,r=void 0){let i=yd(e,t);if(!i||i.kind!==`number`)return;i.value=Math.max(0,Math.floor(Number(n)||0));let a=Math.max(0,Math.floor(Number(r)||0));i.maxValue=a>0?a:void 0}function wd(e){e&&(e.syncSerial=Math.max(0,Number(e.syncSerial)||0)+1)}function Td(e,t){let n=Math.max(1,Number(e)||1),r=Math.max(0,Number(t)||0),i=r>0?Math.min(r,n+1):n+1;return{startLevel:n,endLevel:Math.max(n,i)}}function Ed(e,t){return e.find(e=>Number(e==null?void 0:e.id)===Number(t))}function Dd([e,t]){function n(e){let t=e.filter(e=>!!(e!=null&&e.owned));return(t.length>0?t:e).map(e=>({value:String(e.id),label:e.name,icon:`users`}))}function r(e,t){var n,r;let i=new Set((Array.isArray(t)?t:[]).map(e=>Number(e))),a=e.filter(e=>!!(e!=null&&e.owned)),o=(n=(r=a.find(e=>i.has(Number(e.id))))==null?a[0]:r)==null?e[0]:n;return Number(o==null?void 0:o.id)||0}function i(t,n,r){let i=Ed(t,n);return Td(Es(i==null?void 0:i.levels,r),e(n,r))}function a(e,n){let r=Ed(e,n);return Td(r==null?void 0:r.level,t())}function o(e,t,n,r){var i,a;let o=String(r==null?``:r),s=Ed(e,n),c=((i=s==null?void 0:s.skinEntries)==null?[]:i).find(e=>e.localeKey===o);if(c)return c;let l=t.find(e=>e.localeKey===o);return l?{...l,skinId:(a=l.skinIds[0])==null?0:a,localeKey:l.localeKey,name:l.name,currentLevel:1,maxLevel:l.maxLevel}:void 0}function s(e,t,n,r){let i=o(e,t,n,r);return Td(i==null?void 0:i.currentLevel,i==null?void 0:i.maxLevel)}return[n,r,i,a,o,s]}function Od(e,t){return e.filter(e=>Number(e.amount)>0).map((e,n)=>{var r,i;return{key:`${e.name}:${String((r=e.icon)==null?``:r)}:${n}`,icon:e.icon,className:(i=e.className)==null?`hwhx-title-accent`:i,name:e.name,amountText:t(e.amount)}})}function kd({totals:e,availableParts:t=[],formatNumber:n,translate:r}){let i=new Map(t.map(e=>[String(e.name),e]));return e.filter(e=>Number(e.amount)>0).flatMap(e=>{let t=i.get(String(e.name));if(!t)return[];let a=Math.max(0,Number(t.amount)||0)-Math.max(0,Number(e.amount)||0),o=a>=0,s=r(o?`~c6`:`~ca`,{amount:n(Math.abs(a))});return[{key:String(e.name),state:o?`ok`:`bad`,icon:o?`check`:`alert-triangle`,iconClassName:o?`hwhx-green`:`hwhx-danger`,name:e.name,label:s}]})}function Ad({rows:e,totals:t,availableParts:n=[],formatNumber:r,translate:i}){return{emptyText:i(`~c5`),emptyDash:`—`,totalLabel:i(`~ce`),totals:Od(t,r),availability:kd({totals:t,availableParts:n,formatNumber:r,translate:i}),rows:e.map((e,t)=>({key:`${e.fromLevel}:${e.toLevel}:${t}`,title:`${e.fromLevel} → ${e.toLevel}`,levelLabel:i(`~c9`,{level:e.toLevel}),costParts:Od(e.costParts,r)}))}}function jd(e,t,n=0){let r=Math.max(0,Math.floor(Number(n)||0)),i=Math.max(1,Math.floor(Number(e)||1)),a=r>0?Math.min(i,r):i,o=Math.max(a,Math.floor(Number(t)||a));return{startLevel:a,endLevel:Math.max(a,r>0?Math.min(o,r):o)}}function Md([e,t,n,r,i,a,o,s,c,l,u,d]){function f(n,r,i=[]){return Ad({rows:n,totals:r,availableParts:i,formatNumber:e,translate:t})}function p(e,t,i,a){let s=[],l={icon:`flask`,name:n(),amount:0},u={icon:`coins`,className:`hwhx-gold`,name:r(),amount:0},d=[l,u],{startLevel:f,endLevel:p}=jd(i,a,o(e,t));for(let n=f;n{var t,n;let r=document.createElement(`div`);r.className=`hwhx-native-body hwhx-popup`;let i=document.createElement(`p`);i.className=`hwhx-hint`,i.textContent=String((t=e.description)==null?``:t);let a=document.createElement(`label`);a.className=`hwhx-field-row`;let o=document.createElement(`span`);o.textContent=String((n=e.amountLabel)==null?`Количество`:n);let s=document.createElement(`input`);s.type=`number`,s.min=`0`,s.className=`hwhx-field`;let c=Ld(e.state);return s.value=String(Math.max(0,Number(c.amount)||0)),s.addEventListener(`input`,()=>{c.amount=Math.max(0,Math.trunc(Number(s.value)||0))}),a.append(o,s),r.append(i,a),r});function Id(e){return async function(t,n={}){var r;if(Ns(t.levelingMode)!==`amount`)return{confirmed:!0,options:{source:n.source}};if(n.source===`checklist`)return Fs(t.checklistAmountBehavior)==="default"?{confirmed:!0,options:{source:n.source,maxUpgradeCount:e.getChecklistLevelingAmount(t)}}:(e.showChecklistAmountSkipped(),{confirmed:!1,options:{}});let i={amount:(r=t.lastLevelingAmount)==null?e.getChecklistLevelingAmount(t):r},a=e.translate(`~cU`),o;return{confirmed:await yn({kind:`amount`,title:a,header:e.buildHeader(a),component:Fd,props:{state:i,description:e.translate(`~cT`),amountLabel:e.translate(`~cR`)},actions:[{result:`confirm`,label:e.translate(`~cS`),tone:`success`}],closeLabel:e.translate(`~cq`),onBeforeClose:e=>(e===`confirm`&&(o=Math.max(0,Math.trunc(Number(i.amount)||0))),e)})===`confirm`,options:{source:n.source,maxUpgradeCount:o}}}}function Ld(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function Rd({getActiveTab:e,artifactTitanOptions:t,levelTitanOptions:n,skinTitanOptions:r,getArtifactSettings:i,setArtifactSettings:a,normalizeArtifactSettings:o,getLevelSettings:s,setLevelSettings:c,normalizeLevelSettings:l,getSkinSettings:u,setSkinSettings:d,normalizeSkinSettings:f,persistSettings:p}){let m=async t=>{let n=e();n===`levels`?c(l({...s(),selectedTitanIds:t})):n===`skins`?d(f({...u(),selectedTitanIds:t})):a(o({...i(),selectedTitanIds:t})),await p()};return{selectAll:()=>m(zd(h())),clearAll:()=>m([])};function h(){let i=e();return i===`levels`?n:i===`skins`?r:t}}function zd(e){return e.filter(e=>e.owned).map(e=>e.id)}function Bd({translate:e,keys:t,includeStart:n=!1}={}){return function(r){return Je({taskList:r,translate:e,keys:t,includeStart:n})}}function Vd(e,t){return Array.isArray(e)?e.map(e=>String(e==null?``:e)).filter(Boolean):e?[String(e)]:t.map(e=>e.key)}function Hd([e,t,n,r,i,a]){let o=Bd({translate:e,keys:{none:`~cA`,start:`~cB`,end:`~cw`,before:`~cv`,after:`~cu`},includeStart:!0});function s(){return t().filter(e=>!vc(e))}function c(t=void 0){let r=o(s()),i=As(),c=Vd(t,i),l=new Map(i.map(e=>[e.key,e]));return{key:`do-your-best`,stateKey:c.length===1?`trainer:do-your-best:${c[0]}`:`trainer:do-your-best`,title:e(`~cx`),icon:`list-checks`,accentColor:`#4d5770`,defaultOpen:!1,controls:c.map(e=>l.get(e)).filter(e=>e!==void 0).map(t=>{var i,o;let s=n(t.key),c=r.some(e=>e.value===s)?s:(i=(o=r.at(-1))==null?void 0:o.value)==null?`end`:i;return a({label:`${e(`~cz`)} · ${e(t.labelKey)}`,inputId:js(t.key),value:c,options:r,icon:`list-checks`,widthPx:360,tooltip:e(`~cy`)})})}}function l(e,t){let a=String(e==null?``:e),c=As().find(e=>js(e.key)===a);if(!c)return!1;let l=new Set(o(s()).map(e=>e.value)),u=String(t==null?``:t),d=l.has(u)?u:n(c.key);return r(c.key,d),i(),!0}return[c,l]}function Ud(e){let t=null;return async function(n){if(t)return e==null||e(),!1;let r=Promise.resolve().then(n);t=r;try{return await r,!0}finally{t===r&&(t=null)}}}function Wd({readSettings:e,translate:t,openSettings:n,runAll:r,runArtifacts:i,runLevels:a,runSkins:o,isAvailable:s=()=>!Qi()}){let c=e(),l=_s((c&&typeof c==`object`&&!Array.isArray(c)?c:{}).hotkeys,J.hotkeys);return[{id:`hwhtitantrainer:open-settings`,label:t(`~fm`),shortcut:l.openSettings,enabled:s,handler:n},{id:`hwhtitantrainer:run-all`,label:t(`~fo`),shortcut:l.runAll,enabled:s,handler:r},{id:`hwhtitantrainer:run-artifacts`,label:t(`~fp`),shortcut:l.runArtifacts,enabled:s,handler:i},{id:`hwhtitantrainer:run-levels`,label:t(`~fq`),shortcut:l.runLevels,enabled:s,handler:a},{id:`hwhtitantrainer:run-skins`,label:t(`~fr`),shortcut:l.runSkins,enabled:s,handler:o}]}function Gd(e){let t=Ud(),n=e=>()=>t(e);return Cs(`hwhtitantrainer`,{getBindings:()=>Wd({...e,openSettings:n(e.openSettings),runAll:n(e.runAll),runArtifacts:n(e.runArtifacts),runLevels:n(e.runLevels),runSkins:n(e.runSkins)})})}function Kd({titanOptions:e,settings:t,inventory:n,levelGainAmount:r=0,accordionKey:i=`level-priority`,translate:a,buildOption:o,buildBadges:s,buildActions:c,getLevelCap:l,getMaxLevel:u}){let d=new Set(Hs(t.selectedTitanIds)),[f,p]=td(e,d);return{kind:`priority`,accordionKey:i,stateKey:`titan-list:${i}`,defaultOpen:!0,accentColor:`#4d5770`,icon:`list-ordered`,title:a(`~e7`),note:a(`~e8`),reorderDisabled:Ps(t.upgradeMode,Aa)===Aa,reorderDisabledHint:a(`~fu`),...Zu(a),optionVariant:`level`,badges:s(f,p,r),rows:e.map((e,r)=>{let i=Number(e.id);return{key:String(i),index:r,orderKey:String(i),checked:d.has(i),disabled:!e.owned,inputId:`${eo}level-${i}`,titanId:i,option:o(e,t,n),capInputId:`${Do}${i}`,capLabel:a(`~et`),capTitle:a(`~gw`),capValue:l(t,i),capMaxValue:u(),actionAttribute:Oo,actions:c(),childrenTitle:``,childrenIcon:``,childrenId:`hwhtitan-priority-children-level-${i}`,children:[],filterRow:e.owned,searchText:`${e.name} ${e.level}`}})}}function qd(e,t){let n=Yd(t),r=new Set(Object.keys(n).map(e=>Number(e)).filter(e=>Number.isFinite(e))),i=new Set;return(Array.isArray(e)?e:[]).map(e=>Number(e)).filter(e=>!Number.isFinite(e)||!r.has(e)||i.has(e)?!1:(i.add(e),!0))}function Jd({artifactSettings:e,levelSettings:t,skinSettings:n,ownedTitans:r,normalizeArtifactSettings:i,normalizeLevelSettings:a,normalizeSkinSettings:o}){return{artifactSettings:i({...e,selectedTitanIds:qd(e.selectedTitanIds,r)}),levelSettings:a({...t,selectedTitanIds:qd(t.selectedTitanIds,r),selectedTitanEvolutionIds:qd(t.selectedTitanEvolutionIds,r)}),skinSettings:o({...n,selectedTitanIds:qd(n.selectedTitanIds,r)})}}function Yd(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Xd(e){"use strict";var t;if(!Ae({attempt:Number(e)||0,maxAttempts:120,delayMs:500,requiredKeys:[`HWHClasses`,`HWHFuncs`,`HWHData`],retry:Xd,logPrefix:`[TitanArtifact]`,scriptName:`HWH Titan Trainer`}))return;Qn();let n=globalThis,r=Z(n.HWHFuncs),a=Z(n.HWHData),o=Z(n.HWHClasses),s=typeof r.addExtentionName==`function`?r.addExtentionName:()=>void 0,{I18N:c}=r,{setProgress:l,setStageProgress:u,showResult:d,configure:f}=Xi({scriptId:`hwhtitanartifact`,title:GM_info.script.name}),p=(t=a.i18nLangData)==null?a.i18nLangData={}:t,_=N(a.buttons)?a.buttons:a.buttons={},v=Array.isArray(a.othersPopupButtons)?a.othersPopupButtons:a.othersPopupButtons=[];_t(p);let y=ft({I18N:c,i18nLangData:p,preferGameI18N:!1,fallbackLanguage:`en`,cacheMissingTranslations:!0}),b=m({locale:`ru-RU`}),x=h({locale:`ru-RU`}),C=(e,t,n=`hwhx-title-accent`,r=``)=>Mr(e,t,{className:n,iconClassName:n,title:r}),{getArtifactLevelCapForTitan:w,getArtifactRuleForTitan:T,getArtifactSlotIdsForTitan:E,getChecklistLevelingAmount:D,getSelectedArtifactSlotIdsFromRules:O,getSelectedSkinLocaleKeysFromRules:ee,getSkinLevelCapForTitan:k,getSkinRuleForTitan:te,getTitanLevelCapForTitan:ne,normalizeArtifactRules:re,normalizeLevelSettings:ie,normalizeSettings:ae,normalizeSkinRules:oe,normalizeSkinSettings:se}=qs({getConfigTitanIds:Zt,getDefaultArtifactLevelCap:At,getDefaultTitanSkinLevelCap:nn,getMaxKnownTitanArtifactStar:hn,getMaxTitanEvolutionStar:Jr,getMaxTitanLevel:R,getTitanSkinGroups:tn,getTitanTrainerButtonPlacementFallback:Xs}),ce=ld({translate:y,formatNumber:b,getFragmentCoinResourceName:B}),[le,ue,A,j]=md([y,b,C]),[M,de]=gd([y,b,C]),[fe,pe,me,he]=vd([y,b,C]),ge=Id({translate:y,buildHeader:ta,getChecklistLevelingAmount:D,showChecklistAmountSkipped:()=>{tt(y(`~ck`))}}),_e=pa,ve=new mr({keyPrefix:xa,schemaVersion:3}),ye=new mr({keyPrefix:wa,schemaVersion:3}),be=new mr({keyPrefix:Ta,schemaVersion:3}),xe=new mr({keyPrefix:Sa,schemaVersion:3}),Se=yt({timeoutMs:Ea,pollDelayMs:250,errorMessage:()=>y(`~dp`),isReady:()=>{var e,t,n,r;return typeof globalThis.Send==`function`&&typeof((e=globalThis.cheats)==null?void 0:e.translate)==`function`&&!!(!((t=globalThis.lib)==null||(t=t.data)==null)&&t.titan)&&!!(!((n=globalThis.lib)==null||(n=n.data)==null)&&n.titanArtifact)&&!!(!((r=globalThis.lib)==null||(r=r.data)==null)&&r.skin)}}),Ce=bt({timeoutMs:Ea,pollDelayMs:250,errorMessage:()=>y(`~dU`)}),we=Se.ensureReady,Te=Ce.ensureReady,Ee=Xl(new on({name:`hwhtitantrainer-accordions`,schemaVersion:3}),new mr({keyPrefix:`hwhtitantrainer_accordion_filters_`,schemaVersion:3}),Te),De,Oe,ke,je,Me,Ne=new Map,Pe=new Map,Fe=new Map,Ie=new Map,Le=new Map,Re=new Map,Be=new Map,Ve=Ke({allowStart:!0}),He=Ge({getDoYourBestClass:()=>ze(o),logPrefix:`[TitanArtifact]`}),We=lt({buildSuccessMessage:()=>`
${C(`refresh-cw`,y(`~da`))}`,buildFailureMessage:()=>`
${C(`refresh-cw`,y(`~db`),`hwhx-gold`)}`,logPrefix:`[TitanArtifact]`}),[qe,Je]=dd([y,b,ce.buildFinalSummaryProps,We,Ji]),[Ye,Ze,Qe,$e]=fd([y,b,ce.buildFinalTitanSkinSummaryProps,ce.buildFinalTitanLevelSummaryProps,We,Ji]);function et(e,t=void 0){if(t===void 0){console.log(`[hwhtitanartifact:fragments]`,e);return}console.log(`[hwhtitanartifact:fragments]`,e,t)}let tt=oa({setProgress:l,setStageProgress:u});function nt(e,t={}){d(e,t)}function rt(e=J){var t;let n=Z(e);_e=Ds(typeof e==`string`?e:(t=n.uiTheme)==null?_e:t)}function it(e=J){rt(e);let t=kr((e==null?void 0:e.uiTooltipsEnabled)!==!1);return wr(Cr(e==null?void 0:e.accordionAutoScrollMode,Tr())),f(e),pi(e),t}async function st(){try{Mt.invalidate(),await Mt.get()}catch(e){console.error(`[TitanArtifact] post-run snapshot refresh failed`,e)}}function ct(e){let t=Number(e);return t===0?{icon:`swords`,className:`hwhx-gold`,label:y(`~bX`)}:t===1?{icon:`trophy`,className:`hwhx-purple`,label:y(`~bT`)}:{icon:`gem`,className:`hwhx-gold`,label:y(`~bV`)}}function ut(){try{return gc(xe.read(``,`end`))}catch(e){return console.warn(`[TitanArtifact] checklist placement read failed`,e),gc(`end`)}}function dt(e=void 0){var t;let n=ut();return e===void 0?n:(t=n[String(e)])==null?Ve(`end`):t}function pt(e){try{xe.write(``,gc(e))}catch(e){console.warn(`[TitanArtifact] checklist placement write failed`,e)}}function ht(e,t){let n=ut();n[String(e)]=Ve(t),pt(n)}let gt=Ee.getTitanAccordionUiProps,vt=J,xt=wt({storage:ve,defaultValue:J,normalize:ae,getScopeKey:Te,beforeRead:we,beforeWrite:we,afterRead:e=>{vt=e,it(e)},afterWrite:e=>{vt=e,it(e)}}),St=wt({storage:ye,defaultValue:rs,normalize:ie,getScopeKey:Te,beforeRead:we,beforeWrite:we}),Ct=wt({storage:be,defaultValue:is,normalize:se,getScopeKey:Te,beforeRead:we,beforeWrite:we}),Tt=xt.read,Et=xt.write,P=St.read,F=St.write,I=Ct.read,L=Ct.write;function Dt(e,t=`check`,n=`hwhx-green`){nt(C(t,String(e==null?``:e),n))}let[,Ot,kt]=fa([y,ae,ie,se,gc,Te,()=>{var e,t;return(e=(t=GM_info)==null?void 0:t.script)==null?{}:e},Tt,P,I,dt,Et,F,L,pt,ci,e=>Dt(e),3]);function R(){var e,t;return Oe===void 0&&(Oe=Object.keys((e=(t=globalThis.lib)==null||(t=t.data)==null||(t=t.level)==null?void 0:t.titan)==null?{}:e).map(e=>Number(e)).filter(e=>Number.isFinite(e)&&e>0).reduce((e,t)=>Math.max(e,t),0)),Oe}function At(e){let t=Number(e);if(Re.has(t)){var n;return(n=Re.get(t))==null?999:n}let r=Zt().reduce((e,n)=>{var r,i;let a=Ms((r=(i=ln(n,t))==null?void 0:i.levelConfigMap)==null?{}:r);return Math.max(e,a)},0),i=r>0?r:999;return Re.set(t,i),i}function jt(e,t){var n,r;let i=Ms((n=(r=ln(e,t))==null?void 0:r.levelConfigMap)==null?{}:n);return i>0?i:At(t)}let z=mc([()=>globalThis.Send,y]),Mt=g({ttlMs:5e3,load:()=>ac(z,!0,!0)}),Nt=S({sendChunk:e=>z(e)}),Pt=cl([Nt,tt,le,ue,A,j,et,()=>y(`~cC`)]),Ft=Sl([Nt,tt,M,de,()=>y(`~cC`)]),It=Wl([Nt,tt,fe,pe,me,()=>y(`~cC`),he]);async function Lt(e,t){return pc(await z([{name:`shopGet`,args:{shopId:e},ident:t}]),0)}let Rt=()=>Lt(13,`titanArtifactFragmentShop`),zt=()=>Lt(12,`titanXpPotionShop`);function Bt(e){return Vt(`LIB_HERO_NAME_${e}`,`~dR`,{id:e})}function Vt(e,t,n){var r,i;let a=Be.get(e);if(a)return a;let o=(r=globalThis.cheats)==null||(i=r.translate)==null?void 0:i.call(r,e),s=o&&o!==e?String(o):y(t,n);return Be.set(e,s),s}function Ht(){return Vt(`LIB_CONSUMABLE_NAME_53`,`~dn`)}function Ut(){return y(`~cQ`)}function B(){return Vt(`LIB_COIN_NAME_18`,`~cO`)}function Wt(){return Vt(`LIB_CONSUMABLE_NAME_20`,`~eg`)}function V(){return Vt(`LIB_COIN_NAME_24`,`~eM`)}function H(e){let t=Z(Z(e).consumable);return Math.max(0,Number(t[53])||0)}function Gt(e){let t=Z(Z(e).consumable);return Math.max(0,Number(t[20])||0)}function U(e,t){let n=Z(Z(e).fragmentTitan);return Math.max(0,Number(n[String(Math.max(0,Number(t)||0))])||0)}function Kt(e){let t=Z(Z(e).coin);return Math.max(0,Number(t[24])||0)}function qt(e){let t=Z(Z(e).coin);return Math.max(0,Number(t[15])||0)}function Jt(e){let t=Z(Z(e).coin);return Math.max(0,Number(t[18])||0)}function Yt(e,t){let n=Z(Z(e).fragmentTitanArtifact);return Math.max(0,Number(n[String(Math.max(0,Number(t)||0))])||0)}function Xt(e){return Math.max(0,Number(Z(e).gold)||0)}function Zt(){if(Array.isArray(De))return De;let e=lc(`titan`);return De=Object.keys(e).map(e=>Number(e)).filter(e=>Number.isFinite(e)).filter(t=>Number(sc(e,t).isPlayable)===1).sort((e,t)=>e-t),De}function Qt(e,t){var n,r;let i=String(e==null?``:e).trim(),a=i?(n=globalThis.cheats)==null||(r=n.translate)==null?void 0:r.call(n,i):``;return a&&a!==i?a:i||y(`~eQ`,{id:t})}function $t(e){return Object.keys(e==null?{}:e).map(e=>Number(e)).filter(e=>Number.isFinite(e)&&e>0).reduce((e,t)=>Math.max(e,t),0)}function en(e){var t,n;let r=Math.max(0,Number(e)||0);if(r<=1e4)return;if(Ne.has(r))return Ne.get(r);let i=oc(lc(`skin`),r);if(!N(i))return;let a=i,o=String((t=a.localeKey)==null?``:t).trim(),s=(n=Z(a.statData).levels)==null?{}:n,c={skinId:r,localeKey:o,name:Qt(o,r),levelConfigMap:s,maxLevel:$t(s)};return Ne.set(r,c),c}function tn(){if(Array.isArray(Me))return Me;let e=new Map;return Object.keys(lc(`skin`)).map(e=>Number(e)).filter(e=>Number.isFinite(e)&&e>1e4).sort((e,t)=>e-t).forEach(t=>{let n=en(t);if(!(n!=null&&n.localeKey))return;if(!e.has(n.localeKey)){e.set(n.localeKey,{localeKey:n.localeKey,name:n.name,skinIds:[n.skinId],maxLevel:n.maxLevel,sortId:n.skinId});return}let r=e.get(n.localeKey);r&&(r.skinIds.push(n.skinId),r.maxLevel=Math.max(r.maxLevel,n.maxLevel),r.sortId=Math.min(r.sortId,n.skinId))}),Me=[...e.values()].sort((e,t)=>{let n=mt(e.name,t.name);return n===0?e.sortId-t.sortId:n}),Me}function nn(e){let t=String(e==null?``:e).trim();if(Pe.has(t)){var n;return(n=Pe.get(t))==null?999:n}let r=tn().find(e=>e.localeKey===t),i=r&&r.maxLevel>0?r.maxLevel:999;return Pe.set(t,i),i}function rn(e){let t=new Map,n=Z(Z(e).skins);return Object.entries(n).forEach(([e,n])=>{let r=en(e);if(!(r!=null&&r.localeKey))return;let i={...r,currentLevel:Math.max(0,Number(n)||0)},a=t.get(r.localeKey);(!a||i.currentLevel>a.currentLevel||i.currentLevel===a.currentLevel&&i.skinId{let n=mt(e.name,t.name);return n===0?e.skinId-t.skinId:n})}function an(e,t){var n;let r=(n=en(e))==null?void 0:n.levelConfigMap,i=Math.max(0,Number(t)||0),a;return a=Array.isArray(r)?r[i]:Z(r)[String(i)],N(a)?a:void 0}function sn(e){let t=Z(e).artifacts;return Array.isArray(t)?t.map(e=>Math.max(0,Number(Z(e).level)||0)):[]}function cn(e){let t=Z(e).artifacts;return q.map(e=>{let n=cc(t,e);return{level:Math.max(0,Number(n.level)||0),star:Math.max(0,Number(n.star)||0)}})}function ln(e,t){var n,r;let i=Math.max(0,Number(e)||0),a=Math.max(0,Number(t)||0),o=`${i}:${a}`;if(Fe.has(o))return Fe.get(o);let s=sc(lc(`titan`),i),c=Number(Es(s.artifacts,a));if(!Number.isFinite(c)||c<=0)return;let l=lc(`titanArtifact`),u=sc(Z(l.id),c),d=a===2?`amulet`:String((n=u.type)==null?``:n),f={artifactId:c,artifactType:d,levelConfigMap:(r=sc(Z(l.type),d).levels)==null?{}:r};return Fe.set(o,f),f}function un(e,t){let n=Math.max(0,Number(t)||0),r;if(Array.isArray(e)){var i;r=(i=e[Math.max(0,n-1)])==null?e[n]:i}else r=Z(e)[String(n)];return N(r)?r:void 0}function dn(e,t,n){let r=ln(e,t);if(r)return un(r.levelConfigMap,n)}function fn(e){let t=Math.max(0,Number(e)||0);return Vt(`LIB_TITAN_ARTIFACT_NAME_${t}`,`~bW`,{slot:t})}function pn(e,t){let n=Math.max(0,Number(e)||0),r=Math.max(0,Number(t)||0),i=`${n}:${r}`,a=Ie.get(i);if(a)return a;let o=ln(n,r);if(!o)return[];let s=Z(sc(Z(lc(`titanArtifact`).type),o.artifactType).evolution),c=Object.values(s).map(e=>{let t=Z(e);return{star:Math.max(0,Number(t.star)||0),fragmentCost:Math.max(0,Number(t.costFragmentsAmount)||0)}}).filter(e=>e.star>0).sort((e,t)=>e.star-t.star);return Ie.set(i,c),c}function mn(e,t){let n=`${Math.max(0,Number(e)||0)}:${Math.max(0,Number(t)||0)}`,r=Le.get(n);if(r!==void 0)return r;let i=pn(e,t).reduce((e,t)=>Math.max(e,t.star),0);return Le.set(n,i),i}function hn(){return je===void 0&&(je=Zt().reduce((e,t)=>Math.max(e,...q.map(e=>mn(t,e))),0)),je}function gn(e,t,n,r){let i=Math.max(0,Number(n)||0),a=mn(e,t),o=Math.max(i,Math.min(Math.max(0,Number(r)||a),a));return pn(e,t).filter(e=>e.star>i&&e.star<=o)}function _n(e,t,n){let r=jt(e,t);return r<=0||r>=999?!Lr(e,t,n):Math.max(0,Number(n)||0)>=r}function vn(e,t){let n=q.filter(t=>!!ln(e,t));return n.length<=0?!1:n.every(n=>{var r;return _n(e,n,(r=Es(t,n))==null?0:r)})}function yn(e,t,n,r=0){let i=mn(e,t),a=gn(e,t,n,Math.max(0,Number(r)||0)>0?Math.min(Math.max(0,Number(r)||0),i):i)[0];return Math.max(0,Number(a==null?void 0:a.fragmentCost)||0)}function bn(e,{buyableOnly:t=!1,mode:n=`stars`,inventory:r={},maxArtifactStar:i=0}={}){let a=Math.max(0,Number(i)||0),o=[];for(let[i,l]of Object.entries(Z(e))){let e=Number(i);if(!Number.isFinite(e)||!l)continue;let u=Bt(e),d=cn(l),f=[];for(let i of q){var s,c;if(t&&Number(i)===2)continue;let o=ln(e,i);if(!o)continue;let l=(s=d[i])==null?{level:0,star:0}:s,p=Math.max(0,Number(l.star)||0),m=mn(e,i),h=a>0?Math.min(a,m):m,g=fn(o.artifactId),_=Yt(r,o.artifactId),v=yn(e,i,p,a),x=Os((c=dn(e,i,l.level))==null?void 0:c.color),S=h>0&&p>=h||n===`fragments`&&v<=0,C=S?y(`~e1`):`${u} · ${g}`;f.push({value:zs(e,i),label:`${u} - ${g} ${p}/${m}`,htmlLabel:$u(g,ct(i),p,m,x,b,n===`fragments`?_:void 0,n===`fragments`?v:void 0),searchText:`${u} ${g} ${p}/${m} ${_}/${v}`,disabled:S,title:C})}f.length>0&&o.push({label:u,options:f})}return o}function xn(e,t){let n=Jr(),r=[];for(let[i,a]of Object.entries(Z(e))){let e=Number(i);if(!Number.isFinite(e)||!a)continue;let o=Bt(e),s=Yr(a),c=U(t,e),l=qr(s+1),u=n>0&&s>=n||l<=0,d=`${o} ${s}/${n}`,f=ed(o,s,n,c,l,b);r.push({value:String(e),label:d,htmlLabel:f,searchText:`${o} ${s}/${n}`,disabled:u,title:u?y(`~e1`):o})}return[{label:y(`~dS`),options:r}]}function Sn(e,t=[]){let n=new Map(Hs(t).map((e,t)=>[e,t]));return[...e==null?[]:e].sort((e,t)=>{let r=n.has(Number(e.id)),i=n.has(Number(t.id));if(r!==i)return r?-1:1;if(r&&i){var a,o;return((a=n.get(Number(e.id)))==null?0:a)-((o=n.get(Number(t.id)))==null?0:o)}return e.owned===t.owned?mt(e.name,t.name):e.owned?-1:1})}function Cn(e,t=J){let n=Z(e),r=new Set(Object.keys(n).map(e=>Number(e)).filter(e=>Number.isFinite(e)));return Sn(Zt().map(e=>{let t=oc(n,e),i=r.has(e),a=cn(t),o=a.map(e=>e.level),s=i&&vn(e,o);return{id:e,name:Bt(e),owned:i,maxed:s,levels:o,artifactStates:a}}),t==null?void 0:t.selectedTitanIds)}function wn(e,t=rs,n={}){let r=Z(e),i=new Set(Object.keys(r).map(e=>Number(e)).filter(e=>Number.isFinite(e)));return Sn(Zt().map(e=>{let t=oc(r,e),n=Z(t),a=i.has(e);return{id:e,name:Bt(e),owned:a,titanData:t,level:Math.max(0,Number(n.level)||0)}}),t==null?void 0:t.selectedTitanIds)}function Tn(e,t=is){let n=Z(e),r=new Set(Object.keys(n).map(e=>Number(e)).filter(e=>Number.isFinite(e)));return Sn(Zt().map(e=>{let t=oc(n,e),i=r.has(e),a=rn(t);return{id:e,name:Bt(e),owned:i,titanData:t,skinEntries:a}}),t==null?void 0:t.selectedTitanIds)}function En(e){return Number(e)===0?`#f0d59f`:Number(e)===1?`#d7b2ff`:`#ffd36e`}function Dn(e){let t=Z(e);return!e||Object.keys(t).length<=0?`—`:Number(t.goldCost)>0?b(t.goldCost):b(t.resourceCost||t.cost)}let On=Dd([(e,t)=>{var n,r;return Ms((n=(r=ln(e,t))==null?void 0:r.levelConfigMap)==null?{}:n)},R]),[kn,An,jn,Mn,Nn,Pn]=On;function W(e,t=`muted`,n=``){return{text:String(e==null?``:e),tone:String(t||`muted`),icon:String(n||``)}}function Fn(){return[W(`—`,`muted`)]}function In(e,t){return!Array.isArray(t)||t.length<=0?Fn():q.map(n=>{var r;let i=Es(t,n),a=N(i)?Z(i):{level:i==null?0:i,star:void 0},o=Math.max(0,Number(a.level)||0),s=Math.max(0,Number(a.star)||0),c=Os((r=dn(e,n,o))==null?void 0:r.color);return W(s>0?`${b(o)} ★ ${b(s)}`:b(o),ks(c))})}function Ln(e,t,n=J){if(!(n!=null&&n.showFullCosts))return[];let r=new Set(E(n,e));return q.map(i=>{let a=Math.max(0,Number(Es(t,i))||0),o=w(n,e,i),s=En(i);return!r.has(i)||o>0&&a>=o?W(`—`,ks(s)):W(Dn(Lr(e,i,a)),ks(s))})}function G(e,t=rs){if(!(t!=null&&t.showNextCosts)||!(e!=null&&e.owned))return[];let n=ne(t,e==null?void 0:e.id),r=Math.max(0,Number(e==null?void 0:e.level)||0);if(n>0&&r>=n)return[W(`—`,`muted`)];let i=Kr(r);return[W(i?b(i):`—`,i?`green`:`muted`)]}function Rn(e,t,n){let r=Yr(t),i=U(n,e),a=Jr(),o=qr(r+1),s=a>0?r>=a:o<=0&&r>0,c=o>0,l=s?i:c?i-o:void 0,u=s?i>0?`#d7b2ff`:`#8f7a68`:c&&i>=o?`#9fe0a8`:`#f0d59f`,d=s?i>0?`#d7b2ff`:`#8f7a68`:(l==null?0:l)>=0?`#9fe0a8`:`#ff9f9f`;return{currentStars:r,soulToken:W(b(i),ks(u)),needText:s?y(`~e1`):c?b(o):`?`,deltaToken:typeof l==`number`?W(x(l),ks(d)):void 0}}function zn(e){return!Array.isArray(e)||e.length<=0?Fn():e.map(e=>W(b(Z(e).currentLevel),`gold`))}function Bn(e,t,n=is){if(!(n!=null&&n.showNextCosts))return[];let r=new Set(te(n,e).localeKeys),i=t.map(t=>{let i=k(n,e,t.localeKey),a=Wr(t.skinId,t.currentLevel);return W(!r.has(t.localeKey)||i>0&&t.currentLevel>=i?`—`:a?b(a.cost):`—`,`gold`)});return i.length>0?i:Fn()}function Vn(e,t){var n;let r=Number(e==null?void 0:e.id);return{name:(n=e==null?void 0:e.name)==null?``:n,owned:!!(e!=null&&e.owned),maxed:!!(e!=null&&e.maxed),missingSuffix:y(`~d8`),levelTokens:In(r,e==null?void 0:e.artifactStates),costTokens:Ln(r,e==null?void 0:e.levels,t)}}function Hn(e,t,n){var r;return{name:(r=e==null?void 0:e.name)==null?``:r,owned:!!(e!=null&&e.owned),missingSuffix:y(`~d8`),levelTokens:[W(b(e==null?void 0:e.level),`blue`)],costTokens:G(e,t),evolution:e!=null&&e.owned&&t!=null&&t.showEvolutionProgress?Rn(Number(e==null?void 0:e.id),e==null?void 0:e.titanData,n):void 0}}function Un(e,t){var n;return{name:(n=e==null?void 0:e.name)==null?``:n,owned:!!(e!=null&&e.owned),missingSuffix:y(`~d8`),levelTokens:zn(e==null?void 0:e.skinEntries),costTokens:Bn(Number(e==null?void 0:e.id),e==null?void 0:e.skinEntries,t)}}function Wn({inputId:e,label:t,value:n,options:r,icon:i=`settings`,widthPx:a=240,tooltip:o=``,key:s=e,searchable:c=!0}){return{kind:`select`,key:s,inputId:e,label:t,value:String(n==null?``:n),options:r==null?[]:r,icon:i,widthPx:a,tooltip:o,searchable:c,...Xu(y)}}let[Gn,Kn]=Hd([y,He,dt,ht,ci,Wn]);function K({inputId:e,label:t,value:n,icon:r=`coins`,minValue:i=0,maxValue:a=void 0,widthPx:o=112,tooltip:s=``,sideText:c=``,sideColor:l=``,key:u=e,inputAttrs:d=void 0}){return{kind:`number`,key:u,inputId:e,label:t,value:n,icon:r,minValue:i,maxValue:a,widthPx:o,tooltip:s,sideText:c,sideColor:l,inputAttrs:d}}function qn({inputId:e,label:t,checked:n,icon:r=`check`,tooltip:i=``,key:a=e}){return{kind:`checkbox`,key:a,inputId:e,label:t,checked:!!n,icon:r,tooltip:i}}function Jn({inputId:e,label:t,values:n,groups:r,tooltip:i=``,key:a=e}){return{kind:`multiSelect`,key:a,inputId:e,label:t,values:n,groups:r,tooltip:i,...Xu(y,`multiSelect`)}}function Yn(e,t=`hint:${e}`){return{kind:`hint`,key:t,text:e}}function Xn(e,t,n=`hwhx-control-group`){return{kind:`group`,key:e,className:n,controls:t}}function Zn({key:e,title:t,icon:n,controls:r,accentColor:i=`#6e4a24`,defaultOpen:a=!0}){return{key:e,stateKey:e,title:t,icon:n,controls:r.filter(e=>!!e),accentColor:i,defaultOpen:a}}function $n(e,t){return Wn(Ju(e,t,y))}function er(e,t){return Wn(Yu(e,t,y))}function tr(e,t,n){let r=Z(n);return[Wn({label:y(`~ch`),inputId:e,value:Fs(r.checklistAmountBehavior),icon:`list-checks`,widthPx:260,tooltip:y(`~gd`),options:[{value:ja,label:y(`~ci`),icon:`x`},{value:Ma,label:y(`~cg`),icon:`list-checks`}]}),K({label:y(`~co`),inputId:t,value:D(n),icon:`list-checks`,tooltip:y(`~ge`)}),Yn(y(`~cj`),`${t}:hint`)]}function nr(e,t,n){let r=Math.max(0,Number(e)||0),i=Math.max(0,Number(t)||0);return[{key:`gain`,className:`hwhx-badge--gain`,gain:!0,text:y(`~d0`,{amount:b(n)})},{key:`active`,className:`hwhx-badge--filter hwhx-badge--filter-active`,filterOption:`active`,text:b(r)},{key:`inactive`,className:`hwhx-badge--filter hwhx-badge--filter-inactive`,filterOption:`inactive`,text:b(Math.max(0,i-r))},{key:`total`,className:`hwhx-badge--total`,text:b(i)}]}function rr(e=`full`){return Rr(e).map(e=>({value:e}))}function ir(e,t){let n=Number(e.id),r=new Set(E(t,n)),i=!e.owned;return xr(t,n).map((e,a)=>{let o=ct(e),s=ln(n,e),c=s?fn(s.artifactId):o.label,l=String(e),u=`${to}${n}-${e}`,d=`${no}${n}-${e}`,f=w(t,n,e),p=jt(n,e);return{key:l,index:a,orderKey:l,searchText:`${c} ${o.label}`,checked:r.has(e),disabled:i,inputId:u,icon:o.icon,iconClassName:o.className,label:c,capLabel:y(`~cZ`),capTitle:Sr(e),capInputId:d,capValue:f,capMaxValue:p,actionAttribute:io,actions:rr(t==null?void 0:t.reorderListVariant)}})}function ar(e,t,n=0,r=`artifact-priority`){let i=new Set(Hs(t==null?void 0:t.selectedTitanIds)),[a,o]=td(e,i),s=Ps(t==null?void 0:t.upgradeMode)===Aa;return{kind:`priority`,accordionKey:r,stateKey:`titan-list:${r}`,defaultOpen:!0,accentColor:`#4d5770`,icon:`shuffle`,title:y(`~dc`),note:y(`~dd`),reorderDisabled:s,reorderDisabledHint:y(`~fu`),...Zu(y),optionVariant:`artifact`,badges:nr(a,o,n),rows:e.map((e,n)=>{var r;let a=Number(e.id),o=i.has(a);return{key:String(a),index:n,orderKey:String(a),checked:o,disabled:!e.owned,inputId:`${eo}artifact-${a}`,titanId:a,option:Vn(e,t),actionAttribute:ro,actions:rr(t==null?void 0:t.reorderListVariant),childrenTitle:y(`~bU`),childrenIcon:`hammer`,childrenId:`hwhtitan-priority-children-artifact-${a}`,children:ir(e,t),filterRow:e.owned,searchText:`${e.name} ${((r=e.levels)==null?[]:r).join(` `)}`}})}}function or(e,t){let n=Number(e.id),r=new Set(te(t,n).localeKeys),i=!e.owned;return Er(e,t).map((e,a)=>{let o=br(e.localeKey),s=`${Ro}${n}-${o}`,c=`${zo}${n}-${o}`,l=k(t,n,e.localeKey);return{key:e.localeKey,index:a,orderKey:e.localeKey,searchText:`${e.name} ${e.localeKey}`,checked:r.has(e.localeKey),disabled:i,inputId:s,icon:`shirt`,iconClassName:`hwhx-blue`,label:e.name,capLabel:y(`~eC`),capTitle:y(`~eB`),capInputId:c,capValue:l,capMaxValue:e.maxLevel||nn(e.localeKey),actionAttribute:Vo,actions:rr(t==null?void 0:t.reorderListVariant)}})}function sr(e,t,n=0,r=`skin-priority`){let i=new Set(Hs(t==null?void 0:t.selectedTitanIds)),[a,o]=td(e,i),s=Ps(t==null?void 0:t.upgradeMode)===Aa;return{kind:`priority`,accordionKey:r,stateKey:`titan-list:${r}`,defaultOpen:!0,accentColor:`#4d5770`,icon:`shuffle`,title:y(`~eE`),note:y(`~eF`),reorderDisabled:s,reorderDisabledHint:y(`~fu`),...Zu(y),optionVariant:`skin`,badges:nr(a,o,n),rows:e.map((e,n)=>{var r;let a=Number(e.id),o=i.has(a);return{key:String(a),index:n,orderKey:String(a),checked:o,disabled:!e.owned,inputId:`${eo}skin-${a}`,titanId:a,option:Un(e,t),actionAttribute:Bo,actions:rr(t==null?void 0:t.reorderListVariant),childrenTitle:y(`~eR`),childrenIcon:`shirt`,childrenId:`hwhtitan-priority-children-skin-${a}`,children:or(e,t),filterRow:e.owned,searchText:`${e.name} ${((r=e.skinEntries)==null?[]:r).map(e=>e.name).join(` `)}`}})}}function cr(e,t,n,r){var i;let a=An(e,t==null?void 0:t.selectedTitanIds),o=Number(t==null||(i=t.selectedArtifactSlotIds)==null?void 0:i[0])||0,s=jn(e,a,o),c=jt(a,o);return{key:`artifact:calculator`,stateKey:`artifact:calculator`,defaultOpen:!1,accentColor:`#5f4528`,icon:`calculator`,title:y(`~c2`),syncSerial:0,result:Nr({titanId:a,slotId:o,startLevel:s.startLevel,endLevel:s.endLevel,resourceAmount:n,essenceReserve:t.essenceReserve,goldAmount:r,goldReserve:t.artifactGoldReserve}),controls:[Wn({label:y(`~cd`),inputId:Ko,value:String(a),options:kn(e),icon:`users`,widthPx:260,tooltip:y(`~gb`)}),Wn({label:y(`~c3`),inputId:qo,value:String(o),options:q.map(e=>{let t=ct(e);return{value:String(e),label:t.label,icon:`hammer`}}),icon:`hammer`,widthPx:220,tooltip:y(`~g8`)}),K({label:y(`~c7`),inputId:Jo,value:s.startLevel,minValue:1,maxValue:c,icon:`arrow-up`,widthPx:110,tooltip:y(`~g9`)}),K({label:y(`~cf`),inputId:Yo,value:s.endLevel,minValue:1,maxValue:c,icon:`target`,widthPx:110,tooltip:y(`~gc`)})]}}function lr(e,t,n){let r=An(e,t==null?void 0:t.selectedTitanIds),i=Mn(e,r),a=R();return{key:`level:calculator`,stateKey:`level:calculator`,defaultOpen:!1,accentColor:`#3f5a49`,icon:`calculator`,title:y(`~c2`),syncSerial:0,result:Pr({startLevel:i.startLevel,endLevel:i.endLevel,potionAmount:n,potionReserve:t.potionReserve}),controls:[Wn({label:y(`~cd`),inputId:Xo,value:String(r),options:kn(e),icon:`users`,widthPx:260,tooltip:y(`~gb`)}),K({label:y(`~c7`),inputId:Zo,value:i.startLevel,minValue:1,maxValue:a,icon:`arrow-up`,widthPx:110,tooltip:y(`~g9`)}),K({label:y(`~cf`),inputId:Qo,value:i.endLevel,minValue:1,maxValue:a,icon:`target`,widthPx:110,tooltip:y(`~gc`)})]}}function ur(e,t,n,r){var i,a,o,s,c;let l=An(e,n==null?void 0:n.selectedTitanIds),u=(i=(a=((o=n==null?void 0:n.selectedSkinLocaleKeys)==null?[]:o).find(e=>t.some(t=>t.localeKey===e)))==null?(s=t[0])==null?void 0:s.localeKey:a)==null?``:i,d=Pn(e,t,l,u),f=(c=Nn(e,t,l,u))==null?void 0:c.maxLevel;return{key:`skin:calculator`,stateKey:`skin:calculator`,defaultOpen:!1,accentColor:`#4d5770`,icon:`calculator`,title:y(`~c2`),syncSerial:0,result:Fr({titanOptions:e,skinGroups:t,titanId:l,localeKey:u,startLevel:d.startLevel,endLevel:d.endLevel,skinStoneAmount:r,skinStoneReserve:n.skinStoneReserve}),controls:[Wn({label:y(`~cd`),inputId:$o,value:String(l),options:kn(e),icon:`users`,widthPx:260,tooltip:y(`~gb`)}),Wn({label:y(`~cb`),inputId:es,value:u,options:t.map(e=>({value:e.localeKey,label:e.name,icon:`shirt`})),icon:`shirt`,widthPx:260,tooltip:y(`~ga`)}),K({label:y(`~c7`),inputId:ts,value:d.startLevel,minValue:1,maxValue:f,icon:`arrow-up`,widthPx:110,tooltip:y(`~g9`)}),K({label:y(`~cf`),inputId:ns,value:d.endLevel,minValue:1,maxValue:f,icon:`target`,widthPx:110,tooltip:y(`~gc`)})]}}function dr(e,t,n,r,i,a,o={},s={}){var c;let l=_r(e,n,r,i),u=[Zn({key:`artifact:leveling`,title:y(`~cY`),icon:`arrow-up`,accentColor:`#4d5770`,controls:[er(ho,e),$n(mo,e),...tr(go,_o,e),qn({inputId:`hwhtitanartifact-sync-after-run`,checked:e.syncAfterRun,label:y(`~dL`),icon:`refresh-cw`,tooltip:y(`~gt`)})]}),Zn({key:`artifact:resources`,title:y(`~dm`),icon:`coins`,accentColor:`#6b4f29`,controls:[K({label:y(`~cD`),inputId:ao,value:e.essenceReserve,sideText:b(r),tooltip:y(`~gf`)}),K({label:y(`~cP`),inputId:oo,value:e.artifactGoldReserve,sideText:b(i),tooltip:y(`~gi`)}),K({label:y(`~cN`),inputId:so,value:e.artifactFragmentCoinReserve,sideText:b(a),tooltip:y(`~gh`)})]}),Zn({key:`artifact:evolution`,title:y(`~cF`),icon:`sparkles`,accentColor:`#5b3f70`,controls:[Xn(`artifact:evolution:toggles`,[qn({inputId:co,checked:e.evolveArtifacts,label:y(`~cG`),icon:`sparkles`,tooltip:y(`~gg`)}),qn({inputId:lo,checked:e.buyArtifactFragments,label:y(`~c1`),icon:`shopping-bag`,tooltip:y(`~g6`)})],`hwhx-control-stack`),K({label:y(`~cE`),inputId:po,value:e.artifactEvolutionMaxStar||hn(),maxValue:hn(),icon:`star`,tooltip:y(`~g0`)}),Jn({label:y(`~cH`),inputId:uo,values:e.selectedArtifactEvolutionKeys,groups:bn(n,{inventory:o,maxArtifactStar:e.artifactEvolutionMaxStar}),tooltip:y(`~g1`)}),Jn({label:y(`~cM`),inputId:fo,values:e.selectedArtifactFragmentBuyKeys,groups:bn(n,{buyableOnly:!0,mode:`fragments`,inventory:o,maxArtifactStar:e.artifactEvolutionMaxStar}),tooltip:y(`~g2`)})]})];return{kind:`artifact`,header:s.includeHeader===!1?void 0:{title:y(`~dT`),description:y(`~ct`)},priority:ar(t,e,l,(c=s.titanAccordionKey)==null?`titan-list`:c),sections:u,calculator:cr(t,e,r,i),doYourBest:s.includeDoYourBest===!1?void 0:Gn(za)}}function fr(e,t,n,r,i={},a={}){var o;let s=vr(t,e,n),c=Object.fromEntries(t.filter(e=>e.owned).map(e=>{var t;return[e.id,(t=e.titanData)==null?{}:t]}));return{kind:`level`,header:a.includeHeader===!1?void 0:{title:y(`~eu`),description:y(`~e0`)},priority:Kd({titanOptions:t,settings:e,inventory:i,levelGainAmount:s,accordionKey:(o=a.titanAccordionKey)==null?`titan-list`:o,translate:y,buildOption:Hn,buildBadges:nr,buildActions:()=>rr(J.reorderListVariant),getLevelCap:ne,getMaxLevel:R}),sections:[Zn({key:`level:leveling`,title:y(`~cY`),icon:`arrow-up`,accentColor:`#4d5770`,controls:[er(wo,e),$n(Co,e),K({label:y(`~e6`),inputId:bo,value:e.potionReserve,sideText:b(n),icon:`flask`,tooltip:y(`~gk`)}),qn({inputId:xo,checked:e.buyXpPotions,label:y(`~dZ`),icon:`shopping-cart`,tooltip:y(`~g7`)}),K({label:y(`~el`),inputId:So,value:e.xpPotionCoinReserve,sideText:b(r),icon:`coins`,tooltip:y(`~gs`)}),...tr(To,Eo,e),qn({inputId:`hwhtitanlevel-sync-after-run`,checked:e.syncAfterRun,label:y(`~dL`),icon:`refresh-cw`,tooltip:y(`~gt`)})]}),Zn({key:`level:evolution`,title:y(`~cF`),icon:`sparkles`,accentColor:`#5b3f70`,controls:[Jn({label:y(`~e3`),inputId:ko,values:e.selectedTitanEvolutionIds,groups:xn(c,i),tooltip:y(`~gv`)}),K({label:y(`~e2`),inputId:Ao,value:e.titanEvolutionMaxStar||Jr(),maxValue:Jr(),icon:`star`,tooltip:y(`~gu`)})]})],calculator:lr(t,e,n),doYourBest:a.includeDoYourBest===!1?void 0:Gn(Ba)}}function pr(e,t,n,r,i={}){var a;let o=yr(t,e,r);return{kind:`skin`,header:i.includeHeader===!1?void 0:{title:y(`~eW`),description:y(`~ey`)},priority:sr(t,e,o,(a=i.titanAccordionKey)==null?`titan-list`:a),sections:[Zn({key:`skin:leveling`,title:y(`~cY`),icon:`arrow-up`,accentColor:`#4d5770`,controls:[er(Fo,e),$n(Po,e),K({label:y(`~eK`),inputId:No,value:e.skinStoneReserve,sideText:b(r),tooltip:y(`~gr`)}),...tr(Io,Lo,e),qn({inputId:`hwhtitanskin-sync-after-run`,checked:e.syncAfterRun,label:y(`~dL`),icon:`refresh-cw`,tooltip:y(`~gt`)})]})],calculator:ur(t,n,e,r),doYourBest:i.includeDoYourBest===!1?void 0:Gn(Va)}}function hr(e){return Ns(e==null?void 0:e.levelingMode)===`amount`?D(e):void 0}function gr(e){return Object.fromEntries(e.filter(e=>e==null?void 0:e.owned).map(e=>{var t;return[Number(e.id),(t=e.titanData)==null?{level:e.level,skins:e.skinEntries}:t]}).filter(([e])=>Number.isFinite(e)))}function _r(e,t,n,r){return Br([qd(e==null?void 0:e.selectedTitanIds,t),e,t,n,e==null?void 0:e.essenceReserve,r,e==null?void 0:e.artifactGoldReserve,hr(e)]).queue.length}function vr(e,t,n){let r=gr(e);return Hr([qd(t==null?void 0:t.selectedTitanIds,r),r,n,t==null?void 0:t.potionReserve,t==null?void 0:t.titanLevelCaps,hr(t),t==null?void 0:t.upgradeMode]).queue.length}function yr(e,t,n){let r=gr(e);return Ur([qd(t==null?void 0:t.selectedTitanIds,r),t,r,n,t==null?void 0:t.skinStoneReserve,hr(t)]).queue.length}function br(e){return String(e==null?``:e).trim().replace(/[^a-zA-Z0-9_-]/g,`-`)}function xr(e,t){let n=new Set;return[...E(e,t),...q].filter(e=>{let t=Number(e);return!Da.has(t)||n.has(t)?!1:(n.add(t),!0)})}function Sr(e){return Number(e)===0?y(`~cL`):Number(e)===1?y(`~ds`):y(`~dQ`)}function Er(e,t){let n=Array.isArray(e==null?void 0:e.skinEntries)?e.skinEntries:rn(e==null?void 0:e.titanData),r=new Map(n.map(e=>[String(e.localeKey),e])),i=new Set;return[...te(t,e==null?void 0:e.id).localeKeys,...n.map(e=>e.localeKey)].map(e=>String(e==null?``:e).trim()).filter(e=>!e||i.has(e)?!1:(i.add(e),r.has(e))).map(e=>r.get(e)).filter(e=>e!==void 0)}function Dr(){var e,t,n,r,i,a;let o=String((e=(t=GM_info)==null||(t=t.script)==null?void 0:t.name)==null?`HWH Titan Trainer`:e),s=String((n=(r=GM_info)==null||(r=r.script)==null?void 0:r.version)==null?``:n),c=String((i=(a=GM_info)==null||(a=a.script)==null?void 0:a.author)==null?``:i);return`${o}${s?` v${s}`:``}${c?` · ${c}`:``}`}let Or=qu({translate:y,buildArtifactSettingsModel:dr,buildLevelSettingsModel:fr,buildSkinSettingsModel:pr,getResourceAmount:H,getXpPotionAmount:Gt,getSkinStoneAmount:Kt,getSoulCoinAmount:qt,getFragmentCoinAmount:Jt,getGoldAmount:Xt});function Ar({activeTab:e,levelTitanOptions:t,skinTitanOptions:n,artifactSettings:r,levelSettings:i,skinSettings:a,ownedTitans:o,resourceAmount:s,goldAmount:c,potionAmount:l,skinStoneAmount:u}){return e===`general`?0:e===`levels`?vr(t,i,l):e===`skins`?yr(n,{...a,reorderListVariant:r.reorderListVariant},u):_r(r,o,s,c)}let jr=Md([b,y,Ht,Ut,Wt,V,jt,R,Lr,Kr,Wr,Nn]),[Nr,Pr,Fr]=jr,[Ir]=Pd([On,jr,jt,R]);function Lr(e,t,n){var r,i;let a=Math.max(0,Number(e)||0),o=Math.max(0,Number(t)||0),s=ln(a,o);if(!s)return;let c=Math.max(0,Number(n)||0),l=Math.max(0,Number(n)||0)+1,u=[l,c,Math.max(0,l-1)].filter((e,t,n)=>n.indexOf(e)===t).map(e=>un(s.levelConfigMap,e)).filter(Boolean).find(e=>{var t,n;let r=o===2?0:Math.max(0,Number(e==null||(t=e.cost)==null||(t=t.consumable)==null?void 0:t[53])||0),i=o===2?Math.max(0,Number(e==null||(n=e.cost)==null?void 0:n.gold)||0):0;return r>0||i>0}),d=o===2?0:Math.max(0,Number(u==null||(r=u.cost)==null||(r=r.consumable)==null?void 0:r[53])||0),f=o===2?Math.max(0,Number(u==null||(i=u.cost)==null?void 0:i.gold)||0):0,p=d>0?d:f;if(!(p<=0))return{titanId:a,slotId:o,nextLevel:l,cost:p,resourceCost:d,goldCost:f}}let zr=ml([y,tt,Rt,Hc([fn,Bt,e=>ct(e).label,cn,ln,mn,gn,Yt]),et]),Br=$c([sn,(e,t)=>E(e,t),(e,t,n)=>w(e,t,n),Lr,Bt,e=>ct(e).label]),Vr=jl([Jr,Yr,U,qr,Bt]),Hr=Ml([Kr,Bt]),Ur=bl([rn,te,k,Wr,Bt]);function Wr(e,t){var n;let r=Math.max(0,Number(t)||0),i=Math.max(0,Number(t)||0)+1,a=[i,r,Math.max(0,i-1)].filter((e,t,n)=>n.indexOf(e)===t).map(t=>an(e,t)).filter(Boolean).find(e=>{var t;return Math.max(0,Number(e==null||(t=e.cost)==null||(t=t.coin)==null?void 0:t[24])||0)>0}),o=Math.max(0,Number(a==null||(n=a.cost)==null||(n=n.coin)==null?void 0:n[24])||0);if(!(o<=0))return{skinId:Math.max(0,Number(e)||0),nextLevel:i,cost:o}}function Gr(e){let t=Es(Z(lc(`level`).titan),Math.max(0,Number(e)||0));return N(t)?t:void 0}function Kr(e){let t=Math.max(0,Number(e)||0),n=Gr(t),r=Gr(t+1);if(!n||!r)return;let i=Number(n.exp),a=Number(r.exp)-i;if(!(!Number.isFinite(a)||a<=0))return a}function qr(e){let t=cc(Z(lc(`enum`).titanEvolutionStar),Math.max(0,Number(e)||0));return Math.max(0,Number(t.evolveFragmentCost)||0)}function Jr(){var e,t;return ke===void 0&&(ke=Object.keys((e=(t=globalThis.lib)==null||(t=t.data)==null||(t=t.enum)==null?void 0:t.titanEvolutionStar)==null?{}:e).map(e=>Number(e)).filter(e=>Number.isFinite(e)&&e>0).reduce((e,t)=>Math.max(e,t),0)),ke}function Yr(e){var t;let n=Z(e);return Math.max(0,Number((t=n.star)==null?n.stars:t)||0)}let[Xr,Zr]=Gl([y,qd,tt,nt,st,(...e)=>console.error(...e),V,Kt,Ur,Ft,[Ye,Ze],Wt,Gt,qt,zt,Vl,Vr,Hr,It,[Qe,$e]]);async function Qr(e,t,n,r={},i={}){let a=qd(e.selectedTitanIds,t),o=O(e,a);if(a.length<=0){nt(y(`~dw`));return}let s=Ht(),c=Ut(),l=H(n),u=Xt(r),d=Jt(n),[f,p,m,h]=await zr([e,i,a,o,t,n,d]),g=Br([a,e,t,l,e.essenceReserve,u,e.artifactGoldReserve,h]);if(g.queue.length<=0&&p.evolutions.length<=0&&p.fragmentPurchases.length<=0){nt(y(`~d7`));return}let _=el({resourceAmount:l,goldAmount:u,fragmentCoinAmount:d,usesGoldBudget:g.usesGoldBudget});try{await Pt({evolutionPlan:p,upgradePlan:g,executedPlan:_,fragmentCoinAmount:d,resourceAmount:l,goldAmount:u,buyArtifactFragments:f})}catch(e){f&&et(`run failed`,{error:e,debugEntries:m}),console.error(`[TitanArtifact] Error:`,e),nt(...qe([_,s,c,e]));return}tt(``,`syncing`),await st(),nt(...Je([_,s,c,g.queue.length+p.evolutions.length+p.fragmentPurchases.length,e,i]))}function $r(){return{normalizers:{artifact:ae,level:ie,skin:se},repository:{readArtifact:Tt,writeArtifact:Et,readLevel:P,writeLevel:F,readSkin:I,writeSkin:L}}}async function ei(){await we();let e=Mt.get(),t=gt();Zi();let n=$r(),[r,i,a]=await Promise.all([ss(n),e,t]),o=r.stores,{artifactSettings:s,levelSettings:c,skinSettings:l}=r,u=za,d=()=>cs({...n,artifactSettings:s,levelSettings:c,skinSettings:l,stores:o});for(;;){let e=Jd({artifactSettings:s,levelSettings:c,skinSettings:l,ownedTitans:i.titans,normalizeArtifactSettings:ae,normalizeLevelSettings:ie,normalizeSkinSettings:se});s=e.artifactSettings,c=e.levelSettings,l=e.skinSettings;let t=[],n=[],r=[],o=[],f=!1,p=!1,m=!1,h=e=>{if(e===`artifacts`&&!f){t.push(...Cn(i.titans,s)),f=!0;return}if(e===`levels`&&!p){n.push(...wn(i.titans,c)),p=!0;return}e===`skins`&&!m&&(o.push(...tn()),r.push(...Tn(i.titans,l)),m=!0)},g=ea(Uu(u,y)),_=Array.isArray(g.tabs)?g.tabs.map(e=>Z(e)):[],v=new Map(_.map(e=>{var t;return[String((t=e.value)==null?``:t),e]})),x,S=e=>{for(let e of _)delete e.contentProps,delete e.generalProps;let u=v.get(e);if(!u){x=void 0;return}h(e);let d=Or(e,{artifactSettings:s,levelSettings:c,skinSettings:l,artifactTitanOptions:t,levelTitanOptions:n,skinTitanOptions:r,ownedTitans:i.titans,inventory:i.inventory,userInfo:i.userInfo,skinGroups:o,accordionUiProps:a}),f=Z(d.contentProps),p=Z(f.model),m=p.kind?$i(p):void 0;Object.assign(u,d,{...m?{contentProps:{...f,model:m}}:{}}),g.activeTab=e,x=m};S(u);let C=Lu(),w=e=>{var t;if(String((t=x==null?void 0:x.kind)==null?``:t)!==e)return;let n=x==null?void 0:x.calculator;return N(n)?n:void 0},E=(e,t)=>{let n=Nd(e);return n?Sd(w(n),e,t):!1},D=()=>{let e=Ar({activeTab:u,artifactTitanOptions:t,levelTitanOptions:n,skinTitanOptions:r,skinGroups:o,artifactSettings:s,levelSettings:c,skinSettings:l,ownedTitans:i.titans,resourceAmount:H(i.inventory),goldAmount:Xt(i.userInfo),potionAmount:Gt(i.inventory),skinStoneAmount:Kt(i.inventory)});zu(C,u,y(`~d0`,{amount:b(e)}))},k=``,ce=!1,le=e=>{k=e,!ce&&(ce=!0,queueMicrotask(()=>{ce=!1;let e=k;k=``,ue(e),D()}))},ue=e=>{let a=w(`artifact`),u=w(`level`),d=w(`skin`);Ir([e,a,u,d,t,n,r,o,s,c,l,H(i.inventory),Xt(i.userInfo),Gt(i.inventory),Kt(i.inventory)])},A=e=>{s=ae({...s,...e})},j=e=>{c=ie({...c,...e})},M=e=>{l=se({...l,...e})},de=e=>qd(e.selectedTitanIds,i.titans),fe=e=>{let t=de(e),n=re(s);e.rows.forEach(e=>{let t=Number(e.titanId);if(!Number.isFinite(t))return;let r=T(s,t),i=[],a={...r.levelCaps};e.children.forEach(e=>{var t,n;let o=Number(e.orderKey||e.key);Da.has(o)&&(e.checked&&!e.disabled&&i.push(o),a[o]=Y(e.capValue,(t=(n=r.levelCaps)==null?void 0:n[o])==null?At(o):t))}),n[t]={slotIds:e.children.length>0?i:r.slotIds,levelCaps:a}}),A({selectedTitanIds:t,artifactRules:n,selectedArtifactSlotIds:O({...s,selectedTitanIds:t,artifactRules:n},t)})},pe=e=>{let t=de(e),n=oe(l);e.rows.forEach(e=>{let t=Number(e.titanId);if(!Number.isFinite(t))return;let r=te(l,t),i=[],a={...r.levelCaps};e.children.forEach(e=>{var t,n;let o=String(e.orderKey||e.key||``).trim();o&&(e.checked&&!e.disabled&&i.push(o),a[o]=Y(e.capValue,(t=(n=r.levelCaps)==null?void 0:n[o])==null?nn(o):t))}),n[t]={localeKeys:e.children.length>0?i:r.localeKeys,levelCaps:a}}),M({selectedTitanIds:t,skinRules:n,selectedSkinLocaleKeys:ee({...l,selectedTitanIds:t,skinRules:n},t)})},me=e=>{if(e.panelKind===`artifact`)fe(e);else if(e.panelKind===`level`){let t={...c.titanLevelCaps};e.rows.forEach(e=>{let n=Number(e.titanId);Number.isFinite(n)&&(t[n]=Y(e.capValue,ne(c,n)))}),j({selectedTitanIds:de(e),titanLevelCaps:t})}else e.panelKind===`skin`&&pe(e);le(e.changedInputId)},he=({inputId:e,value:t,textValue:n,numberValue:r,stringListValue:i})=>{switch(e){case ho:A({upgradeMode:n});break;case mo:A({levelingMode:n});break;case go:A({checklistAmountBehavior:n});break;case _o:A({checklistLevelingAmount:r});break;case vo:A({checklistFragmentPurchaseBehavior:n});break;case ao:A({essenceReserve:r});break;case oo:A({artifactGoldReserve:r});break;case so:A({artifactFragmentCoinReserve:r});break;case co:A({evolveArtifacts:!!t});break;case lo:A({buyArtifactFragments:!!t});break;case uo:A({selectedArtifactEvolutionKeys:i});break;case fo:A({selectedArtifactFragmentBuyKeys:i});break;case po:A({artifactEvolutionMaxStar:r});break;case yo:A({showFullCosts:!!t});break;case`hwhtitanartifact-sync-after-run`:A({syncAfterRun:!!t});break}},_e=({inputId:e,value:t,textValue:n,numberValue:r,stringListValue:i})=>{switch(e){case wo:j({upgradeMode:n});break;case Co:j({levelingMode:n});break;case To:j({checklistAmountBehavior:n});break;case Eo:j({checklistLevelingAmount:r});break;case bo:j({potionReserve:r});break;case xo:j({buyXpPotions:!!t});break;case So:j({xpPotionCoinReserve:r});break;case ko:j({selectedTitanEvolutionIds:i.map(e=>Number(e))});break;case Ao:j({titanEvolutionMaxStar:r});break;case jo:j({showNextCosts:!!t});break;case Mo:j({showEvolutionProgress:!!t});break;case`hwhtitanlevel-sync-after-run`:j({syncAfterRun:!!t});break}},ve=({inputId:e,value:t,textValue:n,numberValue:r})=>{switch(e){case Fo:M({upgradeMode:n});break;case Po:M({levelingMode:n});break;case Io:M({checklistAmountBehavior:n});break;case Lo:M({checklistLevelingAmount:r});break;case No:M({skinStoneReserve:r});break;case Ho:M({showNextCosts:!!t});break;case`hwhtitanskin-sync-after-run`:M({syncAfterRun:!!t});break}},ye=e=>{var t;let n=String((t=e.inputId)==null?``:t),r=e.value,i=String(r==null?``:r),a=Math.max(0,Math.floor(Number(r)||0)),o=Array.isArray(r)?r.map(e=>String(e==null?``:e)).filter(Boolean):[];if(Kn(n,i)){le(n);return}if(E(n,r)){le(n);return}let s={inputId:n,value:r,textValue:i,numberValue:a,stringListValue:o};he(s),_e(s),ve(s),le(n)},be=Iu(),xe=e=>{Ru(be,u,e)};D();let Se={answerPromise:Gu({title:Dr(),header:ta(),headerActions:na(y),activeTab:g.activeTab,tabs:g.tabs,selectionCommand:be,selectionPreview:C,translate:y,uiTheme:s==null?void 0:s.uiTheme,closeLabel:y(`~cq`),onActiveTabChange:e=>{S(e),u=e,D()},onArtifactSettingsChange:e=>{s=ae({...s,...Z(e)}),it(s)},onLevelSettingsChange:e=>{c=ie({...c,...Z(e)})},onSkinSettingsChange:e=>{l=se({...l,...Z(e)})},onThemeChange:e=>{s=ae({...s,uiTheme:e}),rt(s)},onControlChange:ye,onPriorityChange:me,onAction:e=>{Ql(e,$l({persistSettings:d,exportSettings:Ot,dumpGameLibrary:()=>ot(`hwhtitanartifact`),selectAll:()=>xe(!0),clearAll:()=>xe(!1)}))}})},Ce=Rd({getActiveTab:()=>u,artifactTitanOptions:t,levelTitanOptions:n,skinTitanOptions:r,getArtifactSettings:()=>s,setArtifactSettings:e=>{s=e},normalizeArtifactSettings:ae,getLevelSettings:()=>c,setLevelSettings:e=>{c=e},normalizeLevelSettings:ie,getSkinSettings:()=>l,setSkinSettings:e=>{l=e},normalizeSkinSettings:se,persistSettings:d}),we=eu({getActiveTab:()=>u,getArtifactSettings:()=>s,setArtifactSettings:e=>{s=e},setLevelSettings:e=>{c=e},setSkinSettings:e=>{l=e},persistSettings:d,selectAll:Ce.selectAll,clearAll:Ce.clearAll,exportSettings:Ot,donate:e=>ia(y,e.uiTheme),help:e=>ra(y,e.uiTheme),dumpGameLibrary:()=>{ot(`hwhtitanartifact`)},importSettings:kt,readArtifactSettings:Tt,readLevelSettings:P,readSkinSettings:I,reportImportError:e=>{let t=e instanceof Error?e.message:y(`~cC`);console.error(`[TitanTrainer] import failed`,e),Dt(y(`~fM`,{message:t}),`alert-triangle`,`hwhx-danger`)},runLevel:tu({getSettings:()=>c,resolveRunOptions:ge,run:(e,t)=>Zr(e,i.titans,i.inventory,t)}),runSkin:tu({getSettings:()=>l,resolveRunOptions:ge,run:(e,t)=>Xr(e,i.titans,i.inventory,t)}),runArtifact:tu({getSettings:()=>s,resolveRunOptions:ge,run:(e,t)=>Qr(e,i.titans,i.inventory,i.userInfo,t)})});if(await ru({activeTab:u,answer:await Se.answerPromise,handlers:we})===`return`)return}}let ti=nu({readSettings:Tt,resolveRunOptions:ge,run:async(e,t)=>{let n=await ac(z,!0,!0);await Qr(e,n.titans,n.inventory,n.userInfo,t)}}),ni=nu({readSettings:P,resolveRunOptions:ge,run:async(e,t)=>{let n=await ac(z,!0);await Zr(e,n.titans,n.inventory,t)}}),ri=nu({readSettings:I,resolveRunOptions:ge,run:async(e,t)=>{let n=await ac(z,!0);await Xr(e,n.titans,n.inventory,t)}});async function ii(){let e=await Tt(),t=await ge(e,{source:`hotkey`});if(!t.confirmed)return;let n=await ac(z,!0,!0);await Qr(e,n.titans,n.inventory,n.userInfo,t.options)}async function ai(){let e=await P(),t=await ge(e,{source:`hotkey`});if(!t.confirmed)return;let n=await ac(z,!0);await Zr(e,n.titans,n.inventory,t.options)}async function oi(){let e=await I(),t=await ge(e,{source:`hotkey`});if(!t.confirmed)return;let n=await ac(z,!0);await Xr(e,n.titans,n.inventory,t.options)}async function si(){await ii(),await ai(),await oi()}function ci(){let e=ze(o);if(!e)return;let t=Ue(e),n=new e,r=Array.isArray(n.funcList)?[...n.funcList]:[],i=yc({handlers:{[Ba]:ni,[za]:ti,[Va]:ri},translate:y}),a=xc({currentFunctions:n.functions,currentTaskList:r,readPlacement:e=>dt(e),taskDefinitions:i});if(!a.changed)return;class s extends t{constructor(...e){super(...e),this.funcList=a.taskList.map(e=>({...e})),this.functions={...a.functions}}}o.doYourBest=s}async function li(){try{await ei()}catch(e){console.error(`[TitanTrainer] Error:`,e);let t=e instanceof Error?e.message:y(`~cC`);nt(`${y(`~dg`)}
${i(t)}`)}}let ui=Xe({actionKey:Ia,color:`pink`,icon:`hammer`,getLabel:()=>y(`~eZ`),getTitle:()=>y(`~f3`),onClick:li,buildIconLabel:C});function di(){return ui.createMainButton()}function fi(){return ui.createOtherButton()}function pi(e=void 0){at({HWHData:a,mainMenuButtons:_,othersPopupButtons:v,settings:e,settingsKey:`titanTrainerButtonPlacement`,readStoredPlacement:Xs,normalizePlacement:Ls,persistPlacement:Zs,mainKey:`hwhtitantrainer`,actionKey:Ia,createMainButton:di,createOtherButton:fi,mainPlacementValue:Pa,otherPlacementValue:Fa})}function mi(){pi()}Gd({readSettings:()=>vt,translate:y,openSettings:li,runAll:si,runArtifacts:ii,runLevels:ai,runSkins:oi}),Tt().catch(e=>{console.warn(`[TitanTrainer] hotkey settings preload failed`,e)}),console.log(`%c${y(`~dC`,{name:GM_info.script.name,author:GM_info.script.author,version:GM_info.script.version})}`,`color: #7fe3ba`),s(GM_info.script.name,GM_info.script.version,GM_info.script.author),ci(),mi()}Xd(0)})();