@kitten-science/kitten-scientists 2.0.0-beta.11-dev.20250520132826 → 2.0.0-beta.11-dev.20250520153246
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/entrypoint-userscript.js +1 -1
- package/output/kitten-scientists-0.0.0-ci.min.user.js +8 -2
- package/output/kitten-scientists-0.0.0-ci.min.user.js.map +1 -1
- package/output/kitten-scientists-0.0.0-ci.user.js +8 -2
- package/output/kitten-scientists-0.0.0-ci.user.js.map +1 -1
- package/output/kitten-scientists-loader-0.0.0-ci.min.user.js +6 -2
- package/output/kitten-scientists-loader-0.0.0-ci.user.js +6 -2
- package/output/kitten-scientists.inject.js +1 -1
- package/output/kitten-scientists.inject.js.map +1 -1
- package/output/kitten-scientists.min.inject.js +1 -1
- package/output/kitten-scientists.min.inject.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,7 @@ export const main = async () => {
|
|
|
9
9
|
};
|
|
10
10
|
// We auto-ignite the loader, unless we're running in GreaseMonkey (content script).
|
|
11
11
|
// The content script loader will handle the orchestration of that scenario.
|
|
12
|
-
if (typeof GM
|
|
12
|
+
if (typeof GM === "undefined") {
|
|
13
13
|
main().catch(redirectErrorsToConsole(console));
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=entrypoint-userscript.js.map
|
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
// @name Kitten Scientists
|
|
3
3
|
// @description Add-on for the wonderful incremental browser game: https://kittensgame.com/web/
|
|
4
4
|
// @namespace https://kitten-science.com/
|
|
5
|
-
// @author Oliver Salzburg <oliver.salzburg@gmail.com>
|
|
6
5
|
// @icon https://kitten-science.com/assets/images/organization-logo64.png
|
|
7
6
|
// @match https://kittensgame.com/web/
|
|
8
7
|
// @match https://kittensgame.com/beta/
|
|
9
8
|
// @match https://kittensgame.com/alpha/
|
|
9
|
+
// @match https://*.localhost/
|
|
10
|
+
// @match https://*.labnet/
|
|
11
|
+
// @match http://*.localhost/
|
|
12
|
+
// @match http://*.labnet/
|
|
13
|
+
// @match http://localhost/
|
|
14
|
+
// @author Oliver Salzburg <oliver.salzburg@gmail.com>
|
|
10
15
|
// @downloadURL https://kitten-science.com/fixed.js
|
|
11
16
|
// @homepageURL https://github.com/kitten-science/kitten-scientists
|
|
17
|
+
// @supportURL https://github.com/kitten-science/kitten-scientists/issues
|
|
12
18
|
// @updateURL https://kitten-science.com/fixed.min.js
|
|
13
19
|
// @version 0.0.0-ci
|
|
14
20
|
// @grant none
|
|
@@ -33,5 +39,5 @@ If you submit an invalid value, it will be treated as if you hit Cancel.`,"ui.tr
|
|
|
33
39
|
<svg style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor" class="${Ae.down}"><path d="${A.ExpandCircleDown}"/></svg>
|
|
34
40
|
<svg style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor" class="${Ae.up}"><path d="${A.ExpandCircleUp}"/></svg>
|
|
35
41
|
`,title:e.host.engine.i18n("ui.itemsShow")}).addClass(C.iconButton).addClass(Ae.expandoButton),this.element.on("click",()=>{this.readOnly||this.click().catch(R(console))}),this.readOnly=(t==null?void 0:t.readOnly)??!1,this.inactive=(t==null?void 0:t.inactive)??!1,this.ineffective=!1}toString(){return`[${Mt.name}#${this.componentId}]`}setCollapsed(){this.element.removeClass(Ae.expanded),this.element.prop("title",this.host.engine.i18n("ui.itemsShow"))}setExpanded(){this.element.addClass(Ae.expanded),this.element.prop("title",this.host.engine.i18n("ui.itemsHide"))}async click(){var e,t;this.readOnly||(await((t=(e=this.options)==null?void 0:e.onClick)==null?void 0:t.call(this)),this.requestRefresh())}}class _e extends G{constructor(e,t,i){super(e,i);u(this,"container");u(this,"expando");u(this,"head");u(this,"_mainChildVisible");this.head=t,this.container=new M(this),this.container.element.addClass(D.panelContent);const n=new Mt(e,{onClick:()=>this.toggle()});t.head.addChild(n),t.element.append(this.container.element),i!=null&&i.initiallyExpanded?(this.container.element.removeClass(D.hidden),n.setExpanded()):this.container.element.addClass(D.hidden),this._mainChildVisible=(i==null?void 0:i.initiallyExpanded)??!1,this.element=t.element,this.expando=n,this.addChildren([this.head,this.container])}get isExpanded(){return this._mainChildVisible}toString(){return`[${_e.name}#${this.componentId}]`}addChildHead(e){return this.head.addChild(e),this}addChildrenHead(e){for(const t of e??[])this.head.addChild(t);return this}addChildContent(e){return this.container.addChild(e),this}addChildrenContent(e){for(const t of e??[])this.container.addChild(t);return this}toggle(e=void 0,t=!1){const i=e!==void 0?e:!this._mainChildVisible;if(i!==this._mainChildVisible&&(this._mainChildVisible=i,this._mainChildVisible?(this.container.requestRefresh(!0),this.container.element.removeClass(D.hidden),this.expando.setExpanded(),this.head.element.addClass(D.expanded),this.element[0].dispatchEvent(new CustomEvent("panelShown"))):(this.container.element.addClass(D.hidden),this.expando.setCollapsed(),this.head.element.removeClass(D.expanded),this.element[0].dispatchEvent(new CustomEvent("panelHidden")))),t){const n=a=>{for(const r of a)ve(r,_e)?r.toggle(e,t):n(r.children)};n(this.children)}}}class N extends _e{constructor(e,t,i,n){super(e,i,n);u(this,"setting");u(this,"settingItem");this.element=i.element,this.settingItem=i,this.setting=t}get isExpanded(){return this._mainChildVisible}get elementLabel(){return this.head.element}get readOnly(){return!0}set readOnly(e){}async check(){this.setting.enabled=!0,this.requestRefresh()}async uncheck(){this.setting.enabled=!1,this.requestRefresh()}toString(){return`[${N.name}#${this.componentId}]: '${this.settingItem.elementLabel.text()}'`}}class aa extends N{constructor(s,e,t,i){const n=s.host.engine.i18n("ui.upgrade.buildings");super(s,e,new S(s,e,n,{onCheck:o=>{s.host.engine.imessage("status.auto.enable",[n])},onUnCheck:o=>{s.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(s,{classes:[B.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=i.enabled&&e.enabled&&!Object.values(e.buildings).some(o=>o.enabled)}});const a=[];for(const o of Object.values(this.setting.buildings)){const l=this.host.engine.i18n(`$buildings.${o.upgrade}.label`),h=new S(this,o,l,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[l])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[l])}});a.push({button:h,label:l})}a.sort((o,l)=>o.label.localeCompare(l.label));const r=new x(this);for(const o of a)r.addChild(o.button);this.addChildContent(r)}}class J extends G{constructor(e,t,i=null,n){super(e,{...n,onRefresh:()=>{var a;this.readOnly?this.element.addClass(C.readonly):this.element.removeClass(C.readonly),this.inactive?this.element.addClass(C.inactive):this.element.removeClass(C.inactive),this.ineffective?this.element.addClass(C.ineffective):this.element.removeClass(C.ineffective),(a=n==null?void 0:n.onRefresh)==null||a.call(n)}});u(this,"_iconElement");u(this,"readOnly");u(this,"inactive");u(this,"ineffective");this.element=$("<div/>",{title:n==null?void 0:n.title}).addClass(C.button).text(t),(n==null?void 0:n.border)!==!1&&this.element.addClass(C.bordered),(n==null?void 0:n.alignment)==="right"&&this.element.addClass(C.alignRight),i!==null&&(this._iconElement=$(`<svg class="${C.buttonIcon}" style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor"><path d="${i}"/></svg>`),(n==null?void 0:n.alignment)==="right"?this.element.append(this._iconElement):this.element.prepend(this._iconElement));for(const a of(n==null?void 0:n.classes)??[])this.element.addClass(a);this.element.on("click",()=>{this.readOnly||this.click().catch(R(console))}),this.readOnly=(n==null?void 0:n.readOnly)??!1,this.inactive=(n==null?void 0:n.inactive)??!1,this.ineffective=!1}toString(){return`[${J.name}#${this.componentId}]`}updateLabel(e){this.element.text(e),this._iconElement!==void 0&&(this.options.alignment==="right"?this.element.append(this._iconElement):this.element.prepend(this._iconElement))}updateTitle(e){this.element.prop("title",e)}async click(){var e,t;this.readOnly||(await((t=(e=this.options)==null?void 0:e.onClick)==null?void 0:t.call(this)),this.requestRefresh())}}class te extends G{constructor(s){super(s,{}),this.element=$("<div/>").addClass(ke.delimiter)}toString(){return`[${te.name}#${this.componentId}]`}}const ys={dialog:"_dialog_1276o_1",close:"_close_1276o_7"},ws={explainer:"_explainer_1idu3_1"},ra={header:"_header_19ql8_1"};class q extends G{get elementLabel(){return this.element}constructor(s,e,t){super(s,{...t}),this.element=$("<li/>",{text:e}).addClass(ra.header)}toString(){return`[${q.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class ti extends G{constructor(s,e){super(s,{...e}),this.element=$('<input type="text"/>').addClass("ks-input");for(const t of(e==null?void 0:e.classes)??[])this.element.addClass(t);e!=null&&e.onChange&&this.element.on("change",()=>{var t;return(t=e.onChange)==null?void 0:t.call(e,this.element[0].value)}),e!=null&&e.value&&(this.element[0].value=e.value),e!=null&&e.selected&&(this.element[0].selectionStart=0,this.element[0].selectionEnd=-1),this.element.on("keyup",t=>{var i,n;switch(t.key){case"Enter":(i=e==null?void 0:e.onEnter)==null||i.call(e,this.element[0].value);break;case"Escape":(n=e==null?void 0:e.onEscape)==null||n.call(e,this.element[0].value);break}})}toString(){return`[${ti.name}#${this.componentId}]`}}class Bt extends G{constructor(s,e,t){super(s,{...t}),this.element=$("<p/>").text(e);for(const i of(t==null?void 0:t.classes)??[])this.element.addClass(i)}toString(){return`[${Bt.name}#${this.componentId}]`}}const ks={toolbar:"_toolbar_1654f_1"};class E extends G{constructor(e,t){super(e,{...t});u(this,"container");u(this,"head");u(this,"returnValue");this.element=$("<dialog/>").addClass("dialog").addClass("help").addClass(ys.dialog),(t==null?void 0:t.hasClose)!==!1&&this.addChild(new J(e,"close",null,{classes:[ys.close],onClick:()=>{var i;this.close(),(i=t==null?void 0:t.onCancel)==null||i.call(t)}})),this.returnValue=(t==null?void 0:t.promptValue)??"",this.head=new M(e),this.container=new M(e),this.addChildren(ft([this.head,t!=null&&t.prompt?new ti(e,{onChange:i=>{this.returnValue=i},onEnter:i=>{var n;this.returnValue=i,this.close(),(n=t.onConfirm)==null||n.call(t,this.returnValue)},onEscape:i=>{var n;this.close(),(n=t.onCancel)==null||n.call(t)},selected:!0,value:t.promptValue}):void 0,this.container,new te(e),new M(e,{classes:[ks.toolbar]}).addChildren(ft([new J(e,"OK",null,{classes:[C.large],onClick:()=>{var i;this.close(),(i=t==null?void 0:t.onConfirm)==null||i.call(t,this.returnValue)}}),t!=null&&t.hasCancel?new J(e,"Cancel",null,{classes:[C.large],onClick:()=>{var i;this.close(),(i=t.onCancel)==null||i.call(t)}}):void 0]))]))}toString(){return`[${E.name}#${this.componentId}]`}addChildHead(e){return this.head.addChild(e),this}addChildrenHead(e){for(const t of e??[])this.head.addChild(t);return this}addChildContent(e){return this.container.addChild(e),this}addChildrenContent(e){for(const t of e??[])this.container.addChild(t);return this}show(){$("#gamePageContainer").append(this.element),this.element[0].show()}showModal(){$("#gamePageContainer").append(this.element),this.element[0].showModal()}close(){this.element[0].close(),this.element.remove()}static async prompt(e,t,i,n,a){return new Promise(r=>{new E(e,{hasCancel:!0,hasClose:!1,onCancel:()=>{r(void 0)},onConfirm:o=>{r(o)},prompt:!0,promptValue:n}).addChildrenHead(ft([i?new q(e,i):void 0,new Bt(e,t)])).addChildrenContent(a?[new M(e,{classes:[ws.explainer]}).addChildren([new Bt(e,a)])]:[]).showModal()})}}const oa={maxButton:"_maxButton_133h2_1"};class Pe extends J{constructor(e,t,i){super(e,"",null,{...i,classes:[oa.maxButton,...(i==null?void 0:i.classes)??[]]});u(this,"setting");this.setting=t}toString(){return`[${Pe.name}#${this.componentId}]`}}class Ee extends J{constructor(e,t,i,n){super(e,"",A.Trigger,{...n,onRefresh:()=>{var r,o;const a=this.behavior==="integer"?this.host.renderAbsolute(this.setting.trigger,"invariant"):this.host.renderPercentage(this.setting.trigger,"invariant",!0);this.updateTitle(this.host.engine.i18n("ui.trigger",[a])),(((r=this.options)==null?void 0:r.renderLabel)??!0)&&this.updateLabel(a),this.inactive?this.element.addClass(C.inactive):this.element.removeClass(C.inactive),(o=n==null?void 0:n.onRefresh)==null||o.call(this)}});u(this,"behavior");u(this,"setting");this.behavior=t instanceof V?"percentage":"integer",this.setting=t}toString(){return`[${Ee.name}#${this.componentId}]`}}class At extends S{constructor(e,t,i,n,a){super(e,t,n,a);u(this,"maxButton");u(this,"triggerButton");this.maxButton=new Pe(e,t,{alignment:"right",border:!1,classes:[C.headAction],onClick:async()=>{await a.onSetMax.call(this)},onRefresh:a!=null&&a.onRefreshMax?()=>{var r;return(r=a.onRefreshMax)==null?void 0:r.call(this)}:void 0}),this.triggerButton=new Ee(e,t,i,{border:!1,classes:[C.lastHeadAction],onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a!=null&&a.onRefreshTrigger?()=>{var r;return(r=a.onRefreshTrigger)==null?void 0:r.call(this)}:void 0,renderLabel:(a==null?void 0:a.renderLabelTrigger)??!0}),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.maxButton,this.triggerButton])}toString(){return`[${At.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}const oe={getBuildOption:(c,s,e,t,i,n,a)=>{const r=async()=>{const l=await E.prompt(c,c.host.engine.i18n("ui.max.prompt.absolute"),c.host.engine.i18n("ui.max.build.prompt",[i,c.host.renderAbsolute(s.max,e.selected)]),c.host.renderAbsolute(s.max),c.host.engine.i18n("ui.max.build.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){s.max=-1;return}l==="0"&&(s.enabled=!1),s.max=c.host.parseAbsolute(l)??s.max}},o=new At(c,s,e,i,{delimiter:a==null?void 0:a.delimiter,onCheck:async l=>{var h;c.host.engine.imessage("status.sub.enable",[i]),s.max===0&&!l&&await r(),await((h=a==null?void 0:a.onCheck)==null?void 0:h.call(a,l))},onRefreshMax:()=>{o.maxButton.updateLabel(c.host.renderAbsolute(s.max)),o.maxButton.element[0].title=s.max<0?c.host.engine.i18n("ui.max.build.titleInfinite",[i]):s.max===0?c.host.engine.i18n("ui.max.build.titleZero",[i]):c.host.engine.i18n("ui.max.build.title",[c.host.renderAbsolute(s.max),i])},onRefreshRequest:()=>{o.maxButton.inactive=!s.enabled||s.max===-1,o.maxButton.ineffective=t.enabled&&s.enabled&&s.max===0,o.triggerButton.inactive=!s.enabled||s.trigger===-1,o.triggerButton.ineffective=t.enabled&&s.enabled&&t.trigger===-1&&s.trigger===-1},onRefreshTrigger:()=>{o.triggerButton.element[0].title=c.host.engine.i18n("ui.trigger",[s.trigger<0?t.trigger<0?c.host.engine.i18n("ui.trigger.build.blocked",[n]):`${c.host.renderPercentage(t.trigger,e.selected,!0)} (${c.host.engine.i18n("ui.trigger.build.inherited")})`:c.host.renderPercentage(s.trigger,e.selected,!0)])},onSetMax:r,onSetTrigger:async()=>{var h;const l=await E.prompt(c,c.host.engine.i18n("ui.trigger.prompt.percentage"),c.host.engine.i18n("ui.trigger.build.prompt",[i,s.trigger!==-1?c.host.renderPercentage(s.trigger,e.selected,!0):c.host.engine.i18n("ui.trigger.build.inherited")]),s.trigger!==-1?c.host.renderPercentage(s.trigger):"",c.host.engine.i18n("ui.trigger.build.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){s.trigger=-1;return}s.trigger=c.host.parsePercentage(l),await((h=a==null?void 0:a.onSetTrigger)==null?void 0:h.call(void 0))}},onUnCheck:l=>{var h;c.host.engine.imessage("status.sub.disable",[i]),(h=a==null?void 0:a.onUnCheck)==null||h.call(a,l)},renderLabelTrigger:a==null?void 0:a.renderLabelTrigger,upgradeIndicator:a==null?void 0:a.upgradeIndicator});return o}};class H extends S{constructor(e,t,i,n,a){super(e,t,n,a);u(this,"triggerButton");this.triggerButton=new Ee(e,t,i,{alignment:"right",border:!1,onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a!=null&&a.onRefreshTrigger?()=>{var r;return(r=a.onRefreshTrigger)==null?void 0:r.call(this)}:void 0,renderLabel:(a==null?void 0:a.renderLabelTrigger)??!0}),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.triggerButton])}toString(){return`[${H.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class ii extends N{constructor(s,e,t){console.debug(...v(`Constructing ${ii.name}`));const i=s.host.engine.i18n("ui.build");super(s,e,new H(s,e,t,i,{onCheck:n=>{s.host.engine.imessage("status.auto.enable",[i])},onRefreshTrigger:()=>{this.settingItem.triggerButton.element[0].title=s.host.engine.i18n("ui.trigger.section",[e.trigger<0?s.host.engine.i18n("ui.trigger.section.inactive"):s.host.renderPercentage(e.trigger,t.selected,!0)])},onSetTrigger:async()=>{const n=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.percentage"),s.host.engine.i18n("ui.trigger.section.prompt",[i,e.trigger!==-1?s.host.renderPercentage(e.trigger,t.selected,!0):s.host.engine.i18n("ui.infinity")]),e.trigger!==-1?s.host.renderPercentage(e.trigger):"",s.host.engine.i18n("ui.trigger.section.promptExplainer"));if(n!==void 0){if(n===""||n.startsWith("-")){e.trigger=-1;return}e.trigger=s.host.parsePercentage(n)}},onUnCheck:n=>{s.host.engine.imessage("status.auto.disable",[i])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled||e.trigger<0,this.settingItem.triggerButton.ineffective=e.enabled&&e.trigger<0&&Object.values(e.buildings).some(n=>n.enabled&&0<n.max&&n.trigger<0),this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(n=>n.enabled&&(n.max===0||n.trigger<0&&e.trigger<0))}}),this.addChildrenContent([new x(this,{onReset:()=>{this.setting.load({buildings:new Xt().buildings})}}).addChildren(ft(this.host.game.bld.buildingGroups.flatMap(n=>[new q(this,n.title),...n.buildings.flatMap(a=>this._getBuildOptions(this,e,t,i,a)),n!==this.host.game.bld.buildingGroups[this.host.game.bld.buildingGroups.length-1]?new te(this):void 0]))),new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new q(this,this.host.engine.i18n("ui.additional")),new S(this,e.gatherCatnip,this.host.engine.i18n("option.catnip"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.catnip")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.catnip")])}}),new S(this,e.turnOnSteamworks,this.host.engine.i18n("option.steamworks"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.steamworks")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.steamworks")])}}),new S(this,e.turnOnMagnetos,this.host.engine.i18n("option.magnetos"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.magnetos")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.magnetos")])}}),new S(this,e.turnOnReactors,this.host.engine.i18n("option.reactors"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.reactors")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.reactors")])}}),new aa(this,e.upgradeBuildings,t,e)])])}_getBuildOptions(s,e,t,i,n){var r;if(n==="unicornPasture"||m(e.buildings[n]))return[];const a=s.host.game.bld.getBuildingExt(n).meta;if(!m(a.stages)){const o=(r=Object.values(e.buildings).find(l=>l.baseBuilding===n))==null?void 0:r.building;return[oe.getBuildOption(s,e.buildings[n],t,e,a.stages[0].label,i,{renderLabelTrigger:!1}),oe.getBuildOption(s,e.buildings[o],t,e,a.stages[1].label,i,{renderLabelTrigger:!1,upgradeIndicator:!0})]}return m(a.label)?[]:[oe.getBuildOption(s,e.buildings[n],t,e,a.label,i,{renderLabelTrigger:!1})]}}class la extends S{constructor(e,t){const i=X(e.host.engine.i18n("ui.engine"));super(e,t,i,{onCheck:()=>{e.host.engine.start(!0)},onUnCheck:()=>{e.host.engine.stop(!0)}});u(this,"expando");this.expando=new Mt(this),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.expando])}}class si extends he{constructor(e,t,i){super(e,{...i});u(this,"button");this.button=t,this.element.addClass(Et.head),this.element.append(t.element)}}const ca={fieldset:"_fieldset_tfwil_1"};class ni extends G{constructor(s,e,t){super(s,{...t}),this.element=$("<fieldset/>").addClass(ca.fieldset),t!=null&&t.delimiter&&this.element.addClass(ke.delimiter);const i=$("<legend/>").text(e).addClass(B.label);this.element.append(i)}toString(){return`[${ni.name}#${this.componentId}]`}}class ai extends G{constructor(e,t,i,n,a){super(e,{...a,onRefresh:()=>{this.input.prop("disabled",this.readOnly)}});u(this,"setting");u(this,"option");u(this,"elementLabel");u(this,"input");u(this,"readOnly");this.element=$("<div/>"),this.element.addClass(D.setting),(a==null?void 0:a.delimiter)===!0&&this.element.addClass(ke.delimiter),this.elementLabel=$("<label/>",{text:`${a!=null&&a.upgradeIndicator?"⮤ ":""}${i.label}`}).addClass(B.label);const r=$("<input/>",{name:n,type:"radio"}).addClass("ks-radio");this.readOnly=(a==null?void 0:a.readOnly)??!1,r.on("change",()=>{this.setting.selected=i.value,m(a==null?void 0:a.onCheck)||a.onCheck()}),this.elementLabel.prepend(r),this.element.append(this.elementLabel),this.input=r,this.setting=t,this.option=i}toString(){return`[${ai.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Ie extends G{constructor(e,t,i,n){super(e,{...n,onRefresh:()=>{var a;for(const r of this._items)if(r.option.value===this.setting.selected){r.input.prop("checked",!0);break}(a=n==null?void 0:n.onRefresh)==null||a.call(n)}});u(this,"fieldset");u(this,"setting");u(this,"_items");this.element=$("<li/>"),this.fieldset=new ni(e,t),this.addChild(this.fieldset),this._items=new Array;for(const a of i.options)this._items.push(new ai(e,i,a,t,{onCheck:n==null?void 0:n.onCheck,readOnly:n==null?void 0:n.readOnly}));this.fieldset.addChildren(this._items),this.setting=i}toString(){return`[${Ie.name}#${this.componentId}]`}}const ha={textButton:"_textButton_1mv97_1"};class Ce extends G{constructor(e,t,i){super(e,{...i,onRefresh:()=>{var a;this.readOnly?this.element.addClass(C.readonly):this.element.removeClass(C.readonly),(a=i==null?void 0:i.onRefresh)==null||a.call(this)}});u(this,"readOnly");this.element=$("<div/>").addClass(ha.textButton),t!==void 0&&this.element.text(t);const n=i==null?void 0:i.title;m(n)||this.element.prop("title",n),this.readOnly=!1,this.element.on("click",()=>{this.readOnly||this.click().catch(R(console))})}toString(){return`[${Ce.name}#${this.componentId}]`}async click(){var e,t;this.readOnly||(await((t=(e=this.options)==null?void 0:e.onClick)==null?void 0:t.call(this)),this.requestRefresh())}}class ri extends N{constructor(s,e,t){console.debug(...v(`Constructing ${ri.name}`)),super(s,e,new ue(s,s.host.engine.i18n("ui.internals"),{classes:[D.checked,D.setting],icon:A.Settings}).addChildrenHead([new M(s,{classes:[B.fillSpace]})])),this.addChildrenContent([new x(s,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new si(s,new Ce(s,s.host.engine.i18n("ui.internals.interval",[e.interval]),{onClick:async()=>{const i=await E.prompt(s,s.host.engine.i18n("ui.internals.interval.prompt"),s.host.engine.i18n("ui.internals.interval.promptTitle",[s.host.renderAbsolute(e.interval,t.selected)]),s.host.renderAbsolute(e.interval),s.host.engine.i18n("ui.internals.interval.promptExplainer"));i===void 0||i===""||i.startsWith("-")||(i==="0"&&(e.enabled=!1),e.interval=s.host.parseAbsolute(i)??e.interval)},onRefresh(){this.element.text(s.host.engine.i18n("ui.internals.interval",[e.interval]))}})),new te(s),new S(s,e.ksColumn,s.host.engine.i18n("ui.ksColumn"),{onCheck:()=>{s.host.rebuildUi()},onUnCheck:()=>{s.host.rebuildUi()}}),new te(s),new Ie(s,s.host.engine.i18n("ui.language"),e.locale,{onCheck:()=>{s.host.rebuildUi()}}),new te(s),new ue(s,`Kitten Scientists ${Oe("v")}`)])])}}class oi extends G{constructor(s,e,t){super(s,{...t}),this.element=$("<li/>",{text:s.host.engine.i18n(e)}).addClass(ws.explainer)}toString(){return`[${oi.name}#${this.componentId}]`}}class li extends N{constructor(s,e){console.debug(...v(`Constructing ${li.name}`));const t=s.host.engine.i18n("ui.filter");super(s,e,new S(s,e,t,{onCheck:n=>{s.host.engine.imessage("status.auto.enable",[t])},onUnCheck:n=>{s.host.engine.imessage("status.auto.disable",[t])}}).addChildrenHead([new M(s,{classes:[B.fillSpace]})])),this.addChildContent(new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new S(this,e.disableKGLog,this.host.engine.i18n("filter.allKG"))]));const i=new x(this).addChildren(os.map(n=>({label:this.host.engine.i18n(`filter.${n}`),name:n})).sort((n,a)=>n.label.localeCompare(a.label)).map(n=>new S(this,this.setting.filters[n.name],n.label,{onCheck:()=>{this.host.engine.imessage("filter.enable",[n.label])},onUnCheck:()=>{this.host.engine.imessage("filter.disable",[n.label])}})));this.addChildContent(i),this.addChildContent(new oi(this,"filter.explainer"))}}const Pt={active:"_active_6c09s_16"};class ci extends N{constructor(e,t,i){console.debug(...v(`Constructing ${ci.name}`));const n=e.host.engine.i18n("ui.faith");super(e,t,new H(e,t,i,n,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[n])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const r=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[n,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(r!==void 0){if(r===""||r.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(r)}},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefresh:()=>{for(const[r,o]of this._unicornBuildings.entries())o.elementLabel.attr("data-ks-active-from","❊"),o.elementLabel.attr("data-ks-active-to","✮"),this.setting.bestUnicornBuilding.enabled&&this.setting.bestUnicornBuildingCurrent===r?o.elementLabel.addClass(Pt.active):o.elementLabel.removeClass(Pt.active)},onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.buildings).some(r=>r.enabled&&0<r.max&&r.trigger<0),this.expando.ineffective=t.enabled&&Object.values(t.buildings).some(r=>r.enabled&&(r.max===0||r.trigger<0&&t.trigger<0));for(const[r,o]of this._unicornBuildings.entries())o.readOnly=this._bestUnicornBuilding.setting.enabled,o.maxButton.readOnly=this._bestUnicornBuilding.setting.enabled,o.triggerButton.readOnly=this._bestUnicornBuilding.setting.enabled}});u(this,"_unicornBuildings");u(this,"_bestUnicornBuilding");const a=[...kt];this._unicornBuildings=new Map([["unicornPasture",oe.getBuildOption(this,this.setting.buildings.unicornPasture,i,this.setting,this.host.engine.i18n("$buildings.unicornPasture.label"),n,{renderLabelTrigger:!1})],...this.host.game.religion.zigguratUpgrades.filter(r=>a.includes(r.name)&&!m(this.setting.buildings[r.name])).map(r=>[r.name,oe.getBuildOption(this,this.setting.buildings[r.name],i,this.setting,r.label,n,{renderLabelTrigger:!1})])]),this._bestUnicornBuilding=new S(this,this.setting.bestUnicornBuilding,this.host.engine.i18n("option.faith.best.unicorn"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.faith.best.unicorn")]);for(const r of this._unicornBuildings.values())r.setting.enabled=!0,r.setting.max=-1,r.setting.trigger=-1},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.faith.best.unicorn")])},upgradeIndicator:!0}),this.addChildrenContent([new x(this,{onReset:()=>{const r=new Yt;this.setting.load({bestUnicornBuilding:r.bestUnicornBuilding,buildings:r.buildings})}}).addChildren([new q(this,this.host.engine.i18n("$religion.panel.ziggurat.label")),...this._unicornBuildings.values(),this._bestUnicornBuilding,new te(this),...this.host.game.religion.zigguratUpgrades.filter(r=>!a.includes(r.name)&&!m(this.setting.buildings[r.name])).map(r=>oe.getBuildOption(this,this.setting.buildings[r.name],i,this.setting,r.label,n,{renderLabelTrigger:!1})),new te(this),new q(this,this.host.engine.i18n("$religion.panel.orderOfTheSun.label")),...this.host.game.religion.religionUpgrades.filter(r=>!m(this.setting.buildings[r.name])).map(r=>{var o;return oe.getBuildOption(this,this.setting.buildings[r.name],i,this.setting,r.label,n,{delimiter:r.name===((o=this.host.game.religion.religionUpgrades.at(-1))==null?void 0:o.name),renderLabelTrigger:!1})}),new q(this,this.host.engine.i18n("$religion.panel.cryptotheology.label")),...this.host.game.religion.transcendenceUpgrades.filter(r=>!m(this.setting.buildings[r.name])).map(r=>oe.getBuildOption(this,this.setting.buildings[r.name],i,this.setting,r.label,n,{renderLabelTrigger:!1}))]),new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new q(this,this.host.engine.i18n("ui.additional")),...Ys.map(r=>{const o=this.host.engine.i18n(`option.faith.${r}`);if(r==="transcend")return new S(this,this.setting[r],o,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o])}});const l=new H(this,this.setting[r],i,o,{classes:[C.lastHeadAction],onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o])},onRefresh:()=>{l.triggerButton.inactive=!this.setting[r].enabled||this.setting[r].trigger===-1},onSetTrigger:async()=>{const h=await E.prompt(this,this.host.engine.i18n(l.triggerButton.behavior==="integer"?"ui.trigger.setinteger":"ui.trigger.setpercentage",[o]),this.host.engine.i18n("ui.trigger.build.prompt",[o,l.triggerButton.behavior==="integer"?this.host.renderAbsolute(this.setting[r].trigger,i.selected):this.host.renderPercentage(this.setting[r].trigger,i.selected,!0)]),l.triggerButton.behavior==="integer"?this.host.renderAbsolute(this.setting[r].trigger):this.host.renderPercentage(this.setting[r].trigger),this.host.engine.i18n(l.triggerButton.behavior==="integer"?"ui.trigger.setinteger.promptExplainer":"ui.trigger.setpercentage.promptExplainer"));h===void 0||h===""||h.startsWith("-")||(this.setting[r].trigger=(l.triggerButton.behavior==="integer"?this.host.parseAbsolute(h):this.host.parsePercentage(h))??this.setting[r].trigger)},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o])}});return l.triggerButton.element.addClass(C.lastHeadAction),l})])])}}class hi extends J{constructor(e,t,i,n,a){super(e,"",A.DataUsage,{...a,onClick:async()=>{const r=await E.prompt(e,e.host.engine.i18n("resources.consume.prompt"),e.host.engine.i18n("resources.consume.promptTitle",[n,e.host.renderPercentage(t.consume,i.selected,!0)]),e.host.renderPercentage(t.consume),e.host.engine.i18n("resources.consume.promptExplainer"));r!==void 0&&(r===""||r.startsWith("-")||(t.consume=e.host.parsePercentage(r)))},onRefresh:()=>{var l;const r=this.host.renderPercentage(this.setting.consume,this.host.engine.settings.locale.selected,!0),o=this.setting.consume===0?this.host.engine.i18n("resources.consume.titleZero",[this.resourceName]):this.host.engine.i18n("resources.consume.title",[r,this.resourceName]);this.updateTitle(o),(l=a==null?void 0:a.onRefresh)==null||l.call(a)}});u(this,"setting");u(this,"resourceName");this.element.addClass(C.consumeButton),this.resourceName=n,this.setting=t}toString(){return`[${hi.name}#${this.componentId}]`}}class ui extends J{constructor(e,t,i,n,a){super(e,"",null,{...a,onClick:async()=>{const r=await E.prompt(e,e.host.engine.i18n("resources.stock.prompt"),e.host.engine.i18n("resources.stock.promptTitle",[n,e.host.renderAbsolute(t.stock,i.selected)]),e.host.renderAbsolute(t.stock),e.host.engine.i18n("resources.stock.promptExplainer"));if(r!==void 0){if(r===""||r.startsWith("-")){t.stock=-1;return}r==="0"&&(t.enabled=!1),t.stock=e.host.parseAbsolute(r)??t.stock}},onRefresh:()=>{const r=this.host.renderAbsolute(this.setting.stock),o=this.setting.stock<0?this.host.engine.i18n("resources.stock.titleInfinite",[this.resourceName]):this.setting.stock===0?this.host.engine.i18n("resources.stock.titleZero",[this.resourceName]):this.host.engine.i18n("resources.stock.title",[this.host.renderAbsolute(this.setting.stock),this.resourceName]);this.updateTitle(o),this.updateLabel(r)}});u(this,"setting");u(this,"resourceName");this.element.addClass(C.stockButton),this.resourceName=n,this.setting=t}toString(){return`[${ui.name}#${this.componentId}]`}}class di extends N{constructor(s,e,t){console.debug(...v(`Constructing ${di.name}`));const i=s.host.engine.i18n("ui.resources");super(s,e,new ue(s,i,{classes:[D.checked,D.setting],icon:A.Resources}).addChildrenHead([new M(s,{classes:[B.fillSpace]})]));const n=["blackcoin","burnedParagon","elderBox","gflops","hashrates","kittens","paragon","temporalFlux","wrappingPaper","zebras"];this.addChildContent(new x(this).addChildren(this.host.game.resPool.resources.filter(a=>!n.includes(a.name)&&!m(this.setting.resources[a.name])).sort((a,r)=>a.title.localeCompare(r.title,t.selected)).map(a=>[this.setting.resources[a.name],X(a.title)]).map(([a,r])=>this._makeResourceSetting(this,a,t,r))))}_makeResourceSetting(s,e,t,i){const n=new S(s,e,i,{onCheck:()=>{s.host.engine.imessage("status.resource.enable",[i])},onUnCheck:()=>{s.host.engine.imessage("status.resource.disable",[i])}}).addChildrenHead([new M(s,{classes:[B.fillSpace]})]),a=new ui(s,e,t,i,{alignment:"right",border:!1,classes:[C.headAction],onRefreshRequest:()=>{a.inactive=!e.enabled||e.stock===0}});n.head.addChild(a);const r=new hi(s,e,t,i,{border:!1,classes:[C.lastHeadAction],onRefreshRequest:()=>{r.inactive=!e.enabled||e.consume!==100,r.ineffective=e.enabled&&e.consume===0}});return n.head.addChild(r),n}}class ua extends N{constructor(s,e,t,i){const n=s.host.engine.i18n("ui.upgrade.policies");super(s,e,new S(s,e,n,{onCheck:l=>{s.host.engine.imessage("status.auto.enable",[n])},onUnCheck:l=>{s.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(s,{classes:[B.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=i.enabled&&e.enabled&&!Object.values(e.policies).some(l=>l.enabled)}});const a=this.host.game.science.policies.filter(l=>!m(this.setting.policies[l.name])),r=[];let o=a[0].label;for(const l of a.sort((h,d)=>h.label.localeCompare(d.label,t.selected))){const h=this.setting.policies[l.name],d=new S(this,h,l.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[l.label])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[l.label])}});this.host.engine.localeSupportsFirstLetterSplits(t.selected)&&o[0]!==l.label[0]&&d.element.addClass(B.splitter),r.push(d),o=l.label}this.addChildContent(new x(this).addChildren(r))}}class da extends N{constructor(s,e,t,i){const n=s.host.engine.i18n("ui.upgrade.techs");super(s,e,new H(s,e,t,n,{onCheck:l=>{s.host.engine.imessage("status.auto.enable",[n])},onRefreshTrigger(){this.triggerButton.element[0].title=s.host.engine.i18n("ui.trigger",[e.trigger<0?s.host.engine.i18n("ui.trigger.section.inactive"):s.host.renderPercentage(e.trigger,t.selected,!0)])},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.percentage"),s.host.engine.i18n("ui.trigger.section.prompt",[n,e.trigger!==-1?s.host.renderPercentage(e.trigger,t.selected,!0):s.host.engine.i18n("ui.infinity")]),e.trigger!==-1?s.host.renderPercentage(e.trigger):"",s.host.engine.i18n("ui.trigger.section.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1;return}e.trigger=s.host.parsePercentage(l)}},onUnCheck:l=>{s.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled||e.trigger===-1,this.settingItem.triggerButton.ineffective=i.enabled&&e.enabled&&e.trigger===-1&&!Object.values(e.techs).some(l=>l.enabled&&0<=l.trigger),this.expando.ineffective=i.enabled&&e.enabled&&!Object.values(e.techs).some(l=>l.enabled)}});const a=this.host.game.science.techs.filter(l=>!m(this.setting.techs[l.name])),r=[];let o=a[0].label;for(const l of a.sort((h,d)=>h.label.localeCompare(d.label,t.selected))){const h=this.setting.techs[l.name],d=new H(this,h,t,l.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[l.label])},onRefresh:()=>{d.triggerButton.inactive=!h.enabled||h.trigger===-1,d.triggerButton.ineffective=i.enabled&&e.enabled&&h.enabled&&e.trigger===-1&&h.trigger===-1},onRefreshTrigger:()=>{d.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[h.trigger<0?e.trigger<0?this.host.engine.i18n("ui.trigger.section.blocked",[n]):`${this.host.renderPercentage(e.trigger,t.selected,!0)} (${this.host.engine.i18n("ui.trigger.section.inherited")})`:this.host.renderPercentage(h.trigger,t.selected,!0)])},onSetTrigger:async()=>{const g=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[n,h.trigger!==-1?this.host.renderPercentage(h.trigger,t.selected,!0):this.host.engine.i18n("ui.trigger.section.inherited")]),h.trigger!==-1?this.host.renderPercentage(h.trigger):"",this.host.engine.i18n("ui.trigger.section.promptExplainer"));if(g!==void 0){if(g===""||g.startsWith("-")){h.trigger=-1;return}h.trigger=this.host.parsePercentage(g)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[l.label])},renderLabelTrigger:!1});d.triggerButton.element.addClass(C.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(t.selected)&&o[0]!==l.label[0]&&d.element.addClass(B.splitter),r.push(d),o=l.label}this.addChildContent(new x(this).addChildren(r))}}class gi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${gi.name}`));const n=e.host.engine.i18n("ui.upgrade");super(e,t,new S(e,t,n,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[n])},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),{onRefresh:()=>{this.setting.observe.enabled?$("#observeButton").hide():$("#observeButton").show()},onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&(this.setting.policies.enabled&&this._policiesUi.expando.ineffective||this.setting.techs.enabled&&(this._techsUi.expando.ineffective||this._techsUi.settingItem.triggerButton.ineffective))}});u(this,"_policiesUi");u(this,"_techsUi");u(this,"_observeStars");this._policiesUi=new ua(this,t.policies,i,t),this._techsUi=new da(this,t.techs,i,t),this._observeStars=new S(this,this.setting.observe,this.host.engine.i18n("option.observe"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.observe")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.observe")])}});const a=new x(this,{hasDisableAll:!1,hasEnableAll:!1});a.addChildren([this._techsUi,this._policiesUi,this._observeStars]),this.addChildContent(a)}}class ga extends N{constructor(e,t,i,n){const a=e.host.engine.i18n("ui.upgrade.missions");super(e,t,new S(e,t,a,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[a])},onRefresh:()=>{this.expando.ineffective=n.enabled&&t.enabled&&!Object.values(t.missions).some(o=>o.enabled)},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[a])}}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]));u(this,"_missions");this._missions=this.host.game.space.programs.filter(o=>!m(this.setting.missions[o.name])).map(o=>new S(this,this.setting.missions[o.name],o.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o.label])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o.label])}}));const r=new x(this).addChildren(this._missions);this.addChildContent(r)}}class mi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${mi.name}`));const n=e.host.engine.i18n("ui.space");super(e,t,new H(e,t,i,n,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[n])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const r=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[n,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(r!==void 0){if(r===""||r.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(r)}},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.buildings).some(r=>r.enabled&&0<r.max&&r.trigger<0),this.expando.ineffective=t.enabled&&(Object.values(t.buildings).some(r=>r.enabled&&(r.max===0||r.trigger<0&&t.trigger<0))||!Object.values(t.buildings).some(r=>r.enabled)&&!t.unlockMissions.enabled||this._missionsUi.expando.ineffective)}});u(this,"_missionsUi");this.addChildContent(new x(this,{onReset:()=>{this.setting.load({buildings:new St().buildings})}}).addChildren(this.host.game.space.planets.filter(r=>0<r.buildings.length).flatMap((r,o,l)=>[new q(this,this.host.engine.labelForPlanet(r.name)),...r.buildings.filter(h=>!m(this.setting.buildings[h.name])).map((h,d,g)=>oe.getBuildOption(this,this.setting.buildings[h.name],i,this.setting,h.label,n,{delimiter:o<l.length-1&&d===g.length-1,renderLabelTrigger:!1}))])));const a=new x(this,{hasDisableAll:!1,hasEnableAll:!1});a.addChild(new q(this,this.host.engine.i18n("ui.additional"))),this._missionsUi=new ga(this,this.setting.unlockMissions,i,this.setting),a.addChild(this._missionsUi),this.addChildContent(a)}}class fi extends fe{constructor(s,e=400){super("ERR_OS_INVALID_ARGUMENT",s,e),this.name="InvalidArgumentError",typeof Error.captureStackTrace<"u"&&Error.captureStackTrace(this,fi)}}const It=43200,_s=1440,Cs=Symbol.for("constructDateFrom");function bi(c,s){return typeof c=="function"?c(s):c&&typeof c=="object"&&Cs in c?c[Cs](s):c instanceof Date?new c.constructor(s):new Date(s)}function ma(c){return bi(c,Date.now())}const fa={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},ba=(c,s,e)=>{let t;const i=fa[c];return typeof i=="string"?t=i:s===1?t=i.one:t=i.other.replace("{{count}}",s.toString()),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"in "+t:t+" ago":t};function se(c){return(s={})=>{const e=s.width?String(s.width):c.defaultWidth;return c.formats[e]||c.formats[c.defaultWidth]}}const pa={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},va={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},ya={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},wa={date:se({formats:pa,defaultWidth:"full"}),time:se({formats:va,defaultWidth:"full"}),dateTime:se({formats:ya,defaultWidth:"full"})},ka={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},_a=(c,s,e,t)=>ka[c];function Z(c){return(s,e)=>{const t=e!=null&&e.context?String(e.context):"standalone";let i;if(t==="formatting"&&c.formattingValues){const a=c.defaultFormattingWidth||c.defaultWidth,r=e!=null&&e.width?String(e.width):a;i=c.formattingValues[r]||c.formattingValues[a]}else{const a=c.defaultWidth,r=e!=null&&e.width?String(e.width):c.defaultWidth;i=c.values[r]||c.values[a]}const n=c.argumentCallback?c.argumentCallback(s):s;return i[n]}}const Ca={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Sa={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},xa={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Ta={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Ea={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Ra={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Ma={ordinalNumber:(c,s)=>{const e=Number(c),t=e%100;if(t>20||t<10)switch(t%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},era:Z({values:Ca,defaultWidth:"wide"}),quarter:Z({values:Sa,defaultWidth:"wide",argumentCallback:c=>c-1}),month:Z({values:xa,defaultWidth:"wide"}),day:Z({values:Ta,defaultWidth:"wide"}),dayPeriod:Z({values:Ea,defaultWidth:"wide",formattingValues:Ra,defaultFormattingWidth:"wide"})};function K(c){return(s,e={})=>{const t=e.width,i=t&&c.matchPatterns[t]||c.matchPatterns[c.defaultMatchWidth],n=s.match(i);if(!n)return null;const a=n[0],r=t&&c.parsePatterns[t]||c.parsePatterns[c.defaultParseWidth],o=Array.isArray(r)?Aa(r,d=>d.test(a)):Ba(r,d=>d.test(a));let l;l=c.valueCallback?c.valueCallback(o):o,l=e.valueCallback?e.valueCallback(l):l;const h=s.slice(a.length);return{value:l,rest:h}}}function Ba(c,s){for(const e in c)if(Object.prototype.hasOwnProperty.call(c,e)&&s(c[e]))return e}function Aa(c,s){for(let e=0;e<c.length;e++)if(s(c[e]))return e}function $t(c){return(s,e={})=>{const t=s.match(c.matchPattern);if(!t)return null;const i=t[0],n=s.match(c.parsePattern);if(!n)return null;let a=c.valueCallback?c.valueCallback(n[0]):n[0];a=e.valueCallback?e.valueCallback(a):a;const r=s.slice(i.length);return{value:a,rest:r}}}const Pa=/^(\d+)(th|st|nd|rd)?/i,Ia=/\d+/i,$a={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},La={any:[/^b/i,/^(a|c)/i]},Oa={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Ua={any:[/1/i,/2/i,/3/i,/4/i]},Da={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Na={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},qa={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},za={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Fa={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Ha={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Wa={ordinalNumber:$t({matchPattern:Pa,parsePattern:Ia,valueCallback:c=>parseInt(c,10)}),era:K({matchPatterns:$a,defaultMatchWidth:"wide",parsePatterns:La,defaultParseWidth:"any"}),quarter:K({matchPatterns:Oa,defaultMatchWidth:"wide",parsePatterns:Ua,defaultParseWidth:"any",valueCallback:c=>c+1}),month:K({matchPatterns:Da,defaultMatchWidth:"wide",parsePatterns:Na,defaultParseWidth:"any"}),day:K({matchPatterns:qa,defaultMatchWidth:"wide",parsePatterns:za,defaultParseWidth:"any"}),dayPeriod:K({matchPatterns:Fa,defaultMatchWidth:"any",parsePatterns:Ha,defaultParseWidth:"any"})},Ss={code:"en-US",formatDistance:ba,formatLong:wa,formatRelative:_a,localize:Ma,match:Wa,options:{weekStartsOn:0,firstWeekContainsDate:1}};let Ga={};function xs(){return Ga}function me(c,s){return bi(s||c,c)}function Ts(c){const s=me(c),e=new Date(Date.UTC(s.getFullYear(),s.getMonth(),s.getDate(),s.getHours(),s.getMinutes(),s.getSeconds(),s.getMilliseconds()));return e.setUTCFullYear(s.getFullYear()),+c-+e}function Lt(c,...s){const e=bi.bind(null,c||s.find(t=>typeof t=="object"));return s.map(e)}function Ot(c,s){const e=+me(c)-+me(s);return e<0?-1:e>0?1:e}function Za(c,s,e){const[t,i]=Lt(e==null?void 0:e.in,c,s),n=t.getFullYear()-i.getFullYear(),a=t.getMonth()-i.getMonth();return n*12+a}function Ka(c,s){const e=me(c,s==null?void 0:s.in);return e.setHours(23,59,59,999),e}function Va(c,s){const e=me(c,s==null?void 0:s.in),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(23,59,59,999),e}function ja(c,s){const e=me(c,s==null?void 0:s.in);return+Ka(e,s)==+Va(e,s)}function Ja(c,s,e){const[t,i,n]=Lt(e==null?void 0:e.in,c,c,s),a=Ot(i,n),r=Math.abs(Za(i,n));if(r<1)return 0;i.getMonth()===1&&i.getDate()>27&&i.setDate(30),i.setMonth(i.getMonth()-a*r);let o=Ot(i,n)===-a;ja(t)&&r===1&&Ot(t,n)===1&&(o=!1);const l=a*(r-+o);return l===0?0:l}function Xa(c){return s=>{const t=(c?Math[c]:Math.trunc)(s);return t===0?0:t}}function Ya(c,s){return+me(c)-+me(s)}function Qa(c,s,e){const t=Ya(c,s)/1e3;return Xa(e==null?void 0:e.roundingMethod)(t)}function er(c,s,e){const t=xs(),i=(e==null?void 0:e.locale)??t.locale??Ss,n=2520,a=Ot(c,s);if(isNaN(a))throw new RangeError("Invalid time value");const r=Object.assign({},e,{addSuffix:e==null?void 0:e.addSuffix,comparison:a}),[o,l]=Lt(e==null?void 0:e.in,...a>0?[s,c]:[c,s]),h=Qa(l,o),d=(Ts(l)-Ts(o))/1e3,g=Math.round((h-d)/60);let f;if(g<2)return e!=null&&e.includeSeconds?h<5?i.formatDistance("lessThanXSeconds",5,r):h<10?i.formatDistance("lessThanXSeconds",10,r):h<20?i.formatDistance("lessThanXSeconds",20,r):h<40?i.formatDistance("halfAMinute",0,r):h<60?i.formatDistance("lessThanXMinutes",1,r):i.formatDistance("xMinutes",1,r):g===0?i.formatDistance("lessThanXMinutes",1,r):i.formatDistance("xMinutes",g,r);if(g<45)return i.formatDistance("xMinutes",g,r);if(g<90)return i.formatDistance("aboutXHours",1,r);if(g<_s){const w=Math.round(g/60);return i.formatDistance("aboutXHours",w,r)}else{if(g<n)return i.formatDistance("xDays",1,r);if(g<It){const w=Math.round(g/_s);return i.formatDistance("xDays",w,r)}else if(g<It*2)return f=Math.round(g/It),i.formatDistance("aboutXMonths",f,r)}if(f=Ja(l,o),f<12){const w=Math.round(g/It);return i.formatDistance("xMonths",w,r)}else{const w=f%12,b=Math.trunc(f/12);return w<3?i.formatDistance("aboutXYears",b,r):w<9?i.formatDistance("overXYears",b,r):i.formatDistance("almostXYears",b+1,r)}}function Es(c,s){return er(c,ma(c),s)}function Rs(c,s){var r,o,l,h;const e=xs(),t=(s==null?void 0:s.weekStartsOn)??((o=(r=s==null?void 0:s.locale)==null?void 0:r.options)==null?void 0:o.weekStartsOn)??e.weekStartsOn??((h=(l=e.locale)==null?void 0:l.options)==null?void 0:h.weekStartsOn)??0,i=me(c,s==null?void 0:s.in),n=i.getDay(),a=(n<t?7:0)+n-t;return i.setDate(i.getDate()-a),i.setHours(0,0,0,0),i}function tr(c,s,e){const[t,i]=Lt(e==null?void 0:e.in,c,s);return+Rs(t,e)==+Rs(i,e)}const Ms={lessThanXSeconds:{standalone:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"},withPreposition:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"}},xSeconds:{standalone:{one:"1 Sekunde",other:"{{count}} Sekunden"},withPreposition:{one:"1 Sekunde",other:"{{count}} Sekunden"}},halfAMinute:{standalone:"eine halbe Minute",withPreposition:"einer halben Minute"},lessThanXMinutes:{standalone:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"},withPreposition:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"}},xMinutes:{standalone:{one:"1 Minute",other:"{{count}} Minuten"},withPreposition:{one:"1 Minute",other:"{{count}} Minuten"}},aboutXHours:{standalone:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"},withPreposition:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"}},xHours:{standalone:{one:"1 Stunde",other:"{{count}} Stunden"},withPreposition:{one:"1 Stunde",other:"{{count}} Stunden"}},xDays:{standalone:{one:"1 Tag",other:"{{count}} Tage"},withPreposition:{one:"1 Tag",other:"{{count}} Tagen"}},aboutXWeeks:{standalone:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"},withPreposition:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"}},xWeeks:{standalone:{one:"1 Woche",other:"{{count}} Wochen"},withPreposition:{one:"1 Woche",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"etwa 1 Monat",other:"etwa {{count}} Monate"},withPreposition:{one:"etwa 1 Monat",other:"etwa {{count}} Monaten"}},xMonths:{standalone:{one:"1 Monat",other:"{{count}} Monate"},withPreposition:{one:"1 Monat",other:"{{count}} Monaten"}},aboutXYears:{standalone:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahre"},withPreposition:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahren"}},xYears:{standalone:{one:"1 Jahr",other:"{{count}} Jahre"},withPreposition:{one:"1 Jahr",other:"{{count}} Jahren"}},overXYears:{standalone:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahre"},withPreposition:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahren"}},almostXYears:{standalone:{one:"fast 1 Jahr",other:"fast {{count}} Jahre"},withPreposition:{one:"fast 1 Jahr",other:"fast {{count}} Jahren"}}},ir=(c,s,e)=>{let t;const i=e!=null&&e.addSuffix?Ms[c].withPreposition:Ms[c].standalone;return typeof i=="string"?t=i:s===1?t=i.one:t=i.other.replace("{{count}}",String(s)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"in "+t:"vor "+t:t},sr={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},nr={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},ar={full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},rr={date:se({formats:sr,defaultWidth:"full"}),time:se({formats:nr,defaultWidth:"full"}),dateTime:se({formats:ar,defaultWidth:"full"})},or={lastWeek:"'letzten' eeee 'um' p",yesterday:"'gestern um' p",today:"'heute um' p",tomorrow:"'morgen um' p",nextWeek:"eeee 'um' p",other:"P"},lr=(c,s,e,t)=>or[c],cr={narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},hr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},pi={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},ur={narrow:pi.narrow,abbreviated:["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],wide:pi.wide},dr={narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},gr={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},mr={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},fr={ordinalNumber:c=>Number(c)+".",era:Z({values:cr,defaultWidth:"wide"}),quarter:Z({values:hr,defaultWidth:"wide",argumentCallback:c=>c-1}),month:Z({values:pi,formattingValues:ur,defaultWidth:"wide"}),day:Z({values:dr,defaultWidth:"wide"}),dayPeriod:Z({values:gr,defaultWidth:"wide",formattingValues:mr,defaultFormattingWidth:"wide"})},br=/^(\d+)(\.)?/i,pr=/\d+/i,vr={narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},yr={any:[/^v/i,/^n/i]},wr={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},kr={any:[/1/i,/2/i,/3/i,/4/i]},_r={narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},Cr={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Sr={narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},xr={any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},Tr={narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},Er={any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},Rr={ordinalNumber:$t({matchPattern:br,parsePattern:pr,valueCallback:c=>parseInt(c)}),era:K({matchPatterns:vr,defaultMatchWidth:"wide",parsePatterns:yr,defaultParseWidth:"any"}),quarter:K({matchPatterns:wr,defaultMatchWidth:"wide",parsePatterns:kr,defaultParseWidth:"any",valueCallback:c=>c+1}),month:K({matchPatterns:_r,defaultMatchWidth:"wide",parsePatterns:Cr,defaultParseWidth:"any"}),day:K({matchPatterns:Sr,defaultMatchWidth:"wide",parsePatterns:xr,defaultParseWidth:"any"}),dayPeriod:K({matchPatterns:Tr,defaultMatchWidth:"wide",parsePatterns:Er,defaultParseWidth:"any"})},Mr={code:"de",formatDistance:ir,formatLong:rr,formatRelative:lr,localize:fr,match:Rr,options:{weekStartsOn:1,firstWeekContainsDate:4}},Br={lessThanXSeconds:{one:"פחות משנייה",two:"פחות משתי שניות",other:"פחות מ־{{count}} שניות"},xSeconds:{one:"שנייה",two:"שתי שניות",other:"{{count}} שניות"},halfAMinute:"חצי דקה",lessThanXMinutes:{one:"פחות מדקה",two:"פחות משתי דקות",other:"פחות מ־{{count}} דקות"},xMinutes:{one:"דקה",two:"שתי דקות",other:"{{count}} דקות"},aboutXHours:{one:"כשעה",two:"כשעתיים",other:"כ־{{count}} שעות"},xHours:{one:"שעה",two:"שעתיים",other:"{{count}} שעות"},xDays:{one:"יום",two:"יומיים",other:"{{count}} ימים"},aboutXWeeks:{one:"כשבוע",two:"כשבועיים",other:"כ־{{count}} שבועות"},xWeeks:{one:"שבוע",two:"שבועיים",other:"{{count}} שבועות"},aboutXMonths:{one:"כחודש",two:"כחודשיים",other:"כ־{{count}} חודשים"},xMonths:{one:"חודש",two:"חודשיים",other:"{{count}} חודשים"},aboutXYears:{one:"כשנה",two:"כשנתיים",other:"כ־{{count}} שנים"},xYears:{one:"שנה",two:"שנתיים",other:"{{count}} שנים"},overXYears:{one:"יותר משנה",two:"יותר משנתיים",other:"יותר מ־{{count}} שנים"},almostXYears:{one:"כמעט שנה",two:"כמעט שנתיים",other:"כמעט {{count}} שנים"}},Ar=(c,s,e)=>{if(c==="xDays"&&(e!=null&&e.addSuffix)&&s<=2)return e.comparison&&e.comparison>0?s===1?"מחר":"מחרתיים":s===1?"אתמול":"שלשום";let t;const i=Br[c];return typeof i=="string"?t=i:s===1?t=i.one:s===2?t=i.two:t=i.other.replace("{{count}}",String(s)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?"בעוד "+t:"לפני "+t:t},Pr={full:"EEEE, d בMMMM y",long:"d בMMMM y",medium:"d בMMM y",short:"d.M.y"},Ir={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},$r={full:"{{date}} 'בשעה' {{time}}",long:"{{date}} 'בשעה' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Lr={date:se({formats:Pr,defaultWidth:"full"}),time:se({formats:Ir,defaultWidth:"full"}),dateTime:se({formats:$r,defaultWidth:"full"})},Or={lastWeek:"eeee 'שעבר בשעה' p",yesterday:"'אתמול בשעה' p",today:"'היום בשעה' p",tomorrow:"'מחר בשעה' p",nextWeek:"eeee 'בשעה' p",other:"P"},Ur=(c,s,e,t)=>Or[c],Dr={narrow:["לפנה״ס","לספירה"],abbreviated:["לפנה״ס","לספירה"],wide:["לפני הספירה","לספירה"]},Nr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["רבעון 1","רבעון 2","רבעון 3","רבעון 4"]},qr={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],wide:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"]},zr={narrow:["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],short:["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],abbreviated:["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],wide:["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"]},Fr={narrow:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"},abbreviated:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"},wide:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"}},Hr={narrow:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"בצהריים",evening:"בערב",night:"בלילה"},abbreviated:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"אחר הצהריים",evening:"בערב",night:"בלילה"},wide:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"אחר הצהריים",evening:"בערב",night:"בלילה"}},Wr={ordinalNumber:(c,s)=>{const e=Number(c);if(e<=0||e>10)return String(e);const t=String(s==null?void 0:s.unit),i=["year","hour","minute","second"].indexOf(t)>=0,n=["ראשון","שני","שלישי","רביעי","חמישי","שישי","שביעי","שמיני","תשיעי","עשירי"],a=["ראשונה","שנייה","שלישית","רביעית","חמישית","שישית","שביעית","שמינית","תשיעית","עשירית"],r=e-1;return i?a[r]:n[r]},era:Z({values:Dr,defaultWidth:"wide"}),quarter:Z({values:Nr,defaultWidth:"wide",argumentCallback:c=>c-1}),month:Z({values:qr,defaultWidth:"wide"}),day:Z({values:zr,defaultWidth:"wide"}),dayPeriod:Z({values:Fr,defaultWidth:"wide",formattingValues:Hr,defaultFormattingWidth:"wide"})},Gr=/^(\d+|(ראשון|שני|שלישי|רביעי|חמישי|שישי|שביעי|שמיני|תשיעי|עשירי|ראשונה|שנייה|שלישית|רביעית|חמישית|שישית|שביעית|שמינית|תשיעית|עשירית))/i,Zr=/^(\d+|רא|שנ|של|רב|ח|שי|שב|שמ|ת|ע)/i,Kr={narrow:/^ל(ספירה|פנה״ס)/i,abbreviated:/^ל(ספירה|פנה״ס)/i,wide:/^ל(פני ה)?ספירה/i},Vr={any:[/^לפ/i,/^לס/i]},jr={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^רבעון [1234]/i},Jr={any:[/1/i,/2/i,/3/i,/4/i]},Xr={narrow:/^\d+/i,abbreviated:/^(ינו|פבר|מרץ|אפר|מאי|יוני|יולי|אוג|ספט|אוק|נוב|דצמ)׳?/i,wide:/^(ינואר|פברואר|מרץ|אפריל|מאי|יוני|יולי|אוגוסט|ספטמבר|אוקטובר|נובמבר|דצמבר)/i},Yr={narrow:[/^1$/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^7/i,/^8/i,/^9/i,/^10/i,/^11/i,/^12/i],any:[/^ינ/i,/^פ/i,/^מר/i,/^אפ/i,/^מא/i,/^יונ/i,/^יול/i,/^אוג/i,/^ס/i,/^אוק/i,/^נ/i,/^ד/i]},Qr={narrow:/^[אבגדהוש]׳/i,short:/^[אבגדהוש]׳/i,abbreviated:/^(שבת|יום (א|ב|ג|ד|ה|ו)׳)/i,wide:/^יום (ראשון|שני|שלישי|רביעי|חמישי|שישי|שבת)/i},eo={abbreviated:[/א׳$/i,/ב׳$/i,/ג׳$/i,/ד׳$/i,/ה׳$/i,/ו׳$/i,/^ש/i],wide:[/ן$/i,/ני$/i,/לישי$/i,/עי$/i,/מישי$/i,/שישי$/i,/ת$/i],any:[/^א/i,/^ב/i,/^ג/i,/^ד/i,/^ה/i,/^ו/i,/^ש/i]},to={any:/^(אחר ה|ב)?(חצות|צהריים|בוקר|ערב|לילה|אחה״צ|לפנה״צ)/i},io={any:{am:/^לפ/i,pm:/^אחה/i,midnight:/^ח/i,noon:/^צ/i,morning:/בוקר/i,afternoon:/בצ|אחר/i,evening:/ערב/i,night:/לילה/i}},so=["רא","שנ","של","רב","ח","שי","שב","שמ","ת","ע"],no={ordinalNumber:$t({matchPattern:Gr,parsePattern:Zr,valueCallback:c=>{const s=parseInt(c,10);return isNaN(s)?so.indexOf(c)+1:s}}),era:K({matchPatterns:Kr,defaultMatchWidth:"wide",parsePatterns:Vr,defaultParseWidth:"any"}),quarter:K({matchPatterns:jr,defaultMatchWidth:"wide",parsePatterns:Jr,defaultParseWidth:"any",valueCallback:c=>c+1}),month:K({matchPatterns:Xr,defaultMatchWidth:"wide",parsePatterns:Yr,defaultParseWidth:"any"}),day:K({matchPatterns:Qr,defaultMatchWidth:"wide",parsePatterns:eo,defaultParseWidth:"any"}),dayPeriod:K({matchPatterns:to,defaultMatchWidth:"any",parsePatterns:io,defaultParseWidth:"any"})},ao={code:"he",formatDistance:Ar,formatLong:Lr,formatRelative:Ur,localize:Wr,match:no,options:{weekStartsOn:0,firstWeekContainsDate:1}},ro={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},oo=(c,s,e)=>{let t;const i=ro[c];return typeof i=="string"?t=i:s===1?t=i.one:t=i.other.replace("{{count}}",String(s)),e!=null&&e.addSuffix?e.comparison&&e.comparison>0?t+"内":t+"前":t},lo={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},co={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},ho={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},uo={date:se({formats:lo,defaultWidth:"full"}),time:se({formats:co,defaultWidth:"full"}),dateTime:se({formats:ho,defaultWidth:"full"})};function Bs(c,s,e){const t="eeee p";return tr(c,s,e)?t:c.getTime()>s.getTime()?"'下个'"+t:"'上个'"+t}const go={lastWeek:Bs,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:Bs,other:"PP p"},mo=(c,s,e,t)=>{const i=go[c];return typeof i=="function"?i(s,e,t):i},fo={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},bo={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},po={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},vo={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},yo={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},wo={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},ko={ordinalNumber:(c,s)=>{const e=Number(c);switch(s==null?void 0:s.unit){case"date":return e.toString()+"日";case"hour":return e.toString()+"时";case"minute":return e.toString()+"分";case"second":return e.toString()+"秒";default:return"第 "+e.toString()}},era:Z({values:fo,defaultWidth:"wide"}),quarter:Z({values:bo,defaultWidth:"wide",argumentCallback:c=>c-1}),month:Z({values:po,defaultWidth:"wide"}),day:Z({values:vo,defaultWidth:"wide"}),dayPeriod:Z({values:yo,defaultWidth:"wide",formattingValues:wo,defaultFormattingWidth:"wide"})},_o=/^(第\s*)?\d+(日|时|分|秒)?/i,Co=/\d+/i,So={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},xo={any:[/^(前)/i,/^(公元)/i]},To={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},Eo={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},Ro={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},Mo={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},Bo={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},Ao={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},Po={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},Io={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},$o={ordinalNumber:$t({matchPattern:_o,parsePattern:Co,valueCallback:c=>parseInt(c,10)}),era:K({matchPatterns:So,defaultMatchWidth:"wide",parsePatterns:xo,defaultParseWidth:"any"}),quarter:K({matchPatterns:To,defaultMatchWidth:"wide",parsePatterns:Eo,defaultParseWidth:"any",valueCallback:c=>c+1}),month:K({matchPatterns:Ro,defaultMatchWidth:"wide",parsePatterns:Mo,defaultParseWidth:"any"}),day:K({matchPatterns:Bo,defaultMatchWidth:"wide",parsePatterns:Ao,defaultParseWidth:"any"}),dayPeriod:K({matchPatterns:Po,defaultMatchWidth:"any",parsePatterns:Io,defaultParseWidth:"any"})},Lo={code:"zh-CN",formatDistance:oo,formatLong:uo,formatRelative:mo,localize:ko,match:$o,options:{weekStartsOn:1,firstWeekContainsDate:4}};class Oo{constructor(s){u(this,"_game");this._game=s}load(s){return new Promise((e,t)=>{if(s===null){e();return}this._game.saveImportDropboxText(s,i=>{if(i){t(i);return}e()})})}loadRaw(s){const e=this._game.compressLZData(JSON.stringify(s));return this.load(e)}}class $e extends he{constructor(s,e){super(s,e),this.element.addClass(ks.toolbar)}toString(){return`[${$e.name}#${this.componentId}]`}addChild(s){return super.addChild(s)}}class vi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${vi.name}`));const n=e.host.engine.i18n("state.title");super(e,t,new ue(e,n,{classes:[D.checked,D.setting],icon:A.State}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),{onRefresh:()=>{this._refreshGameList(),this._refreshStateList()}});u(this,"games",new Array);u(this,"states",new Array);u(this,"gameList");u(this,"stateList");u(this,"locale");this.gameList=new x(this,{hasDisableAll:!1,hasEnableAll:!1}),this.stateList=new x(this,{hasDisableAll:!1,hasEnableAll:!1}),this.locale=i.selected==="zh-CN"?Lo:i.selected==="he-IL"?ao:i.selected==="de-DE"?Mr:Ss,this.addChildContent(new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new S(this,this.setting.noConfirm,this.host.engine.i18n("state.noConfirm")),new he(this).addChild(new te(this)),new q(this,this.host.engine.i18n("state.local")),new $e(this).addChildren([new J(this,this.host.engine.i18n("state.import"),A.Import,{onClick:()=>{this.import()},title:this.host.engine.i18n("state.importTitle")})]),new he(this).addChild(new te(this)),new q(this,this.host.engine.i18n("state.localStates")),new $e(this).addChildren([new J(this,this.host.engine.i18n("state.store"),A.SaveAs,{onClick:()=>{this.storeState()},title:this.host.engine.i18n("state.storeState")}),new J(this,this.host.engine.i18n("copy"),A.Copy,{onClick:()=>{this.copyState().catch(R(console)),this.host.engine.imessage("state.copied.stateCurrent")},title:this.host.engine.i18n("state.copy.stateCurrent")}),new J(this,this.host.engine.i18n("state.new"),A.Draft,{onClick:()=>{this.storeStateFactoryDefaults(),this.host.engine.imessage("state.stored.state")},title:this.host.engine.i18n("state.storeFactory")}),new J(this,this.host.engine.i18n("state.exportAll"),A.Sync,{onClick:()=>{this.exportStateAll()},title:this.host.engine.i18n("state.exportAllTitle")})]),new he(this).addChild(this.stateList),new he(this).addChild(new te(this)),new q(this,this.host.engine.i18n("state.localGames")),new $e(this).addChildren([new J(this,this.host.engine.i18n("state.store"),A.SaveAs,{onClick:()=>{this.storeGame(),this.host.engine.imessage("state.stored.game")},title:this.host.engine.i18n("state.storeGame")}),new J(this,this.host.engine.i18n("copy"),A.Copy,{onClick:()=>{this.copyGame().catch(R(console)),this.host.engine.imessage("state.copied.gameCurrent")},title:this.host.engine.i18n("state.copy.gameCurrent")})]),new he(this).addChild(this.gameList),new S(this,this.setting.compress,this.host.engine.i18n("state.compress"))])),this._loadGames(),this._loadStates()}_loadGames(){let e=0,t=localStorage.getItem(`ks.game.${e}`);this.games.splice(0);try{for(;!m(t);){const i=JSON.parse(t);this.games.push(new yt(i)),t=localStorage.getItem(`ks.game.${++e}`)}}catch(i){console.error(...v(i))}}_storeGames(){let e=0,t=localStorage.getItem(`ks.game.${e}`);for(;!m(t);)localStorage.removeItem(`ks.game.${e}`),t=localStorage.getItem(`ks.game.${++e}`);e=0;for(const i of this.games)localStorage.setItem(`ks.game.${e++}`,JSON.stringify(i))}_loadStates(){let e=0,t=localStorage.getItem(`ks.state.${e}`);this.states.splice(0);try{for(;!m(t);){const i=JSON.parse(t);de.unknownAsEngineStateOrThrow(i.state),this.states.push(new yt(i)),t=localStorage.getItem(`ks.state.${++e}`)}}catch(i){console.error(...v(i))}}_storeStates(){let e=0,t=localStorage.getItem(`ks.state.${e}`);for(;!m(t);)localStorage.removeItem(`ks.state.${e}`),t=localStorage.getItem(`ks.state.${++e}`);e=0;for(const i of this.states)localStorage.setItem(`ks.state.${e++}`,JSON.stringify(i))}_refreshGameList(){this.gameList.removeChildren(this.gameList.children),this.gameList.addChildren(this.games.sort((e,t)=>new Date(e.unwrap().timestamp).getTime()-new Date(t.unwrap().timestamp).getTime()).map(e=>[e.unwrap(),e]).map(([e,t])=>new si(this,new Ce(this,`${e.label} (${Es(new Date(e.timestamp),{addSuffix:!0,locale:this.locale})})`,{onClick:()=>{this.loadGame(e.game).catch(R(console)),this.host.engine.imessage("state.loaded.game",[e.label])},title:new Date(e.timestamp).toLocaleString()})).addChildren([new M(this,{classes:[B.fillSpace]}),new ie(this,A.Save,this.host.engine.i18n("state.update.game"),{onClick:()=>{this.updateGame(t,this.host.game.save()),this.host.engine.imessage("state.updated.game",[e.label])}}),new ie(this,A.Edit,this.host.engine.i18n("state.edit.game"),{onClick:()=>{this.storeGame(e.game),this.deleteGame(t,!0),this.host.engine.imessage("state.updated.game",[e.label])}}),new ie(this,A.Copy,this.host.engine.i18n("state.copy.game"),{onClick:()=>{this.copyGame(e.game).catch(R(console)),this.host.engine.imessage("state.copied.game",[e.label])}}),new ie(this,A.Delete,this.host.engine.i18n("state.delete.game"),{onClick:()=>{this.deleteGame(t),this.host.engine.imessage("state.deleted.game",[e.label])}})])))}_refreshStateList(){this.stateList.removeChildren(this.stateList.children),this.stateList.addChildren(this.states.sort((e,t)=>new Date(e.unwrap().timestamp).getTime()-new Date(t.unwrap().timestamp).getTime()).map(e=>[e.unwrap(),e]).map(([e,t])=>new si(this,new Ce(this,`${e.label} (${Es(new Date(e.timestamp),{addSuffix:!0,locale:this.locale})})`,{onClick:()=>{this.loadState(e.state),this.host.engine.imessage("state.loaded.state",[e.label])},title:new Date(e.timestamp).toLocaleString()})).addChildren([new M(this,{classes:[B.fillSpace]}),new ie(this,A.Save,this.host.engine.i18n("state.update.state"),{onClick:()=>{this.updateState(t,this.host.engine.stateSerialize()),this.host.engine.imessage("state.updated.state",[e.label])}}),new ie(this,A.Edit,this.host.engine.i18n("state.edit.state"),{onClick:()=>{this.storeState(e.state),this.deleteState(t,!0),this.host.engine.imessage("state.updated.state",[e.label])}}),new ie(this,A.Copy,this.host.engine.i18n("state.copy.state"),{onClick:()=>{this.copyState(e.state).catch(R(console)),this.host.engine.imessage("state.copied.state",[e.label])}}),new ie(this,A.Delete,this.host.engine.i18n("state.delete.state"),{onClick:()=>{this.deleteState(t),this.host.engine.imessage("state.deleted.state",[e.label])}})])))}async copyState(e){await this.host.copySettings(e,!1)}async copyGame(e){const t=e??this.host.game.save(),i=JSON.stringify(t),n=this.setting.compress.enabled?this.host.game.compressLZData(i):i;await T.window.navigator.clipboard.writeText(n)}import(){const e=T.window.prompt(this.host.engine.i18n("state.loadPrompt"));if(m(e))return;const t=new Date().toDateString();let i=1;const n=()=>this.host.engine.i18n("state.importedState",[`${t} #${i++}`]),a=r=>{try{const h=de.decodeSettings(r);this.storeState(h,n()),this.host.engine.imessage("state.imported.state");return}catch{}try{const h=JSON.parse(r),d=de.decodeSettings(h.state);this.storeState(d,h.label),this.host.engine.imessage("state.imported.state");return}catch{}let o;try{o=JSON.parse(r)}catch{const d=this.host.game.decompressLZData(r);try{o=JSON.parse(d)}catch{if(r.match(/\r?\n/))return r.split(/\r?\n/).map(f=>void a(f));throw new fi("The provided input can not be parsed as anything we understand.")}}let l;if(!m(o)&&"ks"in o&&!m(o.ks)){const h=o.ks.state[0];l=this.storeState(h,n())??void 0,this.host.engine.imessage("state.imported.state"),o.ks=void 0}this.storeGame(o,l),this.host.engine.imessage("state.imported.game")};a(e)}storeGame(e,t){let i=t;return m(i)&&(i=T.window.prompt(this.host.engine.i18n("state.storeGame.prompt"))??void 0),m(i)?null:(i=(i===""?void 0:i)??this.host.engine.i18n("state.unlabeledGame"),i=i.substring(0,127),this.games.push(new yt({game:e??this.host.game.save(),label:i,timestamp:new Date().toISOString()})),this._storeGames(),this.requestRefresh(),i)}storeState(e,t){let i=t;return m(i)&&(i=T.window.prompt(this.host.engine.i18n("state.storeState.prompt"))??void 0),m(i)?null:(i=(i===""?void 0:i)??this.host.engine.i18n("state.unlabeledState"),i=i.substring(0,127),this.states.push(new yt({label:i,state:e??this.host.engine.stateSerialize(),timestamp:new Date().toISOString()})),this._storeStates(),this.requestRefresh(),i)}storeStateFactoryDefaults(){this.storeState(re.DEFAULT_STATE)}storeAutoSave(e){const t=this.states.find(i=>i.unwrap().label==="Auto-Save");if(!m(t)){console.info(...v("Updating existing Auto-Save...")),t.replace({...t.unwrap(),state:e,timestamp:new Date().toISOString()}),this._storeStates(),this.requestRefresh();return}console.info(...v("Storing new Auto-Save...")),this.storeState(e,"Auto-Save")}exportStateAll(){const e=this.states.map(a=>a.unwrap()).map(a=>JSON.stringify({label:a.label,state:de.encodeSettings(a.state,!1),timestamp:a.timestamp})).join(`
|
|
36
|
-
`),t=document.createElement("a"),i=new Blob([e],{type:"application/x-ndjson"}),n=URL.createObjectURL(i);t.setAttribute("href",n),t.setAttribute("download",`ks-local-states-${Date.now()}.ndjson`),t.click()}async loadGame(e){this._destructiveActionPrevented()||await new Oo(this.host.game).loadRaw(e)}loadState(e){this._destructiveActionPrevented()||(this.host.engine.stateLoad(e,!0),this.host.refreshEntireUserInterface())}loadAutoSave(){if(this.host.engine.isLoaded){console.info(...v("Not attempting to load Auto-Save, because a state is already loaded."));return}const e=this.states.find(t=>t.unwrap().label==="Auto-Save");if(m(e)){console.info(...v("No Auto-Save settings found."));return}console.info(...v("Loading Auto-Save...")),this.host.engine.stateLoad(e.unwrap().state,!1)}updateGame(e,t){if(this._destructiveActionPrevented())return;const i=e.unwrap().label;e.replace({game:t,label:i,timestamp:new Date().toISOString()}),this._storeGames(),this.requestRefresh()}updateState(e,t){if(this._destructiveActionPrevented())return;const i=e.unwrap().label;e.replace({label:i,state:t,timestamp:new Date().toISOString()}),this._storeStates(),this.requestRefresh()}deleteGame(e,t=!1){if(!t&&this._destructiveActionPrevented())return;const i=this.games.indexOf(e);i<0||(this.games.splice(i,1),this._storeGames(),this.requestRefresh())}deleteState(e,t=!1){if(!t&&this._destructiveActionPrevented())return;const i=this.states.indexOf(e);i<0||(this.states.splice(i,1),this._storeStates(),this.requestRefresh())}_destructiveActionPrevented(){return!this.setting.noConfirm.enabled&&!T.window.confirm(this.host.engine.i18n("state.confirmDestruction"))}}class Re extends _e{constructor(e,t,i,n){super(e,new ue(e,t,{classes:[D.checked,D.setting],icon:n==null?void 0:n.icon}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),n);u(this,"setting");this.setting=i}}class Uo extends Re{constructor(e,t,i){var r,o;const n=e.host.engine.i18n("ui.build");super(e,n,t,{icon:A.Bonfire,onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&Object.values(t.buildings).some(l=>l.enabled&&l.trigger<=0)}});u(this,"_buildings");this._buildings=[];for(const l of this.host.game.bld.buildingGroups){this._buildings.push(new q(this,l.title));for(const h of l.buildings){if(h==="unicornPasture"||m(this.setting.buildings[h]))continue;const d=this.host.game.bld.getBuildingExt(h).meta;if(m(d.stages))m(d.label)||this._buildings.push(this._getResetOption(this,this.setting.buildings[h],i,t,d.label));else{const g=(r=Object.values(this.setting.buildings).find(f=>f.baseBuilding===h))==null?void 0:r.building;this._buildings.push(this._getResetOption(this,this.setting.buildings[h],i,t,d.stages[0].label),this._getResetOption(this,this.setting.buildings[g],i,t,d.stages[1].label,!1,!0))}}l!==this.host.game.bld.buildingGroups[this.host.game.bld.buildingGroups.length-1]&&((o=this._buildings.at(-1))==null||o.element.addClass(ke.delimiter))}const a=new x(this);a.addChildren(this._buildings),this.addChildContent(a)}_getResetOption(e,t,i,n,a,r=!1,o=!1){const l=new H(e,t,i,a,{delimiter:r,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{l.triggerButton.inactive=!t.enabled||t.trigger===-1,l.triggerButton.ineffective=n.enabled&&t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const h=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(h!==void 0){if(h===""||h.startsWith("-")){t.trigger=-1,t.enabled=!1;return}t.trigger=Number(h)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:o});return l.triggerButton.element.addClass(C.lastHeadAction),l}}class Do extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.faith");super(s,i,e,{icon:A.Religion,onRefreshRequest:()=>{this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(a=>a.enabled&&a.trigger<=0)}}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]);const n=[...kt];this.addChildContent(new x(this).addChildren([new q(this,this.host.engine.i18n("$religion.panel.ziggurat.label")),this._getResetOption(this,this.setting.buildings.unicornPasture,t,e,this.host.engine.i18n("$buildings.unicornPasture.label")),...this.host.game.religion.zigguratUpgrades.filter(a=>n.includes(a.name)&&!m(this.setting.buildings[a.name])).map(a=>this._getResetOption(this,this.setting.buildings[a.name],t,e,a.label)),new te(this),...this.host.game.religion.zigguratUpgrades.filter(a=>!n.includes(a.name)&&!m(this.setting.buildings[a.name])).map(a=>this._getResetOption(this,this.setting.buildings[a.name],t,e,a.label)),new te(this),new q(this,this.host.engine.i18n("$religion.panel.orderOfTheSun.label")),...this.host.game.religion.religionUpgrades.filter(a=>!m(this.setting.buildings[a.name])).map(a=>{var r;return this._getResetOption(this,this.setting.buildings[a.name],t,e,a.label,a.name===((r=this.host.game.religion.religionUpgrades.at(-1))==null?void 0:r.name))}),new q(this,this.host.engine.i18n("$religion.panel.cryptotheology.label")),...this.host.game.religion.transcendenceUpgrades.filter(a=>!m(this.setting.buildings[a.name])).map(a=>this._getResetOption(this,this.setting.buildings[a.name],t,e,a.label))]))}_getResetOption(s,e,t,i,n,a=!1,r=!1){const o=new H(s,e,t,n,{delimiter:a,onCheck:()=>{s.host.engine.imessage("status.reset.check.enable",[n])},onRefreshRequest:()=>{o.triggerButton.inactive=!e.enabled||e.trigger===-1,o.triggerButton.ineffective=i.enabled&&e.enabled&&e.trigger===-1},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.absolute"),s.host.engine.i18n("ui.trigger.build.prompt",[n,e.trigger!==-1?s.host.renderAbsolute(e.trigger,t.selected):s.host.engine.i18n("ui.trigger.inactive")]),e.trigger!==-1?s.host.renderAbsolute(e.trigger):"",s.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1,e.enabled=!1;return}e.trigger=Number(l)}},onUnCheck:()=>{s.host.engine.imessage("status.reset.check.disable",[n])},upgradeIndicator:r});return o.triggerButton.element.addClass(C.lastHeadAction),o}}class No extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.resources");super(s,i,e,{icon:A.Resources,onRefreshRequest:()=>{this.expando.ineffective=e.enabled&&Object.values(e.resources).some(o=>o.enabled&&o.trigger<0)}}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]);const n=this.host.game.resPool.resources,a=[];let r=n[0].title;for(const o of[...n].sort((l,h)=>l.title.localeCompare(h.title,t.selected))){const l=this.setting.resources[o.name],h=new H(this,l,t,X(o.title),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o.title])},onRefreshRequest:()=>{h.triggerButton.inactive=!l.enabled||l.trigger===-1,h.triggerButton.ineffective=e.enabled&&l.enabled&&l.trigger===-1},onSetTrigger:async()=>{const d=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.float"),this.host.engine.i18n("ui.trigger.build.prompt",[o.title,l.trigger!==-1?this.host.renderAbsolute(l.trigger,t.selected):this.host.engine.i18n("ui.trigger.inactive")]),l.trigger!==-1?this.host.renderAbsolute(l.trigger):"",this.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){l.trigger=-1,l.enabled=!1;return}l.trigger=s.host.parseAbsolute(d)??l.trigger}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o.title])}});h.triggerButton.element.addClass(C.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(t.selected)&&r[0]!==o.title[0]&&h.element.addClass(B.splitter),a.push(h),r=o.title}this.addChildContent(new x(this).addChildren(a))}}class qo extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.space");super(s,i,e,{icon:A.Space,onRefreshRequest:()=>{this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(n=>n.enabled&&n.trigger<=0)}}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]),this.addChildContent(new x(this).addChildren(this.host.game.space.planets.filter(n=>0<n.buildings.length).flatMap((n,a,r)=>[new q(this,this.host.engine.labelForPlanet(n.name)),...n.buildings.filter(o=>!m(this.setting.buildings[o.name])).map((o,l,h)=>this._getResetOption(this,this.setting.buildings[o.name],t,e,o.label,a<r.length-1&&l===h.length-1))])))}_getResetOption(s,e,t,i,n,a=!1,r=!1){const o=new H(s,e,t,n,{delimiter:a,onCheck:()=>{s.host.engine.imessage("status.reset.check.enable",[n])},onRefreshRequest:()=>{o.triggerButton.inactive=!e.enabled||e.trigger===-1,o.triggerButton.ineffective=i.enabled&&e.enabled&&e.trigger===-1},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.absolute"),s.host.engine.i18n("ui.trigger.build.prompt",[n,e.trigger!==-1?s.host.renderAbsolute(e.trigger,t.selected):s.host.engine.i18n("ui.trigger.inactive")]),e.trigger!==-1?s.host.renderAbsolute(e.trigger):"",s.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1,e.enabled=!1;return}e.trigger=Number(l)}},onUnCheck:()=>{s.host.engine.imessage("status.reset.check.disable",[n])},upgradeIndicator:r});return o.triggerButton.element.addClass(C.lastHeadAction),o}}class zo extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.time");super(s,i,e,{icon:A.Time,onRefreshRequest:()=>{this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(n=>n.enabled&&n.trigger<=0)}}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]),this.addChildContent(new x(this).addChildren([new q(this,this.host.engine.i18n("$workshop.chronoforge.label")),...this.host.game.time.chronoforgeUpgrades.filter(n=>!m(this.setting.buildings[n.name])).map(n=>{var a;return this._getResetOption(this,this.setting.buildings[n.name],t,e,n.label,n.name===((a=this.host.game.time.chronoforgeUpgrades.at(-1))==null?void 0:a.name))}),new q(this,this.host.engine.i18n("$science.voidSpace.label")),...this.host.game.time.voidspaceUpgrades.filter(n=>n.name in this.setting.buildings).map(n=>this._getResetOption(this,this.setting.buildings[n.name],t,e,n.label))]))}_getResetOption(s,e,t,i,n,a=!1,r=!1){const o=new H(s,e,t,n,{delimiter:a,onCheck:()=>{s.host.engine.imessage("status.reset.check.enable",[n])},onRefreshRequest:()=>{o.triggerButton.inactive=!e.enabled||e.trigger===-1,o.triggerButton.ineffective=i.enabled&&e.enabled&&e.trigger===-1},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.absolute"),s.host.engine.i18n("ui.trigger.build.prompt",[n,e.trigger!==-1?s.host.renderAbsolute(e.trigger,t.selected):s.host.engine.i18n("ui.trigger.inactive")]),e.trigger!==-1?s.host.renderAbsolute(e.trigger):"",s.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1,e.enabled=!1;return}e.trigger=Number(l)}},onUnCheck:()=>{s.host.engine.imessage("status.reset.check.disable",[n])},upgradeIndicator:r});return o.triggerButton.element.addClass(C.lastHeadAction),o}}class Fo extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.upgrades");super(s,i,e,{icon:A.Workshop}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]);const n=this.host.game.workshop.upgrades.filter(l=>!m(this.setting.upgrades[l.name])),a=[];let r=n[0].label,o;for(const l of n.sort((h,d)=>h.label.localeCompare(d.label,t.selected))){const h=this.setting.upgrades[l.name],d=this._getResetOption(this,h,l.label);this.host.engine.localeSupportsFirstLetterSplits(t.selected)&&r[0]!==l.label[0]&&(m(o)||o.element.addClass(ke.delimiter),d.element.addClass(B.splitter)),o=d,a.push(d),r=l.label}this.addChildContent(new x(this).addChildren(a))}_getResetOption(s,e,t,i=!1,n=!1){return new S(s,e,t,{delimiter:i,onCheck:()=>{s.host.engine.imessage("status.reset.check.enable",[t])},onUnCheck:()=>{s.host.engine.imessage("status.reset.check.disable",[t])},upgradeIndicator:n})}}class Ho extends N{constructor(e,t,i){const n=e.host.engine.i18n("option.time.reset");super(e,t,new S(e,t,n,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[n])},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&[this._bonfireUi,this._religionUi,this._resourcesUi,this._spaceUi,this._timeUi,this._upgradesUi].some(r=>r.expando.ineffective)}});u(this,"_bonfireUi");u(this,"_religionUi");u(this,"_resourcesUi");u(this,"_spaceUi");u(this,"_timeUi");u(this,"_upgradesUi");const a=new x(this,{hasDisableAll:!1,hasEnableAll:!1});this._bonfireUi=new Uo(this,this.setting.bonfire,i),this._religionUi=new Do(this,this.setting.religion,i),this._resourcesUi=new No(this,this.setting.resources,i),this._spaceUi=new qo(this,this.setting.space,i),this._timeUi=new zo(this,this.setting.time,i),this._upgradesUi=new Fo(this,this.setting.upgrades,i),a.addChildren([this._bonfireUi,this._religionUi,this._resourcesUi,this._spaceUi,this._timeUi,this._upgradesUi]),this.addChildContent(a)}}class As extends x{constructor(e,t,i){super(e,i);u(this,"setting");this.setting=t;const n=(r,o)=>{const l=e.host.engine.labelForCycle(r);return new S(e,o,l,{onCheck:h=>{var d;(d=i==null?void 0:i.onCheckCycle)==null||d.call(i,l,o,h)},onUnCheck:h=>{var d;(d=i==null?void 0:i.onUnCheckCycle)==null||d.call(i,l,o,h)}})},a=[n("charon",this.setting.charon),n("umbra",this.setting.umbra),n("yarn",this.setting.yarn),n("helios",this.setting.helios),n("cath",this.setting.cath),n("redmoon",this.setting.redmoon),n("dune",this.setting.dune),n("piscine",this.setting.piscine),n("terminus",this.setting.terminus),n("kairo",this.setting.kairo)];this.addChildren(a),this.element[0].addEventListener("enableAll",()=>{for(const r of a)r.check(!0)}),this.element[0].addEventListener("disableAll",()=>{for(const r of a)r.uncheck(!0)})}}class Ut extends x{constructor(e,t,i){super(e,i);u(this,"setting");u(this,"spring");u(this,"summer");u(this,"autumn");u(this,"winter");this.setting=t;const n=(a,r)=>new S(this,r,a,{onCheck:o=>{var l;(l=i==null?void 0:i.onCheckSeason)==null||l.call(i,a,r,o)},onUnCheck:o=>{var l;(l=i==null?void 0:i.onUnCheckSeason)==null||l.call(i,a,r,o)}});this.spring=n(this.host.engine.i18n("$calendar.season.spring"),this.setting.spring),this.summer=n(this.host.engine.i18n("$calendar.season.summer"),this.setting.summer),this.autumn=n(this.host.engine.i18n("$calendar.season.autumn"),this.setting.autumn),this.winter=n(this.host.engine.i18n("$calendar.season.winter"),this.setting.winter),this.addChildren([this.spring,this.summer,this.autumn,this.winter])}toString(){return`[${Ut.name}#${this.componentId}]`}}class Wo extends N{constructor(s,e,t,i,n){const a=s.host.engine.i18n("option.time.activeHeatTransfer");super(s,e,new H(s,e,t,a,{onCheck:r=>{s.host.engine.imessage("status.auto.enable",[a])},onSetTrigger:async()=>{const r=await E.prompt(s,s.host.engine.i18n("ui.trigger.activeHeatTransfer.prompt"),s.host.engine.i18n("ui.trigger.activeHeatTransfer.promptTitle",[s.host.renderPercentage(e.trigger,t.selected,!0)]),s.host.renderPercentage(e.trigger),s.host.engine.i18n("ui.trigger.activeHeatTransfer.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(e.trigger=s.host.parsePercentage(r))},onUnCheck:r=>{s.host.engine.imessage("status.auto.disable",[a]),e.activeHeatTransferStatus.enabled=!1}}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled,this.settingItem.triggerButton.ineffective=n.enabled&&i.enabled&&e.enabled&&e.trigger===-1,this.expando.ineffective=n.enabled&&i.enabled&&e.enabled&&!Object.values(e.cycles).some(r=>r.enabled),e.activeHeatTransferStatus.enabled?(this.head.elementLabel.attr("data-ks-active-from","◎"),this.head.elementLabel.attr("data-ks-active-to","◎"),this.head.elementLabel.addClass(Pt.active)):this.head.elementLabel.removeClass(Pt.active)}}),this.addChildContent(new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new As(this,this.setting.cycles,{onCheckCycle:r=>{this.host.engine.imessage("time.heatTransfer.cycle.enable",[r])},onUnCheckCycle:r=>{this.host.engine.imessage("time.heatTransfer.cycle.disable",[r])}})]))}}class Go extends N{constructor(e,t,i,n){const a=e.host.engine.i18n("option.time.skip");super(e,t,new At(e,t,i,a,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[a])},onRefreshMax(){this.maxButton.updateLabel(e.host.renderAbsolute(t.max)),this.maxButton.element[0].title=t.max<0?e.host.engine.i18n("ui.max.timeSkip.titleInfinite",[a]):t.max===0?e.host.engine.i18n("ui.max.timeSkip.titleZero",[a]):e.host.engine.i18n("ui.max.timeSkip.title",[e.host.renderAbsolute(t.max),a])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):`${e.host.renderFloat(t.trigger,i.selected)} TC`])},onSetMax:async()=>{const r=await E.prompt(e,e.host.engine.i18n("ui.max.timeSkip.prompt"),e.host.engine.i18n("ui.max.timeSkip.promptTitle",[e.host.renderAbsolute(t.max,i.selected)]),e.host.renderAbsolute(t.max),e.host.engine.i18n("ui.max.timeSkip.promptExplainer"));if(r!==void 0){if(r===""||r.startsWith("-")){t.max=-1;return}r==="0"&&(t.enabled=!1),t.max=e.host.parseAbsolute(r)??t.max}},onSetTrigger:async()=>{const r=await E.prompt(e,e.host.engine.i18n("ui.trigger.timeSkip.prompt"),e.host.engine.i18n("ui.trigger.timeSkip.promptTitle",[e.host.renderAbsolute(t.trigger,i.selected)]),e.host.renderAbsolute(t.trigger),e.host.engine.i18n("ui.trigger.timeSkip.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(t.trigger=e.host.parseAbsolute(r)??t.trigger)},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[a])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.maxButton.inactive=!t.enabled||t.max===-1,this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.maxButton.ineffective=n.enabled&&t.enabled&&t.max===0,this._cycles.expando.ineffective=n.enabled&&t.enabled&&!Object.values(t.cycles).some(r=>r.enabled),this._seasons.expando.ineffective=n.enabled&&t.enabled&&!Object.values(t.seasons).some(r=>r.enabled)}});u(this,"_cycles");u(this,"_seasons");u(this,"_activeHeatTransferUI");this.settingItem.triggerButton.element.removeClass(C.lastHeadAction),this._cycles=new _e(this,new ue(this,X(this.host.engine.i18n("ui.cycles")),{classes:[D.checked,D.setting],icon:A.Cycles}).addChildrenHead([new M(this,{classes:[B.fillSpace]})])).addChildrenContent([new As(this,this.setting.cycles,{onCheckCycle:r=>{this.host.engine.imessage("time.skip.cycle.enable",[r])},onUnCheckCycle:r=>{this.host.engine.imessage("time.skip.cycle.disable",[r])}})]),this._seasons=new _e(this,new ue(this,X(this.host.engine.i18n("trade.seasons")),{classes:[D.checked,D.setting],icon:A.Seasons}).addChildrenHead([new M(this,{classes:[B.fillSpace]})])).addChildrenContent([new Ut(this,this.setting.seasons,{onCheckSeason:r=>{this.host.engine.imessage("time.skip.season.enable",[r])},onUnCheckSeason:r=>{this.host.engine.imessage("time.skip.season.disable",[r])}})]),this._activeHeatTransferUI=new Wo(this,this.setting.activeHeatTransfer,i,t,n),this.addChildContent(new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([this._cycles,this._seasons,new S(this,this.setting.ignoreOverheat,this.host.engine.i18n("option.time.skip.ignoreOverheat")),this._activeHeatTransferUI]))}}class yi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${yi.name}`));const n=e.host.engine.i18n("ui.timeCtrl");super(e,t,new S(e,t,n,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[n])},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&[this._timeSkipUi,this._resetUi].some(o=>o.expando.ineffective)}});u(this,"_items");u(this,"_accelerateTime");u(this,"_timeSkipUi");u(this,"_resetUi");const a=new x(this,{hasDisableAll:!1,hasEnableAll:!1}),r=this.host.engine.i18n("option.accelerate");this._accelerateTime=new H(this,this.setting.accelerateTime,i,r,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[r])},onRefresh:()=>{this._accelerateTime.triggerButton.inactive=!this.setting.accelerateTime.enabled,this._accelerateTime.triggerButton.ineffective=this.setting.enabled&&this.setting.accelerateTime.enabled&&this.setting.accelerateTime.trigger===-1},onSetTrigger:async()=>{const o=await E.prompt(this,this.host.engine.i18n("ui.trigger.accelerateTime.prompt"),this.host.engine.i18n("ui.trigger.accelerateTime.promptTitle",[this.host.renderPercentage(this.setting.accelerateTime.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.accelerateTime.trigger),this.host.engine.i18n("ui.trigger.accelerateTime.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting.accelerateTime.trigger=this.host.parsePercentage(o))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[r])}}),this._accelerateTime.triggerButton.element.addClass(C.lastHeadAction),this._timeSkipUi=new Go(this,this.setting.timeSkip,i,t),this._resetUi=new Ho(this,this.setting.reset,i),this._items=[this._accelerateTime,this._timeSkipUi,this._resetUi],a.addChildren(this._items),this.addChildContent(a)}}class wi extends N{constructor(s,e,t){console.debug(...v(`Constructing ${wi.name}`));const i=s.host.engine.i18n("ui.time");super(s,e,new H(s,e,t,i,{onCheck:n=>{s.host.engine.imessage("status.auto.enable",[i])},onRefresh:()=>{this.settingItem.triggerButton.inactive=!e.enabled||e.trigger===-1},onRefreshTrigger(){this.triggerButton.element[0].title=s.host.engine.i18n("ui.trigger.section",[e.trigger<0?s.host.engine.i18n("ui.trigger.section.inactive"):s.host.renderPercentage(e.trigger,t.selected,!0)])},onSetTrigger:async()=>{const n=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.percentage"),s.host.engine.i18n("ui.trigger.section.prompt",[i,e.trigger!==-1?s.host.renderPercentage(e.trigger,t.selected,!0):s.host.engine.i18n("ui.infinity")]),e.trigger!==-1?s.host.renderPercentage(e.trigger):"",s.host.engine.i18n("ui.trigger.section.promptExplainer"));if(n!==void 0){if(n===""||n.startsWith("-")){e.trigger=-1;return}e.trigger=s.host.parsePercentage(n)}},onUnCheck:n=>{s.host.engine.imessage("status.auto.disable",[i])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled||e.trigger<0,this.settingItem.triggerButton.ineffective=e.enabled&&e.trigger<0&&Object.values(e.buildings).some(n=>n.enabled&&0<n.max&&n.trigger<0),this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(n=>n.enabled&&(n.max===0||n.trigger<0&&e.trigger<0))}}),this.addChildrenContent([new x(this).addChildren([new q(this,this.host.engine.i18n("$workshop.chronoforge.label")),...this.host.game.time.chronoforgeUpgrades.filter(n=>!m(this.setting.buildings[n.name])).map(n=>{var a;return oe.getBuildOption(this,this.setting.buildings[n.name],t,this.setting,n.label,i,{delimiter:n.name===((a=this.host.game.time.chronoforgeUpgrades.at(-1))==null?void 0:a.name),renderLabelTrigger:!1})}),new q(this,this.host.engine.i18n("$science.voidSpace.label")),...this.host.game.time.voidspaceUpgrades.filter(n=>n.name in this.setting.buildings).map(n=>oe.getBuildOption(this,this.setting.buildings[n.name],t,this.setting,n.label,i,{renderLabelTrigger:!1}))]),new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new q(this,this.host.engine.i18n("ui.additional")),new S(this,this.setting.fixCryochambers,this.host.engine.i18n("option.fix.cry"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.fix.cry")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.fix.cry")])}})])])}}const Zo={buyButton:"_buyButton_10eul_1"};class ki extends Ce{constructor(e,t,i,n){super(e,void 0,{onClick:async()=>{const a=await E.prompt(e,e.host.engine.i18n("blackcoin.buy.prompt"),e.host.engine.i18n("blackcoin.buy.promptTitle",[e.host.renderAbsolute(t.buy,i.selected)]),e.host.renderAbsolute(t.buy),e.host.engine.i18n("blackcoin.buy.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.buy=-1;return}t.buy=e.host.parseAbsolute(a)??t.buy}},onRefresh:()=>{var a;this.element.prop("title",this.host.engine.i18n("blackcoin.buy.title",[this.host.renderAbsolute(this.setting.buy)])),this.element.text(this.host.engine.i18n("blackcoin.buy",[this.host.renderAbsolute(this.setting.buy)])),(a=n==null?void 0:n.onRefresh)==null||a.call(this)}});u(this,"setting");this.element.addClass(Zo.buyButton),this.setting=t}toString(){return`[${ki.name}#${this.componentId}]`}}const Ko={sellButton:"_sellButton_1tmvd_1"};class _i extends Ce{constructor(e,t,i,n){super(e,void 0,{onClick:async()=>{const a=await E.prompt(e,e.host.engine.i18n("blackcoin.sell.prompt"),e.host.engine.i18n("blackcoin.sell.promptTitle",[e.host.renderAbsolute(t.sell,i.selected)]),e.host.renderAbsolute(t.sell),e.host.engine.i18n("blackcoin.sell.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.sell=-1;return}t.sell=e.host.parseAbsolute(a)??t.sell}},onRefresh:()=>{var a;this.element.prop("title",this.host.engine.i18n("blackcoin.sell.title",[this.host.renderAbsolute(this.setting.sell)])),this.element.text(this.host.engine.i18n("blackcoin.sell",[this.host.renderAbsolute(this.setting.sell)])),(a=n==null?void 0:n.onRefresh)==null||a.call(n)}});u(this,"setting");this.element.addClass(Ko.sellButton),this.setting=t}toString(){return`[${_i.name}#${this.componentId}]`}}class Dt extends J{constructor(e,t,i){super(e,"",A.Eco,{border:!1,classes:[],onClick:()=>{var n,a;this.setting.limited=!this.setting.limited,this.setting.limited?(n=i==null?void 0:i.onLimitedCheck)==null||n.call(this):(a=i==null?void 0:i.onLimitedUnCheck)==null||a.call(this)},onRefresh:()=>{var n;this.updateTitle(this.host.engine.i18n(this.setting.limited?"ui.limited.on":"ui.limited.off")),this.setting.limited&&!this.inactive?this.element.removeClass(C.inactive):this.element.addClass(C.inactive),(n=i==null?void 0:i.onRefresh)==null||n.call(this)}});u(this,"setting");this.setting=t;for(const n of(i==null?void 0:i.classes)??[])this.element.addClass(n)}toString(){return`[${Dt.name}#${this.componentId}]`}}class Ci extends S{constructor(e,t,i,n){super(e,t,i,n);u(this,"limitedButton");this.limitedButton=new Dt(e,t,{border:!1,onLimitedCheck:n!=null&&n.onLimitedCheck?()=>{var a;return(a=n.onLimitedCheck)==null?void 0:a.call(this)}:void 0,onLimitedUnCheck:n!=null&&n.onLimitedUnCheck?()=>{var a;return(a=n.onLimitedUnCheck)==null?void 0:a.call(this)}:void 0}),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.limitedButton])}toString(){return`[${Ci.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Si extends Ci{constructor(e,t,i,n,a){super(e,t,n,a);u(this,"triggerButton");this.triggerButton=new Ee(e,t,i,{border:!1,onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a!=null&&a.onRefreshTrigger?()=>{var r;return(r=a.onRefreshTrigger)==null?void 0:r.call(this)}:void 0,renderLabel:(a==null?void 0:a.renderLabelTrigger)??!0}),this.addChildHead(this.triggerButton)}toString(){return`[${Si.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Nt extends S{constructor(e,t,i,n){super(e,t,i,n);u(this,"maxButton");this.maxButton=new Pe(e,t,{border:!1,onClick:async()=>{await n.onSetMax.call(this)},onRefresh:n!=null&&n.onRefreshMax?()=>{var a;return(a=n.onRefreshMax)==null?void 0:a.call(this)}:void 0}),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.maxButton])}toString(){return`[${Nt.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Vo extends N{constructor(s,e,t,i){const n=s.host.engine.i18n("option.embassies");super(s,e,new H(s,e,t,n,{onCheck:r=>{s.host.engine.imessage("status.auto.enable",[n])},onSetTrigger:async()=>{const r=await E.prompt(s,s.host.engine.i18n("ui.trigger.embassies.prompt"),s.host.engine.i18n("ui.trigger.embassies.promptTitle",[s.host.renderPercentage(e.trigger,t.selected,!0)]),s.host.renderPercentage(e.trigger),s.host.engine.i18n("ui.trigger.embassies.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(e.trigger=s.host.parsePercentage(r))},onUnCheck:r=>{s.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled,this.settingItem.triggerButton.ineffective=e.enabled&&e.trigger===-1,this.expando.ineffective=i.enabled&&e.enabled&&!Object.values(e.races).some(r=>r.enabled)}});const a=new x(this).addChildren(this.host.game.diplomacy.races.filter(r=>r.name!=="leviathans"&&!m(this.setting.races[r.name])).map(r=>this._makeEmbassySetting(this,this.setting.races[r.name],t.selected,e,r.title)));this.addChildContent(a)}_makeEmbassySetting(s,e,t,i,n){const a=async()=>{const o=await E.prompt(s,s.host.engine.i18n("ui.max.prompt.absolute"),s.host.engine.i18n("ui.max.build.prompt",[n,s.host.renderAbsolute(e.max,t)]),s.host.renderAbsolute(e.max),s.host.engine.i18n("ui.max.build.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){e.max=-1;return}o==="0"&&(e.enabled=!1),e.max=s.host.parseAbsolute(o)??e.max}},r=new Nt(s,e,n,{onCheck:o=>{if(s.host.engine.imessage("status.sub.enable",[n]),e.max===0&&!o)return a()},onRefresh:()=>{r.maxButton.inactive=!e.enabled||e.max===-1,r.maxButton.ineffective=i.enabled&&e.enabled&&e.max===0},onRefreshMax:()=>{r.maxButton.updateLabel(s.host.renderAbsolute(e.max)),r.maxButton.element[0].title=e.max<0?s.host.engine.i18n("ui.max.embassy.titleInfinite",[n]):e.max===0?s.host.engine.i18n("ui.max.embassy.titleZero",[n]):s.host.engine.i18n("ui.max.embassy.title",[s.host.renderAbsolute(e.max),n])},onSetMax:a,onUnCheck:()=>{s.host.engine.imessage("status.sub.disable",[n])}});return r.maxButton.element.addClass(C.lastHeadAction),r}}class xi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${xi.name}`));const n=e.host.engine.i18n("ui.trade");super(e,t,new H(e,t,i,n,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[n])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const o=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[n,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(o)}},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.races).some(o=>o.enabled&&o.trigger<0),this.expando.ineffective=t.enabled&&Object.values(this._racePanels).some(o=>o.expando.ineffective||o.settingItem.triggerButton.ineffective)}});u(this,"_racePanels");this._racePanels=this.host.game.diplomacy.races.filter(o=>!m(this.setting.races[o.name])).map(o=>{var l;return this._getTradeOption(this,this.setting.races[o.name],i,t,o.title,n,o.name===((l=this.host.game.diplomacy.races.at(-2))==null?void 0:l.name))});const a=new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren(this._racePanels);a.addChild(new S(this,this.setting.feedLeviathans,this.host.engine.i18n("option.autofeed"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.autofeed")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.autofeed")])}})),a.addChild(new N(this,this.setting.tradeBlackcoin,new H(this,this.setting.tradeBlackcoin,i,this.host.engine.i18n("option.crypto"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.crypto")])},onRefreshRequest(){this.triggerButton.inactive=!this.setting.enabled||this.setting.trigger===-1},onSetTrigger:async()=>{const o=await E.prompt(this,this.host.engine.i18n("ui.trigger.crypto.promptTitle"),this.host.engine.i18n("ui.trigger.crypto.prompt",[this.host.renderAbsolute(this.setting.tradeBlackcoin.trigger,i.selected)]),this.host.renderAbsolute(this.setting.tradeBlackcoin.trigger),this.host.engine.i18n("ui.trigger.crypto.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting.tradeBlackcoin.trigger=this.host.parseAbsolute(o)??this.setting.tradeBlackcoin.trigger)},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.crypto")])}})).addChildrenContent([new ki(this,this.setting.tradeBlackcoin,i),new _i(this,this.setting.tradeBlackcoin,i)])),this.addChildContent(a);const r=new x(this,{hasDisableAll:!1,hasEnableAll:!1});r.addChild(new q(this,this.host.engine.i18n("ui.additional"))),r.addChild(new Vo(this,this.setting.buildEmbassies,i,t)),r.addChild(new S(this,this.setting.unlockRaces,this.host.engine.i18n("ui.upgrade.races"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("ui.upgrade.races")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("ui.upgrade.races")])}})),this.addChildContent(r)}_getTradeOption(e,t,i,n,a,r,o=!1,l=!1){const h=new Si(e,t,i,a,{delimiter:o,onCheck:()=>{e.host.engine.imessage("status.sub.enable",[a])},onLimitedCheck:()=>{e.host.engine.imessage("trade.limited",[a])},onLimitedUnCheck:()=>{e.host.engine.imessage("trade.unlimited",[a])},onRefreshTrigger:()=>{h.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?n.trigger<0?e.host.engine.i18n("ui.trigger.section.blocked",[r]):`${e.host.renderPercentage(n.trigger,i.selected,!0)} (${e.host.engine.i18n("ui.trigger.section.inherited")})`:e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const g=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[a,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.trigger.section.inherited")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(g!==void 0){if(g===""||g.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(g)}},onUnCheck:()=>{e.host.engine.imessage("status.sub.disable",[a])},renderLabelTrigger:!1,upgradeIndicator:l}),d=new N(e,t,h,{onRefreshRequest:()=>{h.limitedButton.inactive=!t.enabled||!t.limited,h.triggerButton.inactive=!t.enabled||t.trigger===-1,h.triggerButton.ineffective=n.enabled&&t.enabled&&n.trigger===-1&&t.trigger===-1,d.expando.ineffective=n.enabled&&t.enabled&&!t.seasons.autumn.enabled&&!t.seasons.spring.enabled&&!t.seasons.summer.enabled&&!t.seasons.winter.enabled}}).addChildContent(new Ut(e,t.seasons,{onCheckSeason:g=>{e.host.engine.imessage("trade.season.enable",[X(a),g])},onUnCheckSeason:g=>{e.host.engine.imessage("trade.season.disable",[X(a),g])}}));return d}}const Ti={spacer:"_spacer_auis8_44",ui:"_ui_auis8_49",showActivity:"_showActivity_auis8_66"};class Ei extends N{constructor(e,t,i){console.debug(...v(`Constructing ${Ei.name}`));const n=e.host.engine.i18n("ui.distribute");super(e,t,new S(e,t,n,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[n])},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&Object.values(t.jobs).some(o=>o.enabled&&o.max===0)}});u(this,"_hunt");u(this,"_festivals");u(this,"_promoteKittens");u(this,"_promoteLeader");u(this,"_electLeader");const a=new x(this).addChildren(this.host.game.village.jobs.filter(o=>!m(this.setting.jobs[o.name])).map(o=>this._getDistributeOption(this.setting.jobs[o.name],i.selected,t,o.title)));this.addChildContent(a);const r=new x(this,{hasDisableAll:!1,hasEnableAll:!1});r.addChild(new q(this,this.host.engine.i18n("ui.additional"))),this._hunt=new H(this,this.setting.hunt,i,this.host.engine.i18n("option.hunt"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.hunt")])},onRefreshRequest:()=>{this._hunt.triggerButton.inactive=!this.setting.hunt.enabled,this._hunt.triggerButton.ineffective=this.setting.enabled&&this.setting.hunt.enabled&&this.setting.hunt.trigger===-1},onSetTrigger:async()=>{const o=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.hunt.prompt",[this.host.renderPercentage(this.setting.hunt.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.hunt.trigger),this.host.engine.i18n("ui.trigger.hunt.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting.hunt.trigger=this.host.parsePercentage(o))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.hunt")])}}),this._hunt.triggerButton.element.addClass(C.lastHeadAction),r.addChild(this._hunt),this._festivals=new S(this,this.setting.holdFestivals,this.host.engine.i18n("option.festival"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.festival")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.festival")])}}),r.addChild(this._festivals),this._promoteKittens=new H(this,this.setting.promoteKittens,i,this.host.engine.i18n("option.promotekittens"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.promotekittens")])},onRefresh:()=>{this._promoteKittens.triggerButton.inactive=!this.setting.promoteKittens.enabled,this._promoteKittens.triggerButton.ineffective=this.setting.enabled&&this.setting.promoteKittens.enabled&&this.setting.promoteKittens.trigger===-1},onSetTrigger:async()=>{const o=await E.prompt(this,this.host.engine.i18n("ui.trigger.promoteKittens.promptTitle"),this.host.engine.i18n("ui.trigger.promoteKittens.prompt",[this.host.renderPercentage(this.setting.promoteKittens.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.promoteKittens.trigger),this.host.engine.i18n("ui.trigger.promoteKittens.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting.promoteKittens.trigger=this.host.parsePercentage(o))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.promotekittens")])}}),this._promoteKittens.triggerButton.element.addClass(C.lastHeadAction),r.addChild(this._promoteKittens),this._promoteLeader=new S(this,this.setting.promoteLeader,this.host.engine.i18n("option.promote"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.promote")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.promote")])}}),r.addChild(this._promoteLeader);for(const o of this.setting.electLeader.job.options)o.value==="any"?o.label=this.host.engine.i18n("option.elect.job.any"):o.label=this.host.engine.i18n(`$village.job.${o.value}`);for(const o of this.setting.electLeader.trait.options)o.label=this.host.engine.i18n(`$village.trait.${o.value}`);this._electLeader=new S(this,this.setting.electLeader,this.host.engine.i18n("option.elect"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.elect")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.elect")])}}).addChildren([new Ie(this,this.host.engine.i18n("option.elect.job"),this.setting.electLeader.job),new Ie(this,this.host.engine.i18n("option.elect.trait"),this.setting.electLeader.trait)]),r.addChild(this._electLeader),this.addChildContent(r)}_getDistributeOption(e,t,i,n,a=!1){const r=async()=>{const l=await E.prompt(this,this.host.engine.i18n("ui.max.distribute.prompt",[n]),this.host.engine.i18n("ui.max.distribute.promptTitle",[n,this.host.renderAbsolute(e.max,t)]),this.host.renderAbsolute(e.max),this.host.engine.i18n("ui.max.distribute.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.max=-1;return}l==="0"&&(e.enabled=!1),e.max=this.host.parseAbsolute(l)??e.max}},o=new Nt(this,e,n,{delimiter:a,onCheck:l=>{if(this.host.engine.imessage("status.sub.enable",[n]),e.max===0&&!l)return r()},onRefresh:()=>{o.maxButton.inactive=!e.enabled||e.max===-1,o.maxButton.ineffective=i.enabled&&e.enabled&&e.max===0},onRefreshMax:()=>{o.maxButton.updateLabel(this.host.renderAbsolute(e.max)),o.maxButton.element[0].title=e.max<0?this.host.engine.i18n("ui.max.distribute.titleInfinite",[n]):e.max===0?this.host.engine.i18n("ui.max.distribute.titleZero",[n]):this.host.engine.i18n("ui.max.distribute.title",[this.host.renderAbsolute(e.max),n])},onSetMax:r,onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[n])}});return o.maxButton.element.addClass(C.lastHeadAction),o}}class Ri extends S{constructor(e,t,i,n,a){super(e,t,n,a);u(this,"limitedButton");u(this,"maxButton");u(this,"triggerButton");this.limitedButton=new Dt(e,t,{...a,classes:[Et.headAction]}),this.maxButton=new Pe(e,t,{alignment:"right",border:!1,classes:[C.headAction],onClick:()=>a.onSetMax.call(this),onRefresh:a!=null&&a.onRefreshMax?()=>{var r;return(r=a.onRefreshMax)==null?void 0:r.call(this)}:void 0}),this.triggerButton=new Ee(e,t,i,{border:!1,classes:[C.lastHeadAction],onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a!=null&&a.onRefreshTrigger?()=>{var r;return(r=a.onRefreshTrigger)==null?void 0:r.call(this)}:void 0,renderLabel:(a==null?void 0:a.renderLabelTrigger)??!0}),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.limitedButton,this.maxButton,this.triggerButton])}toString(){return`[${Ri.name}#${this.componentId}]`}}class jo extends N{constructor(s,e,t){const i=s.host.engine.i18n("ui.upgrade.upgrades");super(s,e,new H(s,e,t,i,{onCheck:l=>{s.host.engine.imessage("status.auto.enable",[i])},onRefreshTrigger(){this.triggerButton.element[0].title=s.host.engine.i18n("ui.trigger",[e.trigger===-1?s.host.engine.i18n("ui.trigger.section.inactive"):s.host.renderPercentage(e.trigger,t.selected,!0)])},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.percentage"),s.host.engine.i18n("ui.trigger.section.prompt",[i,e.trigger!==-1?s.host.renderPercentage(e.trigger,t.selected,!0):s.host.engine.i18n("ui.infinity")]),e.trigger!==-1?s.host.renderPercentage(e.trigger):"",s.host.engine.i18n("ui.trigger.section.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1;return}e.trigger=s.host.parsePercentage(l)}},onUnCheck:l=>{s.host.engine.imessage("status.auto.disable",[i])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled||e.trigger===-1,this.settingItem.triggerButton.ineffective=e.enabled&&e.trigger<0&&Object.values(e.upgrades).some(l=>l.enabled&&l.trigger<0),this.expando.ineffective=e.enabled&&!Object.values(e.upgrades).some(l=>l.enabled)}});const n=this.host.game.workshop.upgrades.filter(l=>!m(this.setting.upgrades[l.name])),a=[];let r=n[0].label,o;for(const l of n.sort((h,d)=>h.label.localeCompare(d.label,t.selected))){const h=this.setting.upgrades[l.name],d=new H(this,h,t,l.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[l.label])},onRefreshRequest:()=>{d.triggerButton.inactive=!h.enabled||h.trigger===-1,d.triggerButton.ineffective=e.enabled&&h.enabled&&e.trigger===-1&&h.trigger===-1},onRefreshTrigger:()=>{d.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[h.trigger<0?e.trigger<0?this.host.engine.i18n("ui.trigger.build.blocked",[i]):`${this.host.renderPercentage(e.trigger,t.selected,!0)} (${this.host.engine.i18n("ui.trigger.section.inherited")})`:this.host.renderPercentage(h.trigger,t.selected,!0)])},onSetTrigger:async()=>{const g=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[i,h.trigger!==-1?this.host.renderPercentage(h.trigger,t.selected,!0):this.host.engine.i18n("ui.trigger.section.inherited")]),h.trigger!==-1?this.host.renderPercentage(h.trigger):"",this.host.engine.i18n("ui.trigger.section.promptExplainer"));if(g!==void 0){if(g===""||g.startsWith("-")){h.trigger=-1;return}h.trigger=this.host.parsePercentage(g)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[l.label])},renderLabelTrigger:!1});d.triggerButton.element.addClass(C.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(t.selected)&&r[0]!==l.label[0]&&(m(o)||o.element.addClass(ke.delimiter),d.element.addClass(B.splitter)),o=d,a.push(d),r=l.label}this.addChildContent(new x(this).addChildren(a))}}class Mi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${Mi.name}`));const n=e.host.engine.i18n("ui.craft");super(e,t,new H(e,t,i,n,{onCheck:l=>{e.host.engine.imessage("status.auto.enable",[n])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const l=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[n,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(l)}},onUnCheck:l=>{e.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.resources).some(l=>l.enabled&&l.max!==0&&l.trigger<0)}});u(this,"_crafts");let a=[];game.challenges.getChallenge("ironWill").active||(this.setting.resources.bloodstone.enabled=!1,this.setting.resources.tMythril.enabled=!1,a=["bloodstone","tMythril"]);const r=this.host.game.workshop.crafts.filter(l=>!a.includes(l.name)&&!m(this.setting.resources[l.name])).map(l=>[this.setting.resources[l.name],X(l.label)]);this._crafts=[];for(const[l,h]of r){const d=async()=>{const f=await E.prompt(this,this.host.engine.i18n("ui.max.craft.prompt",[h]),this.host.engine.i18n("ui.max.craft.promptTitle",[h,this.host.renderAbsolute(l.max,i.selected)]),this.host.renderAbsolute(l.max),this.host.engine.i18n("ui.max.craft.promptExplainer"));if(f!==void 0){if(f===""||f.startsWith("-")){l.max=-1;return}f==="0"&&(l.enabled=!1),l.max=this.host.parseAbsolute(f)??l.max}},g=new Ri(this,l,i,h,{delimiter:l.resource==="kerosene"||l.resource==="blueprint",onCheck:f=>{if(this.host.engine.imessage("status.sub.enable",[h]),l.max===0&&!f)return d()},onLimitedCheck:()=>{this.host.engine.imessage("craft.limited",[h])},onLimitedUnCheck:()=>{this.host.engine.imessage("craft.unlimited",[h])},onRefreshMax:()=>{g.maxButton.updateLabel(this.host.renderAbsolute(l.max)),g.maxButton.element[0].title=l.max<0?this.host.engine.i18n("ui.max.craft.titleInfinite",[h]):l.max===0?this.host.engine.i18n("ui.max.craft.titleZero",[h]):this.host.engine.i18n("ui.max.craft.title",[this.host.renderAbsolute(l.max),h])},onRefreshRequest:()=>{g.limitedButton.inactive=!l.enabled||!l.limited,g.maxButton.inactive=!l.enabled||l.max===-1,g.maxButton.ineffective=t.enabled&&l.enabled&&l.max===0,g.triggerButton.inactive=!l.enabled||l.trigger===-1,g.triggerButton.ineffective=t.enabled&&l.enabled&&t.trigger===-1&&l.trigger===-1},onRefreshTrigger:()=>{g.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[l.trigger<0?t.trigger<0?this.host.engine.i18n("ui.trigger.build.blocked",[h]):`${this.host.renderPercentage(t.trigger,i.selected,!0)} (${this.host.engine.i18n("ui.trigger.build.inherited")})`:this.host.renderPercentage(l.trigger,i.selected,!0)])},onSetMax:d,onSetTrigger:async()=>{const f=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[h,l.trigger!==-1?this.host.renderPercentage(l.trigger,i.selected,!0):this.host.engine.i18n("ui.trigger.build.inherited")]),l.trigger!==-1?this.host.renderPercentage(l.trigger):"",this.host.engine.i18n("ui.trigger.build.promptExplainer"));if(f!==void 0){if(f===""||f.startsWith("-")){l.trigger=-1;return}l.trigger=this.host.parsePercentage(f)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[h])},renderLabelTrigger:!1});this._crafts.push(g),l.resource==="ship"&&this._crafts.push(new S(this,this.setting.shipOverride,this.host.engine.i18n("option.shipOverride"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.shipOverride")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.shipOverride")])},upgradeIndicator:!0}))}const o=new x(this,{onReset:()=>{this.setting.load({resources:new xt().resources})}}).addChildren(this._crafts);this.addChildContent(o),this.addChildContent(new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new jo(this,this.setting.unlockUpgrades,i)]))}}class Le extends G{constructor(e){console.debug(...v(`Constructing ${Le.name}`));super({host:e},{});u(this,"showActivity");u(this,"_engineUi");u(this,"_sections");u(this,"stateManagementUi");u(this,"_refreshTimeout");const t=e.engine;this._engineUi=new la(this,t.settings),this.stateManagementUi=new vi(this,t.settings.states,t.settings.locale),this._sections=[new ii(this,t.bonfireManager.settings,t.settings.locale),new Ei(this,t.villageManager.settings,t.settings.locale),new gi(this,t.scienceManager.settings,t.settings.locale),new Mi(this,t.workshopManager.settings,t.settings.locale),new di(this,t.settings.resources,t.settings.locale),new xi(this,t.tradeManager.settings,t.settings.locale),new ci(this,t.religionManager.settings,t.settings.locale),new mi(this,t.spaceManager.settings,t.settings.locale),new wi(this,t.timeManager.settings,t.settings.locale),new yi(this,t.timeControlManager.settings,t.settings.locale),new li(this,t.settings.filters),this.stateManagementUi,new ri(this,t.settings,t.settings.locale)],this.parent=this,this.element=$("<div/>").addClass("kitten-scientists").addClass(Ti.ui);for(const h of[this._engineUi,...this._sections])this.addChild(h);const i=$("<ul/>");i.append(this._engineUi.element);for(const h of this._sections)i.append(h.element);this.element.append(i);const n=this._engineUi.expando;let a=!1;n.element.on("click",()=>{a=!a;for(const h of this._sections)h.toggle(a,!0)});let r=0;for(const h of this._sections)h.element[0].addEventListener("panelHidden",()=>{--r,r===0&&(a=!1),a||n.setCollapsed()}),h.element[0].addEventListener("panelShown",()=>{++r,a=!0,n.setExpanded()});this.showActivity=$("<span/>",{html:`<svg style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor"><path d="${A.Summary}"/></svg>`,title:e.engine.i18n("summary.show")}).addClass(Ti.showActivity),this.showActivity.on("click",()=>{e.engine.displayActivitySummary()}),$("#clearLog").prepend(this.showActivity);const o=t.settings.ksColumn.enabled&&game.colorScheme!=="sleek";o?$("#rightColumn").after(`<div id="ksColumn" class="column"><span class="${Ti.spacer}"></span></div>`):$("#ksColumn").remove();const l=$(o?"#ksColumn":"#rightColumn");if(l.length===0){const h=$("#optionsPage .full-screen-position .page .page-content");h.length===0?console.warn(...v("Unable to find right column to inject UI into. Running headless.")):(h.append(this.element),this.element.attr("style","border-top:1px solid grey; padding:15px"))}else l.prepend(this.element);this.element=this.element,this._needsRefresh=!1}toString(){return`[${Le.name}#${this.componentId}]`}destroy(){this._refreshTimeout!==void 0&&(T.window.clearTimeout(this._refreshTimeout),this._refreshTimeout=void 0),this.showActivity.remove(),this.element.remove()}requestRefresh(e=!0,t=0,i=!1){if(this._needsRefresh){this._refreshTimeout===void 0&&console.error(...v("User interface claims to have a refresh pending, but there isn't."));return}this._refreshTimeout=T.window.setTimeout(()=>{const[n,a]=ye(()=>this.refresh());console.info(...v(`UI refresh took ${na(a)}.`)),this._refreshTimeout=void 0},0),super.requestRefresh(!0,t,!1)}forceFullRefresh(){console.warn(...v("Forcing refresh on all user interface components...")),this.requestRefresh(),console.warn(...v("Refresh on all user interface components enforced."))}}const Oe=(c="")=>{if(m("0.0.0-ci"))throw Error("Build error: RELEASE_VERSION is not defined.");return`${c}0.0.0-ci`};class de{constructor(s,e,t="en",i){u(this,"game");u(this,"i18nEngine");u(this,"_userInterface");u(this,"engine");u(this,"_gameBeforeSaveHandle");u(this,"_serverLoadHandle");u(this,"_saveManager",{load:s=>{console.info(...v("Looking for Kitten Scientists engine state in save data..."));const e=T.tryEngineStateFromSaveData("ks",s);if(!e){console.info(...v("The Kittens Game save data did not contain a script state."));return}console.info(...v("Found Kitten Scientists engine state in save data.")),this.engine.stateLoad(e),this.refreshEntireUserInterface()},resetState:()=>null,save:s=>{}});var n;console.info(...v(`Kitten Scientists ${Oe("v")} constructed. Checking for previous instances...`)),"kittenScientists"in T.window&&(console.warn(...v("Detected existing KS instance. Trying to unload it...")),(n=T.window.kittenScientists)==null||n.unload()),console.info(...v("You are on the 'fixed' release channel.")),this.game=s,this.i18nEngine=e;try{this.engine=new re(this,t),this._userInterface=new Le(this)}catch(a){throw console.error(...v("Failed to construct core components.",a)),typeof GM<"u"&&console.warn(...v("Detected running in Greasemonkey.")),a}m(i)?this._userInterface.stateManagementUi.loadAutoSave():this.setSettings(i)}rebuildUi(){this._userInterface.destroy(),this._userInterface=new Le(this),this._userInterface.forceFullRefresh()}validateGame(){Qt.validateGame(this.game,this.engine.scienceManager.settings),St.validateGame(this.game,this.engine.spaceManager.settings),xt.validateGame(this.game,this.engine.workshopManager.settings)}unload(){console.warn(...v("Unloading Kitten Scientists...")),this.engine.stop(),this._userInterface.destroy(),$("#ks-styles").remove(),this._gameBeforeSaveHandle!==void 0&&(T.window.dojo.unsubscribe(this._gameBeforeSaveHandle),this._gameBeforeSaveHandle=void 0),this._serverLoadHandle!==void 0&&(T.window.dojo.unsubscribe(this._serverLoadHandle),this._gameBeforeSaveHandle=void 0);const s=this.game.managers.indexOf(this._saveManager);-1<s&&this.game.managers.splice(s,1),T.window.kittenScientists=void 0,console.warn(...v("Kitten Scientists have been unloaded!"))}run(){this.game.console.maxMessages=1e3,this.refreshEntireUserInterface(),this.engine.settings.enabled&&this.engine.start(!0),this.engine.imessage("status.ks.init"),this.runUpdateCheck().catch(R(console)),this._gameBeforeSaveHandle!==void 0&&(T.window.dojo.unsubscribe(this._gameBeforeSaveHandle),this._gameBeforeSaveHandle=void 0),this._gameBeforeSaveHandle=T.window.dojo.subscribe("game/beforesave",s=>{console.info(...v("Injecting Kitten Scientists engine state into save data..."));const e=this.getSettings();s.ks={state:[e]},this._userInterface.stateManagementUi.storeAutoSave(e),document.dispatchEvent(new CustomEvent("ks.reportSavegame",{detail:s}))}),this._serverLoadHandle!==void 0&&(T.window.dojo.unsubscribe(this._serverLoadHandle),this._gameBeforeSaveHandle=void 0),this._serverLoadHandle=T.window.dojo.subscribe("server/load",s=>{const e=T.tryEngineStateFromSaveData("ks",s);if(!e){console.info(...v("The Kittens Game save data did not contain a script state. Trying to load Auto-Save settings..."));return}console.info(...v("Found! Loading settings...")),this.engine.stateLoad(e)})}async runUpdateCheck(){{console.debug(...v("No update check on 'fixed' release channel."));return}}refreshEntireUserInterface(){console.info(...v("Requesting entire user interface to be refreshed.")),this._userInterface.forceFullRefresh()}parseFloat(s){if(s===null||s==="")return null;const e=/[KMGTP]$/i.test(s),t=s.substring(0,s.length-(e?1:0));let i=s.includes("e")||e?Number.parseFloat(t):Number.parseInt(t);if(e){const n=s.substring(s.length-1).toUpperCase();i=i*1e3**["","K","M","G","T","P"].indexOf(n)}return(i===Number.POSITIVE_INFINITY||i<0)&&(i=-1),i}parseAbsolute(s){const e=this.parseFloat(s);return e!==null?Math.round(e):null}parsePercentage(s){const e=s.trim().replace(/%$/,"");return Math.max(0,Math.min(1,Number.parseFloat(e)/100))}renderAbsolute(s,e="invariant"){return s<0||s===Number.POSITIVE_INFINITY?"∞":e!=="invariant"&&Math.floor(Math.log10(s))<9?new Intl.NumberFormat(e,{maximumFractionDigits:0,style:"decimal"}).format(s):this.game.getDisplayValueExt(s,!1,!1)}renderPercentage(s,e="invariant",t){return s<0||s===Number.POSITIVE_INFINITY?"∞":e!=="invariant"?new Intl.NumberFormat(e,{style:"percent"}).format(s):`${this.game.getDisplayValueExt(s*100,!1,!1)}${t?"%":""}`}renderFloat(s,e="invariant"){return s<0||s===Number.POSITIVE_INFINITY?"∞":e!=="invariant"?new Intl.NumberFormat(e,{style:"decimal"}).format(s):this.game.getDisplayValueExt(s,!1,!1)}static encodeSettings(s,e=!0){const t=JSON.stringify(s);return e?T.window.LZString.compressToBase64(t):t}static decodeSettings(s){try{const i=JSON.parse(s);return de.unknownAsEngineStateOrThrow(i)}catch{}if(s.match(/\r?\n/))throw new bt("Multi-line non-JSON input can't be decoded.");const e=T.window.LZString.decompressFromBase64(s),t=JSON.parse(e);return de.unknownAsEngineStateOrThrow(t)}getSettings(){return this.engine.stateSerialize()}getSettingsAsJson(){return JSON.stringify(this.getSettings())}setSettings(s){console.info(...v("Loading engine state..."));const e=this.engine.settings.ksColumn.enabled!==s.engine.ksColumn.enabled;this.engine.stateLoad(s),e&&this.rebuildUi(),this._userInterface.refresh(!0)}importSettingsFromString(s){const e=de.decodeSettings(s);this.setSettings(e)}async copySettings(s=this.getSettings(),e=!0){const t=de.encodeSettings(s,e);await T.window.navigator.clipboard.writeText(t)}static unknownAsEngineStateOrThrow(s){const e=s.v;if(!m(e)&&typeof e=="string"&&e.startsWith("2"))return s;throw new Error("Not a valid engine state.")}installSaveManager(){console.info(...v("Installing save game manager...")),this.game.managers.push(this._saveManager)}}const Ps=async()=>{const c=await new T().waitForGame(de,"ks");T.window.kittenScientists=c,c.validateGame(),c.run()};typeof GM<"u"&&Ps().catch(R(console)),U.main=Ps,Object.defineProperty(U,Symbol.toStringTag,{value:"Module"})});
|
|
42
|
+
`),t=document.createElement("a"),i=new Blob([e],{type:"application/x-ndjson"}),n=URL.createObjectURL(i);t.setAttribute("href",n),t.setAttribute("download",`ks-local-states-${Date.now()}.ndjson`),t.click()}async loadGame(e){this._destructiveActionPrevented()||await new Oo(this.host.game).loadRaw(e)}loadState(e){this._destructiveActionPrevented()||(this.host.engine.stateLoad(e,!0),this.host.refreshEntireUserInterface())}loadAutoSave(){if(this.host.engine.isLoaded){console.info(...v("Not attempting to load Auto-Save, because a state is already loaded."));return}const e=this.states.find(t=>t.unwrap().label==="Auto-Save");if(m(e)){console.info(...v("No Auto-Save settings found."));return}console.info(...v("Loading Auto-Save...")),this.host.engine.stateLoad(e.unwrap().state,!1)}updateGame(e,t){if(this._destructiveActionPrevented())return;const i=e.unwrap().label;e.replace({game:t,label:i,timestamp:new Date().toISOString()}),this._storeGames(),this.requestRefresh()}updateState(e,t){if(this._destructiveActionPrevented())return;const i=e.unwrap().label;e.replace({label:i,state:t,timestamp:new Date().toISOString()}),this._storeStates(),this.requestRefresh()}deleteGame(e,t=!1){if(!t&&this._destructiveActionPrevented())return;const i=this.games.indexOf(e);i<0||(this.games.splice(i,1),this._storeGames(),this.requestRefresh())}deleteState(e,t=!1){if(!t&&this._destructiveActionPrevented())return;const i=this.states.indexOf(e);i<0||(this.states.splice(i,1),this._storeStates(),this.requestRefresh())}_destructiveActionPrevented(){return!this.setting.noConfirm.enabled&&!T.window.confirm(this.host.engine.i18n("state.confirmDestruction"))}}class Re extends _e{constructor(e,t,i,n){super(e,new ue(e,t,{classes:[D.checked,D.setting],icon:n==null?void 0:n.icon}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),n);u(this,"setting");this.setting=i}}class Uo extends Re{constructor(e,t,i){var r,o;const n=e.host.engine.i18n("ui.build");super(e,n,t,{icon:A.Bonfire,onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&Object.values(t.buildings).some(l=>l.enabled&&l.trigger<=0)}});u(this,"_buildings");this._buildings=[];for(const l of this.host.game.bld.buildingGroups){this._buildings.push(new q(this,l.title));for(const h of l.buildings){if(h==="unicornPasture"||m(this.setting.buildings[h]))continue;const d=this.host.game.bld.getBuildingExt(h).meta;if(m(d.stages))m(d.label)||this._buildings.push(this._getResetOption(this,this.setting.buildings[h],i,t,d.label));else{const g=(r=Object.values(this.setting.buildings).find(f=>f.baseBuilding===h))==null?void 0:r.building;this._buildings.push(this._getResetOption(this,this.setting.buildings[h],i,t,d.stages[0].label),this._getResetOption(this,this.setting.buildings[g],i,t,d.stages[1].label,!1,!0))}}l!==this.host.game.bld.buildingGroups[this.host.game.bld.buildingGroups.length-1]&&((o=this._buildings.at(-1))==null||o.element.addClass(ke.delimiter))}const a=new x(this);a.addChildren(this._buildings),this.addChildContent(a)}_getResetOption(e,t,i,n,a,r=!1,o=!1){const l=new H(e,t,i,a,{delimiter:r,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{l.triggerButton.inactive=!t.enabled||t.trigger===-1,l.triggerButton.ineffective=n.enabled&&t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const h=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(h!==void 0){if(h===""||h.startsWith("-")){t.trigger=-1,t.enabled=!1;return}t.trigger=Number(h)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:o});return l.triggerButton.element.addClass(C.lastHeadAction),l}}class Do extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.faith");super(s,i,e,{icon:A.Religion,onRefreshRequest:()=>{this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(a=>a.enabled&&a.trigger<=0)}}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]);const n=[...kt];this.addChildContent(new x(this).addChildren([new q(this,this.host.engine.i18n("$religion.panel.ziggurat.label")),this._getResetOption(this,this.setting.buildings.unicornPasture,t,e,this.host.engine.i18n("$buildings.unicornPasture.label")),...this.host.game.religion.zigguratUpgrades.filter(a=>n.includes(a.name)&&!m(this.setting.buildings[a.name])).map(a=>this._getResetOption(this,this.setting.buildings[a.name],t,e,a.label)),new te(this),...this.host.game.religion.zigguratUpgrades.filter(a=>!n.includes(a.name)&&!m(this.setting.buildings[a.name])).map(a=>this._getResetOption(this,this.setting.buildings[a.name],t,e,a.label)),new te(this),new q(this,this.host.engine.i18n("$religion.panel.orderOfTheSun.label")),...this.host.game.religion.religionUpgrades.filter(a=>!m(this.setting.buildings[a.name])).map(a=>{var r;return this._getResetOption(this,this.setting.buildings[a.name],t,e,a.label,a.name===((r=this.host.game.religion.religionUpgrades.at(-1))==null?void 0:r.name))}),new q(this,this.host.engine.i18n("$religion.panel.cryptotheology.label")),...this.host.game.religion.transcendenceUpgrades.filter(a=>!m(this.setting.buildings[a.name])).map(a=>this._getResetOption(this,this.setting.buildings[a.name],t,e,a.label))]))}_getResetOption(s,e,t,i,n,a=!1,r=!1){const o=new H(s,e,t,n,{delimiter:a,onCheck:()=>{s.host.engine.imessage("status.reset.check.enable",[n])},onRefreshRequest:()=>{o.triggerButton.inactive=!e.enabled||e.trigger===-1,o.triggerButton.ineffective=i.enabled&&e.enabled&&e.trigger===-1},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.absolute"),s.host.engine.i18n("ui.trigger.build.prompt",[n,e.trigger!==-1?s.host.renderAbsolute(e.trigger,t.selected):s.host.engine.i18n("ui.trigger.inactive")]),e.trigger!==-1?s.host.renderAbsolute(e.trigger):"",s.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1,e.enabled=!1;return}e.trigger=Number(l)}},onUnCheck:()=>{s.host.engine.imessage("status.reset.check.disable",[n])},upgradeIndicator:r});return o.triggerButton.element.addClass(C.lastHeadAction),o}}class No extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.resources");super(s,i,e,{icon:A.Resources,onRefreshRequest:()=>{this.expando.ineffective=e.enabled&&Object.values(e.resources).some(o=>o.enabled&&o.trigger<0)}}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]);const n=this.host.game.resPool.resources,a=[];let r=n[0].title;for(const o of[...n].sort((l,h)=>l.title.localeCompare(h.title,t.selected))){const l=this.setting.resources[o.name],h=new H(this,l,t,X(o.title),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o.title])},onRefreshRequest:()=>{h.triggerButton.inactive=!l.enabled||l.trigger===-1,h.triggerButton.ineffective=e.enabled&&l.enabled&&l.trigger===-1},onSetTrigger:async()=>{const d=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.float"),this.host.engine.i18n("ui.trigger.build.prompt",[o.title,l.trigger!==-1?this.host.renderAbsolute(l.trigger,t.selected):this.host.engine.i18n("ui.trigger.inactive")]),l.trigger!==-1?this.host.renderAbsolute(l.trigger):"",this.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){l.trigger=-1,l.enabled=!1;return}l.trigger=s.host.parseAbsolute(d)??l.trigger}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o.title])}});h.triggerButton.element.addClass(C.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(t.selected)&&r[0]!==o.title[0]&&h.element.addClass(B.splitter),a.push(h),r=o.title}this.addChildContent(new x(this).addChildren(a))}}class qo extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.space");super(s,i,e,{icon:A.Space,onRefreshRequest:()=>{this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(n=>n.enabled&&n.trigger<=0)}}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]),this.addChildContent(new x(this).addChildren(this.host.game.space.planets.filter(n=>0<n.buildings.length).flatMap((n,a,r)=>[new q(this,this.host.engine.labelForPlanet(n.name)),...n.buildings.filter(o=>!m(this.setting.buildings[o.name])).map((o,l,h)=>this._getResetOption(this,this.setting.buildings[o.name],t,e,o.label,a<r.length-1&&l===h.length-1))])))}_getResetOption(s,e,t,i,n,a=!1,r=!1){const o=new H(s,e,t,n,{delimiter:a,onCheck:()=>{s.host.engine.imessage("status.reset.check.enable",[n])},onRefreshRequest:()=>{o.triggerButton.inactive=!e.enabled||e.trigger===-1,o.triggerButton.ineffective=i.enabled&&e.enabled&&e.trigger===-1},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.absolute"),s.host.engine.i18n("ui.trigger.build.prompt",[n,e.trigger!==-1?s.host.renderAbsolute(e.trigger,t.selected):s.host.engine.i18n("ui.trigger.inactive")]),e.trigger!==-1?s.host.renderAbsolute(e.trigger):"",s.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1,e.enabled=!1;return}e.trigger=Number(l)}},onUnCheck:()=>{s.host.engine.imessage("status.reset.check.disable",[n])},upgradeIndicator:r});return o.triggerButton.element.addClass(C.lastHeadAction),o}}class zo extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.time");super(s,i,e,{icon:A.Time,onRefreshRequest:()=>{this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(n=>n.enabled&&n.trigger<=0)}}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]),this.addChildContent(new x(this).addChildren([new q(this,this.host.engine.i18n("$workshop.chronoforge.label")),...this.host.game.time.chronoforgeUpgrades.filter(n=>!m(this.setting.buildings[n.name])).map(n=>{var a;return this._getResetOption(this,this.setting.buildings[n.name],t,e,n.label,n.name===((a=this.host.game.time.chronoforgeUpgrades.at(-1))==null?void 0:a.name))}),new q(this,this.host.engine.i18n("$science.voidSpace.label")),...this.host.game.time.voidspaceUpgrades.filter(n=>n.name in this.setting.buildings).map(n=>this._getResetOption(this,this.setting.buildings[n.name],t,e,n.label))]))}_getResetOption(s,e,t,i,n,a=!1,r=!1){const o=new H(s,e,t,n,{delimiter:a,onCheck:()=>{s.host.engine.imessage("status.reset.check.enable",[n])},onRefreshRequest:()=>{o.triggerButton.inactive=!e.enabled||e.trigger===-1,o.triggerButton.ineffective=i.enabled&&e.enabled&&e.trigger===-1},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.absolute"),s.host.engine.i18n("ui.trigger.build.prompt",[n,e.trigger!==-1?s.host.renderAbsolute(e.trigger,t.selected):s.host.engine.i18n("ui.trigger.inactive")]),e.trigger!==-1?s.host.renderAbsolute(e.trigger):"",s.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1,e.enabled=!1;return}e.trigger=Number(l)}},onUnCheck:()=>{s.host.engine.imessage("status.reset.check.disable",[n])},upgradeIndicator:r});return o.triggerButton.element.addClass(C.lastHeadAction),o}}class Fo extends Re{constructor(s,e,t){const i=s.host.engine.i18n("ui.upgrades");super(s,i,e,{icon:A.Workshop}),this.addChildrenHead([new M(s,{classes:[B.fillSpace]})]);const n=this.host.game.workshop.upgrades.filter(l=>!m(this.setting.upgrades[l.name])),a=[];let r=n[0].label,o;for(const l of n.sort((h,d)=>h.label.localeCompare(d.label,t.selected))){const h=this.setting.upgrades[l.name],d=this._getResetOption(this,h,l.label);this.host.engine.localeSupportsFirstLetterSplits(t.selected)&&r[0]!==l.label[0]&&(m(o)||o.element.addClass(ke.delimiter),d.element.addClass(B.splitter)),o=d,a.push(d),r=l.label}this.addChildContent(new x(this).addChildren(a))}_getResetOption(s,e,t,i=!1,n=!1){return new S(s,e,t,{delimiter:i,onCheck:()=>{s.host.engine.imessage("status.reset.check.enable",[t])},onUnCheck:()=>{s.host.engine.imessage("status.reset.check.disable",[t])},upgradeIndicator:n})}}class Ho extends N{constructor(e,t,i){const n=e.host.engine.i18n("option.time.reset");super(e,t,new S(e,t,n,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[n])},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&[this._bonfireUi,this._religionUi,this._resourcesUi,this._spaceUi,this._timeUi,this._upgradesUi].some(r=>r.expando.ineffective)}});u(this,"_bonfireUi");u(this,"_religionUi");u(this,"_resourcesUi");u(this,"_spaceUi");u(this,"_timeUi");u(this,"_upgradesUi");const a=new x(this,{hasDisableAll:!1,hasEnableAll:!1});this._bonfireUi=new Uo(this,this.setting.bonfire,i),this._religionUi=new Do(this,this.setting.religion,i),this._resourcesUi=new No(this,this.setting.resources,i),this._spaceUi=new qo(this,this.setting.space,i),this._timeUi=new zo(this,this.setting.time,i),this._upgradesUi=new Fo(this,this.setting.upgrades,i),a.addChildren([this._bonfireUi,this._religionUi,this._resourcesUi,this._spaceUi,this._timeUi,this._upgradesUi]),this.addChildContent(a)}}class As extends x{constructor(e,t,i){super(e,i);u(this,"setting");this.setting=t;const n=(r,o)=>{const l=e.host.engine.labelForCycle(r);return new S(e,o,l,{onCheck:h=>{var d;(d=i==null?void 0:i.onCheckCycle)==null||d.call(i,l,o,h)},onUnCheck:h=>{var d;(d=i==null?void 0:i.onUnCheckCycle)==null||d.call(i,l,o,h)}})},a=[n("charon",this.setting.charon),n("umbra",this.setting.umbra),n("yarn",this.setting.yarn),n("helios",this.setting.helios),n("cath",this.setting.cath),n("redmoon",this.setting.redmoon),n("dune",this.setting.dune),n("piscine",this.setting.piscine),n("terminus",this.setting.terminus),n("kairo",this.setting.kairo)];this.addChildren(a),this.element[0].addEventListener("enableAll",()=>{for(const r of a)r.check(!0)}),this.element[0].addEventListener("disableAll",()=>{for(const r of a)r.uncheck(!0)})}}class Ut extends x{constructor(e,t,i){super(e,i);u(this,"setting");u(this,"spring");u(this,"summer");u(this,"autumn");u(this,"winter");this.setting=t;const n=(a,r)=>new S(this,r,a,{onCheck:o=>{var l;(l=i==null?void 0:i.onCheckSeason)==null||l.call(i,a,r,o)},onUnCheck:o=>{var l;(l=i==null?void 0:i.onUnCheckSeason)==null||l.call(i,a,r,o)}});this.spring=n(this.host.engine.i18n("$calendar.season.spring"),this.setting.spring),this.summer=n(this.host.engine.i18n("$calendar.season.summer"),this.setting.summer),this.autumn=n(this.host.engine.i18n("$calendar.season.autumn"),this.setting.autumn),this.winter=n(this.host.engine.i18n("$calendar.season.winter"),this.setting.winter),this.addChildren([this.spring,this.summer,this.autumn,this.winter])}toString(){return`[${Ut.name}#${this.componentId}]`}}class Wo extends N{constructor(s,e,t,i,n){const a=s.host.engine.i18n("option.time.activeHeatTransfer");super(s,e,new H(s,e,t,a,{onCheck:r=>{s.host.engine.imessage("status.auto.enable",[a])},onSetTrigger:async()=>{const r=await E.prompt(s,s.host.engine.i18n("ui.trigger.activeHeatTransfer.prompt"),s.host.engine.i18n("ui.trigger.activeHeatTransfer.promptTitle",[s.host.renderPercentage(e.trigger,t.selected,!0)]),s.host.renderPercentage(e.trigger),s.host.engine.i18n("ui.trigger.activeHeatTransfer.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(e.trigger=s.host.parsePercentage(r))},onUnCheck:r=>{s.host.engine.imessage("status.auto.disable",[a]),e.activeHeatTransferStatus.enabled=!1}}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled,this.settingItem.triggerButton.ineffective=n.enabled&&i.enabled&&e.enabled&&e.trigger===-1,this.expando.ineffective=n.enabled&&i.enabled&&e.enabled&&!Object.values(e.cycles).some(r=>r.enabled),e.activeHeatTransferStatus.enabled?(this.head.elementLabel.attr("data-ks-active-from","◎"),this.head.elementLabel.attr("data-ks-active-to","◎"),this.head.elementLabel.addClass(Pt.active)):this.head.elementLabel.removeClass(Pt.active)}}),this.addChildContent(new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new As(this,this.setting.cycles,{onCheckCycle:r=>{this.host.engine.imessage("time.heatTransfer.cycle.enable",[r])},onUnCheckCycle:r=>{this.host.engine.imessage("time.heatTransfer.cycle.disable",[r])}})]))}}class Go extends N{constructor(e,t,i,n){const a=e.host.engine.i18n("option.time.skip");super(e,t,new At(e,t,i,a,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[a])},onRefreshMax(){this.maxButton.updateLabel(e.host.renderAbsolute(t.max)),this.maxButton.element[0].title=t.max<0?e.host.engine.i18n("ui.max.timeSkip.titleInfinite",[a]):t.max===0?e.host.engine.i18n("ui.max.timeSkip.titleZero",[a]):e.host.engine.i18n("ui.max.timeSkip.title",[e.host.renderAbsolute(t.max),a])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):`${e.host.renderFloat(t.trigger,i.selected)} TC`])},onSetMax:async()=>{const r=await E.prompt(e,e.host.engine.i18n("ui.max.timeSkip.prompt"),e.host.engine.i18n("ui.max.timeSkip.promptTitle",[e.host.renderAbsolute(t.max,i.selected)]),e.host.renderAbsolute(t.max),e.host.engine.i18n("ui.max.timeSkip.promptExplainer"));if(r!==void 0){if(r===""||r.startsWith("-")){t.max=-1;return}r==="0"&&(t.enabled=!1),t.max=e.host.parseAbsolute(r)??t.max}},onSetTrigger:async()=>{const r=await E.prompt(e,e.host.engine.i18n("ui.trigger.timeSkip.prompt"),e.host.engine.i18n("ui.trigger.timeSkip.promptTitle",[e.host.renderAbsolute(t.trigger,i.selected)]),e.host.renderAbsolute(t.trigger),e.host.engine.i18n("ui.trigger.timeSkip.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(t.trigger=e.host.parseAbsolute(r)??t.trigger)},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[a])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.maxButton.inactive=!t.enabled||t.max===-1,this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.maxButton.ineffective=n.enabled&&t.enabled&&t.max===0,this._cycles.expando.ineffective=n.enabled&&t.enabled&&!Object.values(t.cycles).some(r=>r.enabled),this._seasons.expando.ineffective=n.enabled&&t.enabled&&!Object.values(t.seasons).some(r=>r.enabled)}});u(this,"_cycles");u(this,"_seasons");u(this,"_activeHeatTransferUI");this.settingItem.triggerButton.element.removeClass(C.lastHeadAction),this._cycles=new _e(this,new ue(this,X(this.host.engine.i18n("ui.cycles")),{classes:[D.checked,D.setting],icon:A.Cycles}).addChildrenHead([new M(this,{classes:[B.fillSpace]})])).addChildrenContent([new As(this,this.setting.cycles,{onCheckCycle:r=>{this.host.engine.imessage("time.skip.cycle.enable",[r])},onUnCheckCycle:r=>{this.host.engine.imessage("time.skip.cycle.disable",[r])}})]),this._seasons=new _e(this,new ue(this,X(this.host.engine.i18n("trade.seasons")),{classes:[D.checked,D.setting],icon:A.Seasons}).addChildrenHead([new M(this,{classes:[B.fillSpace]})])).addChildrenContent([new Ut(this,this.setting.seasons,{onCheckSeason:r=>{this.host.engine.imessage("time.skip.season.enable",[r])},onUnCheckSeason:r=>{this.host.engine.imessage("time.skip.season.disable",[r])}})]),this._activeHeatTransferUI=new Wo(this,this.setting.activeHeatTransfer,i,t,n),this.addChildContent(new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([this._cycles,this._seasons,new S(this,this.setting.ignoreOverheat,this.host.engine.i18n("option.time.skip.ignoreOverheat")),this._activeHeatTransferUI]))}}class yi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${yi.name}`));const n=e.host.engine.i18n("ui.timeCtrl");super(e,t,new S(e,t,n,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[n])},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&[this._timeSkipUi,this._resetUi].some(o=>o.expando.ineffective)}});u(this,"_items");u(this,"_accelerateTime");u(this,"_timeSkipUi");u(this,"_resetUi");const a=new x(this,{hasDisableAll:!1,hasEnableAll:!1}),r=this.host.engine.i18n("option.accelerate");this._accelerateTime=new H(this,this.setting.accelerateTime,i,r,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[r])},onRefresh:()=>{this._accelerateTime.triggerButton.inactive=!this.setting.accelerateTime.enabled,this._accelerateTime.triggerButton.ineffective=this.setting.enabled&&this.setting.accelerateTime.enabled&&this.setting.accelerateTime.trigger===-1},onSetTrigger:async()=>{const o=await E.prompt(this,this.host.engine.i18n("ui.trigger.accelerateTime.prompt"),this.host.engine.i18n("ui.trigger.accelerateTime.promptTitle",[this.host.renderPercentage(this.setting.accelerateTime.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.accelerateTime.trigger),this.host.engine.i18n("ui.trigger.accelerateTime.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting.accelerateTime.trigger=this.host.parsePercentage(o))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[r])}}),this._accelerateTime.triggerButton.element.addClass(C.lastHeadAction),this._timeSkipUi=new Go(this,this.setting.timeSkip,i,t),this._resetUi=new Ho(this,this.setting.reset,i),this._items=[this._accelerateTime,this._timeSkipUi,this._resetUi],a.addChildren(this._items),this.addChildContent(a)}}class wi extends N{constructor(s,e,t){console.debug(...v(`Constructing ${wi.name}`));const i=s.host.engine.i18n("ui.time");super(s,e,new H(s,e,t,i,{onCheck:n=>{s.host.engine.imessage("status.auto.enable",[i])},onRefresh:()=>{this.settingItem.triggerButton.inactive=!e.enabled||e.trigger===-1},onRefreshTrigger(){this.triggerButton.element[0].title=s.host.engine.i18n("ui.trigger.section",[e.trigger<0?s.host.engine.i18n("ui.trigger.section.inactive"):s.host.renderPercentage(e.trigger,t.selected,!0)])},onSetTrigger:async()=>{const n=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.percentage"),s.host.engine.i18n("ui.trigger.section.prompt",[i,e.trigger!==-1?s.host.renderPercentage(e.trigger,t.selected,!0):s.host.engine.i18n("ui.infinity")]),e.trigger!==-1?s.host.renderPercentage(e.trigger):"",s.host.engine.i18n("ui.trigger.section.promptExplainer"));if(n!==void 0){if(n===""||n.startsWith("-")){e.trigger=-1;return}e.trigger=s.host.parsePercentage(n)}},onUnCheck:n=>{s.host.engine.imessage("status.auto.disable",[i])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled||e.trigger<0,this.settingItem.triggerButton.ineffective=e.enabled&&e.trigger<0&&Object.values(e.buildings).some(n=>n.enabled&&0<n.max&&n.trigger<0),this.expando.ineffective=e.enabled&&Object.values(e.buildings).some(n=>n.enabled&&(n.max===0||n.trigger<0&&e.trigger<0))}}),this.addChildrenContent([new x(this).addChildren([new q(this,this.host.engine.i18n("$workshop.chronoforge.label")),...this.host.game.time.chronoforgeUpgrades.filter(n=>!m(this.setting.buildings[n.name])).map(n=>{var a;return oe.getBuildOption(this,this.setting.buildings[n.name],t,this.setting,n.label,i,{delimiter:n.name===((a=this.host.game.time.chronoforgeUpgrades.at(-1))==null?void 0:a.name),renderLabelTrigger:!1})}),new q(this,this.host.engine.i18n("$science.voidSpace.label")),...this.host.game.time.voidspaceUpgrades.filter(n=>n.name in this.setting.buildings).map(n=>oe.getBuildOption(this,this.setting.buildings[n.name],t,this.setting,n.label,i,{renderLabelTrigger:!1}))]),new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new q(this,this.host.engine.i18n("ui.additional")),new S(this,this.setting.fixCryochambers,this.host.engine.i18n("option.fix.cry"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.fix.cry")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.fix.cry")])}})])])}}const Zo={buyButton:"_buyButton_10eul_1"};class ki extends Ce{constructor(e,t,i,n){super(e,void 0,{onClick:async()=>{const a=await E.prompt(e,e.host.engine.i18n("blackcoin.buy.prompt"),e.host.engine.i18n("blackcoin.buy.promptTitle",[e.host.renderAbsolute(t.buy,i.selected)]),e.host.renderAbsolute(t.buy),e.host.engine.i18n("blackcoin.buy.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.buy=-1;return}t.buy=e.host.parseAbsolute(a)??t.buy}},onRefresh:()=>{var a;this.element.prop("title",this.host.engine.i18n("blackcoin.buy.title",[this.host.renderAbsolute(this.setting.buy)])),this.element.text(this.host.engine.i18n("blackcoin.buy",[this.host.renderAbsolute(this.setting.buy)])),(a=n==null?void 0:n.onRefresh)==null||a.call(this)}});u(this,"setting");this.element.addClass(Zo.buyButton),this.setting=t}toString(){return`[${ki.name}#${this.componentId}]`}}const Ko={sellButton:"_sellButton_1tmvd_1"};class _i extends Ce{constructor(e,t,i,n){super(e,void 0,{onClick:async()=>{const a=await E.prompt(e,e.host.engine.i18n("blackcoin.sell.prompt"),e.host.engine.i18n("blackcoin.sell.promptTitle",[e.host.renderAbsolute(t.sell,i.selected)]),e.host.renderAbsolute(t.sell),e.host.engine.i18n("blackcoin.sell.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.sell=-1;return}t.sell=e.host.parseAbsolute(a)??t.sell}},onRefresh:()=>{var a;this.element.prop("title",this.host.engine.i18n("blackcoin.sell.title",[this.host.renderAbsolute(this.setting.sell)])),this.element.text(this.host.engine.i18n("blackcoin.sell",[this.host.renderAbsolute(this.setting.sell)])),(a=n==null?void 0:n.onRefresh)==null||a.call(n)}});u(this,"setting");this.element.addClass(Ko.sellButton),this.setting=t}toString(){return`[${_i.name}#${this.componentId}]`}}class Dt extends J{constructor(e,t,i){super(e,"",A.Eco,{border:!1,classes:[],onClick:()=>{var n,a;this.setting.limited=!this.setting.limited,this.setting.limited?(n=i==null?void 0:i.onLimitedCheck)==null||n.call(this):(a=i==null?void 0:i.onLimitedUnCheck)==null||a.call(this)},onRefresh:()=>{var n;this.updateTitle(this.host.engine.i18n(this.setting.limited?"ui.limited.on":"ui.limited.off")),this.setting.limited&&!this.inactive?this.element.removeClass(C.inactive):this.element.addClass(C.inactive),(n=i==null?void 0:i.onRefresh)==null||n.call(this)}});u(this,"setting");this.setting=t;for(const n of(i==null?void 0:i.classes)??[])this.element.addClass(n)}toString(){return`[${Dt.name}#${this.componentId}]`}}class Ci extends S{constructor(e,t,i,n){super(e,t,i,n);u(this,"limitedButton");this.limitedButton=new Dt(e,t,{border:!1,onLimitedCheck:n!=null&&n.onLimitedCheck?()=>{var a;return(a=n.onLimitedCheck)==null?void 0:a.call(this)}:void 0,onLimitedUnCheck:n!=null&&n.onLimitedUnCheck?()=>{var a;return(a=n.onLimitedUnCheck)==null?void 0:a.call(this)}:void 0}),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.limitedButton])}toString(){return`[${Ci.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Si extends Ci{constructor(e,t,i,n,a){super(e,t,n,a);u(this,"triggerButton");this.triggerButton=new Ee(e,t,i,{border:!1,onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a!=null&&a.onRefreshTrigger?()=>{var r;return(r=a.onRefreshTrigger)==null?void 0:r.call(this)}:void 0,renderLabel:(a==null?void 0:a.renderLabelTrigger)??!0}),this.addChildHead(this.triggerButton)}toString(){return`[${Si.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Nt extends S{constructor(e,t,i,n){super(e,t,i,n);u(this,"maxButton");this.maxButton=new Pe(e,t,{border:!1,onClick:async()=>{await n.onSetMax.call(this)},onRefresh:n!=null&&n.onRefreshMax?()=>{var a;return(a=n.onRefreshMax)==null?void 0:a.call(this)}:void 0}),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.maxButton])}toString(){return`[${Nt.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Vo extends N{constructor(s,e,t,i){const n=s.host.engine.i18n("option.embassies");super(s,e,new H(s,e,t,n,{onCheck:r=>{s.host.engine.imessage("status.auto.enable",[n])},onSetTrigger:async()=>{const r=await E.prompt(s,s.host.engine.i18n("ui.trigger.embassies.prompt"),s.host.engine.i18n("ui.trigger.embassies.promptTitle",[s.host.renderPercentage(e.trigger,t.selected,!0)]),s.host.renderPercentage(e.trigger),s.host.engine.i18n("ui.trigger.embassies.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(e.trigger=s.host.parsePercentage(r))},onUnCheck:r=>{s.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled,this.settingItem.triggerButton.ineffective=e.enabled&&e.trigger===-1,this.expando.ineffective=i.enabled&&e.enabled&&!Object.values(e.races).some(r=>r.enabled)}});const a=new x(this).addChildren(this.host.game.diplomacy.races.filter(r=>r.name!=="leviathans"&&!m(this.setting.races[r.name])).map(r=>this._makeEmbassySetting(this,this.setting.races[r.name],t.selected,e,r.title)));this.addChildContent(a)}_makeEmbassySetting(s,e,t,i,n){const a=async()=>{const o=await E.prompt(s,s.host.engine.i18n("ui.max.prompt.absolute"),s.host.engine.i18n("ui.max.build.prompt",[n,s.host.renderAbsolute(e.max,t)]),s.host.renderAbsolute(e.max),s.host.engine.i18n("ui.max.build.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){e.max=-1;return}o==="0"&&(e.enabled=!1),e.max=s.host.parseAbsolute(o)??e.max}},r=new Nt(s,e,n,{onCheck:o=>{if(s.host.engine.imessage("status.sub.enable",[n]),e.max===0&&!o)return a()},onRefresh:()=>{r.maxButton.inactive=!e.enabled||e.max===-1,r.maxButton.ineffective=i.enabled&&e.enabled&&e.max===0},onRefreshMax:()=>{r.maxButton.updateLabel(s.host.renderAbsolute(e.max)),r.maxButton.element[0].title=e.max<0?s.host.engine.i18n("ui.max.embassy.titleInfinite",[n]):e.max===0?s.host.engine.i18n("ui.max.embassy.titleZero",[n]):s.host.engine.i18n("ui.max.embassy.title",[s.host.renderAbsolute(e.max),n])},onSetMax:a,onUnCheck:()=>{s.host.engine.imessage("status.sub.disable",[n])}});return r.maxButton.element.addClass(C.lastHeadAction),r}}class xi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${xi.name}`));const n=e.host.engine.i18n("ui.trade");super(e,t,new H(e,t,i,n,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[n])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const o=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[n,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(o)}},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.races).some(o=>o.enabled&&o.trigger<0),this.expando.ineffective=t.enabled&&Object.values(this._racePanels).some(o=>o.expando.ineffective||o.settingItem.triggerButton.ineffective)}});u(this,"_racePanels");this._racePanels=this.host.game.diplomacy.races.filter(o=>!m(this.setting.races[o.name])).map(o=>{var l;return this._getTradeOption(this,this.setting.races[o.name],i,t,o.title,n,o.name===((l=this.host.game.diplomacy.races.at(-2))==null?void 0:l.name))});const a=new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren(this._racePanels);a.addChild(new S(this,this.setting.feedLeviathans,this.host.engine.i18n("option.autofeed"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.autofeed")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.autofeed")])}})),a.addChild(new N(this,this.setting.tradeBlackcoin,new H(this,this.setting.tradeBlackcoin,i,this.host.engine.i18n("option.crypto"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.crypto")])},onRefreshRequest(){this.triggerButton.inactive=!this.setting.enabled||this.setting.trigger===-1},onSetTrigger:async()=>{const o=await E.prompt(this,this.host.engine.i18n("ui.trigger.crypto.promptTitle"),this.host.engine.i18n("ui.trigger.crypto.prompt",[this.host.renderAbsolute(this.setting.tradeBlackcoin.trigger,i.selected)]),this.host.renderAbsolute(this.setting.tradeBlackcoin.trigger),this.host.engine.i18n("ui.trigger.crypto.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting.tradeBlackcoin.trigger=this.host.parseAbsolute(o)??this.setting.tradeBlackcoin.trigger)},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.crypto")])}})).addChildrenContent([new ki(this,this.setting.tradeBlackcoin,i),new _i(this,this.setting.tradeBlackcoin,i)])),this.addChildContent(a);const r=new x(this,{hasDisableAll:!1,hasEnableAll:!1});r.addChild(new q(this,this.host.engine.i18n("ui.additional"))),r.addChild(new Vo(this,this.setting.buildEmbassies,i,t)),r.addChild(new S(this,this.setting.unlockRaces,this.host.engine.i18n("ui.upgrade.races"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("ui.upgrade.races")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("ui.upgrade.races")])}})),this.addChildContent(r)}_getTradeOption(e,t,i,n,a,r,o=!1,l=!1){const h=new Si(e,t,i,a,{delimiter:o,onCheck:()=>{e.host.engine.imessage("status.sub.enable",[a])},onLimitedCheck:()=>{e.host.engine.imessage("trade.limited",[a])},onLimitedUnCheck:()=>{e.host.engine.imessage("trade.unlimited",[a])},onRefreshTrigger:()=>{h.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?n.trigger<0?e.host.engine.i18n("ui.trigger.section.blocked",[r]):`${e.host.renderPercentage(n.trigger,i.selected,!0)} (${e.host.engine.i18n("ui.trigger.section.inherited")})`:e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const g=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[a,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.trigger.section.inherited")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(g!==void 0){if(g===""||g.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(g)}},onUnCheck:()=>{e.host.engine.imessage("status.sub.disable",[a])},renderLabelTrigger:!1,upgradeIndicator:l}),d=new N(e,t,h,{onRefreshRequest:()=>{h.limitedButton.inactive=!t.enabled||!t.limited,h.triggerButton.inactive=!t.enabled||t.trigger===-1,h.triggerButton.ineffective=n.enabled&&t.enabled&&n.trigger===-1&&t.trigger===-1,d.expando.ineffective=n.enabled&&t.enabled&&!t.seasons.autumn.enabled&&!t.seasons.spring.enabled&&!t.seasons.summer.enabled&&!t.seasons.winter.enabled}}).addChildContent(new Ut(e,t.seasons,{onCheckSeason:g=>{e.host.engine.imessage("trade.season.enable",[X(a),g])},onUnCheckSeason:g=>{e.host.engine.imessage("trade.season.disable",[X(a),g])}}));return d}}const Ti={spacer:"_spacer_auis8_44",ui:"_ui_auis8_49",showActivity:"_showActivity_auis8_66"};class Ei extends N{constructor(e,t,i){console.debug(...v(`Constructing ${Ei.name}`));const n=e.host.engine.i18n("ui.distribute");super(e,t,new S(e,t,n,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[n])},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[n])}}).addChildrenHead([new M(e,{classes:[B.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&Object.values(t.jobs).some(o=>o.enabled&&o.max===0)}});u(this,"_hunt");u(this,"_festivals");u(this,"_promoteKittens");u(this,"_promoteLeader");u(this,"_electLeader");const a=new x(this).addChildren(this.host.game.village.jobs.filter(o=>!m(this.setting.jobs[o.name])).map(o=>this._getDistributeOption(this.setting.jobs[o.name],i.selected,t,o.title)));this.addChildContent(a);const r=new x(this,{hasDisableAll:!1,hasEnableAll:!1});r.addChild(new q(this,this.host.engine.i18n("ui.additional"))),this._hunt=new H(this,this.setting.hunt,i,this.host.engine.i18n("option.hunt"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.hunt")])},onRefreshRequest:()=>{this._hunt.triggerButton.inactive=!this.setting.hunt.enabled,this._hunt.triggerButton.ineffective=this.setting.enabled&&this.setting.hunt.enabled&&this.setting.hunt.trigger===-1},onSetTrigger:async()=>{const o=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.hunt.prompt",[this.host.renderPercentage(this.setting.hunt.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.hunt.trigger),this.host.engine.i18n("ui.trigger.hunt.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting.hunt.trigger=this.host.parsePercentage(o))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.hunt")])}}),this._hunt.triggerButton.element.addClass(C.lastHeadAction),r.addChild(this._hunt),this._festivals=new S(this,this.setting.holdFestivals,this.host.engine.i18n("option.festival"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.festival")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.festival")])}}),r.addChild(this._festivals),this._promoteKittens=new H(this,this.setting.promoteKittens,i,this.host.engine.i18n("option.promotekittens"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.promotekittens")])},onRefresh:()=>{this._promoteKittens.triggerButton.inactive=!this.setting.promoteKittens.enabled,this._promoteKittens.triggerButton.ineffective=this.setting.enabled&&this.setting.promoteKittens.enabled&&this.setting.promoteKittens.trigger===-1},onSetTrigger:async()=>{const o=await E.prompt(this,this.host.engine.i18n("ui.trigger.promoteKittens.promptTitle"),this.host.engine.i18n("ui.trigger.promoteKittens.prompt",[this.host.renderPercentage(this.setting.promoteKittens.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.promoteKittens.trigger),this.host.engine.i18n("ui.trigger.promoteKittens.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting.promoteKittens.trigger=this.host.parsePercentage(o))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.promotekittens")])}}),this._promoteKittens.triggerButton.element.addClass(C.lastHeadAction),r.addChild(this._promoteKittens),this._promoteLeader=new S(this,this.setting.promoteLeader,this.host.engine.i18n("option.promote"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.promote")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.promote")])}}),r.addChild(this._promoteLeader);for(const o of this.setting.electLeader.job.options)o.value==="any"?o.label=this.host.engine.i18n("option.elect.job.any"):o.label=this.host.engine.i18n(`$village.job.${o.value}`);for(const o of this.setting.electLeader.trait.options)o.label=this.host.engine.i18n(`$village.trait.${o.value}`);this._electLeader=new S(this,this.setting.electLeader,this.host.engine.i18n("option.elect"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.elect")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.elect")])}}).addChildren([new Ie(this,this.host.engine.i18n("option.elect.job"),this.setting.electLeader.job),new Ie(this,this.host.engine.i18n("option.elect.trait"),this.setting.electLeader.trait)]),r.addChild(this._electLeader),this.addChildContent(r)}_getDistributeOption(e,t,i,n,a=!1){const r=async()=>{const l=await E.prompt(this,this.host.engine.i18n("ui.max.distribute.prompt",[n]),this.host.engine.i18n("ui.max.distribute.promptTitle",[n,this.host.renderAbsolute(e.max,t)]),this.host.renderAbsolute(e.max),this.host.engine.i18n("ui.max.distribute.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.max=-1;return}l==="0"&&(e.enabled=!1),e.max=this.host.parseAbsolute(l)??e.max}},o=new Nt(this,e,n,{delimiter:a,onCheck:l=>{if(this.host.engine.imessage("status.sub.enable",[n]),e.max===0&&!l)return r()},onRefresh:()=>{o.maxButton.inactive=!e.enabled||e.max===-1,o.maxButton.ineffective=i.enabled&&e.enabled&&e.max===0},onRefreshMax:()=>{o.maxButton.updateLabel(this.host.renderAbsolute(e.max)),o.maxButton.element[0].title=e.max<0?this.host.engine.i18n("ui.max.distribute.titleInfinite",[n]):e.max===0?this.host.engine.i18n("ui.max.distribute.titleZero",[n]):this.host.engine.i18n("ui.max.distribute.title",[this.host.renderAbsolute(e.max),n])},onSetMax:r,onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[n])}});return o.maxButton.element.addClass(C.lastHeadAction),o}}class Ri extends S{constructor(e,t,i,n,a){super(e,t,n,a);u(this,"limitedButton");u(this,"maxButton");u(this,"triggerButton");this.limitedButton=new Dt(e,t,{...a,classes:[Et.headAction]}),this.maxButton=new Pe(e,t,{alignment:"right",border:!1,classes:[C.headAction],onClick:()=>a.onSetMax.call(this),onRefresh:a!=null&&a.onRefreshMax?()=>{var r;return(r=a.onRefreshMax)==null?void 0:r.call(this)}:void 0}),this.triggerButton=new Ee(e,t,i,{border:!1,classes:[C.lastHeadAction],onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a!=null&&a.onRefreshTrigger?()=>{var r;return(r=a.onRefreshTrigger)==null?void 0:r.call(this)}:void 0,renderLabel:(a==null?void 0:a.renderLabelTrigger)??!0}),this.addChildrenHead([new M(e,{classes:[B.fillSpace]}),this.limitedButton,this.maxButton,this.triggerButton])}toString(){return`[${Ri.name}#${this.componentId}]`}}class jo extends N{constructor(s,e,t){const i=s.host.engine.i18n("ui.upgrade.upgrades");super(s,e,new H(s,e,t,i,{onCheck:l=>{s.host.engine.imessage("status.auto.enable",[i])},onRefreshTrigger(){this.triggerButton.element[0].title=s.host.engine.i18n("ui.trigger",[e.trigger===-1?s.host.engine.i18n("ui.trigger.section.inactive"):s.host.renderPercentage(e.trigger,t.selected,!0)])},onSetTrigger:async()=>{const l=await E.prompt(s,s.host.engine.i18n("ui.trigger.prompt.percentage"),s.host.engine.i18n("ui.trigger.section.prompt",[i,e.trigger!==-1?s.host.renderPercentage(e.trigger,t.selected,!0):s.host.engine.i18n("ui.infinity")]),e.trigger!==-1?s.host.renderPercentage(e.trigger):"",s.host.engine.i18n("ui.trigger.section.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){e.trigger=-1;return}e.trigger=s.host.parsePercentage(l)}},onUnCheck:l=>{s.host.engine.imessage("status.auto.disable",[i])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!e.enabled||e.trigger===-1,this.settingItem.triggerButton.ineffective=e.enabled&&e.trigger<0&&Object.values(e.upgrades).some(l=>l.enabled&&l.trigger<0),this.expando.ineffective=e.enabled&&!Object.values(e.upgrades).some(l=>l.enabled)}});const n=this.host.game.workshop.upgrades.filter(l=>!m(this.setting.upgrades[l.name])),a=[];let r=n[0].label,o;for(const l of n.sort((h,d)=>h.label.localeCompare(d.label,t.selected))){const h=this.setting.upgrades[l.name],d=new H(this,h,t,l.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[l.label])},onRefreshRequest:()=>{d.triggerButton.inactive=!h.enabled||h.trigger===-1,d.triggerButton.ineffective=e.enabled&&h.enabled&&e.trigger===-1&&h.trigger===-1},onRefreshTrigger:()=>{d.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[h.trigger<0?e.trigger<0?this.host.engine.i18n("ui.trigger.build.blocked",[i]):`${this.host.renderPercentage(e.trigger,t.selected,!0)} (${this.host.engine.i18n("ui.trigger.section.inherited")})`:this.host.renderPercentage(h.trigger,t.selected,!0)])},onSetTrigger:async()=>{const g=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[i,h.trigger!==-1?this.host.renderPercentage(h.trigger,t.selected,!0):this.host.engine.i18n("ui.trigger.section.inherited")]),h.trigger!==-1?this.host.renderPercentage(h.trigger):"",this.host.engine.i18n("ui.trigger.section.promptExplainer"));if(g!==void 0){if(g===""||g.startsWith("-")){h.trigger=-1;return}h.trigger=this.host.parsePercentage(g)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[l.label])},renderLabelTrigger:!1});d.triggerButton.element.addClass(C.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(t.selected)&&r[0]!==l.label[0]&&(m(o)||o.element.addClass(ke.delimiter),d.element.addClass(B.splitter)),o=d,a.push(d),r=l.label}this.addChildContent(new x(this).addChildren(a))}}class Mi extends N{constructor(e,t,i){console.debug(...v(`Constructing ${Mi.name}`));const n=e.host.engine.i18n("ui.craft");super(e,t,new H(e,t,i,n,{onCheck:l=>{e.host.engine.imessage("status.auto.enable",[n])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const l=await E.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[n,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(l!==void 0){if(l===""||l.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(l)}},onUnCheck:l=>{e.host.engine.imessage("status.auto.disable",[n])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.resources).some(l=>l.enabled&&l.max!==0&&l.trigger<0)}});u(this,"_crafts");let a=[];game.challenges.getChallenge("ironWill").active||(this.setting.resources.bloodstone.enabled=!1,this.setting.resources.tMythril.enabled=!1,a=["bloodstone","tMythril"]);const r=this.host.game.workshop.crafts.filter(l=>!a.includes(l.name)&&!m(this.setting.resources[l.name])).map(l=>[this.setting.resources[l.name],X(l.label)]);this._crafts=[];for(const[l,h]of r){const d=async()=>{const f=await E.prompt(this,this.host.engine.i18n("ui.max.craft.prompt",[h]),this.host.engine.i18n("ui.max.craft.promptTitle",[h,this.host.renderAbsolute(l.max,i.selected)]),this.host.renderAbsolute(l.max),this.host.engine.i18n("ui.max.craft.promptExplainer"));if(f!==void 0){if(f===""||f.startsWith("-")){l.max=-1;return}f==="0"&&(l.enabled=!1),l.max=this.host.parseAbsolute(f)??l.max}},g=new Ri(this,l,i,h,{delimiter:l.resource==="kerosene"||l.resource==="blueprint",onCheck:f=>{if(this.host.engine.imessage("status.sub.enable",[h]),l.max===0&&!f)return d()},onLimitedCheck:()=>{this.host.engine.imessage("craft.limited",[h])},onLimitedUnCheck:()=>{this.host.engine.imessage("craft.unlimited",[h])},onRefreshMax:()=>{g.maxButton.updateLabel(this.host.renderAbsolute(l.max)),g.maxButton.element[0].title=l.max<0?this.host.engine.i18n("ui.max.craft.titleInfinite",[h]):l.max===0?this.host.engine.i18n("ui.max.craft.titleZero",[h]):this.host.engine.i18n("ui.max.craft.title",[this.host.renderAbsolute(l.max),h])},onRefreshRequest:()=>{g.limitedButton.inactive=!l.enabled||!l.limited,g.maxButton.inactive=!l.enabled||l.max===-1,g.maxButton.ineffective=t.enabled&&l.enabled&&l.max===0,g.triggerButton.inactive=!l.enabled||l.trigger===-1,g.triggerButton.ineffective=t.enabled&&l.enabled&&t.trigger===-1&&l.trigger===-1},onRefreshTrigger:()=>{g.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[l.trigger<0?t.trigger<0?this.host.engine.i18n("ui.trigger.build.blocked",[h]):`${this.host.renderPercentage(t.trigger,i.selected,!0)} (${this.host.engine.i18n("ui.trigger.build.inherited")})`:this.host.renderPercentage(l.trigger,i.selected,!0)])},onSetMax:d,onSetTrigger:async()=>{const f=await E.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[h,l.trigger!==-1?this.host.renderPercentage(l.trigger,i.selected,!0):this.host.engine.i18n("ui.trigger.build.inherited")]),l.trigger!==-1?this.host.renderPercentage(l.trigger):"",this.host.engine.i18n("ui.trigger.build.promptExplainer"));if(f!==void 0){if(f===""||f.startsWith("-")){l.trigger=-1;return}l.trigger=this.host.parsePercentage(f)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[h])},renderLabelTrigger:!1});this._crafts.push(g),l.resource==="ship"&&this._crafts.push(new S(this,this.setting.shipOverride,this.host.engine.i18n("option.shipOverride"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.shipOverride")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.shipOverride")])},upgradeIndicator:!0}))}const o=new x(this,{onReset:()=>{this.setting.load({resources:new xt().resources})}}).addChildren(this._crafts);this.addChildContent(o),this.addChildContent(new x(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new jo(this,this.setting.unlockUpgrades,i)]))}}class Le extends G{constructor(e){console.debug(...v(`Constructing ${Le.name}`));super({host:e},{});u(this,"showActivity");u(this,"_engineUi");u(this,"_sections");u(this,"stateManagementUi");u(this,"_refreshTimeout");const t=e.engine;this._engineUi=new la(this,t.settings),this.stateManagementUi=new vi(this,t.settings.states,t.settings.locale),this._sections=[new ii(this,t.bonfireManager.settings,t.settings.locale),new Ei(this,t.villageManager.settings,t.settings.locale),new gi(this,t.scienceManager.settings,t.settings.locale),new Mi(this,t.workshopManager.settings,t.settings.locale),new di(this,t.settings.resources,t.settings.locale),new xi(this,t.tradeManager.settings,t.settings.locale),new ci(this,t.religionManager.settings,t.settings.locale),new mi(this,t.spaceManager.settings,t.settings.locale),new wi(this,t.timeManager.settings,t.settings.locale),new yi(this,t.timeControlManager.settings,t.settings.locale),new li(this,t.settings.filters),this.stateManagementUi,new ri(this,t.settings,t.settings.locale)],this.parent=this,this.element=$("<div/>").addClass("kitten-scientists").addClass(Ti.ui);for(const h of[this._engineUi,...this._sections])this.addChild(h);const i=$("<ul/>");i.append(this._engineUi.element);for(const h of this._sections)i.append(h.element);this.element.append(i);const n=this._engineUi.expando;let a=!1;n.element.on("click",()=>{a=!a;for(const h of this._sections)h.toggle(a,!0)});let r=0;for(const h of this._sections)h.element[0].addEventListener("panelHidden",()=>{--r,r===0&&(a=!1),a||n.setCollapsed()}),h.element[0].addEventListener("panelShown",()=>{++r,a=!0,n.setExpanded()});this.showActivity=$("<span/>",{html:`<svg style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor"><path d="${A.Summary}"/></svg>`,title:e.engine.i18n("summary.show")}).addClass(Ti.showActivity),this.showActivity.on("click",()=>{e.engine.displayActivitySummary()}),$("#clearLog").prepend(this.showActivity);const o=t.settings.ksColumn.enabled&&game.colorScheme!=="sleek";o?$("#rightColumn").after(`<div id="ksColumn" class="column"><span class="${Ti.spacer}"></span></div>`):$("#ksColumn").remove();const l=$(o?"#ksColumn":"#rightColumn");if(l.length===0){const h=$("#optionsPage .full-screen-position .page .page-content");h.length===0?console.warn(...v("Unable to find right column to inject UI into. Running headless.")):(h.append(this.element),this.element.attr("style","border-top:1px solid grey; padding:15px"))}else l.prepend(this.element);this.element=this.element,this._needsRefresh=!1}toString(){return`[${Le.name}#${this.componentId}]`}destroy(){this._refreshTimeout!==void 0&&(T.window.clearTimeout(this._refreshTimeout),this._refreshTimeout=void 0),this.showActivity.remove(),this.element.remove()}requestRefresh(e=!0,t=0,i=!1){if(this._needsRefresh){this._refreshTimeout===void 0&&console.error(...v("User interface claims to have a refresh pending, but there isn't."));return}this._refreshTimeout=T.window.setTimeout(()=>{const[n,a]=ye(()=>this.refresh());console.info(...v(`UI refresh took ${na(a)}.`)),this._refreshTimeout=void 0},0),super.requestRefresh(!0,t,!1)}forceFullRefresh(){console.warn(...v("Forcing refresh on all user interface components...")),this.requestRefresh(),console.warn(...v("Refresh on all user interface components enforced."))}}const Oe=(c="")=>{if(m("0.0.0-ci"))throw Error("Build error: RELEASE_VERSION is not defined.");return`${c}0.0.0-ci`};class de{constructor(s,e,t="en",i){u(this,"game");u(this,"i18nEngine");u(this,"_userInterface");u(this,"engine");u(this,"_gameBeforeSaveHandle");u(this,"_serverLoadHandle");u(this,"_saveManager",{load:s=>{console.info(...v("Looking for Kitten Scientists engine state in save data..."));const e=T.tryEngineStateFromSaveData("ks",s);if(!e){console.info(...v("The Kittens Game save data did not contain a script state."));return}console.info(...v("Found Kitten Scientists engine state in save data.")),this.engine.stateLoad(e),this.refreshEntireUserInterface()},resetState:()=>null,save:s=>{}});var n;console.info(...v(`Kitten Scientists ${Oe("v")} constructed. Checking for previous instances...`)),"kittenScientists"in T.window&&(console.warn(...v("Detected existing KS instance. Trying to unload it...")),(n=T.window.kittenScientists)==null||n.unload()),console.info(...v("You are on the 'fixed' release channel.")),this.game=s,this.i18nEngine=e;try{this.engine=new re(this,t),this._userInterface=new Le(this)}catch(a){throw console.error(...v("Failed to construct core components.",a)),typeof GM<"u"&&console.warn(...v("Detected running in Greasemonkey.")),a}m(i)?this._userInterface.stateManagementUi.loadAutoSave():this.setSettings(i)}rebuildUi(){this._userInterface.destroy(),this._userInterface=new Le(this),this._userInterface.forceFullRefresh()}validateGame(){Qt.validateGame(this.game,this.engine.scienceManager.settings),St.validateGame(this.game,this.engine.spaceManager.settings),xt.validateGame(this.game,this.engine.workshopManager.settings)}unload(){console.warn(...v("Unloading Kitten Scientists...")),this.engine.stop(),this._userInterface.destroy(),$("#ks-styles").remove(),this._gameBeforeSaveHandle!==void 0&&(T.window.dojo.unsubscribe(this._gameBeforeSaveHandle),this._gameBeforeSaveHandle=void 0),this._serverLoadHandle!==void 0&&(T.window.dojo.unsubscribe(this._serverLoadHandle),this._gameBeforeSaveHandle=void 0);const s=this.game.managers.indexOf(this._saveManager);-1<s&&this.game.managers.splice(s,1),T.window.kittenScientists=void 0,console.warn(...v("Kitten Scientists have been unloaded!"))}run(){this.game.console.maxMessages=1e3,this.refreshEntireUserInterface(),this.engine.settings.enabled&&this.engine.start(!0),this.engine.imessage("status.ks.init"),this.runUpdateCheck().catch(R(console)),this._gameBeforeSaveHandle!==void 0&&(T.window.dojo.unsubscribe(this._gameBeforeSaveHandle),this._gameBeforeSaveHandle=void 0),this._gameBeforeSaveHandle=T.window.dojo.subscribe("game/beforesave",s=>{console.info(...v("Injecting Kitten Scientists engine state into save data..."));const e=this.getSettings();s.ks={state:[e]},this._userInterface.stateManagementUi.storeAutoSave(e),document.dispatchEvent(new CustomEvent("ks.reportSavegame",{detail:s}))}),this._serverLoadHandle!==void 0&&(T.window.dojo.unsubscribe(this._serverLoadHandle),this._gameBeforeSaveHandle=void 0),this._serverLoadHandle=T.window.dojo.subscribe("server/load",s=>{const e=T.tryEngineStateFromSaveData("ks",s);if(!e){console.info(...v("The Kittens Game save data did not contain a script state. Trying to load Auto-Save settings..."));return}console.info(...v("Found! Loading settings...")),this.engine.stateLoad(e)})}async runUpdateCheck(){{console.debug(...v("No update check on 'fixed' release channel."));return}}refreshEntireUserInterface(){console.info(...v("Requesting entire user interface to be refreshed.")),this._userInterface.forceFullRefresh()}parseFloat(s){if(s===null||s==="")return null;const e=/[KMGTP]$/i.test(s),t=s.substring(0,s.length-(e?1:0));let i=s.includes("e")||e?Number.parseFloat(t):Number.parseInt(t);if(e){const n=s.substring(s.length-1).toUpperCase();i=i*1e3**["","K","M","G","T","P"].indexOf(n)}return(i===Number.POSITIVE_INFINITY||i<0)&&(i=-1),i}parseAbsolute(s){const e=this.parseFloat(s);return e!==null?Math.round(e):null}parsePercentage(s){const e=s.trim().replace(/%$/,"");return Math.max(0,Math.min(1,Number.parseFloat(e)/100))}renderAbsolute(s,e="invariant"){return s<0||s===Number.POSITIVE_INFINITY?"∞":e!=="invariant"&&Math.floor(Math.log10(s))<9?new Intl.NumberFormat(e,{maximumFractionDigits:0,style:"decimal"}).format(s):this.game.getDisplayValueExt(s,!1,!1)}renderPercentage(s,e="invariant",t){return s<0||s===Number.POSITIVE_INFINITY?"∞":e!=="invariant"?new Intl.NumberFormat(e,{style:"percent"}).format(s):`${this.game.getDisplayValueExt(s*100,!1,!1)}${t?"%":""}`}renderFloat(s,e="invariant"){return s<0||s===Number.POSITIVE_INFINITY?"∞":e!=="invariant"?new Intl.NumberFormat(e,{style:"decimal"}).format(s):this.game.getDisplayValueExt(s,!1,!1)}static encodeSettings(s,e=!0){const t=JSON.stringify(s);return e?T.window.LZString.compressToBase64(t):t}static decodeSettings(s){try{const i=JSON.parse(s);return de.unknownAsEngineStateOrThrow(i)}catch{}if(s.match(/\r?\n/))throw new bt("Multi-line non-JSON input can't be decoded.");const e=T.window.LZString.decompressFromBase64(s),t=JSON.parse(e);return de.unknownAsEngineStateOrThrow(t)}getSettings(){return this.engine.stateSerialize()}getSettingsAsJson(){return JSON.stringify(this.getSettings())}setSettings(s){console.info(...v("Loading engine state..."));const e=this.engine.settings.ksColumn.enabled!==s.engine.ksColumn.enabled;this.engine.stateLoad(s),e&&this.rebuildUi(),this._userInterface.refresh(!0)}importSettingsFromString(s){const e=de.decodeSettings(s);this.setSettings(e)}async copySettings(s=this.getSettings(),e=!0){const t=de.encodeSettings(s,e);await T.window.navigator.clipboard.writeText(t)}static unknownAsEngineStateOrThrow(s){const e=s.v;if(!m(e)&&typeof e=="string"&&e.startsWith("2"))return s;throw new Error("Not a valid engine state.")}installSaveManager(){console.info(...v("Installing save game manager...")),this.game.managers.push(this._saveManager)}}const Ps=async()=>{const c=await new T().waitForGame(de,"ks");T.window.kittenScientists=c,c.validateGame(),c.run()};typeof GM>"u"&&Ps().catch(R(console)),U.main=Ps,Object.defineProperty(U,Symbol.toStringTag,{value:"Module"})});
|
|
37
43
|
(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.id="ks-styles",t.appendChild(document.createTextNode('._label_1nlev_1{align-content:center;display:inline-block;flex:0 1 fit-content;opacity:.8;white-space:nowrap;transition:.3s}._label_1nlev_1:hover{opacity:1}._splitter_1nlev_16 ._label_1nlev_1:first-letter{font-weight:700}._iconLabel_1nlev_20{display:inline-block;margin-right:4px;margin-left:2px;vertical-align:middle}._fillSpace_1nlev_26{flex:1}._delimiter_16hnh_1{margin-bottom:10px}._head_wr1pj_1{display:flex;align-items:stretch;flex-direction:row;justify-content:flex-start;width:100%;transition:.3s}._head_wr1pj_1>._headFlexItem_wr1pj_10{flex:1;margin-right:8px}._setting_1ndg5_1{border-bottom:1px solid transparent;transition:border-bottom .3s}._setting_1ndg5_1 ._checkbox_1ndg5_6{margin:1px 5px 2px 2px}._setting_1ndg5_1 ._panelContent_1ndg5_10{border-left:1px dashed grey;padding-left:16px;margin-left:8px;margin-top:1px;opacity:.5}._setting_1ndg5_1 ._panelContent_1ndg5_10._hidden_1ndg5_17{display:none}._setting_1ndg5_1._checked_1ndg5_22>._panelContent_1ndg5_10{opacity:1}._setting_1ndg5_1._expanded_1ndg5_26{margin-bottom:10px}._setting_1ndg5_1:not(._expanded_1ndg5_26):hover{border-bottom:1px dashed rgba(160,160,160,.2)}._setting_1ndg5_1._readonly_1ndg5_34{cursor:default;pointer-events:none}@keyframes _hail-rainbow_q7zpt_1{0%,to{color:red;text-shadow:0 0 10px red}33%{color:#888;text-shadow:0 0 10px yellow}66%{color:#fff;text-shadow:0 0 10px black}}._iconButton_q7zpt_17{cursor:pointer;display:block;padding-right:3px;line-height:0;opacity:.8;transition:.3s}._iconButton_q7zpt_17:hover{opacity:1}._iconButton_q7zpt_17._inactive_q7zpt_29{opacity:.4}._iconButton_q7zpt_17._inactive_q7zpt_29:hover{opacity:.6}._iconButton_q7zpt_17._ineffective_q7zpt_37{color:red;animation:_hail-rainbow_q7zpt_1 5s linear infinite}._button_q7zpt_43{align-items:end;cursor:pointer;display:flex;opacity:.8;transition:.3s}._button_q7zpt_43:hover{opacity:1}._button_q7zpt_43._inactive_q7zpt_29{opacity:.4}._button_q7zpt_43._inactive_q7zpt_29:hover{opacity:.6}._button_q7zpt_43._ineffective_q7zpt_37{color:red;animation:_hail-rainbow_q7zpt_1 5s linear infinite}._button_q7zpt_43._readonly_q7zpt_67{cursor:default;pointer-events:none}._button_q7zpt_43 ._buttonIcon_q7zpt_72{margin:0 2px 0 0;vertical-align:sub}._button_q7zpt_43._alignRight_q7zpt_77{justify-content:end}._button_q7zpt_43._large_q7zpt_81{padding:5px 10px}._button_q7zpt_43._bordered_q7zpt_85{border:1px solid rgba(180,180,180,.2)}._button_q7zpt_43._bordered_q7zpt_85:not(._large_q7zpt_81){padding:0 2px}._button_q7zpt_43._bordered_q7zpt_85:hover{border:1px solid rgba(180,180,180,1)}._button_q7zpt_43._headAction_q7zpt_97{min-width:50px}._button_q7zpt_43._lastHeadAction_q7zpt_100{padding-right:20px}._button_q7zpt_43._consumeButton_q7zpt_104,._button_q7zpt_43._stockButton_q7zpt_107{border:1px solid transparent}._button_q7zpt_43:not(._bordered_q7zpt_85)+._button_q7zpt_43:not(._bordered_q7zpt_85):before{content:"";display:inline-block;height:1em;border-left:1px solid transparent}._button_q7zpt_43:not(._bordered_q7zpt_85):not(._inactive_q7zpt_29)._alignRight_q7zpt_77+._button_q7zpt_43:not(._bordered_q7zpt_85):not(._inactive_q7zpt_29):before{content:"";display:inline-block;height:1em;border-left:1px solid rgba(180,180,180,.4)}._listContainer_1kxbq_1{margin-bottom:4px}._itemsList_1kxbq_5{-webkit-user-select:none;user-select:none}._list_1kxbq_1~._listTools_1kxbq_9{border-top:1px dotted rgba(128,128,128,.3);margin-left:0;padding-top:2px}._list_1kxbq_1~._listTools_1kxbq_9 *{display:inline-block}._expandoButton_l1ukp_1:not(._expanded_l1ukp_1) ._up_l1ukp_1{display:none}._expandoButton_l1ukp_1:not(._expanded_l1ukp_1) ._down_l1ukp_4{opacity:.6}._expandoButton_l1ukp_1:not(._expanded_l1ukp_1) ._down_l1ukp_4:hover{opacity:1}._expandoButton_l1ukp_1._expanded_l1ukp_1 ._down_l1ukp_4{display:none}#gamePageContainer .dialog.help ._dialog_1276o_1{display:flex;flex-direction:column;height:fit-content!important;box-shadow:none!important}#gamePageContainer .dialog.help ._dialog_1276o_1 ._close_1276o_7{position:absolute;top:10px;right:15px}._explainer_1idu3_1{color:#888;display:inline-block;min-width:100px;-webkit-user-select:none;user-select:none;padding:4px;white-space:break-spaces}._explainer_1idu3_1 p{margin:0}._header_19ql8_1{display:block;margin-bottom:3px;min-width:100px;border-bottom:1px dashed rgba(255,255,255,.1);font-weight:700;-webkit-user-select:none;user-select:none}._toolbar_1654f_1{display:flex;flex-direction:row;padding:0 0 2px;margin:0 0 3px}._toolbar_1654f_1>*{margin:0 3px 0 0}._maxButton_133h2_1{padding-right:5px;padding-top:2px}._fieldset_tfwil_1{border-bottom:none;border-right:none;border-top:none}._textButton_1mv97_1{display:inline-block;white-space:nowrap;opacity:.8;cursor:pointer;-webkit-user-select:none;user-select:none}._textButton_1mv97_1:hover{opacity:1}@keyframes _scale_6c09s_1{0%{scale:.5;opacity:0}50%{scale:1;opacity:1}to{scale:2;opacity:0}}._active_6c09s_16{text-shadow:rgba(128,128,128,.8) 0 0 15px;position:relative}._active_6c09s_16:after,._active_6c09s_16:before{display:inline-block;width:1em;height:100%;position:absolute;right:-1.5em;scale:0;text-align:center;transform-origin:center}._active_6c09s_16:after{content:attr(data-ks-active-from);animation:_scale_6c09s_1 8s linear infinite}._active_6c09s_16:before{content:attr(data-ks-active-to);animation:_scale_6c09s_1 8s linear infinite;animation-delay:4s}._buyButton_10eul_1,._sellButton_1tmvd_1{display:inline-block;padding-right:10px;min-width:86px}#ksColumn{min-width:250px;max-width:440px;vertical-align:top;padding-left:8px;top:20px;position:relative;overflow-y:auto}#footerLinks{display:flex;flex-direction:column;position:fixed;text-align:right;line-height:0;right:-5px!important;margin-bottom:1em}#footerLinks a{line-height:1;padding-right:10px;opacity:.5;transition:.3s;text-decoration:none;text-transform:lowercase}#footerLinks a:hover{opacity:1}#crowdjet-expand-container{position:fixed!important;bottom:10px!important;right:-10px!important;opacity:.5}#crowdjet-expand-container:hover{opacity:1}._spacer_auis8_44{display:block;margin-bottom:100px}._ui_auis8_49{margin:5px 0 10px;padding-right:10px}._ui_auis8_49 ul{list-style:none;margin:0;padding:0}._ui_auis8_49 #_toggle-list-resources_auis8_1 ._stockWarn_auis8_60 *,._ui_auis8_49 #_toggle-reset-list-resources_auis8_1 ._stockWarn_auis8_60 *{color:#dd1e00}._showActivity_auis8_66{cursor:pointer;display:inline-block;vertical-align:middle}#game #rightColumn{overflow-y:auto}#game #rightColumn #rightTabLog{overflow-y:visible}#game #rightColumn #rightTabLog #gameLog{height:auto;min-height:auto;overflow-y:visible}#game .res-row .res-cell.ks-stock-above{color:green}#game .res-row .res-cell.ks-stock-below{color:red}')),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
|