`)}popupDebug(){window.open(this.getDebugURI())}iframeDebug(){const t=document.createElement("iframe");t.width=""+window.innerWidth,t.height=""+window.innerHeight,t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.zIndex="10000",document.body.appendChild(t),t.contentWindow.document.open(),t.contentWindow.document.write(this.getDebugHTML()),t.contentWindow.document.close(),t.contentWindow.document.body.style.background="white";const e=document.createElement("button");e.style.position="absolute",e.style.top="0",e.style.right="0",e.style.zIndex="10001",document.body.appendChild(e),e.textContent="close",["pointerdown","click","touchdown"].forEach(i=>{e.addEventListener(i,()=>{document.body.removeChild(t),document.body.removeChild(e)},!0)})}getPDOMDebugHTML(){let t="";const e="font-weight: bold; font-size: 120%; margin-top: 5px;",i="    ";t+=`
Accessible Instances

`,function e(s,n){t+=n+Fn(`${s.isRootInstance?"":s.node.tagName} ${s.toString()}`)+"
",s.children.forEach(t=>{e(t,n+i)})}(this._rootPDOMInstance,""),t+=`
Parallel DOM

`;let s=this._rootPDOMInstance.peer.primarySibling.outerHTML;s=s.replace(/>\n<");const n=s.split("\n");let r="";for(let a=0;a",s||(r+=i)}return t}foreignObjectRasterization(t){const e={};let i=0;function s(t){t.id||(t.id="unknown-canvas-"+i++),e[t.id]=t.toDataURL()}!function t(e){if(e instanceof Ju)_.each(e.blocks,e=>{t(e)});else if(e instanceof Pu&&e.firstDrawable&&e.lastDrawable){for(let i=e.firstDrawable;i!==e.lastDrawable;i=i.nextDrawable)t(i);t(e.lastDrawable),(e instanceof Cu||e instanceof Bu)&&e.canvas&&e.canvas instanceof window.HTMLCanvasElement&&s(e.canvas)}md&&e instanceof md&&(e.domElement instanceof window.HTMLCanvasElement&&s(e.domElement),Array.prototype.forEach.call(e.domElement.getElementsByTagName("canvas"),t=>{s(t)}))}(this._rootBackbone);const n=document.implementation.createHTMLDocument("");n.documentElement.innerHTML=this.domElement.outerHTML,n.documentElement.setAttribute("xmlns",n.documentElement.namespaceURI),n.documentElement.appendChild(document.createElement("style")).innerHTML=`.${Pi.ROOT_CLASS_NAME} { display:none; } `;let r=n.documentElement.getElementsByTagName("canvas");r=Array.prototype.slice.call(r);for(let u=0;u{fp.elementToSVGDataURL(n.documentElement,a,o,t)};let h=0,c=!1;const d=Array.prototype.slice.call(n.documentElement.getElementsByTagName("image"));for(let u=0;u{const i=new window.Image,s=t;i.onload=()=>{const t=document.createElement("canvas");t.width=i.width,t.height=i.height,t.getContext("2d").drawImage(i,0,0),s.setAttribute("xlink:href",t.toDataURL()),0==--h&&l()},i.onerror=()=>{0==--h&&l()},i.src=e})())}c||l()}popupRasterization(){this.foreignObjectRasterization(t=>{t&&window.open(t)})}getTrailFromPDOMIndicesString(t){if(!this._rootPDOMInstance)return null;let e=this._rootPDOMInstance;const i=t.split(ki.PDOM_UNIQUE_ID_SEPARATOR);for(let s=0;s
${(new window.XMLSerializer).serializeToString(t)}
`,o=new window.Image;o.onload=()=>{r.drawImage(o,0,0),s(n.toDataURL())},o.onerror=()=>{s(null)};const l=new window.TextEncoderLite("utf-8").encode(a),h=window.fromByteArray(l);o.src="data:image/svg+xml;base64,"+h}static assertSubtreeDisposed(t){0}static addInputListener(t){_.includes(fp.inputListeners,t)||fp.inputListeners.push(t)}static removeInputListener(t){fp.inputListeners.splice(_.indexOf(fp.inputListeners,t),1)}static interruptInput(){const t=fp.inputListeners.slice(0);for(let e=0;e{var e,i,s;null===(e=phet)||void 0===e||null===(i=e.joist)||void 0===i||null===(s=i.display)||void 0===s||s.interruptOtherPointers(null==t?void 0:t.pointer)}),Q.register("Display",fp),fp.userGestureEmitter=new Br.Z,fp.inputListeners=[];var Ap=i(6292);const vp={};let bp=0;function Vp(t){const e=vp[t];this.parents[0].childrenChangedEmitter.removeListener(e),delete vp[t]}function Pp(t,e,i){let s=t.indexOfChild(e)+i;for(;s>0&&s=0&&s{const e={index:null};return t.parents[0]&&(e.index=t.parents[0].indexOfChild(t)),e},applyState:(t,e)=>{const i=t.parents[0];if(i&&e.index){const s=i.children;s[i.indexOfChild(t)]=s[e.index],s[e.index]=t,i.setChildren(s)}},stateSchema:{index:(0,me.Z)(it.Z)},methods:{linkIndex:{returnType:it.Z,parameterTypes:[(0,Ap.Z)(On.Z,[it.Z])],documentation:"Following the PropertyIO.link pattern, subscribe for notifications when the index in the parent changes, and receive a callback with the current value. The return value is a numeric ID for use with clearLinkIndex.",implementation:function(t){const e=()=>{const e=this.parents[0].indexOfChild(this);t(e)};this.parents[0].childrenChangedEmitter.addListener(e),e();const i=bp;return vp[i]=e,bp++,i}},unlinkIndex:{returnType:On.Z,parameterTypes:[it.Z],documentation:"Unlink a listener that has been added using linkIndex, by its numerical ID (like setTimeout/clearTimeout)",implementation:Vp},clearLinkIndex:{returnType:On.Z,parameterTypes:[it.Z],documentation:'Deprecated, see "unlinkIndex".',implementation:function(t){Vp.call(this,t)}},moveForward:{returnType:On.Z,parameterTypes:[],implementation:function(){var t;(t=this)._parents.forEach(e=>Pp(e,t,1))},documentation:"Move this Node one index forward in each of its parents, skipping invisible Nodes. If the Node is already at the front, this is a no-op."},moveBackward:{returnType:On.Z,parameterTypes:[],implementation:function(){var t;(t=this)._parents.forEach(e=>Pp(e,t,-1))},documentation:"Move this Node one index backward in each of its parents, skipping invisible Nodes. If the Node is already at the back, this is a no-op."}}});Q.register("IndexedNodeIO",wp);const Mp=wp;class Sp extends is.ZP{constructor(t,e,i){i=(0,Be.Z)({nodeTandem:ze.Z.REQUIRED},i),super([new Ne.Z(!0,{tandem:i.nodeTandem.createTandem("visibleProperty")}),...t],(function(t){for(var i=arguments.length,s=new Array(i>1?i-1:0),n=1;n{const t=window.phet.chipper.queryParameters.gameUpLogging,e=window.phet.chipper.queryParameters.gameUp,i=window.phet.chipper.queryParameters.gameUpTestHarness,s=e=>t&&console.log(e);if(e){s("Enabled Game Up Camera");const t=".brainpop.com";let e=!1,n=0;const r=()=>{!e&&n<10&&(parent.postMessage("captureReady","*"),n++,s("Posted captureReady, number of checks: "+n),setTimeout(r,1e3))},a=n=>{if(-1!==n.origin.indexOf(t,n.origin.length-t.length)||i)if("captureImage"===n.data){const t=window.phet.joist.ScreenshotGenerator.generateScreenshot(window.phet.joist.sim,"image/jpeg");o(t,n.origin,n.source),s("Sent image")}else"GameUpCaptureReady"===n.data&&(s("GameUpCaptureReady"),e=!0)},o=(t,e,i)=>{t=t.replace("data:image/jpeg;base64,",""),i.postMessage(t,e)};window.addEventListener?window.addEventListener("message",a,!1):window.attachEvent&&window.attachEvent("onmessage",a),r()}},3980:t=>{t.exports=function t(e,i,s){function n(a,o){if(!i[a]){if(!e[a]){if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var h=i[a]={exports:{}};e[a][0].call(h.exports,(function(t){var i=e[a][1][t];return n(i||t)}),h,h.exports,t,e,i,s)}return i[a].exports}for(var r=void 0,a=0;a=0?(h.b[6][0]++,n):(h.b[6][1]++,s+n));for(h.s[12]++;a1&&void 0!==arguments[1]?arguments[1]:(h.b[0][0]++,y);h.f[0]++;var i=(h.s[1]++,(0,c.default)(t,e)),s=(h.s[2]++,(0,d.default)(i,e));return h.s[3]++,(0,u.format)(s,e)},i.stringify=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(h.b[1][0]++,y);return h.f[1]++,h.s[4]++,(0,p.toHTML)(t,e)};var c=g(t("./lexer")),d=g(t("./parser")),u=t("./format"),p=t("./stringify"),m=t("./tags");function g(t){return t&&t.__esModule?t:{default:t}}var y=i.parseDefaults=(h.s[0]++,{voidTags:m.voidTags,closingTags:m.closingTags,childlessTags:m.childlessTags,closingTagAncestorBreakers:m.closingTagAncestorBreakers,includePositions:!1})},{"./format":2,"./lexer":4,"./parser":5,"./stringify":6,"./tags":7}],4:[function(t,e,i){"use strict";var s,n,r,a,o,l,h=(s="/Users/chrisandrejewski/Desktop/Work/github-repos/himalaya/src/lexer.js",n="99f1269b85a36e02e6fcfa2eb5c9423a8a428848",r=new(0,function(){}.constructor)("return this")(),o={path:"/Users/chrisandrejewski/Desktop/Work/github-repos/himalaya/src/lexer.js",statementMap:{0:{start:{line:9,column:16},end:{line:9,column:30}},1:{start:{line:10,column:14},end:{line:10,column:42}},2:{start:{line:11,column:2},end:{line:19,column:3}},3:{start:{line:12,column:17},end:{line:12,column:30}},4:{start:{line:13,column:4},end:{line:18,column:5}},5:{start:{line:14,column:6},end:{line:14,column:21}},6:{start:{line:15,column:6},end:{line:15,column:25}},7:{start:{line:17,column:6},end:{line:17,column:23}},8:{start:{line:23,column:14},end:{line:23,column:34}},9:{start:{line:24,column:2},end:{line:24,column:41}},10:{start:{line:28,column:2},end:{line:32,column:3}},11:{start:{line:36,column:2},end:{line:40,column:3}},12:{start:{line:44,column:16},end:{line:49,column:3}},13:{start:{line:50,column:2},end:{line:50,column:12}},14:{start:{line:51,column:2},end:{line:51,column:21}},15:{start:{line:55,column:42},end:{line:55,column:47}},16:{start:{line:56,column:14},end:{line:56,column:24}},17:{start:{line:57,column:2},end:{line:72,column:3}},18:{start:{line:58,column:18},end:{line:58,column:38}},19:{start:{line:59,column:4},end:{line:59,column:18}},20:{start:{line:60,column:4},end:{line:71,column:5}},21:{start:{line:61,column:24},end:{line:61,column:57}},22:{start:{line:62,column:6},end:{line:70,column:7}},23:{start:{line:63,column:8},end:{line:63,column:25}},24:{start:{line:65,column:24},end:{line:65,column:37}},25:{start:{line:66,column:24},end:{line:66,column:45}},26:{start:{line:67,column:8},end:{line:69,column:9}},27:{start:{line:68,column:10},end:{line:68,column:36}},28:{start:{line:75,column:21},end:{line:75,column:34}},29:{start:{line:77,column:2},end:{line:87,column:3}},30:{start:{line:78,column:20},end:{line:78,column:43}},31:{start:{line:79,column:4},end:{line:81,column:5}},32:{start:{line:80,column:6},end:{line:80,column:20}},33:{start:{line:82,column:17},end:{line:82,column:40}},34:{start:{line:83,column:4},end:{line:85,column:5}},35:{start:{line:84,column:6},end:{line:84,column:20}},36:{start:{line:86,column:4},end:{line:86,column:23}},37:{start:{line:91,column:15},end:{line:91,column:21}},38:{start:{line:92,column:26},end:{line:92,column:31}},39:{start:{line:93,column:16},end:{line:93,column:48}},40:{start:{line:94,column:2},end:{line:94,column:40}},41:{start:{line:94,column:34},end:{line:94,column:40}},42:{start:{line:95,column:2},end:{line:97,column:3}},43:{start:{line:96,column:4},end:{line:96,column:24}},44:{start:{line:99,column:16},end:{line:99,column:38}},45:{start:{line:100,column:18},end:{line:100,column:52}},46:{start:{line:101,column:2},end:{line:101,column:38}},47:{start:{line:102,column:14},end:{line:102,column:36}},48:{start:{line:103,column:2},end:{line:103,column:60}},49:{start:{line:107,column:26},end:{line:107,column:31}},50:{start:{line:108,column:16},end:{line:108,column:38}},51:{start:{line:109,column:2},end:{line:109,column:32}},52:{start:{line:110,column:19},end:{line:110,column:53}},53:{start:{line:111,column:19},end:{line:111,column:33}},54:{start:{line:112,column:2},end:{line:114,column:3}},55:{start:{line:113,column:4},end:{line:113,column:40}},56:{start:{line:116,column:18},end:{line:116,column:55}},57:{start:{line:117,column:2},end:{line:117,column:41}},58:{start:{line:118,column:2},end:{line:125,column:4}},59:{start:{line:129,column:26},end:{line:129,column:31}},60:{start:{line:131,column:23},end:{line:131,column:53}},61:{start:{line:132,column:18},end:{line:132,column:36}},62:{start:{line:133,column:18},end:{line:133,column:40}},63:{start:{line:134,column:4},end:{line:134,column:46}},64:{start:{line:135,column:4},end:{line:135,column:68}},65:{start:{line:137,column:18},end:{line:137,column:35}},66:{start:{line:138,column:2},end:{line:138,column:25}},67:{start:{line:140,column:22},end:{line:140,column:48}},68:{start:{line:141,column:18},end:{line:141,column:35}},69:{start:{line:142,column:4},end:{line:142,column:46}},70:{start:{line:143,column:16},end:{line:143,column:38}},71:{start:{line:144,column:4},end:{line:144,column:64}},72:{start:{line:146,column:2},end:{line:146,column:16}},73:{start:{line:150,column:19},end:{line:150,column:23}},74:{start:{line:152,column:2},end:{line:152,column:30}},75:{start:{line:156,column:26},end:{line:156,column:31}},76:{start:{line:157,column:14},end:{line:157,column:24}},77:{start:{line:158,column:14},end:{line:158,column:28}},78:{start:{line:159,column:2},end:{line:164,column:3}},79:{start:{line:160,column:17},end:{line:160,column:34}},80:{start:{line:161,column:22},end:{line:161,column:79}},81:{start:{line:162,column:4},end:{line:162,column:24}},82:{start:{line:162,column:19},end:{line:162,column:24}},83:{start:{line:163,column:4},end:{line:163,column:11}},84:{start:{line:166,column:12},end:{line:166,column:21}},85:{start:{line:167,column:2},end:{line:172,column:3}},86:{start:{line:168,column:17},end:{line:168,column:32}},87:{start:{line:169,column:22},end:{line:169,column:79}},88:{start:{line:170,column:4},end:{line:170,column:25}},89:{start:{line:170,column:20},end:{line:170,column:25}},90:{start:{line:171,column:4},end:{line:171,column:9}},91:{start:{line:174,column:2},end:{line:174,column:34}},92:{start:{line:175,column:18},end:{line:175,column:39}},93:{start:{line:176,column:2},end:{line:179,column:4}},94:{start:{line:180,column:2},end:{line:180,column:16}},95:{start:{line:184,column:34},end:{line:184,column:39}},96:{start:{line:185,column:15},end:{line:185,column:29}},97:{start:{line:186,column:14},end:{line:186,column:18}},98:{start:{line:187,column:18},end:{line:187,column:24}},99:{start:{line:188,column:16},end:{line:188,column:18}},100:{start:{line:189,column:14},end:{line:189,column:24}},101:{start:{line:190,column:2},end:{line:227,column:3}},102:{start:{line:191,column:17},end:{line:191,column:35}},103:{start:{line:192,column:4},end:{line:199,column:5}},104:{start:{line:193,column:25},end:{line:193,column:39}},105:{start:{line:194,column:6},end:{line:196,column:7}},106:{start:{line:195,column:8},end:{line:195,column:20}},107:{start:{line:197,column:6},end:{line:197,column:14}},108:{start:{line:198,column:6},end:{line:198,column:14}},109:{start:{line:201,column:21},end:{line:201,column:49}},110:{start:{line:202,column:4},end:{line:207,column:5}},111:{start:{line:203,column:6},end:{line:205,column:7}},112:{start:{line:204,column:8},end:{line:204,column:48}},113:{start:{line:206,column:6},end:{line:206,column:11}},114:{start:{line:209,column:22},end:{line:209,column:44}},115:{start:{line:210,column:4},end:{line:217,column:5}},116:{start:{line:211,column:6},end:{line:213,column:7}},117:{start:{line:212,column:8},end:{line:212,column:48}},118:{start:{line:214,column:6},end:{line:214,column:28}},119:{start:{line:215,column:6},end:{line:215,column:14}},120:{start:{line:216,column:6},end:{line:216,column:14}},121:{start:{line:219,column:25},end:{line:219,column:54}},122:{start:{line:220,column:4},end:{line:224,column:5}},123:{start:{line:221,column:6},end:{line:221,column:18}},124:{start:{line:222,column:6},end:{line:222,column:14}},125:{start:{line:223,column:6},end:{line:223,column:14}},126:{start:{line:226,column:4},end:{line:226,column:12}},127:{start:{line:228,column:2},end:{line:228,column:37}},128:{start:{line:230,column:15},end:{line:230,column:27}},129:{start:{line:231,column:15},end:{line:231,column:26}},130:{start:{line:232,column:2},end:{line:269,column:3}},131:{start:{line:233,column:17},end:{line:233,column:25}},132:{start:{line:234,column:22},end:{line:234,column:46}},133:{start:{line:235,column:4},end:{line:253,column:5}},134:{start:{line:236,column:25},end:{line:236,column:37}},135:{start:{line:237,column:6},end:{line:252,column:7}},136:{start:{line:238,column:8},end:{line:243,column:9}},137:{start:{line:239,column:26},end:{line:239,column:43}},138:{start:{line:240,column:10},end:{line:240,column:47}},139:{start:{line:241,column:10},end:{line:241,column:16}},140:{start:{line:242,column:10},end:{line:242,column:18}},141:{start:{line:244,column:26},end:{line:244,column:38}},142:{start:{line:245,column:8},end:{line:245,column:14}},143:{start:{line:246,column:8},end:{line:251,column:9}},144:{start:{line:247,column:26},end:{line:247,column:48}},145:{start:{line:248,column:10},end:{line:248,column:47}},146:{start:{line:249,column:10},end:{line:249,column:16}},147:{start:{line:250,column:10},end:{line:250,column:18}},148:{start:{line:254,column:4},end:{line:266,column:5}},149:{start:{line:255,column:25},end:{line:255,column:37}},150:{start:{line:256,column:6},end:{line:261,column:7}},151:{start:{line:257,column:24},end:{line:257,column:41}},152:{start:{line:258,column:8},end:{line:258,column:45}},153:{start:{line:259,column:8},end:{line:259,column:14}},154:{start:{line:260,column:8},end:{line:260,column:16}},155:{start:{line:263,column:22},end:{line:263,column:39}},156:{start:{line:264,column:6},end:{line:264,column:43}},157:{start:{line:265,column:6},end:{line:265,column:14}},158:{start:{line:268,column:4},end:{line:268,column:38}},159:{start:{line:272,column:13},end:{line:272,column:20}},160:{start:{line:275,column:34},end:{line:275,column:39}},161:{start:{line:276,column:22},end:{line:276,column:43}},162:{start:{line:277,column:14},end:{line:277,column:24}},163:{start:{line:278,column:14},end:{line:278,column:28}},164:{start:{line:279,column:2},end:{line:311,column:3}},165:{start:{line:280,column:20},end:{line:280,column:44}},166:{start:{line:281,column:4},end:{line:284,column:5}},167:{start:{line:282,column:6},end:{line:282,column:20}},168:{start:{line:283,column:6},end:{line:283,column:11}},169:{start:{line:286,column:29},end:{line:286,column:51}},170:{start:{line:287,column:4},end:{line:287,column:48}},171:{start:{line:288,column:21},end:{line:288,column:66}},172:{start:{line:289,column:17},end:{line:289,column:33}},173:{start:{line:290,column:4},end:{line:293,column:5}},174:{start:{line:291,column:6},end:{line:291,column:37}},175:{start:{line:292,column:6},end:{line:292,column:14}},176:{start:{line:295,column:4},end:{line:306,column:5}},177:{start:{line:296,column:24},end:{line:296,column:46}},178:{start:{line:297,column:6},end:{line:297,column:42}},179:{start:{line:298,column:6},end:{line:305,column:8}},180:{start:{line:308,column:4},end:{line:308,column:39}},181:{start:{line:309,column:4},end:{line:309,column:56}},182:{start:{line:310,column:4},end:{line:310,column:9}}},fnMap:{0:{name:"feedPosition",decl:{start:{line:8,column:16},end:{line:8,column:28}},loc:{start:{line:8,column:50},end:{line:20,column:1}},line:8},1:{name:"jumpPosition",decl:{start:{line:22,column:16},end:{line:22,column:28}},loc:{start:{line:22,column:50},end:{line:25,column:1}},line:22},2:{name:"makeInitialPosition",decl:{start:{line:27,column:16},end:{line:27,column:35}},loc:{start:{line:27,column:39},end:{line:33,column:1}},line:27},3:{name:"copyPosition",decl:{start:{line:35,column:16},end:{line:35,column:28}},loc:{start:{line:35,column:40},end:{line:41,column:1}},line:35},4:{name:"lexer",decl:{start:{line:43,column:24},end:{line:43,column:29}},loc:{start:{line:43,column:45},end:{line:52,column:1}},line:43},5:{name:"lex",decl:{start:{line:54,column:16},end:{line:54,column:19}},loc:{start:{line:54,column:28},end:{line:73,column:1}},line:54},6:{name:"findTextEnd",decl:{start:{line:76,column:16},end:{line:76,column:27}},loc:{start:{line:76,column:41},end:{line:88,column:1}},line:76},7:{name:"lexText",decl:{start:{line:90,column:16},end:{line:90,column:23}},loc:{start:{line:90,column:32},end:{line:104,column:1}},line:90},8:{name:"lexComment",decl:{start:{line:106,column:16},end:{line:106,column:26}},loc:{start:{line:106,column:35},end:{line:126,column:1}},line:106},9:{name:"lexTag",decl:{start:{line:128,column:16},end:{line:128,column:22}},loc:{start:{line:128,column:31},end:{line:147,column:1}},line:128},10:{name:"isWhitespaceChar",decl:{start:{line:151,column:16},end:{line:151,column:32}},loc:{start:{line:151,column:40},end:{line:153,column:1}},line:151},11:{name:"lexTagName",decl:{start:{line:155,column:16},end:{line:155,column:26}},loc:{start:{line:155,column:35},end:{line:181,column:1}},line:155},12:{name:"lexTagAttributes",decl:{start:{line:183,column:16},end:{line:183,column:32}},loc:{start:{line:183,column:41},end:{line:270,column:1}},line:183},13:{name:"lexSkipTag",decl:{start:{line:274,column:16},end:{line:274,column:26}},loc:{start:{line:274,column:44},end:{line:312,column:1}},line:274}},branchMap:{0:{loc:{start:{line:13,column:4},end:{line:18,column:5}},type:"if",locations:[{start:{line:13,column:4},end:{line:18,column:5}},{start:{line:13,column:4},end:{line:18,column:5}}],line:13},1:{loc:{start:{line:60,column:4},end:{line:71,column:5}},type:"if",locations:[{start:{line:60,column:4},end:{line:71,column:5}},{start:{line:60,column:4},end:{line:71,column:5}}],line:60},2:{loc:{start:{line:62,column:6},end:{line:70,column:7}},type:"if",locations:[{start:{line:62,column:6},end:{line:70,column:7}},{start:{line:62,column:6},end:{line:70,column:7}}],line:62},3:{loc:{start:{line:67,column:8},end:{line:69,column:9}},type:"if",locations:[{start:{line:67,column:8},end:{line:69,column:9}},{start:{line:67,column:8},end:{line:69,column:9}}],line:67},4:{loc:{start:{line:79,column:4},end:{line:81,column:5}},type:"if",locations:[{start:{line:79,column:4},end:{line:81,column:5}},{start:{line:79,column:4},end:{line:81,column:5}}],line:79},5:{loc:{start:{line:83,column:4},end:{line:85,column:5}},type:"if",locations:[{start:{line:83,column:4},end:{line:85,column:5}},{start:{line:83,column:4},end:{line:85,column:5}}],line:83},6:{loc:{start:{line:83,column:8},end:{line:83,column:63}},type:"binary-expr",locations:[{start:{line:83,column:8},end:{line:83,column:20}},{start:{line:83,column:24},end:{line:83,column:36}},{start:{line:83,column:40},end:{line:83,column:63}}],line:83},7:{loc:{start:{line:94,column:2},end:{line:94,column:40}},type:"if",locations:[{start:{line:94,column:2},end:{line:94,column:40}},{start:{line:94,column:2},end:{line:94,column:40}}],line:94},8:{loc:{start:{line:95,column:2},end:{line:97,column:3}},type:"if",locations:[{start:{line:95,column:2},end:{line:97,column:3}},{start:{line:95,column:2},end:{line:97,column:3}}],line:95},9:{loc:{start:{line:112,column:2},end:{line:114,column:3}},type:"if",locations:[{start:{line:112,column:2},end:{line:114,column:3}},{start:{line:112,column:2},end:{line:114,column:3}}],line:112},10:{loc:{start:{line:134,column:32},end:{line:134,column:45}},type:"cond-expr",locations:[{start:{line:134,column:40},end:{line:134,column:41}},{start:{line:134,column:44},end:{line:134,column:45}}],line:134},11:{loc:{start:{line:142,column:32},end:{line:142,column:45}},type:"cond-expr",locations:[{start:{line:142,column:40},end:{line:142,column:41}},{start:{line:142,column:44},end:{line:142,column:45}}],line:142},12:{loc:{start:{line:161,column:24},end:{line:161,column:78}},type:"binary-expr",locations:[{start:{line:161,column:24},end:{line:161,column:46}},{start:{line:161,column:50},end:{line:161,column:62}},{start:{line:161,column:66},end:{line:161,column:78}}],line:161},13:{loc:{start:{line:162,column:4},end:{line:162,column:24}},type:"if",locations:[{start:{line:162,column:4},end:{line:162,column:24}},{start:{line:162,column:4},end:{line:162,column:24}}],line:162},14:{loc:{start:{line:169,column:24},end:{line:169,column:78}},type:"binary-expr",locations:[{start:{line:169,column:24},end:{line:169,column:46}},{start:{line:169,column:50},end:{line:169,column:62}},{start:{line:169,column:66},end:{line:169,column:78}}],line:169},15:{loc:{start:{line:170,column:4},end:{line:170,column:25}},type:"if",locations:[{start:{line:170,column:4},end:{line:170,column:25}},{start:{line:170,column:4},end:{line:170,column:25}}],line:170},16:{loc:{start:{line:192,column:4},end:{line:199,column:5}},type:"if",locations:[{start:{line:192,column:4},end:{line:199,column:5}},{start:{line:192,column:4},end:{line:199,column:5}}],line:192},17:{loc:{start:{line:194,column:6},end:{line:196,column:7}},type:"if",locations:[{start:{line:194,column:6},end:{line:196,column:7}},{start:{line:194,column:6},end:{line:196,column:7}}],line:194},18:{loc:{start:{line:201,column:21},end:{line:201,column:49}},type:"binary-expr",locations:[{start:{line:201,column:21},end:{line:201,column:33}},{start:{line:201,column:37},end:{line:201,column:49}}],line:201},19:{loc:{start:{line:202,column:4},end:{line:207,column:5}},type:"if",locations:[{start:{line:202,column:4},end:{line:207,column:5}},{start:{line:202,column:4},end:{line:207,column:5}}],line:202},20:{loc:{start:{line:203,column:6},end:{line:205,column:7}},type:"if",locations:[{start:{line:203,column:6},end:{line:205,column:7}},{start:{line:203,column:6},end:{line:205,column:7}}],line:203},21:{loc:{start:{line:210,column:4},end:{line:217,column:5}},type:"if",locations:[{start:{line:210,column:4},end:{line:217,column:5}},{start:{line:210,column:4},end:{line:217,column:5}}],line:210},22:{loc:{start:{line:211,column:6},end:{line:213,column:7}},type:"if",locations:[{start:{line:211,column:6},end:{line:213,column:7}},{start:{line:211,column:6},end:{line:213,column:7}}],line:211},23:{loc:{start:{line:219,column:25},end:{line:219,column:54}},type:"binary-expr",locations:[{start:{line:219,column:25},end:{line:219,column:38}},{start:{line:219,column:42},end:{line:219,column:54}}],line:219},24:{loc:{start:{line:220,column:4},end:{line:224,column:5}},type:"if",locations:[{start:{line:220,column:4},end:{line:224,column:5}},{start:{line:220,column:4},end:{line:224,column:5}}],line:220},25:{loc:{start:{line:235,column:4},end:{line:253,column:5}},type:"if",locations:[{start:{line:235,column:4},end:{line:253,column:5}},{start:{line:235,column:4},end:{line:253,column:5}}],line:235},26:{loc:{start:{line:237,column:6},end:{line:252,column:7}},type:"if",locations:[{start:{line:237,column:6},end:{line:252,column:7}},{start:{line:237,column:6},end:{line:252,column:7}}],line:237},27:{loc:{start:{line:237,column:10},end:{line:237,column:51}},type:"binary-expr",locations:[{start:{line:237,column:10},end:{line:237,column:20}},{start:{line:237,column:24},end:{line:237,column:51}}],line:237},28:{loc:{start:{line:238,column:8},end:{line:243,column:9}},type:"if",locations:[{start:{line:238,column:8},end:{line:243,column:9}},{start:{line:238,column:8},end:{line:243,column:9}}],line:238},29:{loc:{start:{line:246,column:8},end:{line:251,column:9}},type:"if",locations:[{start:{line:246,column:8},end:{line:251,column:9}},{start:{line:246,column:8},end:{line:251,column:9}}],line:246},30:{loc:{start:{line:254,column:4},end:{line:266,column:5}},type:"if",locations:[{start:{line:254,column:4},end:{line:266,column:5}},{start:{line:254,column:4},end:{line:266,column:5}}],line:254},31:{loc:{start:{line:256,column:6},end:{line:261,column:7}},type:"if",locations:[{start:{line:256,column:6},end:{line:261,column:7}},{start:{line:256,column:6},end:{line:261,column:7}}],line:256},32:{loc:{start:{line:256,column:10},end:{line:256,column:56}},type:"binary-expr",locations:[{start:{line:256,column:10},end:{line:256,column:20}},{start:{line:256,column:24},end:{line:256,column:56}}],line:256},33:{loc:{start:{line:281,column:4},end:{line:284,column:5}},type:"if",locations:[{start:{line:281,column:4},end:{line:284,column:5}},{start:{line:281,column:4},end:{line:284,column:5}}],line:281},34:{loc:{start:{line:290,column:4},end:{line:293,column:5}},type:"if",locations:[{start:{line:290,column:4},end:{line:293,column:5}},{start:{line:290,column:4},end:{line:293,column:5}}],line:290},35:{loc:{start:{line:295,column:4},end:{line:306,column:5}},type:"if",locations:[{start:{line:295,column:4},end:{line:306,column:5}},{start:{line:295,column:4},end:{line:306,column:5}}],line:295}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0,30:0,31:0,32:0,33:0,34:0,35:0,36:0,37:0,38:0,39:0,40:0,41:0,42:0,43:0,44:0,45:0,46:0,47:0,48:0,49:0,50:0,51:0,52:0,53:0,54:0,55:0,56:0,57:0,58:0,59:0,60:0,61:0,62:0,63:0,64:0,65:0,66:0,67:0,68:0,69:0,70:0,71:0,72:0,73:0,74:0,75:0,76:0,77:0,78:0,79:0,80:0,81:0,82:0,83:0,84:0,85:0,86:0,87:0,88:0,89:0,90:0,91:0,92:0,93:0,94:0,95:0,96:0,97:0,98:0,99:0,100:0,101:0,102:0,103:0,104:0,105:0,106:0,107:0,108:0,109:0,110:0,111:0,112:0,113:0,114:0,115:0,116:0,117:0,118:0,119:0,120:0,121:0,122:0,123:0,124:0,125:0,126:0,127:0,128:0,129:0,130:0,131:0,132:0,133:0,134:0,135:0,136:0,137:0,138:0,139:0,140:0,141:0,142:0,143:0,144:0,145:0,146:0,147:0,148:0,149:0,150:0,151:0,152:0,153:0,154:0,155:0,156:0,157:0,158:0,159:0,160:0,161:0,162:0,163:0,164:0,165:0,166:0,167:0,168:0,169:0,170:0,171:0,172:0,173:0,174:0,175:0,176:0,177:0,178:0,179:0,180:0,181:0,182:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0],5:[0,0],6:[0,0,0],7:[0,0],8:[0,0],9:[0,0],10:[0,0],11:[0,0],12:[0,0,0],13:[0,0],14:[0,0,0],15:[0,0],16:[0,0],17:[0,0],18:[0,0],19:[0,0],20:[0,0],21:[0,0],22:[0,0],23:[0,0],24:[0,0],25:[0,0],26:[0,0],27:[0,0],28:[0,0],29:[0,0],30:[0,0],31:[0,0],32:[0,0],33:[0,0],34:[0,0],35:[0,0]},_coverageSchema:"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c"},(l=r[a="__coverage__"]||(r[a]={}))[s]&&l[s].hash===n?l[s]:(o.hash=n,l[s]=o));Object.defineProperty(i,"__esModule",{value:!0}),i.feedPosition=d,i.jumpPosition=u,i.makeInitialPosition=p,i.copyPosition=m,i.default=function(t,e){h.f[4]++;var i=(h.s[12]++,{str:t,options:e,position:p(),tokens:[]});return h.s[13]++,g(i),h.s[14]++,i.tokens},i.lex=g,i.findTextEnd=f,i.lexText=A,i.lexComment=v,i.lexTag=b,i.isWhitespaceChar=P,i.lexTagName=w,i.lexTagAttributes=M,i.lexSkipTag=T;var c=t("./compat");function d(t,e,i){h.f[0]++;var s=(h.s[0]++,t.index),n=(h.s[1]++,t.index=s+i);h.s[2]++;for(var r=s;r"===a)));if(h.s[81]++,o){h.b[13][0]++,h.s[82]++;break}h.b[13][1]++,h.s[83]++,r++}var l=(h.s[84]++,r+1);for(h.s[85]++;l"===c)));if(h.s[88]++,!d){h.b[15][0]++,h.s[89]++;break}h.b[15][1]++,h.s[90]++,l++}h.s[91]++,u(s,i,l);var p=(h.s[92]++,i.slice(r,l));return h.s[93]++,t.tokens.push({type:"tag",content:p}),h.s[94]++,p}function M(t){h.f[12]++;var e=(h.s[95]++,t),i=e.str,s=e.position,n=e.tokens,r=(h.s[96]++,s.index),a=(h.s[97]++,null),o=(h.s[98]++,r),l=(h.s[99]++,[]),d=(h.s[100]++,i.length);for(h.s[101]++;r"===p));if(h.s[110]++,g){h.b[19][0]++,h.s[111]++,r!==o?(h.b[20][0]++,h.s[112]++,l.push(i.slice(o,r))):h.b[20][1]++,h.s[113]++;break}h.b[19][1]++;var y=(h.s[114]++,P(p));if(h.s[115]++,y)h.b[21][0]++,h.s[116]++,r!==o?(h.b[22][0]++,h.s[117]++,l.push(i.slice(o,r))):h.b[22][1]++,h.s[118]++,o=r+1,h.s[119]++,r++,h.s[120]++;else{h.b[21][1]++;var f=(h.s[121]++,h.b[23][0]++,"'"===p||(h.b[23][1]++,'"'===p));h.s[122]++,f?(h.b[24][0]++,h.s[123]++,a=p,h.s[124]++,r++,h.s[125]++):(h.b[24][1]++,h.s[126]++,r++)}}}h.s[127]++,u(s,i,r);var A=(h.s[128]++,l.length),v=(h.s[129]++,"attribute");h.s[130]++;for(var b=0;b1){h.b[28][0]++;var S=(h.s[137]++,V+M);h.s[138]++,n.push({type:v,content:S}),h.s[139]++,b+=1,h.s[140]++;continue}h.b[28][1]++;var T=(h.s[141]++,l[b+2]);if(h.s[142]++,b+=1,h.s[143]++,T){h.b[29][0]++;var E=(h.s[144]++,V+"="+T);h.s[145]++,n.push({type:v,content:E}),h.s[146]++,b+=1,h.s[147]++;continue}h.b[29][1]++}else h.b[26][1]++}else h.b[25][1]++;if(h.s[148]++,(0,c.endsWith)(V,"=")){h.b[30][0]++;var x=(h.s[149]++,l[b+1]);if(h.s[150]++,h.b[32][0]++,x&&(h.b[32][1]++,!(0,c.stringIncludes)(x,"="))){h.b[31][0]++;var C=(h.s[151]++,V+x);h.s[152]++,n.push({type:v,content:C}),h.s[153]++,b+=1,h.s[154]++;continue}h.b[31][1]++;var I=(h.s[155]++,V.slice(0,-1));h.s[156]++,n.push({type:v,content:I}),h.s[157]++}else h.b[30][1]++,h.s[158]++,n.push({type:v,content:V})}}var S=(h.s[159]++,[].push);function T(t,e){h.f[13]++;var i=(h.s[160]++,e),s=i.str,n=i.position,r=i.tokens,a=(h.s[161]++,t.toLowerCase()),o=(h.s[162]++,s.length),l=(h.s[163]++,n.index);for(h.s[164]++;l=0;){var r=(h.s[8]++,e[n].tagName);if(h.s[9]++,r===t){h.b[1][0]++,h.s[10]++;break}if(h.b[1][1]++,h.s[11]++,(0,c.arrayIncludes)(s,r))return h.b[2][0]++,h.s[12]++,!0;h.b[2][1]++,h.s[13]++,n--}}else h.b[0][1]++;return h.s[14]++,!1}function u(t,e,i,s){h.f[2]++,h.s[15]++,t[e].position.end=s,h.s[16]++;for(var n=e+1,r=t.length;n-1;){if(h.s[37]++,n[y].tagName===g){h.b[5][0]++,h.s[38]++,f=!0,h.s[39]++;break}h.b[5][1]++}for(h.s[40]++;o0;){if(h.s[57]++,g===n[P].tagName){h.b[10][0]++,h.s[58]++,u(n,P,l.position.start,l.position.start);var w=(h.s[59]++,P-1);h.s[60]++,r=n[w].children,h.s[61]++;break}h.b[10][1]++,h.s[62]++,P-=1}}else h.b[9][1]++;var M=(h.s[63]++,[]),S=void 0;for(h.s[64]++;o"):(h.b[4][1]++,"<"+s+d(n)+">"+u(r,e)+"")})).join("")}i.default={toHTML:u}},{"./compat":1}],7:[function(t,e,i){"use strict";var s,n,r,a,o,l,h=(s="/Users/chrisandrejewski/Desktop/Work/github-repos/himalaya/src/tags.js",n="6039b9f65d15797c952509955976acf6930e65a4",r=new(0,function(){}.constructor)("return this")(),o={path:"/Users/chrisandrejewski/Desktop/Work/github-repos/himalaya/src/tags.js",statementMap:{0:{start:{line:5,column:29},end:{line:5,column:60}},1:{start:{line:11,column:27},end:{line:14,column:1}},2:{start:{line:23,column:42},end:{line:32,column:1}},3:{start:{line:38,column:24},end:{line:42,column:1}}},fnMap:{},branchMap:{},s:{0:0,1:0,2:0,3:0},f:{},b:{},_coverageSchema:"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c"},(l=r[a="__coverage__"]||(r[a]={}))[s]&&l[s].hash===n?l[s]:(o.hash=n,l[s]=o));Object.defineProperty(i,"__esModule",{value:!0}),i.childlessTags=(h.s[0]++,["style","script","template"]),i.closingTags=(h.s[1]++,["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"]),i.closingTagAncestorBreakers=(h.s[2]++,{li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]}),i.voidTags=(h.s[3]++,["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"])},{}]},{},[3])(3)},7298:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(4974);class n extends Error{constructor(){super("CouldNotYetDeserializeError")}}s.Z.register("CouldNotYetDeserializeError",n);const r=n},2976:(t,e,i)=>{"use strict";var s;let n;i.d(e,{Z:()=>d});var r=i(2956),a=i(4676),o=i(1091),l=i(4974),h=i(3409);n=o.Z.EVENT_TYPE_MODEL;class c extends a.Z{}_defineProperty(c,"USER",new(s=c)),_defineProperty(c,n,new s),_defineProperty(c,"WRAPPER",new s),_defineProperty(c,"OPT_OUT",new s),_defineProperty(c,"enumeration",new r.Z(s)),_defineProperty(c,"phetioType",(0,h.Z)(s)),l.Z.register("EventType",c);const d=c},7374:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(4974);class n extends Map{constructor(t){super(t),n.caches.push(this)}static clearAll(){n.caches.forEach(t=>t.clear())}}_defineProperty(n,"caches",[]),s.Z.register("IOTypeCache",n);const r=n},5281:(t,e,i)=>{"use strict";var s;i.d(e,{Z:()=>b});var n=i(4974),r=i(3600),a=i(2550),o=i(1005),l=i(538),h=i(516),c=i(3061),d=i(8664),u=i(0),p=i(2306),m=i(2643),g=i(7374);const y=[];class f extends h.Z{constructor(t,e){var i;const s=(0,a.ZP)()({parameters:y,phetioOuterType:f.PhetioActionIO,phetioState:!1,phetioReadOnly:d.Z.DEFAULT_OPTIONS.phetioReadOnly,phetioHighFrequency:d.Z.DEFAULT_OPTIONS.phetioHighFrequency,phetioEventType:d.Z.DEFAULT_OPTIONS.phetioEventType,phetioDocumentation:"A class that wraps a function, adding API to execute that function and data stream capture."},e);super(s),this.action=t,this.isExecutingCount=0,this.disposeOnExecuteCompletion=!1,this.executedEmitter=new c.Z({parameters:s.parameters,tandem:null===(i=s.tandem)||void 0===i?void 0:i.createTandem("executedEmitter"),hasListenerOrderDependencies:s.hasListenerOrderDependencies,phetioState:s.phetioState,phetioReadOnly:s.phetioReadOnly,phetioHighFrequency:s.phetioHighFrequency,phetioEventType:s.phetioEventType,phetioDocumentation:"Emitter that emits when this actions work is complete"}),this.disposePhetioAction=()=>{this.executedEmitter.dispose()}}execute(){this.isExecutingCount++;for(var t=arguments.length,e=new Array(t),i=0;i0?this.disposeOnExecuteCompletion=!0:this.disposePhetioAction(),super.dispose()}}s=f,_defineProperty(f,"PhetioActionIO",t=>{const e=t.map(A).join(",");return v.has(e)||v.set(e,new r.Z(`PhetioActionIO<${t.map(A).join(", ")}>`,{valueType:s,documentation:"Executes when an event occurs",events:["executed"],parameterTypes:t,metadataDefaults:{phetioState:!1},methods:{execute:{returnType:l.Z,parameterTypes:t,implementation:function(){this.execute(...arguments)},documentation:"Executes the function the PhetioAction is wrapping.",invocableForReadOnlyElements:!1},getValidationErrors:{returnType:(0,u.Z)((0,p.Z)(m.Z)),parameterTypes:t,implementation:function(){return this.getValidationErrors(...arguments)},documentation:"Checks to see if the proposed values are valid. Returns an array of length N where each element is an error (string) or null if the value is valid."}}})),v.get(e)});const A=t=>t.typeName,v=new g.Z;n.Z.register("PhetioAction",f);const b=f},516:(t,e,i)=>{"use strict";i.d(e,{Z:()=>p});i(6212);var s=i(2550),n=i(8664),r=(i(1005),i(7922)),a=i(7959),o=i(6685);const l={validateValidator:!1},h=[],c=(["name","phetioType","phetioDocumentation","phetioPrivate"].concat(o.Z.VALIDATOR_KEYS),t=>t.phetioType),d=t=>t.name;class u extends n.Z{constructor(t){const e=(0,s.ZP)()({parameters:h,hasListenerOrderDependencies:!1,phetioPlayback:n.Z.DEFAULT_OPTIONS.phetioPlayback,phetioEventMetadata:n.Z.DEFAULT_OPTIONS.phetioEventMetadata,phetioDocumentation:""},t),i=e.parameters.filter(c);e.phetioType=e.phetioOuterType(i.map(c)),e.phetioPlayback&&(e.phetioEventMetadata=e.phetioEventMetadata||{},e.phetioEventMetadata.dataKeys=e.parameters.map(d)),e.phetioDocumentation=u.getPhetioDocumentation(e.phetioDocumentation,i),super(e),this.parameters=e.parameters}static validateParameters(t,e){(0,a.Z)(t,{valueType:Array});let i=!1;for(let s=0;so.Z.getValidationError(e[i],t,l))}getPhetioData(){let t=null;if(this.parameters.length>0){t={};for(var e=arguments.length,i=new Array(e),s=0;sNo parameters.":`
The parameters are:
    ${e.map(t=>{const e=t.phetioDocumentation?" - "+t.phetioDocumentation:"";return`
  1. ${t.name}: ${t.phetioType.typeName}${e}
  2. `}).join("
    ")}
`)}}r.Z.register("PhetioDataHandler",u);const p=u},8664:(t,e,i)=>{"use strict";var s,n,r;i.d(e,{V:()=>x,Z:()=>E});i(732),i(7959);var a=i(9059),o=(i(6212),i(831)),l=i(2550),h=i(2976),c=i(1005),d=i(4974),u=i(3600),p=i(2643);const m=new u.Z("LinkedElementIO",{isValidValue:()=>!0,documentation:"A LinkedElement",toStateObject:t=>({elementID:t.element.tandem.phetioID}),applyState:_.noop,stateSchema:{elementID:p.Z}});d.Z.register("LinkedElementIO",m);const g=m,y=["phetioDynamicElement","phetioEventType","phetioIsArchetype","phetioPlayback","phetioReadOnly","phetioState","phetioTypeName"];const f=new class{constructor(){_defineProperty(this,"apiMismatches",[]),_defineProperty(this,"simHasStarted",!1),_defineProperty(this,"enabled",!1),_defineProperty(this,"everyPhetioType",{})}onSimStarted(){this.enabled&&phet.joist.sim.allScreensCreated&&(this.validateOverridesFile(),this.validatePreferencesModel()),phet.preloads.phetio.queryParameters.phetioPrintAPIProblems&&this.apiMismatches&&console.log("PhET-iO API problems detected: ",this.apiMismatches),this.simHasStarted=!0}validatePreferencesModel(){Object.keys(phet.phetio.phetioEngine.phetioElementMap).filter(t=>t.includes(".preferencesModel.")).forEach(t=>{let e=phet.phetio.phetioEngine.phetioElementMap[t];for(;e instanceof x;)e=e.element})}onPhetioObjectRemoved(t){if(!this.enabled)return;const e=t.tandem.phetioID;t.phetioDynamicElement||this.assertAPIError({phetioID:e,ruleInViolation:"2. Any static, registered PhetioObject can never be deregistered."})}onPhetioObjectAdded(t){if(!this.enabled)return;const e=t.phetioType;this.everyPhetioType[e.typeName]||(this.everyPhetioType[e.typeName]=e),this.simHasStarted&&phet.axon.animationFrameTimer.runOnNextTick(()=>{if(t.phetioDynamicElement){if(phet.preloads.phetio.createArchetypes&&!t.isDisposed){const e=t.tandem.getArchetypalPhetioID(),i=phet.phetio.phetioEngine.getPhetioElement(e).getMetadata();this.checkDynamicInstanceAgainstArchetype(t,i,"simulation archetype")}}else this.assertAPIError({phetioID:t.tandem.phetioID,ruleInViolation:"1. After startup, only dynamic instances prescribed by the baseline file can be registered."})})}validateOverridesFile(){const t=phet.phetio.phetioEngine.getPhetioElementsBaseline();for(const e in window.phet.preloads.phetio.phetioElementsOverrides){e.includes(c.i);if(phet.preloads.phetio.createArchetypes||t.hasOwnProperty(e))if(t.hasOwnProperty(e)){const i=window.phet.preloads.phetio.phetioElementsOverrides[e],s=t[e];0===Object.keys(i).length&&this.assertAPIError({phetioID:e,ruleInViolation:"4. Any schema entries in the overrides file must be different from its baseline counterpart.",message:"no metadata keys found for this override."});for(const t in i)s.hasOwnProperty(t)||this.assertAPIError({phetioID:e,ruleInViolation:"8. Any schema entries in the overrides file must be different from its baseline counterpart.",message:"phetioID metadata key not found in the baseline: "+t}),i[t]===s[t]&&this.assertAPIError({phetioID:e,ruleInViolation:"8. Any schema entries in the overrides file must be different from its baseline counterpart.",message:"phetioID metadata override value is the same as the corresponding metadata value in the baseline."})}else this.assertAPIError({phetioID:e,ruleInViolation:"3. Any schema entries in the overrides file must exist in the baseline file.",message:"phetioID expected in the baseline file but does not exist"});else;}}assertAPIError(t){t.phetioID?(t.phetioID,t.ruleInViolation):t.ruleInViolation;this.apiMismatches.push(t),this.simHasStarted||phet.preloads.phetio.queryParameters.phetioPrintAPIProblems}checkDynamicInstanceAgainstArchetype(t,e,i){const s=t.getMetadata();y.forEach(n=>{"phetioDynamicElement"!==n&&"phetioArchetypePhetioID"!==n&&"phetioIsArchetype"!==n&&e[n]!==s[n]&&t.tandem&&this.assertAPIError({phetioID:t.tandem.phetioID,ruleInViolation:"5. Dynamic element metadata should match the archetype in the API.",source:i,message:"mismatched metadata: "+n})})}};d.Z.register("phetioAPIValidation",f);const A=f;var v=i(1091),b=i(1731),V=i(1685);class P{static add(t,e){P.map.set(t.phetioID,e);const i=t.phetioID.split(".");let s=P.root;for(let n=0;n=0;t--){const e=s[t];e&&0===Object.keys(e).length&&delete s[t]}}}}_defineProperty(P,"root",{}),_defineProperty(P,"map",new Map),_defineProperty(P,"addedEmitter",new V.Z),_defineProperty(P,"removedEmitter",new V.Z),d.Z.register("DescriptionRegistry",P);const w=c.Z.PHET_IO_ENABLED,M=(u.Z,h.Z,t=>t.tandem.phetioID),S=!(null===(s=window.phet)||void 0===s||null===(n=s.chipper)||void 0===n||null===(r=n.queryParameters)||void 0===r||!r.supportsDescriptionPlugin),T={tandem:c.Z.OPTIONAL,descriptionTandem:c.Z.OPTIONAL,phetioType:u.Z.ObjectIO,phetioDocumentation:v.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioDocumentation,phetioState:v.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioState,phetioReadOnly:v.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioReadOnly,phetioEventType:h.Z.MODEL,phetioHighFrequency:v.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioHighFrequency,phetioPlayback:v.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioPlayback,phetioFeatured:v.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioFeatured,phetioDynamicElement:v.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioDynamicElement,phetioDesigned:v.Z.PHET_IO_OBJECT_METADATA_DEFAULTS.phetioDesigned,phetioEventMetadata:null,tandemNameSuffix:null};class E extends b.Z{constructor(t){super(),this.tandem=T.tandem,this.phetioID=this.tandem.phetioID,this.phetioObjectInitialized=!1,t&&this.initializePhetioObject({},t)}initializePhetioObject(t,e){if(this.initializeDisposable(e),e.tandem&&c.Z.onMissingTandem(e.tandem),S&&e.tandem&&e.tandem.supplied&&P.add(e.tandem,this),!(w&&e.tandem&&e.tandem.supplied))return void(e.tandem&&(this.tandem=e.tandem,this.phetioID=this.tandem.phetioID));const i=(0,l.JA)({},T,t);let s=(0,l.ZP)()(i,e);this.phetioIsArchetype=!1,this.phetioBaselineMetadata=A.enabled||phet.preloads.phetio.queryParameters.phetioEmitAPIBaseline?this.getMetadata((0,o.Z)({phetioIsArchetype:this.phetioIsArchetype,phetioArchetypePhetioID:this.phetioArchetypePhetioID},s)):null;const n=s.tandem.getArchetypalPhetioID();if(window.phet.preloads.phetio.phetioElementsOverrides){const t=window.phet.preloads.phetio.phetioElementsOverrides[n];t&&(s=(0,l.ZP)()(s,t))}this.tandem=s.tandem,this.phetioID=this.tandem.phetioID,this._phetioType=s.phetioType,this._phetioState=s.phetioState,this._phetioReadOnly=s.phetioReadOnly,this._phetioDocumentation=s.phetioDocumentation,this._phetioEventType=s.phetioEventType,this._phetioHighFrequency=s.phetioHighFrequency,this._phetioPlayback=s.phetioPlayback,this._phetioDynamicElement=s.phetioDynamicElement,this._phetioFeatured=s.phetioFeatured,this._phetioEventMetadata=s.phetioEventMetadata,this._phetioDesigned=s.phetioDesigned,this.phetioArchetypePhetioID=null,this.linkedElements=[],this.phetioNotifiedObjectCreated=!1,this.phetioMessageStack=[],this._phetioPlayback&&(this._phetioEventMetadata=this._phetioEventMetadata||{},this._phetioEventMetadata.playback=!0),this.tandem.addPhetioObject(this),this.phetioObjectInitialized=!0}static swapCaseOfFirstCharacter(t){const e=t[0];return(e===e.toLowerCase()?e.toUpperCase():e.toLowerCase())+t.substring(1)}get phetioType(){return this._phetioType}get phetioState(){return this._phetioState}get phetioReadOnly(){return this._phetioReadOnly}get phetioDocumentation(){return this._phetioDocumentation}get phetioEventType(){return this._phetioEventType}get phetioHighFrequency(){return this._phetioHighFrequency}get phetioPlayback(){return this._phetioPlayback}get phetioDynamicElement(){return this._phetioDynamicElement}get phetioFeatured(){return this._phetioFeatured}get phetioEventMetadata(){return this._phetioEventMetadata}get phetioDesigned(){return this._phetioDesigned}phetioStartEvent(t,e){if(w&&this.isPhetioInstrumented()){const i=(0,l.ZP)()({data:null,getData:null},e);if(!_.hasIn(window,"phet.phetio.dataStream"))return void this.phetioMessageStack.push(-1);const s=this.phetioHighFrequency&&_.hasIn(window,"phet.preloads.phetio.queryParameters")&&!window.phet.preloads.phetio.queryParameters.phetioEmitHighFrequencyEvents&&!phet.phetio.dataStream.isEmittingLowFrequencyEvent(),n=!_.hasIn(window,"phet.phetio.dataStream");if(s||this.phetioEventType===h.Z.OPT_OUT||n)return void this.phetioMessageStack.push(-1);const r=i.getData?i.getData():i.data;this.phetioMessageStack.push(phet.phetio.dataStream.start(this.phetioEventType,this.tandem.phetioID,this.phetioType,t,r,this.phetioEventMetadata,this.phetioHighFrequency)),this.phetioPlayback&&phet.phetio.dataStream.pushNonPlaybackable()}}phetioEndEvent(){if(w&&this.isPhetioInstrumented()){const t=this.phetioMessageStack.pop();if(-1===t)return;this.phetioPlayback&&phet.phetio.dataStream.popNonPlaybackable(),phet.phetio.dataStream.end(t)}}propagateDynamicFlagsToDescendants(){const t=phet.phetio.phetioEngine,e=c.Z.launched?[]:c.Z.bufferedPhetioObjects.map(M);this.tandem.iterateDescendants(i=>{const s=i.phetioID;if(t.hasPhetioObject(s)||!c.Z.launched&&e.includes(s)){const i=t.hasPhetioObject(s)?t.getPhetioElement(s):c.Z.bufferedPhetioObjects[e.indexOf(s)];i.phetioIsArchetype=this.phetioIsArchetype,i.setPhetioDynamicElement(this.phetioDynamicElement),i.phetioBaselineMetadata&&(i.phetioBaselineMetadata.phetioIsArchetype=this.phetioIsArchetype)}})}setPhetioDynamicElement(t){this._phetioDynamicElement=!this.phetioIsArchetype&&t,this.phetioArchetypePhetioID=t?this.tandem.getArchetypalPhetioID():null,this.phetioBaselineMetadata&&(this.phetioBaselineMetadata.phetioDynamicElement=this.phetioDynamicElement)}markDynamicElementArchetype(){this.phetioIsArchetype=!0,this.setPhetioDynamicElement(!1),this.phetioBaselineMetadata&&(this.phetioBaselineMetadata.phetioIsArchetype=this.phetioIsArchetype),c.Z.PHET_IO_ENABLED&&this.propagateDynamicFlagsToDescendants()}isPhetioInstrumented(){return this.tandem&&this.tandem.supplied}addLinkedElement(t,e){if(this.isPhetioInstrumented()){if(w&&t.isPhetioInstrumented()){const i=(0,l.ZP)()({phetioFeatured:this.phetioFeatured&&t.phetioFeatured},e);let s=null;e&&e.tandem?s=e.tandem:e&&e.tandemName?s=this.tandem.createTandem(e.tandemName):!e&&t.tandem&&(s=this.tandem.createTandem(t.tandem.name)),s&&(i.tandem=s),this.linkedElements.push(new x(t,i))}}else this.linkedElements=null}removeLinkedElements(t){if(this.isPhetioInstrumented()&&this.linkedElements){this.linkedElements.filter(e=>e.element===t).forEach(t=>{t.dispose(),(0,a.Z)(this.linkedElements,t)})}}onSimulationConstructionCompleted(){this.phetioBaselineMetadata=null}getPhetioMouseHitTarget(){if(!(arguments.length>0&&void 0!==arguments[0]&&arguments[0])&&"linked"===phet.tandem.phetioElementSelectionProperty.value){const t=this.getCorrespondingLinkedElement();if("noCorrespondingLinkedElement"!==t)return t.getPhetioMouseHitTarget(!0);if(this.tandem.parentTandem){const t=phet.phetio.phetioEngine.phetioElementMap[this.tandem.parentTandem.phetioID];if(t){const e=t.getCorrespondingLinkedElement();if("noCorrespondingLinkedElement"!==e)return e.getPhetioMouseHitTarget(!0)}}}return"string"===phet.tandem.phetioElementSelectionProperty.value?"phetioNotSelectable":this.getPhetioMouseHitTargetSelf()}getPhetioMouseHitTargetSelf(){return this.isPhetioMouseHitSelectable()?this:"phetioNotSelectable"}isPhetioMouseHitSelectable(){const t="featured"!==phet.tandem.phetioElementsDisplayProperty.value||this.isDisplayedInFeaturedTree();return this.isPhetioInstrumented()&&t}isDisplayedInFeaturedTree(){if(this.isPhetioInstrumented()&&this.phetioFeatured)return!0;let t=!1;return this.tandem.iterateDescendants(e=>{const i=phet.phetio.phetioEngine.phetioElementMap[e.phetioID];i&&i.isPhetioInstrumented()&&i.phetioFeatured&&(t=!0)}),t}getCorrespondingLinkedElement(){const t=Object.keys(this.tandem.children),e=[];t.forEach(t=>{const i=phetio.PhetioIDUtils.append(this.tandem.phetioID,t),s=phet.phetio.phetioEngine.phetioElementMap[i];s instanceof x&&e.push(s)});const i=e.map(t=>phetio.PhetioIDUtils.getComponentName(t.phetioID));let s=null;if(1===e.length)s=e[0];else if(i.includes("property"))s=e[i.indexOf("property")];else{if(!i.includes("valueProperty"))return"noCorrespondingLinkedElement";s=e[i.indexOf("valueProperty")]}return s.element}dispose(){S&&this.tandem&&this.tandem.supplied&&P.remove(this),this.tandem.removePhetioObject(this),this.linkedElements&&(this.linkedElements.forEach(t=>t.dispose()),this.linkedElements.length=0),super.dispose()}getMetadata(t){const e={phetioTypeName:(t=t||this).phetioType.typeName,phetioDocumentation:t.phetioDocumentation,phetioState:t.phetioState,phetioReadOnly:t.phetioReadOnly,phetioEventType:h.Z.phetioType.toStateObject(t.phetioEventType),phetioHighFrequency:t.phetioHighFrequency,phetioPlayback:t.phetioPlayback,phetioDynamicElement:t.phetioDynamicElement,phetioIsArchetype:t.phetioIsArchetype,phetioFeatured:t.phetioFeatured,phetioDesigned:t.phetioDesigned};return t.phetioArchetypePhetioID&&(e.phetioArchetypePhetioID=t.phetioArchetypePhetioID),e}static create(t){return new E(t)}}_defineProperty(E,"DEFAULT_OPTIONS",T),_defineProperty(E,"METADATA_DOCUMENTATION","Get metadata about the PhET-iO Element. This includes the following keys:
  • phetioTypeName: The name of the PhET-iO Type\n
  • phetioDocumentation: default - null. Useful notes about a PhET-iO Element, shown in the PhET-iO Studio Wrapper
  • phetioState: default - true. When true, includes the PhET-iO Element in the PhET-iO state\n
  • phetioReadOnly: default - false. When true, you can only get values from the PhET-iO Element; no setting allowed.\n
  • phetioEventType: default - MODEL. The category of event that this element emits to the PhET-iO Data Stream.\n
  • phetioDynamicElement: default - false. If this element is a \"dynamic element\" that can be created and destroyed throughout the lifetime of the sim (as opposed to existing forever).\n
  • phetioIsArchetype: default - false. If this element is an archetype for a dynamic element.\n
  • phetioFeatured: default - false. If this is a featured PhET-iO Element.\n
  • phetioArchetypePhetioID: default - ''. If an applicable dynamic element, this is the phetioID of its archetype.\n
");class x extends E{constructor(t,e){const i=(0,l.ZP)()({phetioType:g,phetioState:!0,phetioFeatured:t.phetioFeatured},e);i.phetioReadOnly=!0,super(i),this.element=t}}d.Z.register("PhetioObject",E)},1005:(t,e,i)=>{"use strict";var s;i.d(e,{Z:()=>w,i:()=>f});var n=i(9059),r=i(831),a=i(2550),o=i(1091),l=i(4974);const h=_.hasIn(window,"phet.chipper.packageObject")?phet.chipper.packageObject:{name:"placeholder"},c=_.hasIn(window,"phet.preloads.phetio"),d=c&&phet.preloads.phetio.queryParameters.phetioPrintMissingTandems,u=!_.hasIn(h,"phet.phet-io.validation")||!!h.phet["phet-io"].validation,p=window.QueryStringMachine&&QueryStringMachine.containsKey("phetioValidation"),m=c&&p?!!phet.preloads.phetio.queryParameters.phetioValidation:c&&u,g=c&&m&&!d,y=phetio.PhetioIDUtils.INTER_TERM_SEPARATOR,f=phetio.PhetioIDUtils.ARCHETYPE,A={required:[],optional:[]},v=[],b=[];class V{constructor(t,e,i){_defineProperty(this,"children",{}),_defineProperty(this,"isDisposed",!1),this.parentTandem=t,this.name=e,this.phetioID=this.parentTandem?window.phetio.PhetioIDUtils.append(this.parentTandem.phetioID,this.name):this.name;const s=(0,a.ZP)()({required:!0,supplied:!0,isValidTandemName:t=>V.getRegexFromCharacterClass().test(t)},i);this.children={},this.parentTandem&&this.parentTandem.addChild(e,this),this.required=s.required,this.supplied=s.supplied}static getRegexFromCharacterClass(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.Z.BASE_TANDEM_CHARACTER_CLASS;return new RegExp(`^[${t}]+$`)}static onMissingTandem(t){if(d&&!t.supplied){const e=V.captureStackTrace();t.required?A.required.push({phetioID:t.phetioID,stack:e}):e.includes("Font")||A.optional.push({phetioID:t.phetioID,stack:e})}}static captureStackTrace(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0;const e=Object.getOwnPropertyDescriptor(Error,"stackTraceLimit");if(e&&(e.writable||e.set&&"function"==typeof e.set)){const e=Error.stackTraceLimit;Error.stackTraceLimit=t;const i=(new Error).stack;return Error.stackTraceLimit=e,i}return(new Error).stack}addPhetioObject(t){if(c){if(!this.required&&!this.supplied)return;if(V.launched)for(let e=0;e0;)b.shift()()}static unlaunch(){V.launched=!1,V.bufferedPhetioObjects.length=0,b.length=0}static addLaunchListener(t){b.push(t)}createTandemFromPhetioID(t){return this.createTandem(t.split(window.phetio.PhetioIDUtils.SEPARATOR).join(y),{isValidTandemName:t=>V.getRegexFromCharacterClass(o.Z.BASE_DERIVED_TANDEM_CHARACTER_CLASS).test(t)})}static getStringsTandem(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V.ROOT.name;return V.STRINGS.createTandem(t)}static getDerivedStringsTandem(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V.ROOT.name;return V.getStringsTandem(t).createTandem("derivedStrings")}}s=V,_defineProperty(V,"SCREEN_TANDEM_NAME_SUFFIX","Screen"),_defineProperty(V,"missingTandems",A),_defineProperty(V,"PHET_IO_ENABLED",c),_defineProperty(V,"API_GENERATION",s.PHET_IO_ENABLED&&(phet.preloads.phetio.queryParameters.phetioPrintAPI||phet.preloads.phetio.queryParameters.phetioCompareAPI)),_defineProperty(V,"VALIDATION",g),_defineProperty(V,"METADATA_KEY","_metadata"),_defineProperty(V,"DATA_KEY","_data"),_defineProperty(V,"launched",!1),_defineProperty(V,"bufferedPhetioObjects",[]),_defineProperty(V,"RootTandem",class extends s{createTandem(t,e){if(s.VALIDATION){t===window.phetio.PhetioIDUtils.GLOBAL_COMPONENT_NAME||"requiredTandem"===t||"optionalTandem"===t||"test"===t||t===window.phetio.PhetioIDUtils.GENERAL_COMPONENT_NAME||_.endsWith(t,s.SCREEN_TANDEM_NAME_SUFFIX)}return super.createTandem(t,e)}}),_defineProperty(V,"ROOT",new s.RootTandem(null,_.camelCase(h.name))),_defineProperty(V,"GENERAL",s.ROOT.createTandem(window.phetio.PhetioIDUtils.GENERAL_COMPONENT_NAME)),_defineProperty(V,"ROOT_TEST",s.ROOT.createTandem("test")),_defineProperty(V,"GENERAL_MODEL",s.GENERAL.createTandem(window.phetio.PhetioIDUtils.MODEL_COMPONENT_NAME)),_defineProperty(V,"GENERAL_VIEW",s.GENERAL.createTandem(window.phetio.PhetioIDUtils.VIEW_COMPONENT_NAME)),_defineProperty(V,"GENERAL_CONTROLLER",s.GENERAL.createTandem(window.phetio.PhetioIDUtils.CONTROLLER_COMPONENT_NAME)),_defineProperty(V,"GLOBAL",s.ROOT.createTandem(window.phetio.PhetioIDUtils.GLOBAL_COMPONENT_NAME)),_defineProperty(V,"GLOBAL_MODEL",s.GLOBAL.createTandem(window.phetio.PhetioIDUtils.MODEL_COMPONENT_NAME)),_defineProperty(V,"GLOBAL_VIEW",s.GLOBAL.createTandem(window.phetio.PhetioIDUtils.VIEW_COMPONENT_NAME)),_defineProperty(V,"COLORS",s.GLOBAL_VIEW.createTandem(window.phetio.PhetioIDUtils.COLORS_COMPONENT_NAME)),_defineProperty(V,"STRINGS",s.GENERAL_MODEL.createTandem(window.phetio.PhetioIDUtils.STRINGS_COMPONENT_NAME)),_defineProperty(V,"OPTIONAL",s.ROOT.createTandem("optionalTandem",{required:!1,supplied:!1})),_defineProperty(V,"OPT_OUT",s.OPTIONAL),_defineProperty(V,"REQUIRED",s.ROOT.createTandem("requiredTandem",{required:g||d,supplied:!1})),_defineProperty(V,"PREFERENCES",s.GLOBAL_MODEL.createTandem("preferences")),_defineProperty(V,"REGION_CULTURE_PORTRAYALS",s.PREFERENCES.createTandem("regionAndCulturePortrayals")),V.addLaunchListener(()=>{for(;V.bufferedPhetioObjects.length>0;){const t=V.bufferedPhetioObjects.shift();t.tandem.addPhetioObject(t)}});class P extends V{constructor(t,e){super(t,e),this.groupName=e,this.groupMemberIndex=0}createNextTandem(){const t=this.parentTandem.createTandem(`${this.groupName}${this.groupMemberIndex}`);return this.groupMemberIndex++,t}}l.Z.register("Tandem",V);const w=V},1091:(t,e,i)=>{"use strict";i.d(e,{Z:()=>n});const s={OBJECT_IO_TYPE_NAME:"ObjectIO",EVENT_TYPE_MODEL:"MODEL",PHET_IO_OBJECT_METADATA_DEFAULTS:{phetioTypeName:"ObjectIO",phetioDocumentation:"",phetioState:!0,phetioReadOnly:!1,phetioEventType:"MODEL",phetioHighFrequency:!1,phetioPlayback:!1,phetioDynamicElement:!1,phetioIsArchetype:!1,phetioFeatured:!1,phetioDesigned:!1,phetioArchetypePhetioID:null},METADATA_KEY_NAME:"_metadata",DATA_KEY_NAME:"_data",BASE_TANDEM_CHARACTER_CLASS:"a-zA-Z0-9[\\],",BASE_DYNAMIC_TANDEM_CHARACTER_CLASS:"a-zA-Z0-9[\\],_",BASE_DERIVED_TANDEM_CHARACTER_CLASS:"a-zA-Z0-9[\\],_\\-"};i(4974).Z.register("TandemConstants",s);const n=s},1773:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(4974);const n=new(i(8292).Z)(!1);s.Z.register("isClearingPhetioDynamicElementsProperty",n);const r=n},8047:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(4974);const n=new(i(8292).Z)(!1);s.Z.register("isSettingPhetioStateProperty",n);const r=n},4974:(t,e,i)=>{"use strict";i.d(e,{Z:()=>s});const s=new(i(2492).Z)("tandem")},0:(t,e,i)=>{"use strict";i.d(e,{Z:()=>h});var s=i(6685),n=i(4974),r=i(3600),a=i(9196);const o=new(i(7374).Z),l=t=>(o.has(t)||o.set(t,new r.Z(`ArrayIO<${t.typeName}>`,{valueType:Array,isValidValue:e=>_.every(e,e=>s.Z.isValueValid(e,t.validator)),parameterTypes:[t],toStateObject:e=>e.map(t.toStateObject),fromStateObject:e=>e.map(t.fromStateObject),documentation:"PhET-iO Type for the built-in JS array type, with the element type specified.",stateSchema:a.Z.asValue(`Array<${t.typeName}>`,{isValidValue:e=>_.every(e,e=>t.isStateObjectValid(e))})})),o.get(t));n.Z.register("ArrayIO",l);const h=l},5602:(t,e,i)=>{"use strict";i.d(e,{Z:()=>l});var s=i(4974),n=i(3600),r=i(9196),a=i(6540);const o=new n.Z("BooleanIO",{supertype:a.Z,valueType:"boolean",documentation:"PhET-iO Type for Javascript's boolean primitive type",stateSchema:r.Z.asValue("boolean",{valueType:"boolean"}),toStateObject:_.identity});s.Z.register("BooleanIO",o);const l=o},3409:(t,e,i)=>{"use strict";i.d(e,{Z:()=>h});var s=i(3600),n=i(9196),r=i(4974);const a=new(i(7374).Z),o=t=>t.join("|"),l=t=>{const e=t.enumeration;if(!a.has(e)){const t=e.phetioDocumentation?" "+e.phetioDocumentation:"",i=e.keys,r=e.values,l=`EnumerationIO(${o(i)})`;a.set(e,new s.Z(l,{validValues:r,documentation:`Possible values: ${i.join(", ")}.${t}`,toStateObject:t=>e.getKey(t),fromStateObject:t=>e.getValue(t),stateSchema:n.Z.asValue(""+o(i),{isValidValue:t=>i.includes(t)})}))}return a.get(e)};r.Z.register("EnumerationIO",l);const h=l},6292:(t,e,i)=>{"use strict";i.d(e,{Z:()=>o});var s=i(4974),n=i(3600);const r=new(i(7374).Z),a=(t,e)=>{for(let s=0;st.typeName).join(",")}`;if(!r.has(i)){let s=e.map(t=>t.typeName).join(", ");""===s&&(s="none");const a=e.map(t=>t.typeName).join(",");r.set(i,new n.Z(`FunctionIO(${a})=>${t.typeName}`,{valueType:"function",isFunctionType:!0,parameterTypes:e.concat([t]),documentation:`Wrapper for the built-in JS function type.
Arguments: ${s}
Return Type: `+t.typeName}))}return r.get(i)};s.Z.register("FunctionIO",a);const o=a},3600:(t,e,i)=>{"use strict";i.d(e,{Z:()=>p});var s=i(7959),n=i(6685),r=i(2550),a=i(4974);const o={IO_TYPE_SUFFIX:"IO"};a.Z.register("PhetioConstants",o);const l=o;var h=i(1091),c=i(9196);const d={validateValidator:!1},u=t=>{const e=t.indexOf(l.IO_TYPE_SUFFIX);return t.substring(0,e)};class p{constructor(t,e){this.typeName=t;const i=e.supertype||p.ObjectIO,a=!!e.toStateObject,o=!!e.applyState,l=!!e.stateSchema,h=(0,r.ZP)()({supertype:p.ObjectIO,methods:{},events:[],metadataDefaults:{},dataDefaults:{},methodOrder:[],parameterTypes:[],documentation:"PhET-iO Type for "+u(t),isFunctionType:!1,toStateObject:i&&i.toStateObject,fromStateObject:i&&i.fromStateObject,stateObjectToCreateElementArguments:i&&i.stateObjectToCreateElementArguments,applyState:i&&i.applyState,stateSchema:null,defaultDeserializationMethod:"fromStateObject",addChildElement:i&&i.addChildElement},e);if(this.supertype=i,this.documentation=h.documentation,this.methods=h.methods,this.events=h.events,this.metadataDefaults=h.metadataDefaults,this.dataDefaults=h.dataDefaults,this.methodOrder=h.methodOrder,this.parameterTypes=h.parameterTypes,this.validator=_.pick(h,n.Z.VALIDATOR_KEYS),this.validator.validationMessage=this.validator.validationMessage||"Validation failed IOType Validator: "+this.typeName,this.defaultDeserializationMethod=h.defaultDeserializationMethod,null===h.stateSchema||h.stateSchema instanceof c.Z)this.stateSchema=h.stateSchema;else{const t="function"==typeof h.stateSchema?h.stateSchema(this):h.stateSchema;this.stateSchema=new c.Z({compositeSchema:t})}this.toStateObject=t=>{let e;return(0,s.Z)(t,this.validator,d),e=!a&&l&&this.stateSchema&&this.stateSchema.isComposite()?this.defaultToStateObject(t):h.toStateObject(t),e},this.fromStateObject=h.fromStateObject,this.stateObjectToCreateElementArguments=h.stateObjectToCreateElementArguments,this.applyState=(t,e)=>{(0,s.Z)(t,this.validator,d),!o&&l&&this.stateSchema&&this.stateSchema.isComposite()?this.defaultApplyState(t,e):h.applyState(t,e)},this.isFunctionType=h.isFunctionType,this.addChildElement=h.addChildElement}defaultToStateObject(t){let e={};return this.supertype&&(e=this.supertype.defaultToStateObject(t)),this.stateSchema&&this.stateSchema.isComposite()?_.merge(e,this.stateSchema.defaultToStateObject(t)):e}defaultApplyState(t,e){this.supertype&&this.supertype.defaultApplyState(t,e),this.stateSchema&&this.stateSchema.isComposite()&&this.stateSchema.defaultApplyState(t,e)}getTypeHierarchy(){const t=[];let e=this;for(;e;)t.push(e),e=e.supertype;return t}extends(t){return this.getTypeHierarchy().includes(t)}getAllMetadataDefaults(){return _.merge({},this.supertype?this.supertype.getAllMetadataDefaults():{},this.metadataDefaults)}getAllDataDefaults(){return _.merge({},this.supertype?this.supertype.getAllDataDefaults():{},this.dataDefaults)}isStateObjectValid(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=!0;if(this.stateSchema){const s=this.stateSchema.checkStateObjectValid(t,e,i);if(null!==s)return s}return this.supertype?s&&this.supertype.isStateObjectValid(t,e,i):!(!this.supertype&&t&&"string"!=typeof t&&!Array.isArray(t))||(Object.keys(t).forEach(t=>{const e=i.includes(t);e||(s=!1)}),s)}validateStateObject(t){this.isStateObjectValid(t,!0)}toString(){return this.typeName}}p.ObjectIO=new p(h.Z.OBJECT_IO_TYPE_NAME,{isValidValue:()=>!0,supertype:null,documentation:"The root of the PhET-iO Type hierarchy",toStateObject:t=>(phet&&phet.tandem&&phet.tandem.Tandem.VALIDATION,null),fromStateObject:()=>{throw new Error("ObjectIO.fromStateObject should not be called")},stateObjectToCreateElementArguments:()=>[],applyState:_.noop,metadataDefaults:h.Z.PHET_IO_OBJECT_METADATA_DEFAULTS,dataDefaults:{initialState:null},stateSchema:null}),a.Z.register("IOType",p)},4792:(t,e,i)=>{"use strict";i.d(e,{Z:()=>o});var s=i(4974),n=i(3600),r=i(9196);const a=new n.Z("InfiniteNumberIO",{valueType:"number",documentation:"PhET-iO Type for Javascript's number primitive type",toStateObject:t=>t===Number.POSITIVE_INFINITY?"POSITIVE_INFINITY":t===Number.NEGATIVE_INFINITY?"NEGATIVE_INFINITY":t,fromStateObject:t=>"POSITIVE_INFINITY"===t?Number.POSITIVE_INFINITY:"NEGATIVE_INFINITY"===t?Number.NEGATIVE_INFINITY:t,stateSchema:r.Z.asValue("'POSITIVE_INFINITY'|'NEGATIVE_INFINITY'|number",{isValidValue:t=>"POSITIVE_INFINITY"===t||"NEGATIVE_INFINITY"===t||"number"==typeof t&&!isNaN(t)})});s.Z.register("InfiniteNumberIO",a);const o=a},2306:(t,e,i)=>{"use strict";i.d(e,{Z:()=>h});var s=i(6685),n=i(4974),r=i(3600),a=i(9196);const o=new(i(7374).Z),l=t=>(o.has(t)||o.set(t,new r.Z(`NullableIO<${t.typeName}>`,{documentation:"A PhET-iO Type adding support for null in addition to the behavior of its parameter.",isValidValue:e=>null===e||s.Z.isValueValid(e,t.validator),parameterTypes:[t],toStateObject:e=>null===e?null:t.toStateObject(e),fromStateObject:e=>null===e?null:t.fromStateObject(e),stateSchema:a.Z.asValue(`null|<${t.typeName}>`,{isValidValue:e=>null===e||t.isStateObjectValid(e)})})),o.get(t));n.Z.register("NullableIO",l);const h=l},8585:(t,e,i)=>{"use strict";i.d(e,{Z:()=>o});var s=i(4974),n=i(3600),r=i(9196);const a=new n.Z("NumberIO",{valueType:"number",documentation:"PhET-iO Type for Javascript's number primitive type",toStateObject:_.identity,fromStateObject:t=>t,stateSchema:r.Z.asValue("number",{isValidValue:t=>"number"==typeof t&&!isNaN(t)&&t!==Number.POSITIVE_INFINITY&&t!==Number.NEGATIVE_INFINITY})});s.Z.register("NumberIO",a);const o=a},170:(t,e,i)=>{"use strict";i.d(e,{Z:()=>h});var s=i(4974),n=i(3600),r=i(9196),a=i(6540);const o=t=>Object.getPrototypeOf(t)===Object.prototype,l=new n.Z("ObjectLiteralIO",{documentation:"PhET-iO Type for object literals",isValidValue:o,supertype:a.Z,stateSchema:r.Z.asValue("object",{valueType:Object,isValidValue:o}),toStateObject:_.identity});s.Z.register("ObjectLiteralIO",l);const h=l},1039:(t,e,i)=>{"use strict";i.d(e,{Z:()=>h});var s=i(6685),n=i(4974),r=i(3600),a=i(9196);const o=new(i(7374).Z),l=t=>{const e=t.map(t=>t.typeName),i=e.join(",");if(!o.has(i)){const n=e=>{for(let i=0;i`,{documentation:"A PhET-iO Type adding support for a composite type that can be any of its parameters.",parameterTypes:t,isValidValue:n,toStateObject:e=>{for(let i=0;it[e.index].fromStateObject(e.state),stateSchema:a.Z.asValue(""+e.join("|"),{isValidValue:e=>"number"==typeof e.index&&t[e.index].isStateObjectValid(e.state)})}))}return o.get(i)};n.Z.register("OrIO",l);const h=l},9883:(t,e,i)=>{"use strict";i.d(e,{Z:()=>c});var s=i(6685),n=i(7298),r=i(4974),a=i(3600),o=i(2643);const l=new(i(7374).Z),h=t=>{const e=t;return l.has(e)||l.set(e,new a.Z(`ReferenceIO<${t.typeName}>`,{isValidValue:e=>s.Z.isValueValid(e,t.validator),documentation:"Uses reference identity for serializing and deserializing, and validates based on its parameter PhET-iO Type.",parameterTypes:[t],toStateObject:t=>({phetioID:t.tandem.phetioID}),stateSchema:{phetioID:o.Z},fromStateObject(t){if(phet.phetio.phetioEngine.hasPhetioObject(t.phetioID))return phet.phetio.phetioEngine.getPhetioElement(t.phetioID);throw new n.Z},applyState(t){}})),l.get(e)};r.Z.register("ReferenceIO",h);const c=h},9196:(t,e,i)=>{"use strict";i.d(e,{Z:()=>o});var s=i(6685),n=(i(6212),i(2550)),r=i(4974),a=i(3600);class o{constructor(t){const e=(0,n.ZP)()({displayString:"",validator:null,compositeSchema:null},t);this.displayString=e.displayString,this.validator=e.validator,this.compositeSchema=e.compositeSchema}defaultApplyState(t,e){for(const i in this.compositeSchema)if(this.compositeSchema.hasOwnProperty(i)){const s=this.compositeSchema[i],n=this.getCoreObjectAccessorName(i,t);"fromStateObject"===s.defaultDeserializationMethod?t[n]=this.compositeSchema[i].fromStateObject(e[i]):this.compositeSchema[i].applyState(t[n],e[i])}}defaultToStateObject(t){const e={};for(const i in this.compositeSchema)if(this.compositeSchema.hasOwnProperty(i)){const s=this.getCoreObjectAccessorName(i,t);0,e[i]=this.compositeSchema[i].toStateObject(t[s])}return e}getCoreObjectAccessorName(t,e){const i=t.startsWith("_")?t.substring(1):t,s="_"+i;let n;return n=e.hasOwnProperty(s)?s:i,n}isComposite(){return!!this.compositeSchema}checkStateObjectValid(t,e,i){if(this.isComposite()){const e=t,s=this.compositeSchema;let n=null;if(!e)return n=!1,n;return Object.keys(s).forEach(t=>{"string"==typeof t?(e.hasOwnProperty(t)&&s[t].isStateObjectValid(e[t],!1)||(n=!1),i.push(t)):console.error("key should be a string",t)}),n}{const e=t;return s.Z.isValueValid(e,this.validator)}}getRelatedTypes(){const t=[];if(this.compositeSchema){Object.keys(this.compositeSchema).forEach(e=>{this.compositeSchema[e]instanceof a.Z&&t.push(this.compositeSchema[e])})}return t}getStateSchemaAPI(){return this.isComposite()?_.mapValues(this.compositeSchema,t=>t.typeName):this.displayString}static asValue(t,e){return new o({validator:e,displayString:t})}}r.Z.register("StateSchema",o)},2643:(t,e,i)=>{"use strict";i.d(e,{Z:()=>l});var s=i(4974),n=i(3600),r=i(9196),a=i(6540);const o=new n.Z("StringIO",{supertype:a.Z,valueType:"string",documentation:"PhET-iO Type for Javascript's string primitive type",stateSchema:r.Z.asValue("string",{valueType:"string"}),toStateObject:_.identity});s.Z.register("StringIO",o);const l=o},6540:(t,e,i)=>{"use strict";i.d(e,{Z:()=>o});var s=i(4974),n=i(3600),r=i(9196);const a=new n.Z("ValueIO",{isValidValue:_.stubTrue,supertype:n.Z.ObjectIO,toStateObject:t=>t,fromStateObject:t=>t,stateSchema:r.Z.asValue("*",{isValidValue:_.stubTrue})});s.Z.register("ValueIO",a);const o=a},538:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(4974);const n=new(i(3600).Z)("VoidIO",{isValidValue:()=>!0,documentation:"Type for which there is no instance, usually to mark functions without a return value",toStateObject:()=>{}});s.Z.register("VoidIO",n);const r=n},2391:(t,e,i)=>{"use strict";var s;i.d(e,{Z:()=>g});var n=i(3061),r=i(2550),a=i(8664),o=i(3600),l=i(2306),h=i(8585),c=i(1039),d=i(2643),u=i(428),p=i(6692);class m extends a.Z{constructor(t){var e;const i=(0,r.ZP)()({respectResponseCollectorProperties:!0,phetioType:m.AnnouncerIO,phetioState:!1},t);super(i),_defineProperty(this,"readyToAnnounce",!0),_defineProperty(this,"hasSpoken",!1),this.respectResponseCollectorProperties=i.respectResponseCollectorProperties,this.announcementCompleteEmitter=new n.Z({parameters:[{name:"utterance",phetioType:u.Z.UtteranceIO},{name:"text",phetioType:(0,l.Z)((0,c.Z)([d.Z,h.Z]))}],tandem:null===(e=i.tandem)||void 0===e?void 0:e.createTandem("announcementCompleteEmitter"),phetioReadOnly:!0,phetioDocumentation:"The announcement that has just completed. The Utterance text could potentially differ from the exact text that was announced, so both are emitted. Use `text` for an exact match of what was announced."})}shouldUtteranceCancelOther(t,e){return e.priorityProperty.value{"use strict";i.d(e,{Z:()=>h});var s=i(7857),n=i(2550),r=i(6975),a=i(6692);const o={nameResponse:null,objectResponse:null,contextResponse:null,hintResponse:null,ignoreProperties:!1,responsePatternCollection:r.Z.DEFAULT_RESPONSE_PATTERNS};class l{constructor(t){const e=(0,n.lB)()({},o,t);this._nameResponse=e.nameResponse,this._objectResponse=e.objectResponse,this._contextResponse=e.contextResponse,this._hintResponse=e.hintResponse,this.ignoreProperties=e.ignoreProperties,this.responsePatternCollection=e.responsePatternCollection}getNameResponse(){return l.getResponseText(this._nameResponse)}get nameResponse(){return this.getNameResponse()}set nameResponse(t){this.setNameResponse(t)}setNameResponse(t){this._nameResponse=t}getObjectResponse(){return l.getResponseText(this._objectResponse)}get objectResponse(){return this.getObjectResponse()}set objectResponse(t){this.setObjectResponse(t)}setObjectResponse(t){this._objectResponse=t}getContextResponse(){return l.getResponseText(this._contextResponse)}get contextResponse(){return this.getContextResponse()}set contextResponse(t){this.setContextResponse(t)}setContextResponse(t){this._contextResponse=t}getHintResponse(){return l.getResponseText(this._hintResponse)}get hintResponse(){return this.getHintResponse()}set hintResponse(t){this.setHintResponse(t)}setHintResponse(t){this._hintResponse=t}static getResponseText(t){return(0,s.i)(t)?t.value:"function"==typeof t?t():t}copy(){return new l(this.serialize())}serialize(){return{nameResponse:this.nameResponse,objectResponse:this.objectResponse,contextResponse:this.contextResponse,hintResponse:this.hintResponse,ignoreProperties:this.ignoreProperties,responsePatternCollection:this.responsePatternCollection}}}_defineProperty(l,"DEFAULT_OPTIONS",o),a.Z.register("ResponsePacket",l);const h=l},6975:(t,e,i)=>{"use strict";i.d(e,{Z:()=>o});var s=i(2550),n=i(6692);const r={nameObjectContextHint:"{{NAME}}, {{OBJECT}}, {{CONTEXT}} {{HINT}}",nameObjectContext:"{{NAME}}, {{OBJECT}}, {{CONTEXT}}",nameObjectHint:"{{NAME}}, {{OBJECT}}, {{HINT}}",nameContextHint:"{{NAME}}, {{CONTEXT}} {{HINT}}",nameObject:"{{NAME}}, {{OBJECT}}",nameContext:"{{NAME}}, {{CONTEXT}}",nameHint:"{{NAME}}, {{HINT}}",name:"{{NAME}}",objectContextHint:"{{OBJECT}}, {{CONTEXT}} {{HINT}}",objectContext:"{{OBJECT}}, {{CONTEXT}}",objectHint:"{{OBJECT}}, {{HINT}}",contextHint:"{{CONTEXT}} {{HINT}}",object:"{{OBJECT}}",context:"{{CONTEXT}}",hint:"{{HINT}}"};class a{constructor(t){const e=(0,s.lB)()({},r,t);this.nameObjectContextHint=e.nameObjectContextHint,this.nameObjectContext=e.nameObjectContext,this.nameObjectHint=e.nameObjectHint,this.nameContextHint=e.nameContextHint,this.nameObject=e.nameObject,this.nameContext=e.nameContext,this.nameHint=e.nameHint,this.name=e.name,this.objectContextHint=e.objectContextHint,this.objectContext=e.objectContext,this.objectHint=e.objectHint,this.contextHint=e.contextHint,this.object=e.object,this.context=e.context,this.hint=e.hint}getResponsePattern(t){const e=this[t];return e}static createPatternKey(t,e,i,s){let n="";return t&&(n=n.concat("NAME".concat("_"))),e&&(n=n.concat("OBJECT".concat("_"))),i&&(n=n.concat("CONTEXT".concat("_"))),s&&(n=n.concat("HINT".concat("_"))),_.camelCase(n)}}_defineProperty(a,"DEFAULT_RESPONSE_PATTERNS",new a),n.Z.register("ResponsePatternCollection",a);const o=a},621:(t,e,i)=>{"use strict";i.d(e,{Z:()=>I});var s=i(9806),n=i(4075),r=i(3061),a=i(4317),o=i(8036),l=i(592),h=i(5428),c=i(2550),d=i(8377),u=i(2391),p=i(428),m=i(6692);const g={initialize(){if(window.speechSynthesis||window.SpeechSynthesis||window.SpeechSynthesisUtterance)throw new Error("SpeechSynthesis is supported here, the polyfill should not overwrite it");window.SpeechSynthesis=window.parent.SpeechSynthesis,window.speechSynthesis=new window.parent.SpeechSynthesis,window.SpeechSynthesisUtterance=window.parent.SpeechSynthesisUtterance}};m.Z.register("SpeechSynthesisParentPolyfill",g);const y=g;var f=i(2221),A=i(2823),v=i(9969),b=i(3600),V=i(2306),P=i(7959),w=i(6685);window.phet&&phet.chipper&&phet.chipper.queryParameters&&phet.chipper.queryParameters.speechSynthesisFromParent&&y.initialize();const M=["Albert","Bad News","Bahh","Bells","Boing","Bubbles","Cellos","Good News","Jester","Organ","Superstar","Trinoids","Whisper","Wobble","Zarvox","Flo","Grandma","Grandpa","Junior"];const S={cmn:"zh_CN",yue:"zh_HK","yue-HK":"zh_HK",yue_HK:"zh_HK","fil-PH":"tl",fil_PH:"tl"},T={cancelSelf:!0,cancelOther:!0,voice:null};class E extends u.Z{constructor(t){var e,i,d,u;const m=(0,c.ZP)()({respectResponseCollectorProperties:!1,debug:!1},t);super(m),this.debug=m.debug,this.voiceProperty=new l.Z(null,{tandem:null===(e=m.tandem)||void 0===e?void 0:e.createTandem("voiceProperty"),phetioValueType:(0,V.Z)(C),phetioState:!1,phetioReadOnly:!0,phetioDocumentation:"the voice that is currently voicing responses"}),this.voiceRateProperty=new o.Z(1,{range:new h.Z(.75,2),tandem:null===(i=m.tandem)||void 0===i?void 0:i.createTandem("voiceRateProperty"),phetioState:!1,phetioDocumentation:"changes the rate of the voicing-feature voice"}),this.voicePitchProperty=new o.Z(1,{range:new h.Z(.5,2),tandem:null===(d=m.tandem)||void 0===d?void 0:d.createTandem("voicePitchProperty"),phetioState:!1,phetioDocumentation:"changes the pitch of the voicing-feature voice"}),this.voiceVolumeProperty=new o.Z(1,{range:new h.Z(0,1)}),this.hasSpoken=!1,this.timeSinceWakingEngine=0,this.timeSincePauseResume=0,this.timeSincePendingUtterance=0,this.timeSinceUtteranceEnd=125,this.startSpeakingEmitter=new r.Z({parameters:[{valueType:"string"},{valueType:p.Z}]}),this.endSpeakingEmitter=new r.Z({parameters:[{valueType:"string"},{valueType:p.Z}]}),this.enabledComponentImplementation=new a.Z({enabled:!1,tandem:m.tandem,enabledPropertyOptions:{phetioDocumentation:"toggles this controller of SpeechSynthesis on and off",phetioState:!1,phetioFeatured:!1}}),this.enabledProperty=this.enabledComponentImplementation.enabledProperty,this.mainWindowVoicingEnabledProperty=new s.Z(!0,{tandem:null===(u=m.tandem)||void 0===u?void 0:u.createTandem("mainWindowVoicingEnabledProperty"),phetioState:!1,phetioDocumentation:"toggles the voicing feature on and off for the simulation screen (not the voicing preferences and toolbar controls)"}),this.voicingFullyEnabledProperty=n.ZP.and([this.enabledProperty,this.mainWindowVoicingEnabledProperty]),this._speechAllowedAndFullyEnabledProperty=new s.Z(!1),this.speechAllowedAndFullyEnabledProperty=this._speechAllowedAndFullyEnabledProperty,this.synth=null,this.voicesProperty=new l.Z([]),this.speakingSpeechSynthesisUtteranceWrapper=null,this.isInitializedProperty=new s.Z(!1),this.canSpeakProperty=null,this.boundHandleCanSpeakChange=this.handleCanSpeakChange.bind(this),this.boundHandleCanAnnounceChange=this.handleCanAnnounceChange.bind(this),this.debug&&(this.announcementCompleteEmitter.addListener((t,e)=>{console.log("announcement complete",e)}),this.startSpeakingEmitter.addListener(t=>{this.debug&&console.log("startSpeakingListener",t)}),this.endSpeakingEmitter.addListener(t=>{this.debug&&console.log("endSpeakingListener",t)}))}get initialized(){return this.isInitializedProperty.value}initialize(t,e){0;const i=(0,c.ZP)()({speechAllowedProperty:new s.Z(!0)},e);this.synth=window.speechSynthesis,this.canSpeakProperty=n.ZP.and([i.speechAllowedProperty,this.enabledProperty]),this.canSpeakProperty.link(this.boundHandleCanSpeakChange),v.Z.multilink([i.speechAllowedProperty,this.voicingFullyEnabledProperty],(t,e)=>{this._speechAllowedAndFullyEnabledProperty.value=t&&e});const r=this.getSynth();r.addEventListener&&r.addEventListener("voiceschanged",()=>{this.populateVoices()}),this.populateVoices();const a=()=>{this.timeSinceWakingEngine=5e3,t.removeListener(a)};t.addListener(a),f.Z.addListener(this.step.bind(this)),this.isInitializedProperty.value=!0}step(t){t*=1e3;const e=this.getSynth();this.initialized&&e&&(this.hasSpoken||(this.hasSpoken=e.speaking),this.timeSinceUtteranceEnd=e.speaking?0:this.timeSinceUtteranceEnd+t,this.timeSincePendingUtterance=this.speakingSpeechSynthesisUtteranceWrapper&&!this.speakingSpeechSynthesisUtteranceWrapper.started?this.timeSincePendingUtterance+t:0,this.timeSincePendingUtterance>5e3&&(this.handleSpeechSynthesisEnd(this.speakingSpeechSynthesisUtteranceWrapper.announceText,this.speakingSpeechSynthesisUtteranceWrapper),this.speakingSpeechSynthesisUtteranceWrapper=null,this.cancelSynth()),this.timeSinceUtteranceEnd>125&&!this.speakingSpeechSynthesisUtteranceWrapper&&(this.readyToAnnounce=!0),A.Z.chromium&&!A.Z.android&&this.voiceProperty.value&&!this.voiceProperty.value.localService&&(this.timeSincePauseResume=e.speaking?this.timeSincePauseResume+t:0,this.timeSincePauseResume>1e4&&(this.timeSincePauseResume=0,e.pause(),e.resume())),A.Z.chromeOS&&(this.timeSinceWakingEngine+=t,!e.speaking&&this.timeSinceWakingEngine>5e3&&(this.timeSinceWakingEngine=0,e.speak(new SpeechSynthesisUtterance(" ")))))}handleCanSpeakChange(t){t||this.cancel()}populateVoices(){const t=this.getSynth();t&&(this.voicesProperty.value=_.uniqBy(t.getVoices(),t=>t.name))}getPrioritizedVoices(){const t=this.voicesProperty.value.slice(),e=_.filter(t,t=>!_.some(M,e=>t.name.includes(e))),i=t=>t.name.includes("Google")?-1:t.name.includes("Fred")?e.length:e.indexOf(t);return e.sort((t,e)=>i(t)-i(e))}getEnglishPrioritizedVoices(){return _.filter(this.getPrioritizedVoices(),t=>"en-US"===t.lang||"en_US"===t.lang)}getPrioritizedVoicesForLocale(t){const e=t,i=t.replace("_","-");return _.filter(this.getPrioritizedVoices(),t=>{const s=S.hasOwnProperty(t.lang)?S[t.lang]:t.lang;let n=!1;return(s.includes("_")||s.includes("-"))&&(n=e===s.slice(0,2)),n||e===s||i===s})}announce(t,e){this.initialized&&this.canSpeakProperty&&this.canSpeakProperty.value?this.requestSpeech(t,e):this.handleAnnouncementFailure(e,t)}handleAnnouncementFailure(t,e){this.debug&&console.log("announcement failure",e),this.announcementCompleteEmitter.emit(t,e)}speakIgnoringEnabled(t){this.initialized&&(this.cancel(),this.requestSpeech(t.getAlertText(this.respectResponseCollectorProperties),t))}requestSpeech(t,e){if(this.debug&&console.log("requestSpeech",t),!t)return void this.handleAnnouncementFailure(e,t);const i=(0,c.lB)()({},T,e.announcerOptions),s=(0,d.Z)(t+"").split("
").join(" ").split("
").join(" ");(0,P.Z)(s,w.Z.STRING_WITHOUT_TEMPLATE_VARS_VALIDATOR);const n=new SpeechSynthesisUtterance(s);n.voice=i.voice||this.voiceProperty.value,n.pitch=this.voicePitchProperty.value,n.rate=this.voiceRateProperty.value,n.volume=this.voiceVolumeProperty.value;const r=()=>{this.startSpeakingEmitter.emit(s,e),this.speakingSpeechSynthesisUtteranceWrapper.started=!0,n.removeEventListener("start",r)},a=()=>{this.handleSpeechSynthesisEnd(s,o)},o=new x(e,t,n,!1,a,r);this.speakingSpeechSynthesisUtteranceWrapper=o,n.addEventListener("start",r),n.addEventListener("end",a),n.addEventListener("error",a),this.readyToAnnounce=!1,this.timeSinceUtteranceEnd=0,e.canAnnounceProperty.link(this.boundHandleCanAnnounceChange),e.voicingCanAnnounceProperty.link(this.boundHandleCanAnnounceChange),this.getSynth().speak(n)}handleCanAnnounceChange(){this.speakingSpeechSynthesisUtteranceWrapper&&this.cancelUtteranceIfCanAnnounceFalse(this.speakingSpeechSynthesisUtteranceWrapper.utterance)}cancelUtteranceIfCanAnnounceFalse(t){t.canAnnounceProperty.value&&t.voicingCanAnnounceProperty.value||this.cancelUtterance(t)}handleSpeechSynthesisEnd(t,e){this.endSpeakingEmitter.emit(t,e.utterance),this.announcementCompleteEmitter.emit(e.utterance,e.speechSynthesisUtterance.text),e.speechSynthesisUtterance.removeEventListener("error",e.endListener),e.speechSynthesisUtterance.removeEventListener("end",e.endListener),e.speechSynthesisUtterance.removeEventListener("start",e.startListener);const i=e.utterance.canAnnounceProperty;i.hasListener(this.boundHandleCanAnnounceChange)&&i.unlink(this.boundHandleCanAnnounceChange);const s=e.utterance.voicingCanAnnounceProperty;s.hasListener(this.boundHandleCanAnnounceChange)&&s.unlink(this.boundHandleCanAnnounceChange),this.speakingSpeechSynthesisUtteranceWrapper=null}getSynth(){return this.synth}cancel(){this.initialized&&this.speakingSpeechSynthesisUtteranceWrapper&&this.cancelUtterance(this.speakingSpeechSynthesisUtteranceWrapper.utterance)}cancelUtterance(t){const e=this.speakingSpeechSynthesisUtteranceWrapper;e&&t===e.utterance&&(this.handleSpeechSynthesisEnd(e.announceText,e),this.cancelSynth())}shouldUtteranceCancelOther(t,e){const i=(0,c.lB)()({},T,t.announcerOptions);let s;return e.priorityProperty.value!==t.priorityProperty.value?s=e.priorityProperty.value!0,toStateObject:t=>t.name});m.Z.register("SpeechSynthesisAnnouncer",E);const I=E},428:(t,e,i)=>{"use strict";var s;i.d(e,{Z:()=>w});var n=i(4075),r=i(8292),a=i(1383),o=i(8036),l=i(2550),h=i(3600),c=i(2643),d=i(6103),u=i(6629),p=i(6692),m=i(2306),g=i(8585),y=i(1039),f=i(592),A=i(7857),v=i(1731);let b=1;class V extends v.Z{constructor(t){const e=(0,l.ZP)()({alert:null,predicate:function(){return!0},canAnnounceProperties:[],descriptionCanAnnounceProperties:[],voicingCanAnnounceProperties:[],alertStableDelay:200,alertMaximumDelay:Number.MAX_VALUE,announcerOptions:{},priority:1},t);super(e),this.id=b++,this._alert=e.alert,this.predicate=e.predicate,this.canAnnounceProperty=new P({dependentProperties:e.canAnnounceProperties}),this.descriptionCanAnnounceProperty=new P({dependentProperties:e.descriptionCanAnnounceProperties}),this.voicingCanAnnounceProperty=new P({dependentProperties:e.voicingCanAnnounceProperties}),this.alertStableDelay=e.alertStableDelay,this.alertMaximumDelay=e.alertMaximumDelay,this.announcerOptions=e.announcerOptions,this.priorityProperty=new o.Z(e.priority),this.previousAlertText=null}static getAlertStringFromResponsePacket(t,e){const i=t.serialize();return e||(i.ignoreProperties=!0),d.Z.collectResponses(i)}getAlertText(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const e=V.alertableToText(this._alert,t);return this.previousAlertText=e,e}getAlert(){return this._alert}get alert(){return this.getAlert()}set alert(t){this.setAlert(t)}setAlert(t){this._alert=t}setAlertStableDelay(t){this.alertStableDelay=t}toString(){return`Utterance_${this.id}#${this.getAlertText()}`}toStateObject(){return{alert:(0,m.Z)((0,y.Z)([c.Z,g.Z])).toStateObject(this.getAlertText())}}reset(){this.previousAlertText=null}setCanAnnounceProperties(t){this.canAnnounceProperty.setDependentProperties(t)}set canAnnounceProperties(t){this.setCanAnnounceProperties(t)}get canAnnounceProperties(){return this.getCanAnnounceProperties()}getCanAnnounceProperties(){return this.canAnnounceProperty.getDependentProperties()}setDescriptionCanAnnounceProperties(t){this.descriptionCanAnnounceProperty.setDependentProperties(t)}set descriptionCanAnnounceProperties(t){this.setDescriptionCanAnnounceProperties(t)}get descriptionCanAnnounceProperties(){return this.getDescriptionCanAnnounceProperties()}getDescriptionCanAnnounceProperties(){return this.descriptionCanAnnounceProperty.getDependentProperties()}setVoicingCanAnnounceProperties(t){this.voicingCanAnnounceProperty.setDependentProperties(t)}set voicingCanAnnounceProperties(t){this.setVoicingCanAnnounceProperties(t)}get voicingCanAnnounceProperties(){return this.getVoicingCanAnnounceProperties()}getVoicingCanAnnounceProperties(){return this.voicingCanAnnounceProperty.getDependentProperties()}dispose(){this.canAnnounceProperty.dispose(),this.descriptionCanAnnounceProperty.dispose(),this.voicingCanAnnounceProperty.dispose(),this.priorityProperty.dispose(),super.dispose()}static alertableToText(t){let e,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("function"==typeof t)e=t();else if(t instanceof u.Z)e=V.getAlertStringFromResponsePacket(t,i);else{if(t instanceof V)return t.getAlertText(i);e=(0,A.i)(t)?t.value:t}return e}}s=V,_defineProperty(V,"TOP_PRIORITY",10),_defineProperty(V,"HIGH_PRIORITY",5),_defineProperty(V,"MEDIUM_PRIORITY",2),_defineProperty(V,"DEFAULT_PRIORITY",1),_defineProperty(V,"LOW_PRIORITY",0),_defineProperty(V,"UtteranceIO",new h.Z("UtteranceIO",{valueType:s,documentation:"Announces text to a specific browser technology (like aria-live or web speech)",toStateObject:t=>t.toStateObject(),stateSchema:{alert:(0,m.Z)((0,y.Z)([c.Z,g.Z]))}}));class P extends a.Z{constructor(t){const e=(0,l.ZP)()({dependentProperties:[]},t),i=new f.Z(new r.Z(!1));super(i),this._dependentProperties=[],this.implementationProperty=i,this.setDependentProperties(e.dependentProperties)}setDependentProperties(t){this.implementationProperty.value&&this.implementationProperty.value.dispose();const e=0===t.length?[new r.Z(!0)]:t;this.implementationProperty.value=n.ZP.and(e),this._dependentProperties=t}set dependentProperties(t){this.setDependentProperties(t)}get dependentProperties(){return this.getDependentProperties()}getDependentProperties(){return this._dependentProperties.slice(0)}dispose(){this.implementationProperty.dispose(),this._dependentProperties=[],super.dispose()}}p.Z.register("Utterance",V);const w=V},6103:(t,e,i)=>{"use strict";i.d(e,{Z:()=>u});var s=i(9806),n=i(6114),r=i(6692),a=i(6629),o=i(6975),l=i(2550),h=i(8664);class c extends h.Z{constructor(t){super(),this.nameResponsesEnabledProperty=new s.Z(!0),this.objectResponsesEnabledProperty=new s.Z(!1),this.contextResponsesEnabledProperty=new s.Z(!1),this.hintResponsesEnabledProperty=new s.Z(!1)}reset(){this.nameResponsesEnabledProperty.reset(),this.objectResponsesEnabledProperty.reset(),this.contextResponsesEnabledProperty.reset(),this.hintResponsesEnabledProperty.reset()}collectResponses(t){const e=(0,l.lB)()({},a.Z.DEFAULT_OPTIONS,t),i=!(!e.nameResponse||!this.nameResponsesEnabledProperty.get()&&!e.ignoreProperties),s=!(!e.objectResponse||!this.objectResponsesEnabledProperty.get()&&!e.ignoreProperties),r=!(!e.contextResponse||!this.contextResponsesEnabledProperty.get()&&!e.ignoreProperties),h=!(!e.hintResponse||!this.hintResponsesEnabledProperty.get()&&!e.ignoreProperties),c=o.Z.createPatternKey(i,s,r,h);let d="";if(c){const t=e.responsePatternCollection.getResponsePattern(c);d=n.Z.fillIn(t,{NAME:e.nameResponse,OBJECT:e.objectResponse,CONTEXT:e.contextResponse,HINT:e.hintResponse})}return d}}const d=new c;r.Z.register("responseCollector",d);const u=d},6692:(t,e,i)=>{"use strict";i.d(e,{Z:()=>s});const s=new(i(2492).Z)("utteranceQueue")},6859:(t,e,i)=>{var s=i(3980),n=i(820);void 0===n.himalaya&&(n.himalaya=s),t.exports=s},820:(t,e,i)=>{"use strict";t.exports=function(){if("object"==typeof globalThis)return globalThis;var t;try{t=this||new Function("return this")()}catch(e){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==i.g)return i.g}return t}()}},e={};function i(s){var n=e[s];if(void 0!==n)return n.exports;var r=e[s]={id:s,loaded:!1,exports:{}};return t[s](r,r.exports,i),r.loaded=!0,r.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.hmd=t=>((t=Object.create(t)).children||(t.children=[]),Object.defineProperty(t,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+t.id)}}),t),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},((t,e,s,n,r,a,o,l,h,c,d,u,p,m,g,y,f,A,v,b,V,P,w)=>{"use strict";var M=i(732),S=i(9806),T=i(1453),E=i(4075),x=i(3061),C=i(8036),I=i(592),q=i(2221),k=i(2434),D=i(1603),L=i(6243),O=(i(7023),i(5142)),Z=i(2823),N=i(2550),B=i(6114),R=i(1094),F=i(2976),H=i(6918),z=i(2492);const U=new z.Z("sceneryPhet");var Y=i(1005);class W extends R.JOQ{constructor(t,e){const i=(0,N.ZP)()({fill:"rgba( 0, 0, 0, 0.3 )",pickable:!0,phetioReadOnly:!0,phetioEventType:F.Z.USER,visiblePropertyOptions:{phetioState:!1}},e);super(i);const s=t=>{this.visible=t>0};t.lengthProperty.link(s),this.addInputListener(new R.eMb({tandem:Y.Z.OPT_OUT,phetioReadOnly:i.phetioReadOnly,fire(){(!phet.chipper.isFuzzEnabled()||H.Z.nextDouble()<.005)&&t.get(t.length-1).hide()}})),this.disposeBarrierRectangle=()=>{t.lengthProperty.hasListener(s)&&t.lengthProperty.unlink(s)}}dispose(){this.disposeBarrierRectangle(),super.dispose()}}U.register("BarrierRectangle",W);i(535);var G=i(8664),K=i(2530);const Q=(t,e)=>{const i=e.replace(new RegExp("^.*,"),""),s=atob(i),n=new Uint8Array(s.length);for(let r=0;r{ot||(rt(),ot=!0)},ht=it.decodeAudioData(nt.buffer,t=>{null===at.audioBufferProperty.value&&(at.audioBufferProperty.set(t),lt())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),at.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),lt()});ht&&ht.then(t=>{null===at.audioBufferProperty.value&&(at.audioBufferProperty.set(t),lt())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),lt()});const ct=at,dt=[],ut=[],pt={addStateChangeListener(t,e){let i,s=dt.indexOf(t);-1===s?(dt.push(t),s=dt.length-1,i=[],ut.push(i),t.onstatechange=()=>{_.clone(i).forEach(e=>{e(t.state)})}):i=ut[s],i.push(e)},removeStateChangeListener(t,e){const i=dt.indexOf(t),s=ut[i],n=s.indexOf(e);s.splice(n,1)},hasListener(t,e){let i=!1;const s=dt.indexOf(t);if(s>=0){const t=ut[s];t&&(i=t.includes(e))}return i}};j.register("audioContextStateChangeMonitor",pt);const mt=pt,gt={DEFAULT_PARAM_CHANGE_TIME_CONSTANT:.015,DEFAULT_LINEAR_GAIN_CHANGE_TIME:.1,TWELFTH_ROOT_OF_TWO:Math.pow(2,1/12)};j.register("soundConstants",gt);const yt=gt;var ft=i(2956),At=i(4676);class vt extends At.Z{}_defineProperty(vt,"BASIC",new(t=vt)),_defineProperty(vt,"EXTRA",new t),_defineProperty(vt,"enumeration",new ft.Z(t,{phetioDocumentation:"describes whether a sound is considered part of the basic or the extra sounds for the sim"})),j.register("SoundScope",vt);const bt=vt;var Vt=i(9969),Pt=i(9059);const wt=yt.DEFAULT_LINEAR_GAIN_CHANGE_TIME;class Mt extends G.Z{constructor(t){var e,i,s,n,r,a;super({tandem:t,phetioState:!1,phetioDocumentation:"Controls the simulation's sound. For sims that do not support sound, this element and its children can be ignored."}),_defineProperty(this,"viewNodeDisplayedPropertyMap",new Map),this.enabledProperty=new S.Z((null===(e=phet)||void 0===e||null===(i=e.chipper)||void 0===i||null===(s=i.queryParameters)||void 0===s?void 0:s.supportsSound)||!1,{tandem:null==t?void 0:t.createTandem("enabledProperty"),phetioState:!1,phetioDocumentation:"Determines whether sound is enabled. Supported only if this sim supportsSound=true."}),this.extraSoundEnabledProperty=new S.Z((null===(n=phet)||void 0===n||null===(r=n.chipper)||void 0===r||null===(a=r.queryParameters)||void 0===a?void 0:a.extraSoundInitiallyEnabled)||!1,{tandem:null==t?void 0:t.createTandem("extraSoundEnabledProperty"),phetioState:!1,phetioDocumentation:"Determines whether extra sound is enabled. Extra sound is additional sounds that can serve to improve the learning experience for individuals with visual disabilities. Note that not all simulations that support sound also support extra sound. Also note that the value is irrelevant when enabledProperty is false."}),this.soundGeneratorInfoArray=[],this._mainOutputLevel=1,this._reverbLevel=.02,this.gainNodesForCategories=new Map,this.duckingProperties=(0,T.Z)(),this.initialized=!1,this.soundGeneratorsAwaitingAdd=[],this.mainGainNode=null,this.duckingGainNode=null,this.convolver=null,this.reverbGainNode=null,this.dryGainNode=null}initialize(t,e,i,s,n,r){const a=(0,N.ZP)()({categories:["sim-specific","user-interface"]},r),o=it.currentTime,l=it.createDynamicsCompressor();l.threshold.setValueAtTime(-6,o),l.knee.setValueAtTime(5,o),l.ratio.setValueAtTime(12,o),l.attack.setValueAtTime(0,o),l.release.setValueAtTime(.25,o),l.connect(it.destination),this.duckingGainNode=it.createGain(),this.duckingGainNode.connect(l),this.mainGainNode=it.createGain(),this.mainGainNode.connect(this.duckingGainNode),this.convolver=it.createConvolver();const h=t=>{t&&(this.convolver.buffer=t,ct.audioBufferProperty.unlink(h))};ct.audioBufferProperty.link(h),this.reverbGainNode=it.createGain(),this.reverbGainNode.connect(this.mainGainNode),this.reverbGainNode.gain.setValueAtTime(this._reverbLevel,it.currentTime),this.convolver.connect(this.reverbGainNode),this.dryGainNode=it.createGain(),this.dryGainNode.gain.setValueAtTime(1-this._reverbLevel,it.currentTime),this.dryGainNode.gain.linearRampToValueAtTime(1-this._reverbLevel,it.currentTime+wt),this.dryGainNode.connect(this.mainGainNode),a.categories.forEach(t=>{const e=it.createGain();e.connect(this.convolver),e.connect(this.dryGainNode),this.gainNodesForCategories.set(t,e)}),Vt.Z.multilink([this.enabledProperty,e,t,i,s,n],(t,e,i,s,n,r)=>{const a=t&&e&&i&&s&&n&&!r?this._mainOutputLevel:0;this.mainGainNode.gain.linearRampToValueAtTime(a,it.currentTime+wt)});const c=new S.Z(!1),d=()=>{c.value=this.duckingProperties.reduce((t,e)=>t||e.value,!1)};c.lazyLink(t=>{var e,i;const s=t?.05:.5,n=it.currentTime;null===(e=this.duckingGainNode)||void 0===e||e.gain.cancelScheduledValues(n),null===(i=this.duckingGainNode)||void 0===i||i.gain.setTargetAtTime(t?.15:1,n,s)}),this.duckingProperties.addItemAddedListener(t=>{t.link(d);const e=i=>{i===t&&(i.unlink(d),this.duckingProperties.removeItemRemovedListener(e))};this.duckingProperties.addItemRemovedListener(e)});const u=()=>{window.removeEventListener("touchstart",p,!1),R.sSl.userGestureEmitter.hasListener(p)&&R.sSl.userGestureEmitter.removeListener(p)},p=()=>{"running"!==it.state?(phet.log&&phet.log("audio context not running, attempting to resume, state = "+it.state),it.resume().then(()=>{phet.log&&phet.log("resume appears to have succeeded, phetAudioContext.state = "+it.state),u()}).catch(t=>{const e="error when trying to resume audio context, err = "+t;console.error(e)})):u()};window.addEventListener("touchstart",p,!1),R.sSl.userGestureEmitter.addListener(p);let m=it.state;mt.addStateChangeListener(it,t=>{phet.log&&phet.log(`audio context state changed, old state = ${m}, new state = ${t}, audio context time = ${it.currentTime}`),"running"!==t?(window.addEventListener("touchstart",p,!1),R.sSl.userGestureEmitter.hasListener(p)||R.sSl.userGestureEmitter.addListener(p)):console.log("AudioContext is now running."),m=t}),this.initialized=!0,this.soundGeneratorsAwaitingAdd.forEach(t=>{this.addSoundGenerator(t.soundGenerator,t.soundGeneratorAddOptions)}),this.soundGeneratorsAwaitingAdd.length=0}hasSoundGenerator(t){return _.some(this.soundGeneratorInfoArray,e=>e.soundGenerator===t)}addSoundGenerator(t,e){if(void 0===e&&(e={}),!this.initialized)return void this.soundGeneratorsAwaitingAdd.push({soundGenerator:t,soundGeneratorAddOptions:e});this.hasSoundGenerator(t);const i=(0,N.ZP)()({sonificationLevel:bt.BASIC,associatedViewNode:null,categoryName:null},e);null===i.categoryName?(t.connect(this.convolver),t.connect(this.dryGainNode)):t.connect(this.gainNodesForCategories.get(i.categoryName));const s={soundGenerator:t,sonificationLevel:i.sonificationLevel};if(this.soundGeneratorInfoArray.push(s),t.addEnableControlProperty(this.enabledProperty),i.sonificationLevel===bt.EXTRA&&t.addEnableControlProperty(this.extraSoundEnabledProperty),i.associatedViewNode){const e=new R.ljG(i.associatedViewNode);t.addEnableControlProperty(e),this.viewNodeDisplayedPropertyMap.set(t,e)}}removeSoundGenerator(t){if(!this.initialized){const e=this.soundGeneratorsAwaitingAdd.filter(e=>e.soundGenerator===t);for(;e.length>0;)(0,Pt.Z)(this.soundGeneratorsAwaitingAdd,e[0]),e.shift();return}let e=null;for(let i=0;i{t.isConnectedTo(e)&&t.disconnect(e)}),e&&this.soundGeneratorInfoArray.splice(this.soundGeneratorInfoArray.indexOf(e),1),this.viewNodeDisplayedPropertyMap.has(t)&&(this.viewNodeDisplayedPropertyMap.get(t).dispose(),this.viewNodeDisplayedPropertyMap.delete(t))}setMainOutputLevel(t){this.initialized?(this._mainOutputLevel=t,this.enabledProperty.value&&this.mainGainNode.gain.linearRampToValueAtTime(t,it.currentTime+wt)):console.warn("an attempt was made to set the main output level on an uninitialized sound manager, ignoring")}set mainOutputLevel(t){this.setMainOutputLevel(t)}get mainOutputLevel(){return this.getMainOutputLevel()}getMainOutputLevel(){return this._mainOutputLevel}setOutputLevelForCategory(t,e){if(!this.initialized)return void console.warn("an attempt was made to set the output level for a sound category on an uninitialized sound manager, ignoring");const i=this.gainNodesForCategories.get(t);i&&i.gain.setValueAtTime(e,it.currentTime)}addDuckingProperty(t){this.duckingProperties.add(t)}removeDuckingProperty(t){this.duckingProperties.remove(t)}getOutputLevelForCategory(t){if(!this.initialized)return console.warn("an attempt was made to get the output level for a sound category on an uninitialized sound manager, returning 0"),0;const e=this.gainNodesForCategories.get(t);return e.gain.value}setReverbLevel(t){if(this.initialized){if(t!==this._reverbLevel){const e=it.currentTime;this.reverbGainNode.gain.linearRampToValueAtTime(t,e+wt),this.dryGainNode.gain.linearRampToValueAtTime(1-t,e+wt),this._reverbLevel=t}}else console.warn("an attempt was made to set the reverb level on an uninitialized sound manager, ignoring")}set reverbLevel(t){this.setReverbLevel(t)}get reverbLevel(){return this.getReverbLevel()}getReverbLevel(){return this._reverbLevel}set enabled(t){this.enabledProperty.value=t}get enabled(){return this.enabledProperty.value}set sonificationLevel(t){this.extraSoundEnabledProperty.value=t===bt.EXTRA}get sonificationLevel(){return this.extraSoundEnabledProperty.value?bt.EXTRA:bt.BASIC}logGain(t,e){e=e||1;Date.now()}logMainGain(t){this.mainGainNode&&this.logGain(this.mainGainNode,t)}logReverbGain(t){this.reverbGainNode&&this.logGain(this.reverbGainNode,t)}}const St=new Mt;j.register("soundManager",St);const Tt=St;var Et=i(5281),xt=i(8585),Ct=i(9362),It=i(8047);const qt=phet.chipper.queryParameters.supportsVoicing||phet.chipper.queryParameters.supportsSound;class kt extends G.Z{constructor(t){super({tandem:t,phetioState:!1,phetioDocumentation:"Controls the simulation's audio features. This includes sound and voicing. For sims that do not support these features, this element and its children can be ignored."}),this.audioEnabledProperty=new S.Z("enabled"===phet.chipper.queryParameters.audio,{tandem:t.createTandem("audioEnabledProperty"),phetioFeatured:!0,phetioDocumentation:"toggles all audio features on and off; supported only if this sim supports audio features."}),this.audioAndSoundEnabledProperty=E.ZP.and([this.audioEnabledProperty,Tt.enabledProperty]),this.audioAndVoicingEnabledProperty=E.ZP.and([this.audioEnabledProperty,R.LY3.enabledProperty]),this.anySubcomponentEnabledProperty=new E.ZP([Tt.enabledProperty,R.LY3.enabledProperty],(t,e)=>t||e),this.anyOutputEnabledProperty=new E.ZP([this.audioEnabledProperty,this.anySubcomponentEnabledProperty],(t,e)=>t&&e)}initialize(t){if(t.preferencesModel.audioModel.supportsSound&&Tt.initialize(t.isConstructionCompleteProperty,this.audioEnabledProperty,t.browserTabVisibleProperty,t.activeProperty,It.Z),t.preferencesModel.audioModel.supportsVoicing&&R.LY3.initialize(R.sSl.userGestureEmitter,{speechAllowedProperty:new E.ZP([t.isConstructionCompleteProperty,t.browserTabVisibleProperty,t.activeProperty,It.Z,this.audioEnabledProperty],(t,e,i,s,n)=>t&&e&&i&&!s&&n)}),t.preferencesModel.audioModel.supportsSound&&t.preferencesModel.audioModel.supportsVoicing){const t=new S.Z(!1);R.LY3.startSpeakingEmitter.addListener(()=>t.set(!0)),R.LY3.endSpeakingEmitter.addListener(()=>t.set(!1)),Tt.addDuckingProperty(t)}}}const Dt=new kt(qt?Y.Z.GENERAL_VIEW.createTandem("audioManager"):Y.Z.OPT_OUT);Ct.Z.register("audioManager",Dt);const Lt=Dt;let _t=!1,Ot=!0;const Zt={start:function(t){_t=!0;const e=document.createElement("div");e.style.opacity="0",e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.width="0",e.style.height="0",e.style.clip="rect(0,0,0,0)",e.setAttribute("aria-hidden","true"),t.display.domElement.appendChild(e),t.frameStartedEmitter.addListener(()=>{t.frameCounter%1e3==0&&(Ot=!Ot,e.innerHTML=""+Ot)})}};Ct.Z.register("Heartbeat",Zt);const Nt=Zt;var Bt=i(7922),Rt=i(1383);class Ft extends Rt.Z{constructor(t,e){super(new X.Z(t),e)}}Bt.Z.register("MappedProperty",Ft);var Ht=i(668),zt=i(2560),Ut=i(8445),Yt=i(8378);class Wt{static registerDataURL(t,e,i){if(phet.chipper.queryParameters.binder){const n=`${t}/${e}`;Wt.componentMap[n]=Wt.componentMap[n]||[];try{i.toDataURL(t=>{Wt.componentMap[n].push(t)})}catch(s){}}}static registerToolbox(t){phet.chipper.queryParameters.binder&&Wt.registerDataURL("sun","ToolboxPattern",t)}}_defineProperty(Wt,"componentMap",{}),Yt.Z.register("InstanceRegistry",Wt);var Gt=i(369);const Kt=new Image,Qt=K.Z.createLock(Kt);Kt.onload=Qt,Kt.src="data:image/png;base64,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";const Xt=Kt,jt=QueryStringMachine.getAll({backgroundColor:{type:"string",defaultValue:"white"},fontFamily:{type:"string",defaultValue:"Arial"}});U.register("sceneryPhetQueryParameters",jt);const Jt=jt;class $t extends R.Zxw{constructor(t){let e;e="number"==typeof t||"string"==typeof t?{size:t}:t||{},e=(0,N.JA)({family:Jt.fontFamily},e),e.family=[e.family,"sans-serif"].join(", "),super(e)}}U.register("PhetFont",$t);var te=i(9119);const ee=(0,te.Z)("SCENERY_PHET");U.register("SceneryPhetStrings",ee);const ie=ee;var se=i(2643);class ne extends E.ZP{constructor(t,e,i){super(t,e,(0,N.ZP)()({phetioFeatured:!0,phetioValueType:se.Z,tandemNameSuffix:"StringProperty"},i))}}Bt.Z.register("DerivedStringProperty",ne);class re extends R.NBX{constructor(t,e){var i,s;const n=!(null!=e&&e.basePositionProperty),r=!(null!=e&&e.tipPositionProperty),a=(0,N.ZP)()({basePositionProperty:new zt.Z(new Ht.Z(0,0)),tipPositionProperty:new zt.Z(new Ht.Z(1,0)),hasValue:!0,dragBounds:D.Z.EVERYTHING,textPosition:new Ht.Z(0,30),modelViewTransform:Gt.Z.createIdentity(),significantFigures:1,textColor:"white",textBackgroundColor:null,textBackgroundXMargin:4,textBackgroundYMargin:2,textBackgroundCornerRadius:2,textMaxWidth:200,textFont:new $t({size:16,weight:"bold"}),baseScale:.8,lineColor:"gray",tapeLineWidth:2,tipCircleColor:"rgba(0,0,0,0.1)",tipCircleRadius:10,crosshairColor:"rgb(224, 95, 32)",crosshairSize:5,crosshairLineWidth:2,isBaseCrosshairRotating:!0,isTipCrosshairRotating:!0,isTipDragBounded:!0,interactive:!0,baseDragStarted:_.noop,baseDragEnded:_.noop,phetioReadoutStringPropertyInstrumented:!0,phetioFeaturedMeasuredDistanceProperty:!1,keyboardDragListenerOptions:{baseDragSpeed:600,baseShiftDragSpeed:300,tipDragSpeed:600,tipShiftDragSpeed:150}},e);super(),this.unitsProperty=t,this.significantFigures=a.significantFigures,this.dragBoundsProperty=new I.Z(a.dragBounds),this.modelViewTransformProperty=new I.Z(a.modelViewTransform),this.isTipDragBounded=a.isTipDragBounded,this.basePositionProperty=a.basePositionProperty,this.tipPositionProperty=a.tipPositionProperty,this.ownsBasePositionProperty=n,this.ownsTipPositionProperty=r,this._isTipUserControlledProperty=new I.Z(!1),this.isTipUserControlledProperty=this._isTipUserControlledProperty,this._isBaseUserControlledProperty=new I.Z(!1),this.isBaseUserControlledProperty=this._isBaseUserControlledProperty,this.measuredDistanceProperty=new E.ZP([this.basePositionProperty,this.tipPositionProperty],(t,e)=>t.distance(e),{tandem:null===(i=a.tandem)||void 0===i?void 0:i.createTandem("measuredDistanceProperty"),phetioDocumentation:"The distance measured by the measuring tape",phetioValueType:xt.Z,phetioFeatured:a.phetioFeaturedMeasuredDistanceProperty,units:this.basePositionProperty.units});const o=(new Ut.bn).moveTo(-a.crosshairSize,0).moveTo(-a.crosshairSize,0).lineTo(a.crosshairSize,0).moveTo(0,-a.crosshairSize).lineTo(0,a.crosshairSize),l=new R.y$t(o,{stroke:a.crosshairColor,lineWidth:a.crosshairLineWidth}),h=new R.y$t(o,{stroke:a.crosshairColor,lineWidth:a.crosshairLineWidth}),c=new R.Cdc(a.tipCircleRadius,{fill:a.tipCircleColor}),d=new R.e8H({interactiveHighlightEnabled:!1});this.baseImage=new R.Eep(Xt,{scale:a.baseScale,cursor:"pointer",tagName:"div",focusable:!0,ariaRole:"application",innerContent:ie.a11y.measuringTapeStringProperty,ariaLabel:ie.a11y.measuringTapeStringProperty}),d.addChild(this.baseImage);const u=new R.x12(this.basePositionProperty.value,this.tipPositionProperty.value,{stroke:a.lineColor,lineWidth:a.tapeLineWidth}),p=new R.e8H({children:[c,h],cursor:"pointer",interactiveHighlightEnabled:!1,tagName:"div",focusable:!0,ariaRole:"application",innerContent:ie.a11y.measuringTapeTipStringProperty,ariaLabel:ie.a11y.measuringTapeTipStringProperty}),m=new ne([this.unitsProperty,this.measuredDistanceProperty,ie.measuringTapeReadoutPatternStringProperty],(t,e,i)=>{const s=O.Z.toFixed(t.multiplier*e,this.significantFigures);return B.Z.fillIn(i,{distance:s,units:t.name})},{tandem:a.phetioReadoutStringPropertyInstrumented?null===(s=a.tandem)||void 0===s?void 0:s.createTandem("readoutStringProperty"):Y.Z.OPT_OUT,phetioDocumentation:"The text content of the readout on the measuring tape"});this.valueNode=new R.xvT(m,{font:a.textFont,fill:a.textColor,maxWidth:a.textMaxWidth}),this.valueBackgroundNode=new R.AeJ(0,0,1,1,{cornerRadius:a.textBackgroundCornerRadius,fill:a.textBackgroundColor});const g=()=>{const t=this.valueNode.width+2*a.textBackgroundXMargin,e=this.valueNode.height+2*a.textBackgroundYMargin;this.valueBackgroundNode.setRect(0,0,t,e),this.valueBackgroundNode.center=this.valueNode.center};let y;if(this.valueNode.boundsProperty.lazyLink(g),g(),p.touchArea=p.localBounds.dilated(15),this.baseImage.touchArea=this.baseImage.localBounds.dilated(20),this.baseImage.mouseArea=this.baseImage.localBounds.dilated(10),this.addChild(u),this.addChild(l),this.addChild(d),this.valueContainer=new R.NBX({children:[this.valueBackgroundNode,this.valueNode]}),a.hasValue&&this.addChild(this.valueContainer),this.addChild(p),this.baseDragListener=null,a.interactive){var f,A,v,b;d.interactiveHighlightEnabled=!0,p.interactiveHighlightEnabled=!0;const t=()=>{this.moveToFront(),a.baseDragStarted(),this._isBaseUserControlledProperty.value=!0},e=()=>{this._isBaseUserControlledProperty.value=!1,a.baseDragEnded()},i=t=>{if(!this.isTipUserControlledProperty.value){const e=t.plus(this.tipPositionProperty.value);if(a.isTipDragBounded){const t=this.dragBoundsProperty.value.closestPointTo(e);this.tipPositionProperty.set(t)}else this.tipPositionProperty.set(e)}};this.baseDragListener=new R._U3({tandem:null===(f=a.tandem)||void 0===f?void 0:f.createTandem("baseDragListener"),start:e=>{t();const i=this.modelViewTransformProperty.value.modelToViewPosition(this.basePositionProperty.value);y=e.currentTarget.globalToParentPoint(e.pointer.point).minus(i)},drag:(t,e)=>{const s=e.currentTarget.globalToParentPoint(t.pointer.point).minus(y),n=this.modelViewTransformProperty.value.viewToModelPosition(s),r=this.dragBoundsProperty.value.closestPointTo(n),a=r.minus(this.basePositionProperty.value);this.basePositionProperty.set(r),i(a)},end:e}),this.baseImage.addInputListener(this.baseDragListener);const s=new R.qQp({tandem:null===(A=a.tandem)||void 0===A?void 0:A.createTandem("baseKeyboardDragListener"),positionProperty:this.basePositionProperty,transform:this.modelViewTransformProperty,dragBoundsProperty:this.dragBoundsProperty,dragSpeed:a.keyboardDragListenerOptions.baseDragSpeed,shiftDragSpeed:a.keyboardDragListenerOptions.baseShiftDragSpeed,start:t,drag:i,end:e});this.baseImage.addInputListener(s);const n=()=>{this._isTipUserControlledProperty.value=!1};let r;const o=new R._U3({tandem:null===(v=a.tandem)||void 0===v?void 0:v.createTandem("tipDragListener"),start:t=>{this.moveToFront(),this._isTipUserControlledProperty.value=!0;const e=this.modelViewTransformProperty.value.modelToViewPosition(this.tipPositionProperty.value);r=t.currentTarget.globalToParentPoint(t.pointer.point).minus(e)},drag:(t,e)=>{const i=e.currentTarget.globalToParentPoint(t.pointer.point).minus(r),s=this.modelViewTransformProperty.value.viewToModelPosition(i);a.isTipDragBounded?this.tipPositionProperty.value=this.dragBoundsProperty.value.closestPointTo(s):this.tipPositionProperty.value=s},end:n});p.addInputListener(o);const l=new R.qQp({tandem:null===(b=a.tandem)||void 0===b?void 0:b.createTandem("tipKeyboardDragListener"),positionProperty:this.tipPositionProperty,dragBoundsProperty:a.isTipDragBounded?this.dragBoundsProperty:null,transform:this.modelViewTransformProperty,dragSpeed:a.keyboardDragListenerOptions.tipDragSpeed,shiftDragSpeed:a.keyboardDragListenerOptions.tipShiftDragSpeed,start:()=>{this.moveToFront(),this._isTipUserControlledProperty.value=!0},end:n});p.addInputListener(l),this.visibleProperty.lazyLink(t=>{t||this.interruptSubtreeInput()})}const V=()=>{this.valueNode.centerTop=this.baseImage.center.plus(a.textPosition.times(a.baseScale))};m.link(V);const P=Vt.Z.multilink([this.measuredDistanceProperty,t,this.modelViewTransformProperty,this.tipPositionProperty,this.basePositionProperty],(t,e,i,s,n)=>{const r=i.modelToViewPosition(s),o=i.modelToViewPosition(n),h=this.baseImage.getRotation(),c=Math.atan2(r.y-o.y,r.x-o.x),d=c-h;l.center=o,p.center=r,this.baseImage.setRotation(0),this.baseImage.rightBottom=o,this.baseImage.rotateAround(this.baseImage.rightBottom,c),u.setLine(o.x,o.y,r.x,r.y),a.isTipCrosshairRotating&&p.rotateAround(r,d),a.isBaseCrosshairRotating&&l.rotateAround(o,d),V()});this.disposeMeasuringTapeNode=()=>{P.dispose(),m.dispose(),this.ownsBasePositionProperty&&this.basePositionProperty.dispose(),this.ownsTipPositionProperty&&this.tipPositionProperty.dispose(),d.dispose(),p.dispose()},this.mutate(a)}reset(){this.ownsBasePositionProperty&&this.basePositionProperty.reset(),this.ownsTipPositionProperty&&this.tipPositionProperty.reset()}dispose(){this.disposeMeasuringTapeNode(),super.dispose()}setDragBounds(t){const e=t.copy();this.dragBoundsProperty.value=e,this.basePositionProperty.value=e.closestPointTo(this.basePositionProperty.value),this.isTipDragBounded&&(this.tipPositionProperty.value=e.closestPointTo(this.tipPositionProperty.value))}getDragBounds(){return this.dragBoundsProperty.value.copy()}getLocalBaseCenter(){return new Ht.Z(-this.baseImage.imageWidth/2,-this.baseImage.imageHeight/2)}getLocalBaseBounds(){return this.baseImage.bounds.copy()}startBaseDrag(t){this.baseDragListener&&this.baseDragListener.press(t)}static createIcon(t){const e=(0,N.ZP)()({tapeLength:30},t),i=new re(new I.Z({name:"",multiplier:1}),{tipPositionProperty:new zt.Z(new Ht.Z(e.tapeLength,0)),hasValue:!1,interactive:!1});e.children=[i];const s=new R.NBX(e);return i.toImage(t=>s.setChildren([new R.Eep(t)])),s}}U.register("MeasuringTapeNode",re);const ae=re,oe=new z.Z("sun"),le={fill:"white",stroke:"black",lineWidth:1,lineDash:[],xMargin:5,yMargin:5,cornerRadius:10,resize:!0,backgroundPickable:!0,excludeInvisibleChildrenFromBounds:!0,align:"left",minWidth:0,minHeight:0};class he extends((0,R.tTM)(R.NBX)){constructor(t,e){const i=(0,N.lB)()({},le,e);super(),this._content=t,this._backgroundContainer=new R.NBX,this._background=new R.AeJ(0,0,1,1,{lineWidth:i.lineWidth,pickable:i.backgroundPickable,lineDash:i.lineDash,cornerRadius:i.cornerRadius}),this.setStroke(i.stroke),this.setFill(i.fill),this.addChild(this._backgroundContainer),this.addChild(t),this.constraint=new ce(this,i),this.constraint.updateLayout(),this.constraint.enabled=i.resize,this.mutate(i)}getStroke(){return this._background.stroke}get stroke(){return this.getStroke()}set stroke(t){this.setStroke(t)}setStroke(t){this._background.stroke=t,this.constraint&&this.constraint.updateLayoutAutomatically()}getFill(){return this._background.fill}get fill(){return this.getFill()}set fill(t){this.setFill(t)}setFill(t){this._background.fill=t}setExcludeInvisibleChildrenFromBounds(t){super.setExcludeInvisibleChildrenFromBounds(t),this.constraint.updateLayoutAutomatically()}}_defineProperty(he,"DEFAULT_PANEL_OPTIONS",le);class ce extends R.dmK{constructor(t,e){super(t),this.panel=t,this.minWidth=e.minWidth,this.minHeight=e.minHeight,this.xMargin=e.xMargin,this.yMargin=e.yMargin,this.lineWidth=e.lineWidth,this.align=e.align,this.panel.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.panel.localPreferredHeightProperty.lazyLink(this._updateLayoutListener),this.addNode(t._content)}layout(){super.layout();const t=this.panel,e=t._content,i=t._background,s=null===t.stroke?0:this.lineWidth,n=t.isChildIncludedInLayout(e);if(t._backgroundContainer.children=n?[i]:[],!n)return t.localMinimumWidth=null,void(t.localMinimumHeight=null);const r=(0,R.S3T)(e)&&null!==e.minimumWidth?e.minimumWidth:e.width,a=(0,R.fJO)(e)&&null!==e.minimumHeight?e.minimumHeight:e.height,o=Math.max(this.minWidth,r+2*this.xMargin)+s,l=Math.max(this.minHeight,a+2*this.yMargin)+s,h=Math.max(o,t.localPreferredWidth||0),c=Math.max(l,t.localPreferredHeight||0);(0,R.S3T)(e)&&null!==t.localPreferredWidth&&(e.preferredWidth=h-s-2*this.xMargin),(0,R.fJO)(e)&&null!==t.localPreferredHeight&&(e.preferredHeight=c-s-2*this.yMargin),i.setRect(0,0,h-s,c-s),"center"===this.align?e.center=i.center:"left"===this.align?(e.left=i.centerX-i.rectWidth/2+this.xMargin,e.centerY=i.centerY):(e.right=i.centerX+i.rectWidth/2-this.xMargin,e.centerY=i.centerY),t.localMinimumWidth=o,t.localMinimumHeight=l}dispose(){this.panel.localPreferredWidthProperty.unlink(this._updateLayoutListener),this.panel.localPreferredHeightProperty.unlink(this._updateLayoutListener),super.dispose()}}oe.register("Panel",he);const de="data:audio/mpeg;base64,//tQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAFAAAE5AAzMzMzMzMzMzMzMzMzMzMzMzMzZmZmZmZmZmZmZmZmZmZmZmZmZmaZmZmZmZmZmZmZmZmZmZmZmZmZmczMzMzMzMzMzMzMzMzMzMzMzMzM//////////////////////////8AAAA5TEFNRTMuOTlyAaUAAAAAAAAAABRAJAZmQgAAQAAABOTGvClKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7UMQAAAjxrv+ggLoZGTXh9oJQAa222FG3ASABBG51MY/j4AAB4AYI3/H3//Pqd/zv0Jp/8//zn3n6Mmf/J7f//8jf+fOeeggHA4RXkGh8XEwHAMHD4udyCYuhAALhgJqWJAEDGMYxvHlyAHxc9P76dP//T/Rm//p+v9tvb0Tzr1XyfnelP/3b0//5vo86Mlm0dHQrscccRQg5oSYpziaiB52oQCkxnR6LQisRCEMhluyeqEhIiWMiSvQjhwDTCtCPyDkNrP+UsBTNwVsJGSD/+1LEFoAQMWtluYaQEWGP7H+wYAR9IvpDLBawV8OWbG5oShmbiVnh8GAU6ZIjnetMKuOcpmaSndX80HuS7puaIKq/6lvM36lIJf8+Zm6CFA0t3fV/91IOhPJ1GCH13q//5o6DJl9/F3ErtwAGRlJ26tx4H5gV4lzzrIqy8jTNBZl1Hep3doI2/x6AMOljV5/M4clzeagOVs4SmnmZk2fTyahylhxZ1R7/1HlnhEe4KgF3SISoKnviYs9T8sp4Ku5ICsAAg3RwNdct5GVqea2W4P/7UsQHgAuZRzrtmE8JO4qkaa4M4MXAzUcoyYPSsZe/D4w5DUicEmE/ziQka1VaLTh0y8+qp/UtRMpQoli5jYCz6St//RjTOrPXlI/KJaZ2RHX6mMrJqxfqVjPM/K/thi6pyAAPlyOxkEr9tPgR2ldNwBRI0383ZJR5NmIAG2zBZOw1tKaJR6jzjIxgTlVLjBgJmawwRo8JXAUYCz1gr/q+aVWur8tO+j4iUe////6ii3UCwZHQhxd93nYdy9H1MjPwThY/VGgQQLo200aOkCDF//tSxA+CCwg1HK3lIQHXlCPo97AIw8D44EBOcB8oGBIND4gcCBc+IFHC7wwUOA+oMiAaH1PDCw+mxbydxPV3/zjbCnci8p/9nIJTQYSH5vktZIAEdHIA5HkiS4k11MYsCUFS8QSbEVhJUnQlFpKIJNQhJJrBKEZ8kiKoJIkqToSj5KJJ6hiCTXCUJUZJEl45Ek9TCUfQkkyuSSbzS72V1mVruLnhMeBUsHREPDQiPA0VOiJwdKuBlR5Fqtbk3f///t8FdSogAuxJp2uAWhIWFmv/+1LEBgPGHADHoIhgIAAANIAAAATcLVLFRWKCwsLCyxUVFVf6xVmLCws1YqKior////2RVn/+LCwtTEFNRTMuOTkuM1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==",ue=Q(it,de),pe=K.Z.createLock(de),me=new tt;let ge=!1;const ye=()=>{ge||(pe(),ge=!0)},fe=it.decodeAudioData(ue.buffer,t=>{null===me.audioBufferProperty.value&&(me.audioBufferProperty.set(t),ye())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),me.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),ye()});fe&&fe.then(t=>{null===me.audioBufferProperty.value&&(me.audioBufferProperty.set(t),ye())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),ye()});const Ae=me,ve={detectSoundBounds:t=>{const e=t.length,i=[],s=[];for(let r=0;r{let s,n=0,r=!1;for(s=0;si&&t[s+1]>t[s]&&(n=s,r=!0);let a=0;for(r=!1,s=n;s>0&&!r;s--){const e=t[s];e<=0&&(a=0===e?s:s+1,r=!0)}let o=0,l=0;for(s=0;s{let s,n=e-1,r=!1;for(s=e-1;s>0&&!r;s--)t[s]<=-i&&t[s-1]=0&&(a=s,r=!0);let o=0,l=0;for(s=a;s{this.fullyEnabledProperty.value=_.every(this.enableControlProperties,t=>t.value)};this.enableControlProperties.addItemAddedListener(t=>{t.link(i);const e=s=>{s===t&&(s.unlink(i),this.enableControlProperties.removeItemRemovedListener(e))};this.enableControlProperties.addItemRemovedListener(e)}),e.enableControlProperties.forEach(t=>{this.addEnableControlProperty(t)}),this.locallyEnabledProperty=new S.Z(!0),this.addEnableControlProperty(this.locallyEnabledProperty),this.mainGainNode=this.audioContext.createGain(),this.mainGainNode.gain.setValueAtTime(this._outputLevel,this.audioContext.currentTime),e.connectImmediately&&this.mainGainNode.connect(this.audioContext.destination),this.fullyEnabledProperty.link(t=>{const e=t?0:this._outputLevel,i=t?this._outputLevel:0,s=this.audioContext.currentTime;this.mainGainNode.gain.setValueAtTime(e,s),this.mainGainNode.gain.linearRampToValueAtTime(i,this.audioContext.currentTime+yt.DEFAULT_LINEAR_GAIN_CHANGE_TIME)}),this.soundSourceDestination=this.mainGainNode;for(let s=e.additionalAudioNodes.length-1;s>=0;s--){const t=e.additionalAudioNodes[s];t.connect(this.soundSourceDestination),this.soundSourceDestination=t}Y.Z.PHET_IO_ENABLED&&!e.enabledDuringPhetioStateSetting&&this.addEnableControlProperty(Se),this.disposeEmitter.addListener(()=>{this.enableControlProperties.clear()})}connect(t){this.mainGainNode.connect(t),this.connectionList.push(t)}disconnect(t){this.mainGainNode.disconnect(t),this.connectionList=_.without(this.connectionList,t)}isConnectedTo(t){return this.connectionList.includes(t)}setOutputLevel(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Me;if(t!==this._outputLevel){const i=this.audioContext.currentTime;this.fullyEnabledProperty.value&&(this.mainGainNode.gain.cancelScheduledValues(i),0===e?this.mainGainNode.gain.setValueAtTime(t,i):"running"===this.audioContext.state?this.mainGainNode.gain.setTargetAtTime(t,i,e):this.mainGainNode.gain.linearRampToValueAtTime(t,i+yt.DEFAULT_LINEAR_GAIN_CHANGE_TIME)),this._outputLevel=t}}set outputLevel(t){this.setOutputLevel(t)}get outputLevel(){return this.getOutputLevel()}getOutputLevel(){return this._outputLevel}addEnableControlProperty(t){this.enableControlProperties.push(t)}removeEnableControlProperty(t){this.enableControlProperties.remove(t)}get locallyEnabled(){return this.locallyEnabledProperty.value}set locallyEnabled(t){this.locallyEnabledProperty.value=t}get fullyEnabled(){return this.fullyEnabledProperty.value}}j.register("SoundGenerator",Te);const Ee=Te,xe=yt.DEFAULT_PARAM_CHANGE_TIME_CONSTANT;class Ce extends Ee{constructor(t,e){const i=(0,N.ZP)()({loop:!1,trimSilence:!0,initialPlaybackRate:1,initiateWhenDisabled:!1,rateChangesAffectPlayingSounds:!0},e);if(super(i),this.wrappedAudioBuffer=t,this.loop=i.loop,this.rateChangesAffectPlayingSounds=i.rateChangesAffectPlayingSounds,this.initiateWhenDisabled=i.initiateWhenDisabled,this.soundStart=0,this.soundEnd=null,i.trimSilence){const t=e=>{if(e){const i=Pe.detectSoundBounds(e);this.soundStart=i.soundStart,this.soundEnd=i.soundEnd,this.wrappedAudioBuffer.audioBufferProperty.unlink(t)}};this.wrappedAudioBuffer.audioBufferProperty.link(t)}this.activeBufferSources=[],this.localGainNode=this.audioContext.createGain(),this.localGainNode.connect(this.soundSourceDestination),this._playbackRate=i.initialPlaybackRate,this.isPlayingProperty=new S.Z(!1),this.timeOfDeferredPlayRequest=Number.NEGATIVE_INFINITY,this.audioContextStateChangeListener=t=>{"running"===t&&((this.loop||(Date.now()-this.timeOfDeferredPlayRequest)/1e3<.2)&&this.play(.1),mt.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener))},this.fullyEnabledProperty.lazyLink(t=>{this.loop||t||this.stop()})}play(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if("running"===this.audioContext.state&&this.wrappedAudioBuffer.audioBufferProperty.value){const e=this.audioContext.currentTime;if(this.loop&&!this.isPlayingProperty.get()||!this.loop&&(this.fullyEnabled||this.initiateWhenDisabled)){const i=this.audioContext.createBufferSource();i.buffer=this.wrappedAudioBuffer.audioBufferProperty.value,i.loop=this.loop,i.loopStart=this.soundStart,this.soundEnd&&(i.loopEnd=this.soundEnd),this.localGainNode.gain.cancelScheduledValues(e),this.localGainNode.gain.setValueAtTime(1,e),i.connect(this.soundSourceDestination),this.activeBufferSources.push(i),this.loop||(i.onended=()=>{const t=this.activeBufferSources.indexOf(i);t>-1&&this.activeBufferSources.splice(t,1),this.isPlayingProperty.value=this.activeBufferSources.length>0}),i.playbackRate.setValueAtTime(this._playbackRate,e),i.start(e+t,this.soundStart),this.isPlayingProperty.value=!0}}else"suspended"===this.audioContext.state&&(this.timeOfDeferredPlayRequest=Date.now(),mt.hasListener(this.audioContext,this.audioContextStateChangeListener)||mt.addStateChangeListener(this.audioContext,this.audioContextStateChangeListener))}stop(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.1;const e=t>0?t/4.61:yt.DEFAULT_PARAM_CHANGE_TIME_CONSTANT,i=this.audioContext.currentTime,s=i+t;this.localGainNode.gain.cancelScheduledValues(i),this.localGainNode.gain.setTargetAtTime(0,i,e),this.activeBufferSources.forEach(t=>{t.stop(s)}),this.activeBufferSources.length=0,this.isPlayingProperty.value=!1,mt.hasListener(this.audioContext,this.audioContextStateChangeListener)&&mt.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener)}setPlaybackRate(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:xe;if(this.rateChangesAffectPlayingSounds){const i=this.audioContext.currentTime;this.activeBufferSources.forEach(s=>{s.playbackRate.cancelScheduledValues(i),s.playbackRate.setTargetAtTime(t,i,e)})}this._playbackRate=t}getPlaybackRate(){return this._playbackRate}get playbackRate(){return this.getPlaybackRate()}get isPlaying(){return this.isPlayingProperty.value}getNumberOfPlayingInstances(){return this.activeBufferSources.length}}j.register("SoundClip",Ce);const Ie=Ce;class qe{constructor(t,e){this.soundPlayer=t,this.playbackRate=e}play(){this.soundPlayer.setPlaybackRate(this.playbackRate),this.soundPlayer.play()}stop(){this.soundPlayer.stop()}}const ke=new class{constructor(){this._basisSoundClip=null,this.soundPlayers=[]}getSoundClipInstance(){return this._basisSoundClip||(this._basisSoundClip=new Ie(Ae,{initialOutputLevel:.7,rateChangesAffectPlayingSounds:!1}),Tt.addSoundGenerator(this._basisSoundClip,{categoryName:"user-interface"})),this._basisSoundClip}getSelectionSoundPlayer(t){if(!this.soundPlayers[t]){const e=Math.pow(2,-t/12);this.soundPlayers[t]=new qe(this.getSoundClipInstance(),e)}return this.soundPlayers[t]}};j.register("multiSelectionSoundPlayerFactory",ke);const De=ke;class Le extends((0,R.pL8)((0,R.CHP)(R.NBX))){constructor(t,e,i,s){const n=(0,N.ZP)()({centerColor:"black",radius:Le.DEFAULT_RADIUS,selectedColor:"rgb( 143, 197, 250 )",deselectedColor:"white",xSpacing:8,stroke:"black",soundPlayer:De.getSelectionSoundPlayer(0),a11yNameAttribute:null,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,cursor:"pointer",disabledOpacity:R.iaM.DISABLED_OPACITY,tandem:Y.Z.REQUIRED,tandemNameSuffix:"RadioButton",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,tagName:"input",inputType:"radio",containerTagName:"li",labelTagName:"label",appendLabel:!0,appendDescription:!0},s);super(),_defineProperty(this,"onInputEmitter",new x.Z),_defineProperty(this,"_isMouseAreaCustomized",!1),_defineProperty(this,"_isTouchAreaCustomized",!1),_defineProperty(this,"_isSettingAreas",!1),this.value=e;const r=new R.NBX,a=new R.Cdc(n.radius/3,{fill:n.centerColor}),o=new R.Cdc(n.radius,{fill:n.selectedColor,stroke:n.stroke}),l=new R.NBX({children:[o,a]});r.addChild(l);const h=new R.NBX,c=new R.Cdc(n.radius,{fill:n.deselectedColor,stroke:n.stroke});h.addChild(c);const d=new R.NBX({children:[r,h],pickable:!1}),u=()=>{i.left=c.right+n.xSpacing,i.centerY=c.centerY};i.boundsProperty.link(u);const p=new R.AeJ({});r.pickable=h.pickable=!1,i.pickable=!1,this.children=[d,i,p],this.constraint=new _e(this,d,i,p,n),this.constraint.updateLayout();const m=t=>{r.visible=t===e,h.visible=!r.visible};t.link(m);const g=()=>{const i=t.value;t.set(e),i!==t.value&&this.onInputEmitter.emit()},y=new R.eMb({fire:g,tandem:n.tandem.createTandem("fireListener")});this.addInputListener(y),this.onInputEmitter.addListener(()=>n.soundPlayer.play());const f={change:g};this.addInputListener(f),t.value===e&&this.setPDOMAttribute("checked","checked");const A=t=>{this.pdomChecked=t===e};t.link(A),null!==n.a11yNameAttribute&&this.setPDOMAttribute("name",n.a11yNameAttribute),this.mutate(n),this.disposeAquaRadioButton=()=>{this.constraint.dispose(),this.onInputEmitter.dispose(),this.removeInputListener(y),this.removeInputListener(f),t.unlink(A),t.unlink(m),i.boundsProperty.hasListener(u)&&i.boundsProperty.unlink(u),y.dispose()}}dispose(){this.disposeAquaRadioButton(),super.dispose()}}_defineProperty(Le,"DEFAULT_RADIUS",7);class _e extends R.dmK{constructor(t,e,i,s,n){super(t),this.radioButton=t,this.radioNode=e,this.content=i,this.rectangle=s,this.options=n,this.radioButton.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.addNode(i)}layout(){super.layout();const t=this.createLayoutProxy(this.content),e=t.minimumWidth,i=this.radioNode.width+this.options.xSpacing+e,s=Math.max(i,this.radioButton.localPreferredWidth||0);(0,R.S3T)(this.content)&&(t.preferredWidth=s-this.radioNode.width-this.options.xSpacing),t.left=this.radioNode.right+this.options.xSpacing,t.centerY=this.radioNode.centerY,this.rectangle.rectBounds=this.radioNode.bounds.union(t.bounds).withMaxX(Math.max(this.radioNode.left+s,t.right)),this.radioButton._isSettingAreas=!0,this.radioButton._isTouchAreaCustomized||(this.radioButton.touchArea=this.radioButton.localBounds.dilatedXY(this.options.touchAreaXDilation,this.options.touchAreaYDilation)),this.radioButton._isMouseAreaCustomized||(this.radioButton.mouseArea=this.radioButton.localBounds.dilatedXY(this.options.mouseAreaXDilation,this.options.mouseAreaYDilation)),this.radioButton._isSettingAreas=!1,t.dispose(),this.radioButton.localMinimumWidth=i}dispose(){this.radioButton.localPreferredWidthProperty.unlink(this._updateLayoutListener),super.dispose()}}function Oe(t,e){return t.map(t=>t.createNode(e&&t.tandemName?e.createTandem(t.tandemName):Y.Z.OPTIONAL))}oe.register("AquaRadioButton",Le);let Ze=0;class Ne extends R.N52{constructor(t,e,i){Ze++;const s=(0,N.ZP)()({touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,orientation:"vertical",spacing:3,stretch:!0,disabledOpacity:R.iaM.DISABLED_OPACITY,tandem:Y.Z.REQUIRED,tandemNameSuffix:"RadioButtonGroup",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,phetioFeatured:!0,tagName:"ul",labelTagName:"h3",ariaRole:"radiogroup",groupFocusHighlight:!0},i),n=Oe(e,s.tandem);"vertical"===s.orientation&&(s.align=s.align||"left");const r=e.map((e,i)=>{const r=n[i];return new Le(t,e.value,r,(0,N.JA)({a11yNameAttribute:"AquaRadioButtonGroup"+Ze,labelContent:e.labelContent||null,soundPlayer:De.getSelectionSoundPlayer(i),tandem:e.tandemName?s.tandem.createTandem(e.tandemName):s.tandem===Y.Z.OPT_OUT?Y.Z.OPT_OUT:Y.Z.REQUIRED,touchAreaXDilation:"horizontal"===s.orientation?s.spacing/2:s.touchAreaXDilation,touchAreaYDilation:"vertical"===s.orientation?s.spacing/2:s.touchAreaYDilation,mouseAreaXDilation:"horizontal"===s.orientation?s.spacing/2:s.mouseAreaXDilation,mouseAreaYDilation:"vertical"===s.orientation?s.spacing/2:s.mouseAreaYDilation},s.radioButtonOptions,e.options))});s.children=r,super(s),_defineProperty(this,"onInputEmitter",new x.Z),this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:this,otherElementName:R.Grz.LABEL_SIBLING});const a=new R.F3H({keys:["arrowLeft","arrowRight","arrowUp","arrowDown"],callback:t=>{t&&t.pointer.reserveForKeyboardDrag()}});this.addInputListener(a);const o=this.onRadioButtonInput.bind(this);for(let l=0;l{this.removeInputListener(a),a.dispose(),r.forEach(t=>t.dispose()),this.onInputEmitter.dispose(),n.forEach(t=>t.dispose())},this.radioButtons=r}onRadioButtonInput(){this.onInputEmitter.emit()}dispose(){this.disposeAquaRadioButtonGroup(),super.dispose()}getButton(t){const e=_.find(this.radioButtons,e=>e.value===t);return e}}oe.register("AquaRadioButtonGroup",Ne);var Be=i(7959),Re=i(9972);const Fe=new Ut.bn("M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z").makeImmutable(),He=new Ut.bn("M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z").makeImmutable(),ze="data:audio/mpeg;base64,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VxjMbjCAqV6+9lyLbLv3a0X6ESHnjmkrTgX6ewW628bWpy6aAAAEIBKAAYVGgQJzEA7MHBAeERhQBG6YsEF4lDMeEoCAUYKgI6ZVAYEguZjC2ZGtMcWpghOAQLKNr1LwVPu2Wuurc61Zm1tOXWe/o1tDZJ5cXoLq47k/vbkMSqQ57UHqbUISVThclJqqsAa1V3dqUsXjENcTVSBUCQHmLDZKQCFtO+lwC+DVGKFZhA8Ck5ACX2THBAR54Dl4c+jQuNtZdZ7rPuOGX//7cMTJAk6AYtSvdwcB3graIe684Jd3Kc5TLcMqa1j+V2z++ZfljKYdvVqa/VlNNTWpkJR7VjzOVVd5NBQlGc8z5NIkUcNIozLbzkcqq84/8kUcf1PnK74dLEkq30DAFGtNIonJMclvNIy5wMFJGkUZk4lppFE4ldVr+qreaiclZEjO/scSJEtxTEFNRTMuOTguM6qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCQACQKKEgQswmgpKTiyiyizTjSizDzDy2eLzc/ypo0osoCEihIoDEA5BDcqWco0FBgUUBgQsQLAzjSizDzDy2drzcqpo0ov/+3LE5QJOoF7PjnWHApQz1oW8mbkoso404so8w+GdnZ4tv//+7VNSUWUWUKEihIELECxAoSBFmHxcNebNGlFmnCRQkCFiBYkUJFAYgWIFgZRZRZh5h9VVVUUJppI1VUxBTUUzLjk4LjNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7cMS2A9IFejpDGM3IAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",Ue=Q(it,ze),Ye=K.Z.createLock(ze),We=new tt;let Ge=!1;const Ke=()=>{Ge||(Ye(),Ge=!0)},Qe=it.decodeAudioData(Ue.buffer,t=>{null===We.audioBufferProperty.value&&(We.audioBufferProperty.set(t),Ke())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),We.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Ke()});Qe&&Qe.then(t=>{null===We.audioBufferProperty.value&&(We.audioBufferProperty.set(t),Ke())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Ke()});const Xe=We;class je{constructor(t,e){const i=(0,N.ZP)()({soundClipOptions:{},soundManagerOptions:{}},e);this._soundClip=new Ie(t,i.soundClipOptions),Tt.addSoundGenerator(this._soundClip,i.soundManagerOptions)}play(){this._soundClip.play()}stop(){this._soundClip.stop()}getSoundClip(){return this._soundClip}}j.register("SoundClipPlayer",je);const Je=je,$e=new Je(Xe,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});j.register("checkboxCheckedSoundPlayer",$e);const ti=$e,ei="data:audio/mpeg;base64,//swxAAAB3BPLHWkgAEQCy03MPADAYAEAMYCIAZnV5vYJv2ZoxqgRhBhkBBkRJhwZa9g7/tbYe1+jC4beogQMZ4Z5zn7mgQQdxOH//////6SQAIzbNJJdtgAAAAAAHjcV2B1EBJLBB4wV9rCWp5eq0EHE43FpgLhkjdNEqGhFqhSQlQ4TwqZdZ7fN/Hm6YKiu/33NoUAACApAAAI//syxAOCSGxzQ123gDkDjCZJvLDmDQ0HhMRgBVEjBws2OIM9Cky1VU0REAhgK47nqWwHAkIYcB7ePHvXeo2cV1nG4uL6rjXjzXt951bbjQs/hQuyxEeFQaEGUgRohuYvQkhIfrBnlFyQoUla/qMye4qGxUqjhxTJIFPCOfamTewcOH2SkYCFVa21OLZrySygx+bV4B1xgBhA1DB0Bf/7MsQFAAfISyw1x4AxL4ssNzGAAigYRigH0YoI18mGQKOgZ+FY0UWnyRsLJgZYCShStOpdQYKdeV5/q9jbIDYPkLAYtiTETvrZLIYEb2u2uogAAAAAAhkChusjjbfkXleOGpiySKjhjUIlMla3JEsHQqgBs2ns50DIPtDIgjJE46JnUPRPPPOG5G8/yKxQADAZFTP1KgAAIX0AGkv/+zLEA4IIRJ9DPaUAMQuN5o2tmYqinck4ucZbhxEBHFls3WFfhr6dyvz3zgxEmEABChAREwQIwJRfc1jx6QHFWNNqQkrG5wvNNbdf1b//kxUACACHIGAlgmUgpccbebl+BkKCZXQyCAwpKkwRUzEk7AIAwgTBahUNNHisAuFoYmM12rXbbUJ2v5Cwa++fDf///+mgDERUoJgUemjg//swxAUDSExLJi3phxEQCmQBrbx0BkCOdSyG/xxiJyFwYUOAZiABRh0Zh64k8Pj7NAJTjWFStFgyvxBK5IhTLDstCt9Y/SAqpLqiYU1gRqYoIfCMbtwYtoG77YMaQdBGoPhoQOPIxjIsCrswBnOHTzqNAI9TIQEiAQc0oSX9JssKWBt5O9HJA8fEWBHxeXEQzXUAKsQAXwMjEM3O//syxAUCSDxVLM1lJzEbCWPFrmxBNqHM4RC+k5ZUzwUcEaSmKZZCdwJRBNZkJiwDdFN36YdSqdqUT6pYDZ5ScxSDVfZPSpL8M//b6NxDNtjDhTpxDmMDKQMMw1k08tNDTxrGMKLQxRDCMevDKlACBZi1WYsoiEOBwEwdI9e0vdBptNKZfgzJsVH29qtOpUET8k9v4mAAAExTEHgUKP/7MsQEggfQUyJNc0QA2AklmY2YpukjMG6N4KPFG4xmOjdBnIQqBgcbgGQGmcNGdaHtBQplqcsNdnbkroa0zXiUXxyr9wz/WF9usagQAkSHDHulGU3DjA44xIgQwADplHVAGUl7G/MbPAcXSMAgRGUSoN9OUp+zGuLf///V3//+ugKcCSTofFaj5oNcoyUgyJfAIDMwsQBGeEBQiGf/+zLEDgJHUD8UDOksQN6F39wxsAA60sBDGHr5bR5oZBEMkscKhnEIJPCh6j//////+n6AmBgKjhFZNEIgmCyGD2UQjAVEweC2peqxVyOIpL/WDXZ7cNcFTtQdJCEFQVGLPFgaUHJ6dhojDlVttOCJU4BB0qsXplV/tncqptv/p//+n//6abf////9QTTTTRVV9UEJK0kIixWmqoc///swxBiDxvgCi4CEYAgAADSAAAAE/1TTVEWK6UxBTUUzLjk5LjNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",ii=Q(it,ei),si=K.Z.createLock(ei),ni=new tt;let ri=!1;const ai=()=>{ri||(si(),ri=!0)},oi=it.decodeAudioData(ii.buffer,t=>{null===ni.audioBufferProperty.value&&(ni.audioBufferProperty.set(t),ai())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),ni.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),ai()});oi&&oi.then(t=>{null===ni.audioBufferProperty.value&&(ni.audioBufferProperty.set(t),ai())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),ai()});const li=new Je(ni,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});j.register("checkboxUncheckedSoundPlayer",li);const hi=li;var ci=i(428);const di={valueType:"boolean"},ui=(0,Re.m3)(.025,0,0,0,-.025,0,0,0,1),pi=Fe.transformed(ui),mi=He.transformed(ui);class gi extends((0,R.pL8)((0,R.CHP)(R.NBX))){constructor(t,e,i){const s=(0,N.ZP)()({spacing:5,boxWidth:21,checkboxColor:"black",checkboxColorBackground:"white",touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,checkedSoundPlayer:ti,uncheckedSoundPlayer:hi,phetioLinkProperty:!0,cursor:"pointer",disabledOpacity:R.iaM.DISABLED_OPACITY,tandem:Y.Z.REQUIRED,tandemNameSuffix:"Checkbox",phetioEventType:F.Z.USER,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,phetioReadOnly:G.Z.DEFAULT_OPTIONS.phetioReadOnly,phetioFeatured:!0,tagName:"input",inputType:"checkbox",appendDescription:!0,voicingCheckedObjectResponse:null,voicingUncheckedObjectResponse:null,checkedContextResponse:null,uncheckedContextResponse:null,voiceNameResponseOnSelection:!0},i);super(),_defineProperty(this,"_isMouseAreaCustomized",!1),_defineProperty(this,"_isTouchAreaCustomized",!1),_defineProperty(this,"_isSettingAreas",!1);const n=new Et.Z(()=>{t.value=!t.value,(0,Be.Z)(t.value,di),t.value?(s.checkedSoundPlayer.play(),s.checkedContextResponse&&this.alertDescriptionUtterance(s.checkedContextResponse),this.voicingSpeakResponse({nameResponse:s.voiceNameResponseOnSelection?this.voicingNameResponse:null,objectResponse:ci.Z.alertableToText(s.voicingCheckedObjectResponse),contextResponse:ci.Z.alertableToText(s.checkedContextResponse)})):(s.uncheckedSoundPlayer.play(),s.uncheckedContextResponse&&this.alertDescriptionUtterance(s.uncheckedContextResponse),this.voicingSpeakResponse({nameResponse:s.voiceNameResponseOnSelection?this.voicingNameResponse:null,objectResponse:ci.Z.alertableToText(s.voicingUncheckedObjectResponse),contextResponse:ci.Z.alertableToText(s.uncheckedContextResponse)}))},{parameters:[],tandem:s.tandem.createTandem("toggleAction"),phetioDocumentation:"Emits when user input causes the checkbox to toggle, emitting a single arg: the new boolean value of the checkbox state.",phetioReadOnly:!0,phetioEventType:F.Z.USER});this.backgroundNode=new R.AeJ(0,-s.boxWidth,.95*s.boxWidth,.95*s.boxWidth,.2*s.boxWidth,.2*s.boxWidth,{fill:s.checkboxColorBackground}),this.uncheckedNode=new R.y$t(pi,{fill:s.checkboxColor});const r=s.boxWidth/this.uncheckedNode.width;this.uncheckedNode.scale(r),this.checkedNode=new R.y$t(mi,{scale:r,fill:s.checkboxColor});const a=new R.NBX({children:[this.backgroundNode,this.checkedNode,this.uncheckedNode]}),o=new R.AeJ({});this.children=[a,e,o],this.constraint=new yi(this,a,this.checkedNode,e,o,s),this.constraint.updateLayout(),e.pickable=!1,e.pdomVisible=!1;const l=new R.eMb({fire:()=>n.execute(),tandem:s.tandem.createTandem("fireListener")});this.addInputListener(l);const h=t=>{this.checkedNode.visible=t,this.uncheckedNode.visible=!t,this.pdomChecked=t};t.link(h),this.mutate(s),this.setExcludeLabelSiblingFromInput(),s.phetioLinkProperty&&this.addLinkedElement(t,{tandemName:"property"}),this.disposeCheckbox=()=>{o.dispose(),this.backgroundNode.dispose(),this.uncheckedNode.dispose(),this.checkedNode.dispose(),a.dispose(),l.dispose(),t.hasListener(h)&&t.unlink(h),n.dispose()}}dispose(){this.constraint.dispose(),this.disposeCheckbox(),super.dispose()}setCheckboxColorBackground(t){this.backgroundNode.fill=t}set checkboxColorBackground(t){this.setCheckboxColorBackground(t)}get checkboxColorBackground(){return this.getCheckboxColorBackground()}getCheckboxColorBackground(){return this.backgroundNode.fill}setCheckboxColor(t){this.checkedNode.fill=this.uncheckedNode.fill=t}set checkboxColor(t){this.setCheckboxColor(t)}get checkboxColor(){return this.getCheckboxColor()}getCheckboxColor(){return this.checkedNode.fill}setMouseArea(t){return this._isSettingAreas||(this._isMouseAreaCustomized=!0),super.setMouseArea(t)}setTouchArea(t){return this._isSettingAreas||(this._isTouchAreaCustomized=!0),super.setTouchArea(t)}}class yi extends R.dmK{constructor(t,e,i,s,n,r){super(t),this.checkbox=t,this.checkboxNode=e,this.checkedNode=i,this.content=s,this.rectangle=n,this.options=r,this.checkbox.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.addNode(s)}layout(){super.layout();const t=this.createLayoutProxy(this.content),e=t.minimumWidth,i=this.checkedNode.right-this.checkboxNode.left,s=i+this.options.spacing+e,n=Math.max(s,this.checkbox.localPreferredWidth||0);(0,R.S3T)(this.content)&&null!==this.checkbox.localPreferredWidth&&(t.preferredWidth=n-i-this.options.spacing),t.left=this.checkedNode.right+this.options.spacing,t.centerY=this.checkedNode.centerY,this.rectangle.rectBounds=this.checkboxNode.bounds.union(t.bounds).withMaxX(Math.max(this.checkboxNode.left+n,t.right)),this.checkbox._isSettingAreas=!0,this.checkbox._isTouchAreaCustomized||(this.checkbox.touchArea=this.checkbox.localBounds.dilatedXY(this.options.touchAreaXDilation,this.options.touchAreaYDilation)),this.checkbox._isMouseAreaCustomized||(this.checkbox.mouseArea=this.checkbox.localBounds.dilatedXY(this.options.mouseAreaXDilation,this.options.mouseAreaYDilation)),this.checkbox._isSettingAreas=!1,t.dispose(),this.checkbox.localMinimumWidth=s}dispose(){this.checkbox.localPreferredWidthProperty.unlink(this._updateLayoutListener),super.dispose()}}oe.register("Checkbox",gi);var fi=i(1243),Ai=i(3409);class vi extends I.Z{constructor(t,e){const i=(0,N.ZP)()({enumeration:t.enumeration},e);super(t,(0,N.ZP)()({validValues:i.enumeration.values,phetioValueType:(0,Ai.Z)({enumeration:i.enumeration})},i))}}Bt.Z.register("EnumerationProperty",vi);var bi=i(831);const Vi="data:audio/mpeg;base64,//swxAAABlAhPLTAgDE1De+/HoACAH4CwkCAJDo5gDgPRksn2WLHOB8EHShd5cHwfBBwgBBOJw/UCAY/lAxWD/4DB9+CH/6XQjMTIIcYUIQPQIRAIBAACUIawkYq7IQ/BawVqEc7mTjD+OFygBAnHbHq7UkLJ8aCnnrZlPpg3IkRJBgPH/MCQCI985/yAnHAAhmv3lHuAgAgAxJF//syxAOACHQpa7zBAAD8EunxpI3HUCEZHQlA2EYuDsSjE5EkSQGhUDYDxOARLoiBmIgalVgq4qWeWBqsNYKywNO+p/sxFyKwVOlXRFDtZ0S86oQ0C2W+wBOmlaWuS6+BIqZMz+AYy3FuwBkKXM2idVoKlYwUd/oIGgsbLpEbaCsmIyZRtbw6TPwj+mYmGr8QqnGHBLo3LKAAxKabZ//7MsQGAAhsl1OsPMcxAo3mpbCaAvIuuQRmW4WNHhDBJnoBORIlh+I9dvGCTCKP0kzo7rHHTi87diQ2XqnRN77y8lnKUl8zf+X0Fu0iCDV/9AP7el8Cw8raZKqiYShe+6bzYk0zXmEuGnBDcQhyRzPeI4Jbsmj5OxzZVhSX9adVU4Kk9r9esE3etv+/6wUIg3Wm62nA3Ab0EIcLUQ7/+zLECABGICs9oemDMLwEZrQcvFYyDBCUCgUAwQCUSvgROof5poGn9O7o70P/X9P/T+360+lAhIJVtyuNDljXzM7Ek0fGUB/ltZQF8iD7dBcVTs00f31POqR0/V/q/pjEe1z3jyAAQRBHGmSBEEVK6QIYH2miQZKNfgCVtiH9vVLp+w7an/d0jdUx9VnqZIJSvFtsaUFKKFBVCzoe//swxBwABSAhLaDl4nCsA+a0fDyG3vbgKx5OhNXyuPYt7kJJSg9B6heqxP93q/9P6IwSQ8LbYIFBVUF85RwseJPX6+Q7qIq7f/8ayokh7P//V8oyAABbhbGEIBBhOJgEGTBx6KjUiosS54l6y0i3jOz/6f///RVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//syxDWABEQTMaCF4HCNAmL0EJgGVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==",Pi=Q(it,Vi),wi=K.Z.createLock(Vi),Mi=new tt;let Si=!1;const Ti=()=>{Si||(wi(),Si=!0)},Ei=it.decodeAudioData(Pi.buffer,t=>{null===Mi.audioBufferProperty.value&&(Mi.audioBufferProperty.set(t),Ti())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Mi.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Ti()});Ei&&Ei.then(t=>{null===Mi.audioBufferProperty.value&&(Mi.audioBufferProperty.set(t),Ti())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Ti()});const xi=new Je(Mi,{soundClipOptions:{initialOutputLevel:.5},soundManagerOptions:{categoryName:"user-interface"}});j.register("pushButtonSoundPlayer",xi);const Ci=xi;class Ii extends At.Z{}_defineProperty(Ii,"IDLE",new(e=Ii)),_defineProperty(Ii,"OVER",new e),_defineProperty(Ii,"PRESSED",new e),_defineProperty(Ii,"enumeration",new ft.Z(e)),oe.register("ButtonInteractionState",Ii);class qi extends E.Nt{constructor(t){super([t.focusedProperty,t.overProperty,t.looksOverProperty,t.looksPressedProperty],(t,e,i,s)=>i&&!s?Ii.OVER:(e||t)&&s?Ii.PRESSED:Ii.IDLE,{valueType:Ii})}}oe.register("PushButtonInteractionStateProperty",qi);var ki=i(2558),Di=i(4317);class Li extends Di.Z{constructor(t){const e=(0,N.ZP)()({startCallback:_.noop,endCallback:_.noop,tandem:Y.Z.REQUIRED,phetioState:G.Z.DEFAULT_OPTIONS.phetioState,phetioReadOnly:G.Z.DEFAULT_OPTIONS.phetioReadOnly,phetioFeatured:G.Z.DEFAULT_OPTIONS.phetioFeatured},t);e.enabledPropertyOptions=(0,N.JA)({phetioState:e.phetioState,phetioReadOnly:e.phetioReadOnly,phetioDocumentation:"When disabled, the button is grayed out and cannot be pressed",phetioFeatured:!0},e.enabledPropertyOptions),super(e),this.overProperty=new S.Z(!1),this.downProperty=new S.Z(!1,{reentrant:!0}),this.focusedProperty=new S.Z(!1),this.looksPressedProperty=new S.Z(!1),this.looksOverProperty=new S.Z(!1),this.produceSoundEmitter=new x.Z,this.interrupted=!1,this.listeners=[],this.looksPressedMultilink=null,this.looksOverMultilink=null,this.downProperty.lazyLink(t=>{t?e.startCallback():e.endCallback(this.looksOverProperty.get())}),this.enabledProperty.link(t=>{if(!t)for(let e=0;e{this.overProperty.dispose(),this.downProperty.dispose(),this.produceSoundEmitter.dispose(),this.looksPressedMultilink&&this.looksPressedMultilink.dispose(),this.looksOverMultilink&&this.looksOverMultilink.dispose(),this.listeners=[]}}dispose(){this.disposeButtonModel(),super.dispose()}createPressListener(t){var e=this;t=(0,N.JA)({canStartPress:()=>this.enabledProperty.value},t);const i=new R.$o8(t);this.listeners.push(i),i.isPressedProperty.lazyLink(t=>{this.interrupted=i.interrupted,this.downProperty.set(t)}),i.isOverProperty.lazyLink(this.overProperty.set.bind(this.overProperty)),i.isFocusedProperty.lazyLink(this.focusedProperty.set.bind(this.focusedProperty)),this.looksPressedMultilink&&this.looksPressedMultilink.dispose(),this.looksOverMultilink&&this.looksOverMultilink.dispose();const s=this.listeners.map(t=>t.looksPressedProperty);s.push(this.downProperty),this.looksPressedMultilink=Vt.Z.multilinkAny(s,(function(){for(var t=arguments.length,i=new Array(t),s=0;st||e,!1)}));const n=this.listeners.map(t=>t.looksOverProperty);return this.looksOverMultilink=Vt.Z.multilinkAny(n,(function(){for(var t=arguments.length,i=new Array(t),s=0;st||e,!1)})),i}}oe.register("ButtonModel",Li);class _i extends Li{constructor(t){const e=(0,N.ZP)()({fireOnDown:!1,listener:null,interruptListener:null,fireOnHold:!1,fireOnHoldDelay:400,fireOnHoldInterval:100,tandem:Y.Z.REQUIRED,phetioReadOnly:G.Z.DEFAULT_OPTIONS.phetioReadOnly},t);super(e),_defineProperty(this,"startEvent",null),this.isFiringProperty=new S.Z(!1),this.firedEmitter=new x.Z({tandem:e.tandem.createTandem("firedEmitter"),phetioDocumentation:"Emits when the button is fired",phetioReadOnly:e.phetioReadOnly,phetioEventType:F.Z.USER,hasListenerOrderDependencies:!0}),e.interruptListener&&this.firedEmitter.addListener(()=>{e.interruptListener(this.startEvent)}),null!==e.listener&&this.firedEmitter.addListener(e.listener),e.fireOnHold&&(this.timer=new ki.Z({callback:this.fire.bind(this),delay:e.fireOnHoldDelay,interval:e.fireOnHoldInterval}));const i=t=>{if(t){var i,s,n,r;if(this.enabledProperty.get())this.startEvent=(null===(i=phet)||void 0===i||null===(s=i.joist)||void 0===s||null===(n=s.display)||void 0===n||null===(r=n._input)||void 0===r?void 0:r.currentSceneryEvent)||null,e.fireOnDown&&this.fire(),this.timer&&this.timer.start(),(e.fireOnDown||this.timer)&&this.produceSoundEmitter.emit()}else{const t=!e.fireOnDown&&(this.overProperty.get()||this.focusedProperty.get())&&this.enabledProperty.get()&&!this.interrupted;this.timer?this.timer.stop(t):t&&(this.produceSoundEmitter.emit(),this.fire())}};this.downProperty.link(i);const s=t=>{!t&&this.timer&&this.timer.stop(!1)};this.enabledProperty.link(s),this.disposePushButtonModel=()=>{this.isFiringProperty.value=!1,this.isFiringProperty.dispose(),this.firedEmitter.dispose(),this.downProperty.unlink(i),this.enabledProperty.unlink(s),this.timer&&(this.timer.dispose(),this.timer=null)}}dispose(){this.disposePushButtonModel(),super.dispose()}addListener(t){this.firedEmitter.addListener(t)}removeListener(t){this.firedEmitter.removeListener(t)}fire(){this.isFiringProperty.value=!0,this.firedEmitter.emit(),this.isFiringProperty.value=!1}}oe.register("PushButtonModel",_i);const Oi={LIGHT_BLUE:new R.Ilk(153,206,255),LIGHT_GRAY:new R.Ilk(220,220,220)},Zi=new R.mnm(.7),Ni=new R.UlH(1.2);class Bi extends((0,R.tTM)((0,R.CHP)(R.NBX))){constructor(t,e,i,s){var n;const r=(0,N.ZP)()({content:null,minUnstrokedWidth:null,minUnstrokedHeight:null,xMargin:10,yMargin:5,xAlign:"center",yAlign:"center",xContentOffset:0,yContentOffset:0,baseColor:Oi.LIGHT_BLUE,cursor:"pointer",buttonAppearanceStrategy:Bi.FlatAppearanceStrategy,buttonAppearanceStrategyOptions:{},contentAppearanceStrategy:null,contentAppearanceStrategyOptions:{},enabledAppearanceStrategy:(t,e,i,s)=>{i.filters=t?[]:[Zi,Ni],s&&(s.filters=t?[]:[R.P5k.FULL],s.opacity=t?1:R.iaM.DISABLED_OPACITY)},disabledColor:Oi.LIGHT_GRAY,aspectRatio:null,tagName:"button",tandemNameSuffix:"Button",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},s);r.listenerOptions=(0,N.JA)({tandem:null===(n=r.tandem)||void 0===n?void 0:n.createTandem("pressListener")},r.listenerOptions),r.enabledProperty=t.enabledProperty,super(),_defineProperty(this,"buttonNodeConstraint",null),this.content=r.content,this.buttonModel=t,this._settableBaseColorProperty=new R.M4p(r.baseColor),this._disabledColorProperty=new R.M4p(r.disabledColor),this.baseColorProperty=new E.ZP([this._settableBaseColorProperty,this.enabledProperty,this._disabledColorProperty],(t,e,i)=>e?t:i),this._pressListener=t.createPressListener(r.listenerOptions),this.addInputListener(this._pressListener),e.fill=this.baseColorProperty,this.addChild(e);const a=new r.buttonAppearanceStrategy(e,i,this.baseColorProperty,r.buttonAppearanceStrategyOptions);let o;r.contentAppearanceStrategy&&r.content&&(o=new r.contentAppearanceStrategy(r.content,i,r.contentAppearanceStrategyOptions)),this.maxLineWidth=a.maxLineWidth;let l=null,h=null;if(r.content){const t=r.content;t.pickable=!1,this.buttonNodeConstraint=new Ri(this,{content:r.content,xMargin:r.xMargin,yMargin:r.yMargin,maxLineWidth:this.maxLineWidth,minUnstrokedWidth:r.minUnstrokedWidth,minUnstrokedHeight:r.minUnstrokedHeight,aspectRatio:r.aspectRatio}),this.layoutSizeProperty=this.buttonNodeConstraint.layoutSizeProperty,l=new R.DbO(t,{xAlign:r.xAlign,yAlign:r.yAlign,leftMargin:r.xMargin+r.xContentOffset,rightMargin:r.xMargin-r.xContentOffset,topMargin:r.yMargin+r.yContentOffset,bottomMargin:r.yMargin-r.yContentOffset}),h=Vt.Z.multilink([e.boundsProperty,this.layoutSizeProperty],(t,e)=>{l.alignBounds=D.Z.point(t.center).dilatedXY(e.width/2,e.height/2)}),this.addChild(l)}else this.layoutSizeProperty=new X.Z(new L.Z(r.minUnstrokedWidth+this.maxLineWidth,r.minUnstrokedHeight+this.maxLineWidth));this.mutate(r),this.enabledProperty.link(t=>r.enabledAppearanceStrategy(t,this,e,l)),this.disposeButtonNode=()=>{l&&l.dispose(),h&&h.dispose(),a.dispose&&a.dispose(),o&&o.dispose&&o.dispose(),this._pressListener.dispose(),this.baseColorProperty.dispose()}}dispose(){this.buttonNodeConstraint&&this.buttonNodeConstraint.dispose(),this.disposeButtonNode(),super.dispose()}setBaseColor(t){this._settableBaseColorProperty.paint=t}set baseColor(t){this.setBaseColor(t)}get baseColor(){return this.getBaseColor()}getBaseColor(){return this._settableBaseColorProperty.paint}pdomClick(){this._pressListener.click(null)}isPDOMClicking(){return this._pressListener.pdomClickingProperty.get()}}class Ri extends R.dmK{constructor(t,e){super(t),_defineProperty(this,"layoutSizeProperty",new X.Z(new L.Z(0,0))),_defineProperty(this,"isFirstLayout",!0),_defineProperty(this,"lastLocalPreferredWidth",0),_defineProperty(this,"lastLocalPreferredHeight",0),this.buttonNode=t,this.content=e.content,this.xMargin=e.xMargin,this.yMargin=e.yMargin,this.maxLineWidth=e.maxLineWidth,this.minUnstrokedWidth=e.minUnstrokedWidth,this.minUnstrokedHeight=e.minUnstrokedHeight,this.aspectRatio=e.aspectRatio,this.buttonNode.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.buttonNode.localPreferredHeightProperty.lazyLink(this._updateLayoutListener),this.addNode(this.content,!1),this.layout()}layout(){super.layout();const t=this.buttonNode,e=this.content;let i=Math.max(this.isFirstLayout||t.widthSizable?((0,R.S3T)(e)?e.minimumWidth||0:e.width)+2*this.xMargin:t.localMinimumWidth,null===this.minUnstrokedWidth?0:this.minUnstrokedWidth+this.maxLineWidth),s=Math.max(this.isFirstLayout||t.heightSizable?((0,R.fJO)(e)?e.minimumHeight||0:e.height)+2*this.yMargin:t.localMinimumHeight,null===this.minUnstrokedHeight?0:this.minUnstrokedHeight+this.maxLineWidth);null!==this.aspectRatio&&(i{e.hasListener(d)&&e.unlink(d),n.dispose(),r.dispose()}}dispose(){this.disposeFlatAppearanceStrategy()}},oe.register("ButtonNode",Bi);class Fi extends Bi{constructor(t,e,i){const s=(0,N.ZP)()({size:null,minWidth:10,minHeight:10,xMargin:8,yMargin:5,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,touchAreaXShift:0,touchAreaYShift:0,mouseAreaXShift:0,mouseAreaYShift:0,stroke:null,lineWidth:.5,cornerRadius:4,leftTopCornerRadius:null,rightTopCornerRadius:null,leftBottomCornerRadius:null,rightBottomCornerRadius:null,buttonAppearanceStrategy:Fi.ThreeDAppearanceStrategy},i);let n,r;s.content,s.size?(s.minUnstrokedWidth=s.size.width,s.minUnstrokedHeight=s.size.height):(void 0!==s.minWidth&&(s.minUnstrokedWidth=s.minWidth),void 0!==s.minHeight&&(s.minUnstrokedHeight=s.minHeight)),s.buttonAppearanceStrategyOptions||(s.buttonAppearanceStrategyOptions={stroke:s.stroke,lineWidth:s.lineWidth}),s.size?(n=s.size.width,r=s.size.height):(n=Math.max(s.content?s.content.width+2*s.xMargin:0,s.minWidth),r=Math.max(s.content?s.content.height+2*s.yMargin:0,s.minHeight));const a=new R.y$t(Hi(n,r,s));if(s.size&&s.content){const t=s.content,e=Math.min((s.size.width-2*s.xMargin)/t.width,(s.size.height-2*s.yMargin)/t.height);s.content=new R.NBX({children:[t],scale:e})}super(t,a,e,s);let o=!0;Vt.Z.multilink([this.isWidthResizableProperty,this.isHeightResizableProperty,this.layoutSizeProperty],(t,e,i)=>{(t||e)&&(a.shape=Hi(t?i.width-this.maxLineWidth:n,e?i.height-this.maxLineWidth:r,s)),(o||t||e)&&(this.touchArea=a.localBounds.dilatedXY(s.touchAreaXDilation,s.touchAreaYDilation).shiftedXY(s.touchAreaXShift,s.touchAreaYShift),this.mouseArea=a.localBounds.dilatedXY(s.mouseAreaXDilation,s.mouseAreaYDilation).shiftedXY(s.mouseAreaXShift,s.mouseAreaYShift)),o=!1})}}function Hi(t,e,i){const s=Math.min(t/2,e/2);return Ut.bn.roundedRectangleWithRadii(0,0,t,e,{topLeft:Math.min(s,null!==i.leftTopCornerRadius?i.leftTopCornerRadius:i.cornerRadius),topRight:Math.min(s,null!==i.rightTopCornerRadius?i.rightTopCornerRadius:i.cornerRadius),bottomLeft:Math.min(s,null!==i.leftBottomCornerRadius?i.leftBottomCornerRadius:i.cornerRadius),bottomRight:Math.min(s,null!==i.rightBottomCornerRadius?i.rightBottomCornerRadius:i.cornerRadius)})}Fi.ThreeDAppearanceStrategy=class{constructor(t,e,i,s){const n=s&&s.stroke?s.stroke:new R.M4p(i,{luminanceFactor:-.4}),r=s&&void 0!==s.lineWidth?s.lineWidth:.5,a=(0,N.ZP)()({stroke:n,lineWidth:r,overStroke:n,overLineWidth:r,overFill:i,overButtonOpacity:1,selectedStroke:n,selectedLineWidth:r,selectedButtonOpacity:1,deselectedStroke:n,deselectedLineWidth:r,deselectedButtonOpacity:1},s),o=new R.M4p(i,{luminanceFactor:.7}),l=new R.M4p(i,{luminanceFactor:.5}),h=new R.M4p(i,{luminanceFactor:.2}),c=new R.M4p(i,{luminanceFactor:-.3}),d=new R.M4p(i,{luminanceFactor:-.4}),u=new R.M4p(i,{luminanceFactor:-.5}),p=new E.ZP([i],t=>t.withAlpha(0)),m=new R.Ilk(255,255,255,.7),g=new R.y$t(null,{stroke:a.stroke,lineWidth:a.lineWidth,pickable:!1});let y;t.addChild(g),this.maxLineWidth="number"==typeof a.lineWidth?a.lineWidth:0;const f=()=>{const s=t.shape.bounds.width,n=t.shape.bounds.height;g.shape=t.shape;const r=Math.min(7/n,1),d=Math.max(1-3/n,0),f=Math.min(7/s,1),A=Math.max(1-3/s,0),v=new R.oas(0,0,0,n).addColorStop(0,o).addColorStop(r,i).addColorStop(d,i).addColorStop(1,u),b=new R.oas(0,0,s,0).addColorStop(0,m).addColorStop(f,p).addColorStop(A,p).addColorStop(1,u),V=new R.oas(0,0,0,n).addColorStop(0,o).addColorStop(r,l).addColorStop(d,l).addColorStop(1,u),P=new R.oas(0,0,s,0).addColorStop(0,m).addColorStop(f/2,new R.Ilk(255,255,255,0)).addColorStop(A,p).addColorStop(1,c),w=new R.oas(0,0,0,n).addColorStop(0,o).addColorStop(.67*r,c).addColorStop(d,h).addColorStop(1,u);t.cachedPaints=[v,V,w],g.cachedPaints=[b,P],y&&e.unlink(y),y=e=>{switch(e){case Ii.IDLE:t.fill=v,t.stroke=a.deselectedStroke,t.lineWidth=a.deselectedLineWidth,t.opacity=a.deselectedButtonOpacity,g.fill=b,g.opacity=a.deselectedButtonOpacity;break;case Ii.OVER:t.fill=V,t.stroke=a.overStroke,t.lineWidth=a.overLineWidth,t.opacity=a.overButtonOpacity,g.fill=P,g.opacity=a.overButtonOpacity;break;case Ii.PRESSED:t.fill=w,t.stroke=a.selectedStroke,t.lineWidth=a.selectedLineWidth,t.opacity=a.selectedButtonOpacity,g.fill=P,g.opacity=a.selectedButtonOpacity;break;default:throw new Error("unsupported interactionState: "+e)}},e.link(y)};t.selfBoundsProperty.link(f),this.disposeThreeDAppearanceStrategy=()=>{t.selfBoundsProperty.unlink(f),e.hasListener(y)&&e.unlink(y),o.dispose(),l.dispose(),h.dispose(),c.dispose(),d.dispose(),u.dispose(),p.dispose()}}dispose(){this.disposeThreeDAppearanceStrategy()}},oe.register("RectangularButton",Fi);class zi extends Fi{constructor(t){const e=(0,N.ZP)()({soundPlayer:Ci,tandem:Y.Z.REQUIRED},t),i=e.listener,s=_.omit(e,["listener"]),n=new _i(s);super(n,new qi(n),s),this.pushButtonModel=n,i&&this.addListener(i);const r=()=>{e.soundPlayer.play()};n.produceSoundEmitter.addListener(r),this.disposeRectangularPushButton=function(){n.produceSoundEmitter.removeListener(r),n.dispose()}}dispose(){super.dispose(),this.disposeRectangularPushButton()}addListener(t){this.pushButtonModel.addListener(t)}removeListener(t){this.pushButtonModel.removeListener(t)}}oe.register("RectangularPushButton",zi);class Ui extends R.NBX{constructor(t,e,i){var s;const n=(0,N.ZP)()({alignChildren:Ui.CENTER,unselectedChildrenSceneGraphStrategy:"included"},i),r=Oe(e,null===(s=n.tandem)||void 0===s?void 0:s.createTandem("elements"));n.children=r,n.alignChildren(n.children),super(n);const a=t=>{const i=[];for(let s=0;st.dispose())}}dispose(){this.disposeToggleNode(),super.dispose()}static CENTER(t){for(let e=1;ee},{value:!1,createNode:()=>i}],s)}}oe.register("BooleanToggleNode",Yi);const Wi="data:audio/mpeg;base64,//swxAAABdzxBVQRADFFHaWrNxAA6lqlJJEQAExvBGPAACkboRpPkaQjfnfz5z/zvk6HfzvO//6nzn/8n8Wo50RIcE5h04AwQBAIwAHAAGGKl44UnQFxrI7b6JARZgWfzRC7X2cjUCZG/TgeAfXziIB7AOgm3/Dlw5chhj/4aoJEnxOhr/+bkURTNP+37dN///zd5/WqMcFKOhHs//syxAMACFBlQBnXgAEQCuRbvLAAMh2cNcpzMDxDOxVSMlAjYsYOAlbMUQJ8hAkSABkLAPbGhQfrk7xotjWuYO3uc9FKLMWDXX39eK91WL8a4ARAYAYFAQZg2BpmMcTuZ9zx5rwEJFAZZgjA1mC8BuLASofGAOAMhs/U/GV40k0Dkso2K6Npbban/lI2Pnd6J3///t66ABTcYocjaf/7MsQDgAX8JTutseaw6RRnNZCJDkFdpsKMGTznDUOCFN3UBmSx0M4MasPlPO6Ar07embS//T/2f27SK//YUG03dpZI2oMaBN8MJA5tI6MkldtNZgLZ+dUe9LvQy6Odv9a9cr9VPRUaBtgq9EWmz6Xj3KZTzOv1ylUAC+0kk0oAEUn+I0HZ6jICCWahweFTlrz07qq2Ls9T3N/Xljr/+zLEEgAFSBMjQWBgUI8CIvA3vAbc1Vf//uoAABTglUoQoEElDJAFw2zpqMe6sqMzu59/9uvz32/t/onv/5FMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//swxC8DwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Gi=Q(it,Wi),Ki=K.Z.createLock(Wi),Qi=new tt;let Xi=!1;const ji=()=>{Xi||(Ki(),Xi=!0)},Ji=it.decodeAudioData(Gi.buffer,t=>{null===Qi.audioBufferProperty.value&&(Qi.audioBufferProperty.set(t),ji())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Qi.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),ji()});Ji&&Ji.then(t=>{null===Qi.audioBufferProperty.value&&(Qi.audioBufferProperty.set(t),ji())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),ji()});const $i=new Je(Qi,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});j.register("toggleOffSoundPlayer",$i);const ts=$i,es="data:audio/mpeg;base64,//swxAAAByAnDnWRADEZkyy3M0ALJQcEAMk013znpOVkWGNCg9vD4oJlTQcNxQBIJ0PxSUlJSCwfB8Hz+CAIAN/DH/gg78EHS7//9QIJSLq/wFHg+AwFAAAAAAfFvo6+SmoCLgXFVlJaBRlrks8EfgdfwNGNDIX1icAtgSPunkTDV42yCf+OWMmXBP4hJ/+RAZg8nmowgLA3CbIw//syxAOACDxjRhnXgAEOCqVnuqAERLIypm8wTCMyMagDMoYEAyRAAgCAQ9za/ELra7bNcNI9BMVmPx3pF7P7a/wstMTOL6//gwrwjSeVKioAAkqgEBggJpjMDZgiPBm+0xy7jJ482ppET4kOhhSHhg8CKMhgGASP09uliMpAaC+Gyqiiyjd9/QiJjzxL//////p9lUBqv86UKJp6wP/7MsQEgAWgKTMsbMLwvwUmdaCI3g146KXMwJVAHDYhAjvxQKf+SIBJPJWbIrZ/1aVs/k7Lf2//7QQilFbJGkVBjWeEsADYyEamuw0dNdmGxS1qmJCrAKrGJZ+TX/V+1zX0fitWyROXKQQiijI22kTAod9keTOhUgChZfu1VSXOv2ubHdG+h4jXu2fLMV00rQvomqNH8kAAAARGFj3/+zLEGgDFrBkvoeWAcKKCYxBngBYhtAWgNUjlVDuFH+de4qlT5ENEZ7/8t7K3cKjB1Q/kmOcRTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//swxDMDwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",is=Q(it,es),ss=K.Z.createLock(es),ns=new tt;let rs=!1;const as=()=>{rs||(ss(),rs=!0)},os=it.decodeAudioData(is.buffer,t=>{null===ns.audioBufferProperty.value&&(ns.audioBufferProperty.set(t),as())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),ns.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),as()});os&&os.then(t=>{null===ns.audioBufferProperty.value&&(ns.audioBufferProperty.set(t),as())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),as()});const ls=new Je(ns,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});j.register("toggleOnSoundPlayer",ls);const hs=ls;class cs extends E.WZ{constructor(t){super([t.looksOverProperty,t.looksPressedProperty],(t,e)=>t&&!e?Ii.OVER:e?Ii.PRESSED:Ii.IDLE,{valueType:Ii})}}oe.register("ToggleButtonInteractionStateProperty",cs);class ds extends Li{constructor(t,e,i,s){const n=(0,N.ZP)()({tandem:Y.Z.REQUIRED},s);super(n),this.valueOff=t,this.valueOn=e,this.valueProperty=i;const r=t=>{(this.overProperty.get()||this.focusedProperty.get())&&this.enabledProperty.get()&&!this.interrupted&&(t||this.toggle())};this.downProperty.link(r),this.toggledEmitter=new x.Z({tandem:n.tandem.createTandem("toggledEmitter"),phetioDocumentation:"Emits when the button is toggled",phetioEventType:F.Z.USER});this.toggledEmitter.addListener(()=>{this.valueProperty.value=this.valueProperty.value===this.valueOff?this.valueOn:this.valueOff}),this.disposeToggleButtonModel=()=>{this.downProperty.unlink(r),this.toggledEmitter.dispose()}}dispose(){this.disposeToggleButtonModel(),super.dispose()}toggle(){this.toggledEmitter.emit(),this.produceSoundEmitter.emit()}}oe.register("ToggleButtonModel",ds);class us extends Fi{constructor(t,e,i,s){const n=(0,N.ZP)()({valueOffSoundPlayer:ts,valueOnSoundPlayer:hs,tandem:Y.Z.REQUIRED,phetioFeatured:!0},s),r=new ds(e,i,t,n),a=new cs(r);super(r,a,n),this.addLinkedElement(t,{tandemName:"property"});const o=()=>{t.value===e?n.valueOffSoundPlayer.play():t.value===i&&n.valueOnSoundPlayer.play()};this.buttonModel.produceSoundEmitter.addListener(o),this.disposeRectangularToggleButton=()=>{this.buttonModel.produceSoundEmitter.removeListener(o),r.dispose()}}dispose(){this.disposeRectangularToggleButton(),super.dispose()}}oe.register("RectangularToggleButton",us);class ps extends us{constructor(t,e,i,s){const n=new Yi(t,e,i);super(t,!1,!0,(0,N.ZP)()({content:n,tandem:Y.Z.REQUIRED},s)),this.disposeBooleanRectangularToggleButton=()=>{n.dispose()}}dispose(){this.disposeBooleanRectangularToggleButton(),super.dispose()}}oe.register("BooleanRectangularToggleButton",ps);class ms extends ps{constructor(t,e){const i=(0,N.ZP)()({sideLength:25,stroke:"black",touchAreaXDilation:5,touchAreaYDilation:5,tandem:Y.Z.REQUIRED,tandemNameSuffix:"Button"},e);i.cornerRadius=.1*i.sideLength,i.xMargin=.2*i.sideLength,i.yMargin=i.xMargin,i.buttonAppearanceStrategy=Bi.FlatAppearanceStrategy;const s=.6*i.sideLength,n={lineWidth:.15*i.sideLength,stroke:"white",centerX:i.sideLength/2,centerY:i.sideLength/2,pickable:!1},r=(new Ut.bn).moveTo(s/2,0).lineTo(s/2,s).moveTo(0,s/2).lineTo(s,s/2),a=new R.y$t(r,n),o=(new Ut.bn).moveTo(-s/2,0).lineTo(s/2,0),l=new R.y$t(o,n);super(t,l,a,i);const h=t=>{this.baseColor=t?"rgb( 255, 85, 0 )":"rgb( 0, 179, 0 )",this.setPDOMAttribute("aria-expanded",t)};t.link(h),this.disposeExpandCollapseButton=()=>{t.unlink(h)}}dispose(){this.disposeExpandCollapseButton(),super.dispose()}}oe.register("ExpandCollapseButton",ms);var gs=i(7857);const ys=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return O.Z.toFixed(t,e)};class fs extends At.Z{}_defineProperty(fs,"MOUSE",new(s=fs)),_defineProperty(fs,"TOUCH",new s),_defineProperty(fs,"NONE",new s),_defineProperty(fs,"enumeration",new ft.Z(s));class As{constructor(t,e){this.sim=t,this.simDisplay=e,this.activeProperty=new X.Z(!1),this.visualTreeVisibleProperty=new S.Z(!1,{tandem:Y.Z.OPT_OUT}),this.pdomTreeVisibleProperty=new S.Z(!1,{tandem:Y.Z.OPT_OUT}),this.underPointerVisibleProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.optionsVisibleProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.previewVisibleProperty=new S.Z(!1,{tandem:Y.Z.OPT_OUT}),this.selectedNodeContentVisibleProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.selectedTrailContentVisibleProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.highlightVisibleProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.boundsVisibleProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.selfBoundsVisibleProperty=new S.Z(!1,{tandem:Y.Z.OPT_OUT}),this.getHelperNodeVisibleProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.helperVisibleProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.inputBasedPickingProperty=new S.Z(!0,{tandem:Y.Z.OPT_OUT}),this.useLeafNodeProperty=new S.Z(!1,{tandem:Y.Z.OPT_OUT}),this.pointerAreaTypeProperty=new vi(fs.MOUSE,{tandem:Y.Z.OPT_OUT}),this.pointerPositionProperty=new X.Z(Ht.Z.ZERO),this.overInterfaceProperty=new S.Z(!1,{tandem:Y.Z.OPT_OUT}),this.selectedTrailProperty=new X.Z(null),this.treeHoverTrailProperty=new X.Z(null),this.pointerTrailProperty=new E.ZP([this.pointerPositionProperty,this.overInterfaceProperty,this.pointerAreaTypeProperty,this.inputBasedPickingProperty],(t,i,s,n)=>{if(i)return null;if(!n)return ks(e.rootNode,t);let r=e.rootNode.hitTest(t,s===fs.MOUSE,s===fs.TOUCH);if(r&&!this.useLeafNodeProperty.value){for(;r.length>0&&0===r.lastNode().inputListeners.length;)r.removeDescendant();if(0===r.length)r=null;else{const t=r.lastNode().inputListeners[0];t instanceof R.$o8&&t.targetNode&&t.targetNode!==r.lastNode()&&r.containsNode(t.targetNode)&&(r=r.subtrailTo(t.targetNode))}}return r},{tandem:Y.Z.OPT_OUT,valueComparisonStrategy:"equalsFunction",strictAxonDependencies:!1}),this.previewTrailProperty=new E.ZP([this.selectedTrailProperty,this.treeHoverTrailProperty,this.pointerTrailProperty],(t,e,i)=>t||(e||i),{strictAxonDependencies:!1}),this.previewShapeProperty=new E.ZP([this.previewTrailProperty,this.inputBasedPickingProperty,this.pointerAreaTypeProperty],(t,e,i)=>t?e?_s(t,i===fs.MOUSE,i===fs.TOUCH):_s(t,!1,!1):null,{strictAxonDependencies:!1}),this.helperNodeProperty=new E.ZP([this.selectedTrailProperty],t=>{if(t){const e=t.lastNode();return(t=>!!t.getHelperNode)(e)?e.getHelperNode():null}return null},{strictAxonDependencies:!1}),this.screenViewProperty=new X.Z(null),this.imageDataProperty=new X.Z(null),this.colorProperty=new E.ZP([this.pointerPositionProperty,this.imageDataProperty],(t,e)=>{if(!e)return R.Ilk.TRANSPARENT;const i=Math.floor(t.x/this.simDisplay.width*e.width),s=Math.floor(t.y/this.simDisplay.height*e.height),n=4*(i+e.width*s);return i<0||s<0||i>e.width||s>e.height?R.Ilk.TRANSPARENT:new R.Ilk(e.data[n],e.data[n+1],e.data[n+2],e.data[n+3]/255)},{tandem:Y.Z.OPT_OUT,strictAxonDependencies:!1});const i=new S.Z(phet.chipper.queryParameters.fuzz,{tandem:Y.Z.OPT_OUT});i.lazyLink(t=>{phet.chipper.queryParameters.fuzz=t});const s=new S.Z(!1,{tandem:Y.Z.OPT_OUT}),n=new X.Z({name:"view units",multiplier:0}),r=new X.Z(D.Z.NOTHING),a=new R.NBX({renderer:"svg"}),o=new Ft(this.pointerPositionProperty,{tandem:Y.Z.OPT_OUT,bidirectional:!0,map:t=>{const e=this.screenViewProperty.value;if(e){const i=e.globalToLocalPoint(t);return`global: x: ${ys(t.x)}, y: ${ys(t.y)}
view: x: ${ys(i.x)}, y: ${ys(i.y)}`}return"-"}}),l=new R.Hof(o,{font:new $t(12)}),h=new Ft(this.colorProperty,{tandem:Y.Z.OPT_OUT,bidirectional:!0,map:t=>`${t.toHexString()} ${t.toCSS()}`}),c=new R.Hof(h,{font:new $t(12)});this.colorProperty.link(t=>{c.fill=R.Ilk.getLuminance(t)>128?R.Ilk.BLACK:R.Ilk.WHITE});const d=new R.Ilk("#804000"),u=new R.Ilk("#208020"),p=new R.Ilk(255,100,0),m=new R.Ilk(0,0,255),g=new R.Ilk(255,0,0),y=new R.Ilk(200,0,200),f=new E.ZP([this.inputBasedPickingProperty,this.pointerAreaTypeProperty],(t,e)=>t?e===fs.MOUSE?m:e===fs.TOUCH?g:y:p,{tandem:Y.Z.OPT_OUT,strictAxonDependencies:!1}),A=new he(c,{cornerRadius:0,stroke:null,fill:this.colorProperty}),v=new R.NBX({visibleProperty:this.previewVisibleProperty}),b=new R.AeJ(0,0,200,200,{fill:new R.eQt(new R.NBX({children:[new R.AeJ(0,0,10,10,{fill:"#ddd"}),new R.AeJ(10,10,10,10,{fill:"#ddd"}),new R.AeJ(0,10,10,10,{fill:"#fafafa"}),new R.AeJ(10,0,10,10,{fill:"#fafafa"})]}),2,0,0,20,20),stroke:"black",visibleProperty:this.previewVisibleProperty});this.previewTrailProperty.link(t=>{if(v.removeAllChildren(),t){v.addChild(b);const e=t.lastNode();if(e.bounds.isValid()){const t=.9*window.devicePixelRatio*Math.min(b.selfBounds.width/e.width,b.selfBounds.height/e.height);v.addChild(new R.NBX({scale:t/window.devicePixelRatio,center:b.center,children:[e.rasterized({resolution:t,sourceBounds:e.bounds.dilated(.01*e.bounds.width).roundedOut()})]}))}}});const V=new R.SHm({spacing:3,align:"left",visibleProperty:this.selectedNodeContentVisibleProperty});this.previewTrailProperty.link(t=>{V.children=t?Cs(t):[]});const P=new vs(i,"Fuzz"),w=new vs(s,"Measuring Tape"),T=new vs(this.visualTreeVisibleProperty,"Visual Tree"),x=new vs(this.pdomTreeVisibleProperty,"PDOM Tree"),C=new vs(this.inputBasedPickingProperty,"Input-based"),I=new vs(this.useLeafNodeProperty,"Use Leaf",{enabledProperty:this.inputBasedPickingProperty}),q=new vs(this.highlightVisibleProperty,"Highlight",{labelOptions:{fill:f}}),k=new vs(this.boundsVisibleProperty,"Bounds",{labelOptions:{fill:d}}),L=new vs(this.selfBoundsVisibleProperty,"Self Bounds",{labelOptions:{fill:u}}),O=new vs(this.getHelperNodeVisibleProperty,"getHelperNode()"),Z=new Ne(this.pointerAreaTypeProperty,[{value:fs.MOUSE,createNode:t=>new R.xvT("Mouse",{fontSize:12})},{value:fs.TOUCH,createNode:t=>new R.xvT("Touch",{fontSize:12})},{value:fs.NONE,createNode:t=>new R.xvT("None",{fontSize:12})}],{orientation:"horizontal",enabledProperty:this.inputBasedPickingProperty,radioButtonOptions:{xSpacing:3},spacing:10,tandem:Y.Z.OPT_OUT}),N=new R.SHm({align:"left",visibleProperty:this.selectedTrailContentVisibleProperty});this.previewTrailProperty.link(t=>{if(N.children=[],t){t.nodes.slice().forEach((e,i)=>{N.addChild(new R.Hof(`${i>0?t.nodes[i-1].children.indexOf(e):"-"} ${e.constructor.name}`,{font:new $t(12),fill:i===t.nodes.length-1?"black":"#bbb",layoutOptions:{leftMargin:10*i},cursor:"pointer",inputListeners:[new R.eMb({fire:()=>{this.selectedTrailProperty.value=t.subtrailTo(e),H()},tandem:Y.Z.OPT_OUT})]}))}),t.lastNode().children.forEach((e,i)=>{N.addChild(new R.Hof(`${t.lastNode().children.indexOf(e)} ${e.constructor.name}`,{font:new $t(12),fill:"#88f",layoutOptions:{leftMargin:10*t.nodes.length},cursor:"pointer",inputListeners:[new R.eMb({fire:()=>{this.selectedTrailProperty.value=t.copy().addDescendant(e,i),H()},tandem:Y.Z.OPT_OUT})]}))}),t.isVisible()||N.addChild(new R.xvT("invisible",{fill:"#60a",fontSize:12})),1!==t.getOpacity()&&N.addChild(new R.xvT("opacity: "+t.getOpacity(),{fill:"#888",fontSize:12}));const e=_.some(t.nodes,t=>!1===t.pickable||!t.visible),i=_.some(t.nodes,t=>t.inputListeners.length>0||!0===t.pickable);!e&&i&&N.addChild(new R.xvT("Hit Tested",{fill:"#f00",fontSize:12})),t.getMatrix().isIdentity()||N.addChild(new R.NBX({children:[new Ts(t.getMatrix())]}))}});const B=new ws(this.visualTreeVisibleProperty,this,()=>new Vs(new R.Qn1(e.rootNode),this)),F=new ws(this.pdomTreeVisibleProperty,this,()=>new Ps(e._rootPDOMInstance,this)),H=()=>{B.focusSelected(),F.focusSelected()},z=new R.y$t(null,{visibleProperty:this.boundsVisibleProperty,stroke:d,fill:d.withAlpha(.1),lineDash:[2,2],lineDashOffset:2});this.previewTrailProperty.link(t=>{t&&t.lastNode().localBounds.isValid()?z.shape=Ut.bn.bounds(t.lastNode().localBounds).transformed(t.getMatrix()):z.shape=null});const U=new R.y$t(null,{visibleProperty:this.selfBoundsVisibleProperty,stroke:u,fill:u.withAlpha(.1),lineDash:[2,2],lineDashOffset:1});this.previewTrailProperty.link(t=>{t&&t.lastNode().selfBounds.isValid()?U.shape=Ut.bn.bounds(t.lastNode().selfBounds).transformed(t.getMatrix()):U.shape=null});const W=new E.ZP([f],t=>t.withAlpha(.2),{tandem:Y.Z.OPT_OUT,strictAxonDependencies:!1}),G=new R.y$t(null,{stroke:f,lineDash:[2,2],fill:W,visibleProperty:this.highlightVisibleProperty});this.previewShapeProperty.link(t=>{G.shape=t});const K=new R.NBX({visibleProperty:this.getHelperNodeVisibleProperty});this.selectedTrailProperty.link(t=>{t&&(K.matrix=t.getMatrix())}),this.helperNodeProperty.link(t=>{K.removeAllChildren(),t&&K.addChild(t)}),a.addChild(z),a.addChild(U),a.addChild(G);const Q=new R.NBX;Q.addInputListener(new R.$o8({press:()=>{this.selectedTrailProperty.value=this.pointerTrailProperty.value,H()},tandem:Y.Z.OPT_OUT})),a.addChild(Q),a.addChild(K);const j=new R.N52({orientation:"vertical",spacing:5,align:"left",children:[l,A],visibleProperty:this.underPointerVisibleProperty}),J=new R.SHm({spacing:3,align:"left",children:[Ms("Tools"),new R.SHm({spacing:3,align:"left",children:[new R.BET({spacing:10,children:[P,w]}),new R.BET({spacing:10,children:[T,...e._accessible?[x]:[]]})]}),Ms("Picking",void 0,{layoutOptions:{topMargin:3}}),new R.SHm({spacing:3,align:"left",children:[new R.BET({spacing:10,children:[C,I]}),Z]}),Ms("Show",void 0,{layoutOptions:{topMargin:3}}),new R.SHm({spacing:3,align:"left",children:[new R.BET({spacing:10,children:[q,O]}),new R.BET({spacing:10,children:[k,L]})]})],visibleProperty:this.optionsVisibleProperty}),$=new R.SHm({spacing:5,align:"left",children:[Ss("Under Pointer",this.underPointerVisibleProperty,j,{layoutOptions:{topMargin:0}}),j,Ss("Options",this.optionsVisibleProperty,J),J,Ss("Preview",this.previewVisibleProperty,v),v,Ss("Selected Trail",this.selectedTrailContentVisibleProperty,N),N,Ss("Selected Node",this.selectedNodeContentVisibleProperty,V),V],visibleProperty:this.helperVisibleProperty}),tt=new R.SHm({spacing:5,align:"left",children:[Ss("Helper",this.helperVisibleProperty,$),new R.qYj,$]}),et=new he(tt,{fill:"rgba(255,255,255,0.85)",stroke:"rgba(0,0,0,0.85)",cornerRadius:0});et.addInputListener(new R._U3({translateNode:!0,targetNode:et,tandem:Y.Z.OPT_OUT})),et.addInputListener({wheel:t=>{const e=t.domEvent.deltaY;et.y-=1*e}}),a.addChild(et),a.addChild(B),a.addChild(F);const it=new ae(n,{tandem:Y.Z.OPT_OUT,visibleProperty:s,textBackgroundColor:"rgba(0,0,0,0.5)"});it.basePositionProperty.value=new Ht.Z(100,300),it.tipPositionProperty.value=new Ht.Z(200,300),a.addChild(it);const st=t=>{this.helperDisplay.width=t.width,this.helperDisplay.height=t.height,r.value=r.value.withMaxX(t.width).withMaxY(t.height),Q.mouseArea=new D.Z(0,0,t.width,t.height),Q.touchArea=new D.Z(0,0,t.width,t.height),B.resize(t),F.resize(t)},nt=t=>{var e;this.overInterfaceProperty.value=et.bounds.containsPoint(this.pointerPositionProperty.value)||this.visualTreeVisibleProperty.value&&B.bounds.containsPoint(this.pointerPositionProperty.value)||this.pdomTreeVisibleProperty.value&&F.bounds.containsPoint(this.pointerPositionProperty.value)||K.containsPoint(this.pointerPositionProperty.value),null===(e=this.helperDisplay)||void 0===e||e.updateDisplay()};document.addEventListener("keyup",t=>{"Escape"===t.key&&(this.selectedTrailProperty.value=null)}),this.activeProperty.lazyLink(e=>{if(e){t.activeProperty.value=!1;const e=t.selectedScreenProperty.value;e.hasView()?this.screenViewProperty.value=e.view:this.screenViewProperty.value=null,this.helperDisplay=new R.sSl(a,{assumeFullWindow:!0}),this.helperDisplay.initializeEvents(),t.dimensionProperty.link(st),M.Z.addListener(nt),document.body.appendChild(this.helperDisplay.domElement),this.helperDisplay.domElement.style.zIndex="10000";const i=t=>{this.pointerPositionProperty.value=t.pointer.point};this.helperDisplay.addInputListener({move:i,down:i,up:i}),this.screenViewProperty.value&&(n.value={name:"view units",multiplier:this.screenViewProperty.value.getGlobalToLocalMatrix().getScaleVector().x}),this.simDisplay.foreignObjectRasterization(t=>{if(t){const e=document.createElement("img");e.addEventListener("load",()=>{const t=e.width,i=e.height,s=document.createElement("canvas"),n=s.getContext("2d");s.width=t,s.height=i,n.drawImage(e,0,0),this.activeProperty.value&&(this.imageDataProperty.value=n.getImageData(0,0,t,i))}),e.src=t}else console.log("Could not load foreign object rasterization")})}else t.dimensionProperty.unlink(st),M.Z.removeListener(nt),document.body.removeChild(this.helperDisplay.domElement),this.helperDisplay.dispose(),t.activeProperty.value=!0,this.imageDataProperty.value=null,this.visualTreeVisibleProperty.value=!1})}static initialize(t,e){document.addEventListener("keydown",i=>{i.ctrlKey&&"H"===i.key&&(As.helper||(As.helper=new As(t,e)),As.helper.activeProperty.value=!As.helper.activeProperty.value)})}}Ct.Z.register("Helper",As);class vs extends gi{constructor(t,e,i){const s=(0,N.ZP)()({tandem:Y.Z.OPT_OUT,boxWidth:14,labelOptions:{font:new $t(12)}},i);super(t,new R.Hof(e,s.labelOptions),s)}}class bs extends R.NBX{constructor(t,e){const i=(0,N.ZP)()({createChildren:()=>[],spacing:0,indent:5},e);super({excludeInvisibleChildrenFromBounds:!0}),this.selfNode=t,this.selfNode.centerY=0,this.expandedProperty=new X.Z(!0),this.childTreeNodes=(0,T.Z)({elements:i.createChildren()});const s=(new Ut.bn).moveToPoint(Ht.Z.createPolar(4.8,3/4*Math.PI).plusXY(1.5,0)).lineTo(1.5,0).lineToPoint(Ht.Z.createPolar(4.8,5/4*Math.PI).plusXY(1.5,0));this.expandCollapseButton=new R.AeJ(-6,-6,12,12,{children:[new R.y$t(s,{stroke:"#888",lineCap:"round",lineWidth:1.5})],visible:!1,cursor:"pointer",right:0}),this.expandedProperty.link(t=>{this.expandCollapseButton.rotation=t?Math.PI/2:0}),this.expandCollapseButton.addInputListener(new R.eMb({fire:()=>{this.expandedProperty.value=!this.expandedProperty.value},tandem:Y.Z.OPT_OUT})),this.addChild(this.expandCollapseButton),this.childContainer=new R.N52({orientation:"vertical",align:"left",spacing:i.spacing,children:this.childTreeNodes,x:i.indent,y:this.selfNode.bottom+i.spacing,visibleProperty:this.expandedProperty}),this.addChild(this.childContainer),this.addChild(t);const n=()=>{this.childContainer.children=this.childTreeNodes,this.expandCollapseButton.visible=this.childTreeNodes.length>0};this.childTreeNodes.addItemAddedListener(()=>{n()}),this.childTreeNodes.addItemRemovedListener(()=>{n()}),n(),this.mutate(i)}expand(){this.expandedProperty.value=!0}collapse(){this.expandedProperty.value=!1}expandRecusively(){this.expandedProperty.value=!0,this.childTreeNodes.forEach(t=>{t.expandRecusively()})}collapseRecursively(){this.expandedProperty.value=!1,this.childTreeNodes.forEach(t=>{t.collapseRecursively()})}}class Vs extends bs{constructor(t,e){const i=t.lastNode(),s=t.isVisible(),n=new R.Zxw({size:12}),r=new R.BET({spacing:5}),a=i.constructor.name;a&&r.addChild(new R.xvT(a,{font:n,pickable:!1,fill:s?"#000":"#60a"})),i instanceof R.xvT&&r.addChild(new R.xvT('"'+i.string+'"',{font:n,pickable:!1,fill:"#666"}));const o=R.AeJ.bounds(r.bounds,{children:[r],cursor:"pointer",fill:new E.ZP([e.selectedTrailProperty,e.pointerTrailProperty],(e,i)=>e&&t.equals(e)?"rgba(0,128,255,0.4)":i&&t.equals(i)?"rgba(0,128,255,0.2)":"transparent",{tandem:Y.Z.OPT_OUT,strictAxonDependencies:!1})});o.addInputListener({enter:()=>{e.treeHoverTrailProperty.value=t},exit:()=>{e.treeHoverTrailProperty.value=null}}),o.addInputListener(new R.eMb({fire:()=>{e.selectedTrailProperty.value=t},tandem:Y.Z.OPT_OUT})),super(o,{createChildren:()=>t.lastNode().children.map(i=>new Vs(t.copy().addDescendant(i),e))}),i.visible||(this.expandedProperty.value=!1),this.trail=t}find(t){if(t.equals(this.trail))return this;{const e=_.find(this.childTreeNodes,e=>t.isExtensionOf(e.trail,!0));return e?e.find(t):null}}}class Ps extends bs{constructor(t,e){const i=t.trail,s=i.isPDOMVisible(),n=new R.Zxw({size:12}),r=new R.BET({spacing:5});if(i.nodes.length){const e=s?"#000":"#60a",a=i.lastNode();a.tagName&&r.addChild(new R.xvT(a.tagName,{font:new R.Zxw({size:12,weight:"bold"}),fill:e})),a.labelContent&&r.addChild(new R.xvT(a.labelContent,{font:n,fill:"#800"})),a.innerContent&&r.addChild(new R.xvT(a.innerContent,{font:n,fill:"#080"})),a.descriptionContent&&r.addChild(new R.xvT(a.descriptionContent,{font:n,fill:"#444"}));const o=t.parent?t.parent.trail:new R.Qn1,l=i.nodes.slice(o.nodes.length).map(t=>t.constructor.name).filter(t=>"Node"!==t).join(",");l&&r.addChild(new R.xvT(`(${l})`,{font:n,fill:"#008"}))}else r.addChild(new R.xvT("(root)",{font:n}));const a=R.AeJ.bounds(r.bounds,{children:[r],cursor:"pointer",fill:new E.ZP([e.selectedTrailProperty,e.pointerTrailProperty],(t,e)=>t&&i.equals(t)?"rgba(0,128,255,0.4)":e&&i.equals(e)?"rgba(0,128,255,0.2)":"transparent",{tandem:Y.Z.OPT_OUT,strictAxonDependencies:!1})});i.length&&(a.addInputListener({enter:()=>{e.treeHoverTrailProperty.value=i},exit:()=>{e.treeHoverTrailProperty.value=null}}),a.addInputListener(new R.eMb({fire:()=>{e.selectedTrailProperty.value=i},tandem:Y.Z.OPT_OUT}))),super(a,{createChildren:()=>t.children.map(t=>new Ps(t,e))}),this.instance=t,this.trail=i}find(t){if(t.equals(this.instance.trail))return this;{const e=_.find(this.childTreeNodes,e=>t.isExtensionOf(e.instance.trail,!0));return e?e.find(t):null}}}class ws extends R.AeJ{constructor(t,e,i){super({fill:"rgba(255,255,255,0.85)",stroke:"black",rectWidth:400,visibleProperty:t,pickable:!0}),this.helper=e,this.treeContainer=new R.NBX,this.addChild(this.treeContainer),this.addInputListener(new R._U3({targetNode:this,drag:(t,e)=>{this.x=this.x+e.modelDelta.x},tandem:Y.Z.OPT_OUT})),this.addInputListener({wheel:t=>{const e=t.domEvent.deltaX,i=t.domEvent.deltaY;this.treeNode&&(this.treeNode.x-=1*e,this.treeNode.y-=1*i),this.constrainTree()}}),e.pointerTrailProperty.lazyLink(()=>{e.selectedTrailProperty.value||this.focusPointer()}),Vt.Z.multilink([e.activeProperty,t],(t,e)=>{t&&e?(this.treeNode=i(),this.treeNode.x=500,this.treeNode.y=500,this.treeContainer.children=[this.treeNode],this.focusSelected(),this.constrainTree()):this.treeContainer.children=[]})}resize(t){this.rectHeight=t.height,this.right=t.width,this.treeContainer.clipArea=Ut.bn.bounds(this.localBounds.dilated(10))}constrainTree(){this.treeNode&&(this.treeNode.bottomthis.selfBounds.top+5&&(this.treeNode.top=this.selfBounds.top+5),this.treeNode.rightthis.selfBounds.left+8&&(this.treeNode.left=this.selfBounds.left+8))}focusTrail(t){if(this.treeNode){const e=this.treeNode.find(t);if(e){const t=e.localToGlobalPoint(e.selfNode.center).y-this.centerY;this.treeNode.y-=t,this.constrainTree()}}}focusPointer(){this.helper.pointerTrailProperty.value&&this.focusTrail(this.helper.pointerTrailProperty.value)}focusSelected(){null!==this.helper.selectedTrailProperty.value&&this.focusTrail(this.helper.selectedTrailProperty.value)}}const Ms=(t,e,i)=>new R.xvT(t,(0,bi.Z)({fontSize:14,fontWeight:"bold",visibleProperty:e?new E.ZP([e.boundsProperty],t=>!t.isEmpty(),{strictAxonDependencies:!1}):new X.Z(!0)},i)),Ss=(t,e,i,s)=>{const n=Ms(t,i,s);return n.addInputListener(new R.eMb({fire:()=>{e.value=!e.value},tandem:Y.Z.OPT_OUT})),n.cursor="pointer",new R.BET({spacing:7,children:[new ms(e,{tandem:Y.Z.OPT_OUT,sideLength:14}),n],visibleProperty:n.visibleProperty})};class Ts extends R.zch{constructor(t){super({xSpacing:5,ySpacing:0,children:[new R.xvT(t.m00(),{layoutOptions:{column:0,row:0}}),new R.xvT(t.m01(),{layoutOptions:{column:1,row:0}}),new R.xvT(t.m02(),{layoutOptions:{column:2,row:0}}),new R.xvT(t.m10(),{layoutOptions:{column:0,row:1}}),new R.xvT(t.m11(),{layoutOptions:{column:1,row:1}}),new R.xvT(t.m12(),{layoutOptions:{column:2,row:1}}),new R.xvT(t.m20(),{layoutOptions:{column:0,row:2}}),new R.xvT(t.m21(),{layoutOptions:{column:1,row:2}}),new R.xvT(t.m22(),{layoutOptions:{column:2,row:2}})]})}}class Es extends R.y$t{constructor(t){super(t,{maxWidth:15,maxHeight:15,stroke:"black",cursor:"pointer",strokePickable:!0}),this.addInputListener(new R.eMb({fire:()=>Ds(t.getSVGPath()),tandem:Y.Z.OPT_OUT}))}}class xs extends R.Eep{constructor(t){super(t.getImage(),{maxWidth:15,maxHeight:15})}}const Cs=t=>{const e=[],i=t.lastNode(),s=(0,fi.Z)(i.constructor).map(t=>t.name).filter(t=>t&&"Object"!==t),n=s.includes("Node")?s.slice(0,s.indexOf("Node")):s;n.length>0&&e.push(new R.Hof(n.map((t,e)=>0===e?`${t}`:`
 ${_.repeat(" ",e)}extends ${t}`).join(""),{font:new $t(12)}));const r=(t,i)=>{e.push(new R.BET({spacing:0,align:"top",children:[new R.xvT(t+": ",{fontSize:12}),i]}))},a=(t,e)=>{void 0!==e&&r(t,new R.Hof(""+e,{lineWrap:400,font:new $t(12),cursor:"pointer",inputListeners:[new R.eMb({fire:()=>Ds(""+e),tandem:Y.Z.OPT_OUT})]}))},o=t=>new R.BET({spacing:4,children:[new R.AeJ(0,0,10,10,{fill:t,stroke:"black",lineWidth:.5}),new R.xvT(t.toHexString(),{fontSize:12}),new R.xvT(t.toCSS(),{fontSize:12})],cursor:"pointer",inputListeners:[new R.eMb({fire:()=>Ds(t.toHexString()),tandem:Y.Z.OPT_OUT})]}),l=(t,e)=>{const i=t=>new R.BET({spacing:3,children:[new R.xvT(t.ratio,{fontSize:12}),o(Is(t.color)||R.Ilk.TRANSPARENT)]});e instanceof R.wGU?e instanceof R.oas?r(t,new R.SHm({align:"left",spacing:3,children:[new R.xvT(`LinearGradient (${e.start.x},${e.start.y}) => (${e.end.x},${e.end.y})`,{fontSize:12}),...e.stops.map(i)]})):e instanceof R.XMe?r(t,new R.SHm({align:"left",spacing:3,children:[new R.xvT(`RadialGradient (${e.start.x},${e.start.y}) ${e.startRadius} => (${e.end.x},${e.end.y}) ${e.endRadius}`,{fontSize:12}),...e.stops.map(i)]})):e instanceof R.cfY&&r(t,new R.SHm({align:"left",spacing:3,children:[new R.xvT("Pattern",{fontSize:12}),new R.Eep(e.image,{maxWidth:10,maxHeight:10})]})):((t,e)=>{const i=Is(e);null!==i&&r(t,o(i))})(t,e)},h=(t,e)=>{e.equals(D.Z.NOTHING)||(e.equals(D.Z.EVERYTHING)?a(t,"everything"):r(t,new R.Hof(`x: [${e.minX}, ${e.maxX}]
y: [${e.minY}, ${e.maxY}]`,{font:new $t(12)})))},c=(t,e)=>r(t,new Es(e));return i.tandem.supplied&&a("tandem",i.tandem.phetioID.split(".").join(" ")),i instanceof R.SOl&&a("element",i.element.constructor.name),(0,R.AXx)(i)&&(!i.widthSizable&&a("widthSizable",i.widthSizable),null!==i.preferredWidth&&a("preferredWidth",i.preferredWidth),i.preferredWidth!==i.localPreferredWidth&&a("localPreferredWidth",i.localPreferredWidth),null!==i.minimumWidth&&a("minimumWidth",i.minimumWidth),i.minimumWidth!==i.localMinimumWidth&&a("localMinimumWidth",i.localMinimumWidth)),(0,R.cWU)(i)&&(!i.heightSizable&&a("heightSizable",i.heightSizable),null!==i.preferredHeight&&a("preferredHeight",i.preferredHeight),i.preferredHeight!==i.localPreferredHeight&&a("localPreferredHeight",i.localPreferredHeight),null!==i.minimumHeight&&a("minimumHeight",i.minimumHeight),i.minimumHeight!==i.localMinimumHeight&&a("localMinimumHeight",i.localMinimumHeight)),i.layoutOptions&&a("layoutOptions",JSON.stringify(i.layoutOptions,null,2)),i instanceof R.BjU&&(!i.resize&&a("resize",i.resize),!i.layoutOrigin.equals(Ht.Z.ZERO)&&a("layoutOrigin",i.layoutOrigin)),i instanceof R.N52&&(a("orientation",i.orientation),a("align",i.align),i.spacing&&a("spacing",i.spacing),i.lineSpacing&&a("lineSpacing",i.lineSpacing),a("justify",i.justify),i.justifyLines&&a("justifyLines",i.justifyLines),i.wrap&&a("wrap",i.wrap),i.stretch&&a("stretch",i.stretch),i.grow&&a("grow",i.grow),i.leftMargin&&a("leftMargin",i.leftMargin),i.rightMargin&&a("rightMargin",i.rightMargin),i.topMargin&&a("topMargin",i.topMargin),i.bottomMargin&&a("bottomMargin",i.bottomMargin),null!==i.minContentWidth&&a("minContentWidth",i.minContentWidth),null!==i.minContentHeight&&a("minContentHeight",i.minContentHeight),null!==i.maxContentWidth&&a("maxContentWidth",i.maxContentWidth),null!==i.maxContentHeight&&a("maxContentHeight",i.maxContentHeight)),i instanceof R.zch&&(a("xAlign",i.xAlign),a("yAlign",i.yAlign),i.xSpacing&&a("xSpacing",i.xSpacing),i.ySpacing&&a("ySpacing",i.ySpacing),i.xStretch&&a("xStretch",i.xStretch),i.yStretch&&a("yStretch",i.yStretch),i.xGrow&&a("xGrow",i.xGrow),i.yGrow&&a("yGrow",i.yGrow),i.leftMargin&&a("leftMargin",i.leftMargin),i.rightMargin&&a("rightMargin",i.rightMargin),i.topMargin&&a("topMargin",i.topMargin),i.bottomMargin&&a("bottomMargin",i.bottomMargin),null!==i.minContentWidth&&a("minContentWidth",i.minContentWidth),null!==i.minContentHeight&&a("minContentHeight",i.minContentHeight),null!==i.maxContentWidth&&a("maxContentWidth",i.maxContentWidth),null!==i.maxContentHeight&&a("maxContentHeight",i.maxContentHeight)),i instanceof R.AeJ&&(h("rectBounds",i.rectBounds),(i.cornerXRadius||i.cornerYRadius)&&(i.cornerXRadius===i.cornerYRadius?a("cornerRadius",i.cornerRadius):(a("cornerXRadius",i.cornerXRadius),a("cornerYRadius",i.cornerYRadius)))),i instanceof R.x12&&(a("x1",i.x1),a("y1",i.y1),a("x2",i.x2),a("y2",i.y2)),i instanceof R.Cdc&&a("radius",i.radius),i instanceof R.xvT&&(a("text",i.string),a("font",i.font),"hybrid"!==i.boundsMethod&&a("boundsMethod",i.boundsMethod)),i instanceof R.Hof&&(a("text",i.string),a("font",i.font instanceof R.Zxw?i.font.getFont():i.font),l("fill",i.fill),l("stroke",i.stroke),"hybrid"!==i.boundsMethod&&a("boundsMethod",i.boundsMethod),null!==i.lineWrap&&a("lineWrap",i.lineWrap)),i instanceof R.Eep&&(r("image",new xs(i)),a("imageWidth",i.imageWidth),a("imageHeight",i.imageHeight),1!==i.imageOpacity&&a("imageOpacity",i.imageOpacity),i.imageBounds&&h("imageBounds",i.imageBounds),i.initialWidth&&a("initialWidth",i.initialWidth),i.initialHeight&&a("initialHeight",i.initialHeight),i.hitTestPixels&&a("hitTestPixels",i.hitTestPixels)),(i instanceof R.mxV||i instanceof R.HDe)&&h("canvasBounds",i.canvasBounds),i instanceof R.y$t&&(i.shape&&c("shape",i.shape),"accurate"!==i.boundsMethod&&a("boundsMethod",i.boundsMethod)),(i instanceof R.y$t||i instanceof R.xvT)&&(l("fill",i.fill),l("stroke",i.stroke),i.lineDash.length&&a("lineDash",i.lineDash),i.fillPickable||a("fillPickable",i.fillPickable),i.strokePickable&&a("strokePickable",i.strokePickable),1!==i.lineWidth&&a("lineWidth",i.lineWidth),"butt"!==i.lineCap&&a("lineCap",i.lineCap),"miter"!==i.lineJoin&&a("lineJoin",i.lineJoin),0!==i.lineDashOffset&&a("lineDashOffset",i.lineDashOffset),10!==i.miterLimit&&a("miterLimit",i.miterLimit)),i.tagName&&a("tagName",i.tagName),i.accessibleName&&a("accessibleName",i.accessibleName),i.helpText&&a("helpText",i.helpText),i.pdomHeading&&a("pdomHeading",i.pdomHeading),i.containerTagName&&a("containerTagName",i.containerTagName),i.containerAriaRole&&a("containerAriaRole",i.containerAriaRole),i.innerContent&&a("innerContent",i.innerContent),i.inputType&&a("inputType",i.inputType),i.inputValue&&a("inputValue",i.inputValue),i.pdomNamespace&&a("pdomNamespace",i.pdomNamespace),i.ariaLabel&&a("ariaLabel",i.ariaLabel),i.ariaRole&&a("ariaRole",i.ariaRole),i.ariaValueText&&a("ariaValueText",i.ariaValueText),i.labelTagName&&a("labelTagName",i.labelTagName),i.labelContent&&a("labelContent",i.labelContent),i.appendLabel&&a("appendLabel",i.appendLabel),i.descriptionTagName&&a("descriptionTagName",i.descriptionTagName),i.descriptionContent&&a("descriptionContent",i.descriptionContent),i.appendDescription&&a("appendDescription",i.appendDescription),i.pdomVisible||a("pdomVisible",i.pdomVisible),i.pdomOrder&&a("pdomOrder",i.pdomOrder.map(t=>null===t?"null":t.constructor.name)),i.visible||a("visible",i.visible),1!==i.opacity&&((t,e)=>{a(t,e)})("opacity",i.opacity),null!==i.pickable&&a("pickable",i.pickable),i.enabled||a("enabled",i.enabled),i.inputEnabled||a("inputEnabled",i.inputEnabled),null!==i.cursor&&a("cursor",i.cursor),i.transformBounds&&a("transformBounds",i.transformBounds),i.renderer&&a("renderer",i.renderer),i.usesOpacity&&a("usesOpacity",i.usesOpacity),i.layerSplit&&a("layerSplit",i.layerSplit),i.cssTransform&&a("cssTransform",i.cssTransform),i.excludeInvisible&&a("excludeInvisible",i.excludeInvisible),i.preventFit&&a("preventFit",i.preventFit),null!==i.webglScale&&a("webglScale",i.webglScale),i.matrix.isIdentity()||((t,e)=>{r(t,new Ts(e))})("matrix",i.matrix),null!==i.maxWidth&&a("maxWidth",i.maxWidth),null!==i.maxHeight&&a("maxHeight",i.maxHeight),null!==i.clipArea&&c("clipArea",i.clipArea),null!==i.mouseArea&&(i.mouseArea instanceof D.Z?h("mouseArea",i.mouseArea):c("mouseArea",i.mouseArea)),null!==i.touchArea&&(i.touchArea instanceof D.Z?h("touchArea",i.touchArea):c("touchArea",i.touchArea)),i.inputListeners.length&&a("inputListeners",i.inputListeners.map(t=>t.constructor.name).join(", ")),e.push(new R.LZC(5,5)),h("localBounds",i.localBounds),i.localBoundsOverridden&&a("localBoundsOverridden",i.localBoundsOverridden),h("bounds",i.bounds),isFinite(i.width)&&a("width",i.width),isFinite(i.height)&&a("height",i.height),e.push(new zi({content:new R.xvT("Copy Path",{fontSize:12}),listener:()=>Ds("phet.joist.display.rootNode"+t.indices.map(t=>`.children[ ${t} ]`).join("")),tandem:Y.Z.OPT_OUT})),e},Is=t=>{const e=(0,gs.i)(t)?t.value:t;return null===e?null:R.Ilk.toColor(e)},qs=t=>{if(t instanceof R.wGU)return!0;{const e=Is(t);return!!e&&e.alpha>0}},ks=(t,e)=>{if(!t.visible)return null;const i=t._transform.getInverse().timesVector2(e),s=t.clipArea;if(null!==s&&!s.containsPoint(i))return null;for(let n=t._children.length-1;n>=0;n--){const e=t._children[n],s=ks(e,i);if(s)return s.addAncestor(t,n)}if(t.selfBounds.containsPoint(i))if(t instanceof R.y$t&&t.hasShape()){if(qs(t.fill)&&t.getShape().containsPoint(i))return new R.Qn1(t);if(qs(t.stroke)&&t.getStrokedShape().containsPoint(i))return new R.Qn1(t)}else if(t.containsPointSelf(i))return new R.Qn1(t);return null},Ds=async t=>{var e;await(null===(e=navigator.clipboard)||void 0===e?void 0:e.writeText(t))},Ls=(t,e,i)=>{let s=Ut.bn.union([...e&&t.mouseArea?[t.mouseArea instanceof Ut.bn?t.mouseArea:Ut.bn.bounds(t.mouseArea)]:[],...i&&t.touchArea?[t.touchArea instanceof Ut.bn?t.touchArea:Ut.bn.bounds(t.touchArea)]:[],t.getSelfShape(),...t.children.filter(t=>t.visible&&!1!==t.pickable).map(t=>Ls(t,e,i).transformed(t.matrix))].filter(t=>t.bounds.isValid()));return t.hasClipArea()&&(s=s.shapeIntersection(t.clipArea)),s},_s=(t,e,i)=>{let s=Ls(t.lastNode(),e,i);for(let n=t.nodes.length-1;n>=0;n--){const e=t.nodes[n];e.hasClipArea()&&(s=s.shapeIntersection(e.clipArea)),s=s.transformed(e.matrix)}return s};class Os extends R.NBX{constructor(t,e){const i=(0,N.ZP)()({keyFill:"white",keyShadowFill:"black",lineWidth:1.3,cornerRadius:2,xShadowOffset:1.7,yShadowOffset:1.7,xMargin:0,yMargin:0,xAlign:"center",yAlign:"center",xPadding:4,yPadding:4,keyHeight:23,minKeyWidth:23,forceSquareKey:!1},e),s=new R.NBX({children:[t]}),n=new R.NBX({children:[s]}),r=new R.DbO(n,{xAlign:i.xAlign,yAlign:i.yAlign,xMargin:i.xMargin,yMargin:i.yMargin}),a=new R.AeJ(0,0,1,1,i.cornerRadius,i.cornerRadius,{fill:i.keyShadowFill}),o=new R.AeJ(0,0,1,1,i.cornerRadius,i.cornerRadius,{fill:i.keyFill,stroke:"black",lineWidth:i.lineWidth});t.boundsProperty.link(()=>{let e=1;const l=i.keyHeight-i.yPadding;t.height>l&&(e=l/t.height),s.setScaleMagnitude(e);let h=Math.max(i.minKeyWidth,s.width+i.xPadding);if(i.forceSquareKey){const e=i.minKeyWidth-i.xPadding;let s=1;t.width>e&&(s=e/t.width),h=i.keyHeight,n.setScaleMagnitude(s)}r.setAlignBounds(new D.Z(0,0,h,i.keyHeight)),a.setRectBounds(r.bounds.shiftedXY(i.xShadowOffset,i.yShadowOffset)),o.setRectBounds(r.bounds)}),i.children=[a,o,r],super(i)}}U.register("KeyNode",Os);class Zs extends Os{constructor(t,e){const i=(0,N.ZP)()({font:new $t({size:16}),fill:"black",textMaxWidth:55,xPadding:11},e),s=new R.Hof(t,{font:i.font,fill:i.fill,maxWidth:i.textMaxWidth});super(s,i),this.disposeEmitter.addListener(()=>s.dispose())}static getAltKeyString(){return Z.Z.mac?ie.key.optionStringProperty:ie.key.altStringProperty}static altOrOption(t){return new Zs(Zs.getAltKeyString(),t)}static capsLock(t){return new Zs(ie.key.capsLockStringProperty,t)}static esc(t){return new Zs(ie.key.escStringProperty,t)}static end(t){return new Zs(ie.key.endStringProperty,t)}static enter(t){return new Zs(ie.key.enterStringProperty,t)}static fn(t){return new Zs(ie.key.fnStringProperty,t)}static home(t){return new Zs(ie.key.homeStringProperty,t)}static pageDown(t){return new Zs(ie.key.pageDownStringProperty,t)}static pageUp(t){return new Zs(ie.key.pageUpStringProperty,t)}static space(t){return new Zs(ie.key.spaceStringProperty,t)}static shift(t){return new Zs(ie.key.shiftStringProperty,t)}static tab(t){return new Zs(ie.key.tabStringProperty,t)}}U.register("TextKeyNode",Zs);class Ns extends Ut.bn{constructor(t){super();const e=t.width/2-t.height/2,i=t.width/2+t.height/2;this.moveTo(e,0).lineTo(i,0).lineTo(i,e).lineTo(t.width,e).lineTo(t.width,i).lineTo(i,i).lineTo(i,t.width).lineTo(e,t.width).lineTo(e,i).lineTo(0,i).lineTo(0,e).lineTo(e,e).close()}}U.register("PlusShape",Ns);const Bs=new L.Z(20,5);class Rs extends R.y$t{constructor(t){const e=(0,N.ZP)()({size:Bs,fill:"black"},t);super(new Ns(e.size),e)}}U.register("PlusNode",Rs);const Fs=.6*Math.sqrt(3)*10,Hs={up:0,down:Math.PI,left:-Math.PI/2,right:Math.PI/2};class zs extends Os{constructor(t,e){const i=(0,N.ZP)()({arrowFill:"black",arrowStroke:"black",arrowLineJoin:"round",arrowLineWidth:3,arrowHeight:10,arrowWidth:Fs,yPadding:13,forceSquareKey:!0},e),s=i.arrowHeight,n=i.arrowWidth,r=i.arrowLineJoin,a=i.arrowLineWidth,o=i.arrowFill,l=i.arrowStroke,h=new Ut.bn;h.moveTo(s/2,0).lineTo(s,n+0).lineTo(0,n+0).close(),super(new R.y$t(h,{fill:o,stroke:l,lineJoin:r,lineWidth:a,rotation:Hs[t]}),i)}}U.register("ArrowKeyNode",zs);class Us extends Zs{constructor(t,e){super(t,(0,N.ZP)()({xPadding:5,forceSquareKey:!0},e))}static a(t){return new Us(ie.key.aStringProperty,t)}static c(t){return new Us(ie.key.cStringProperty,t)}static d(t){return new Us(ie.key.dStringProperty,t)}static l(t){return new Us(ie.key.lStringProperty,t)}static r(t){return new Us(ie.key.rStringProperty,t)}static s(t){return new Us(ie.key.sStringProperty,t)}static w(t){return new Us(ie.key.wStringProperty,t)}static one(t){return new Us(ie.key.oneStringProperty,t)}static two(t){return new Us(ie.key.twoStringProperty,t)}static three(t){return new Us(ie.key.threeStringProperty,t)}}U.register("LetterKeyNode",Us);const Ys=new $t(16);class Ws{constructor(){}static iconRow(t,e){const i=(0,N.ZP)()({spacing:1.3,children:t},e);return new R.BET(i)}static iconOrIcon(t,e,i){const s=(0,N.JA)({spacing:Ws.DEFAULT_ICON_SPACING},i),n=new R.xvT(ie.keyboardHelpDialog.orStringProperty,{font:Ys,maxWidth:16});return Ws.iconRow([new R.NBX({children:[t]}),n,new R.NBX({children:[e]})],s)}static iconToIcon(t,e,i){const s=(0,N.JA)({spacing:Ws.DEFAULT_ICON_SPACING/2},i),n=new R.xvT(ie.keyboardHelpDialog.hyphenStringProperty,{font:Ys,maxWidth:16});return Ws.iconRow([new R.NBX({children:[t]}),n,new R.NBX({children:[e]})],s)}static iconPlusIcon(t,e,i){return Ws.iconPlusIconRow([t,e],i)}static iconPlusIconRow(t,e){const i=(0,N.JA)({plusIconSize:new L.Z(8,1.2),spacing:Ws.DEFAULT_ICON_SPACING},e),s=[];for(let n=0;n{let t="";return t+=this.headingStringProperty.value+", ",this.keyboardHelpSectionRows.forEach(e=>{e.readingBlockContent&&(t+=Ks.Z.getResponseText(e.readingBlockContent)+" ")}),t})}static alignHelpSectionIcons(t){const e=_.maxBy(t,t=>t.iconVBox.left),i=e.iconVBox.left;t.forEach(t=>{t.contentHBox.spacing=t.contentHBox.spacing+i-t.iconVBox.left})}}_defineProperty(Xs,"DEFAULT_VERTICAL_ICON_SPACING",13),U.register("KeyboardHelpSection",Xs);const js=new $t(16);class Js{constructor(t,e,i,s){const n=(0,N.ZP)()({readingBlockContent:null},s);this.text=t,this.label=e,this.icon=i,this.readingBlockContent=n.readingBlockContent}setContentsVisible(t){this.text.visible=t,this.label.visible=t,this.icon.visible=t}static labelWithIcon(t,e,i){const s=(0,N.ZP)()({labelInnerContent:null,readingBlockContent:null,labelOptions:{font:js},iconOptions:{tagName:"li"}},i),n=new R.Hof(t,s.labelOptions),r=new R.Lkj({matchHorizontal:!1}),a=r.createBox(n),o=r.createBox(new R.NBX({children:[e]}),s.iconOptions);return o.innerContent=s.labelInnerContent,new Js(n,a,o,{readingBlockContent:s.readingBlockContent||s.labelInnerContent})}static createKeysRowFromStrings(t,e,i){return Js.createKeysRow(t.map(t=>new Us(t)),e,i)}static createKeysRow(t,e,i){let s=null;for(let n=0;n{t.setScaleMagnitude(1),t.setScaleMagnitude(Math.min(i.maxIconWidthProportion*s.width/t.width,i.maxIconHeightProportion*s.height/t.height)),t.center=s.center};t.localBoundsProperty.link(n),i.children=[s,t],super(i),this.disposeScreenIcon=()=>{t.localBoundsProperty.hasListener(n)&&t.localBoundsProperty.unlink(n)}}dispose(){this.disposeScreenIcon(),super.dispose()}}Ct.Z.register("ScreenIcon",ln);const hn=t=>""+t;class cn extends ne{constructor(t,e,i){const s=(0,N.ZP)()({formatNames:[],decimalPlaces:null,phetioFeatured:!0,tandemNameSuffix:"StringProperty"},i),n=[t],r={},a=Object.keys(e);a.forEach(t=>{const i=e[t];(0,gs.i)(i)&&n.push(i);let a=hn;if(null!==s.decimalPlaces&&("number"==typeof s.decimalPlaces||null!==s.decimalPlaces[t])){const e="number"==typeof s.decimalPlaces||null===s.decimalPlaces?s.decimalPlaces:s.decimalPlaces[t];a=t=>hn("number"==typeof t?O.Z.toFixed(t,e):t)}s.maps&&s.maps.hasOwnProperty(t)?r[t]=e=>a(s.maps[t](e)):r[t]=a}),super(n,(function(){for(var i=arguments.length,o=new Array(i),l=0;l{const e=n.indexOf(t);return e>=0?o[e]:t};let c=""+h(t);s.formatNames.forEach((t,e)=>{c=c.replace(new RegExp(`\\{${e}\\}`,"g"),`{{${t}}}`)});const d=c.match(/\{\{[^{}]+\}\}/g)||[];for(let t=0;tnull===t?"":B.Z.fillIn(dn,{name:t})),this.maxDT=s.maxDT,this.createModel=t,this.createView=e,this._model=null,this._view=null,this.activeProperty=new S.Z(!0,{tandem:s.tandem.createTandem("activeProperty"),phetioReadOnly:!0,phetioDocumentation:"Indicates whether the screen is currently displayed in the simulation. For single-screen simulations, there is only one screen and it is always active."}),this.descriptionContent="",s.descriptionContent?this.descriptionContent=s.descriptionContent:this.nameProperty.value?this.descriptionContent=new cn(dn,{name:this.nameProperty},{tandem:Y.Z.OPT_OUT}):this.descriptionContent=pn}get model(){return this._model}get view(){return this._view}hasModel(){return!!this._model}hasView(){return!!this._view}reset(){}initializeModel(){this._model=this.createModel()}initializeView(t,e,i,s){var n;this._view=this.createView(this.model),this._view.setVisible(!1),phet.chipper.queryParameters.dev&&this._view.addChild((n=this._view.layoutBounds,new R.y$t(Ut.bn.bounds(n),{stroke:"red",lineWidth:3,pickable:!1}))),phet.chipper.queryParameters.showVisibleBounds&&this._view.addChild(function(t){const e=new R.y$t(Ut.bn.bounds(t.visibleBoundsProperty.value),{stroke:"blue",lineWidth:6,pickable:!1});return t.visibleBoundsProperty.link(t=>{e.shape=Ut.bn.bounds(t)}),e}(this._view)),Vt.Z.multilink([e,t,this.pdomDisplayNameProperty],(t,e,n)=>{let r;r=1===i?t:s?e:B.Z.fillIn(un,{screenName:n,simName:e}),this._view.setScreenSummaryIntroAndTitle(e,n,r,i>1)})}}function vn(t,e,i,s){t.width,t.height}n=An,_defineProperty(An,"HOME_SCREEN_ICON_ASPECT_RATIO",fn),_defineProperty(An,"MINIMUM_HOME_SCREEN_ICON_SIZE",mn),_defineProperty(An,"MINIMUM_NAVBAR_ICON_SIZE",gn),_defineProperty(An,"ScreenIO",new rn.Z("ScreenIO",{valueType:n,supertype:(0,an.Z)(rn.Z.ObjectIO),documentation:"Section of a simulation which has its own model and view."})),Ct.Z.register("Screen",An);const bn=An;class Vn{constructor(t,e,i,s){this.simScreens=e,this.screenProperty=t,this.activeSimScreensProperty=i,this.selectedScreenProperty=new I.Z(e[0],{validValues:e,phetioValueType:bn.ScreenIO,tandem:s.createTandem("selectedScreenProperty"),phetioFeatured:!0}),this.screenProperty.link(t=>{_.includes(e,t)&&(this.selectedScreenProperty.value=t)})}reset(){}}Ct.Z.register("HomeScreenModel",Vn);const Pn=Vn,wn=new R.Ilk(0,200,0),Mn=new R.Ilk(255,85,0),Sn=new R.Ilk(0,135,0),Tn=new R.Ilk(106,206,245),En=new R.Ilk(254,225,5),xn={ACCELERATION:new R.Ilk(255,255,50),APPLIED_FORCE:new R.Ilk(236,153,55),BUTTON_YELLOW:En,ELASTIC_POTENTIAL_ENERGY:new R.Ilk(0,204,255),FRICTION_FORCE:Mn,GRAVITATIONAL_FORCE:new R.Ilk(50,130,215),GRAVITATIONAL_POTENTIAL_ENERGY:new R.Ilk(55,130,215),HEAT_THERMAL_ENERGY:Mn,IMAGINARY_PART:new R.Ilk(153,51,102),KINETIC_ENERGY:new R.Ilk(30,200,45),MOMENTUM:new R.Ilk(50,50,255),NET_WORK:wn,NORMAL_FORCE:new R.Ilk(255,235,0),PHET_LOGO_BLUE:Tn,PHET_LOGO_YELLOW:En,POSITION:R.Ilk.BLUE,REAL_PART:new R.Ilk(255,153,0),RED_COLORBLIND:Mn,RESET_ALL_BUTTON_BASE_COLOR:new R.Ilk(247,151,34),GREEN_COLORBLIND:Sn,TOTAL_ENERGY:new R.Ilk(180,180,0),TOTAL_FORCE:wn,VELOCITY:new R.Ilk(50,255,50),WALL_FORCE:new R.Ilk(153,51,0),SCREEN_ICON_FRAME:"#dddddd"};U.register("PhetColorScheme",xn);const Cn=xn;class In extends R.NBX{constructor(t,e){const i=(0,N.ZP)()({xMargin1:6,yMargin1:6,cornerRadius:0},e);super();const s=t.width+2*i.xMargin1,n=t.height+2*i.yMargin1;this.gradient=new R.oas(0,0,s,0).addColorStop(0,"#fbff41").addColorStop(.1475,"#fef98b").addColorStop(.465,"#feff40").addColorStop(.77,"#fffccd").addColorStop(1,"#fbff41");const r=new R.AeJ(0,0,s,n,i.cornerRadius,i.cornerRadius,{stroke:this.gradient,lineWidth:3,x:t.x-i.xMargin1,y:t.y-i.yMargin1});this.addChild(r),this.mutate(i);const a=D.Z.rect(r.x,r.y,s,n);this.highlightRectangle=R.AeJ.bounds(a.dilated(.75),{stroke:"transparent",lineWidth:4.5}),this.addChild(this.highlightRectangle)}setHighlighted(t){this.highlightRectangle.stroke=t?this.gradient:"transparent"}}Ct.Z.register("Frame",In);const qn=In;class kn extends((0,R.CHP)(R.SHm)){constructor(t,e,i){const s=(0,N.ZP)()({cursor:"pointer",showUnselectedHomeScreenIconFrame:!1,tagName:"button",appendDescription:!0,containerTagName:"li",phetioEventType:F.Z.USER,phetioDocumentation:"A button on the home screen for choosing a simulation screen"},i),n=new E.ZP([e.selectedScreenProperty],e=>e===t),r=new S.Z(!1);let a=O.Z.linear(2,4,.875,.5,e.simScreens.length);e.simScreens.length>=5&&(a=.4);const o=140*a,l=t.homeScreenIcon,h=new R.NBX({children:[l],scale:o/l.height}),c=new R.NBX({children:[l],scale:140/l.height}),d=new R.AeJ(0,0,h.width,h.height,{stroke:s.showUnselectedHomeScreenIconFrame?Cn.SCREEN_ICON_FRAME:null,lineWidth:.7}),u=new qn(c),p=new R.NBX({children:[d,h]}),m=new R.NBX({children:[u,c]}),g=new R.NBX({pdomVisible:!1}),y=new R.xvT(t.nameProperty);super((0,bi.Z)({children:[g,y]},s)),this.screen=t,this.addAriaDescribedbyAssociation({otherNode:this,otherElementName:R.Grz.DESCRIPTION_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING});const f={small:{node:[p],font:new $t(18),spacing:3},large:{node:[m],font:new $t(42),spacing:0}},A=()=>{const t=n.value||r.value?1:.5;c.opacity=t,h.opacity=t,y.fill=n.value||r.value?"white":"gray"};n.link(t=>{const e=t?f.large:f.small;g.children=e.node,y.font=e.font,y.maxWidth=g.width,A(),this.setSpacing(e.spacing)}),r.link(t=>{u.setHighlighted(t),A()});const v=new ci.Z;let b=!1;const V=new R.eMb({fire:()=>{const i=V.pointer&&V.pointer.isTouchLike();!n.value||i&&!b?(e.selectedScreenProperty.value=t,this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})):(e.screenProperty.value=t,this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null,utterance:v}))},tandem:s.tandem.createTandem("fireListener")});this.addInputListener(V),this.addInputListener({focus:t=>{!n.value&&V.fire(t)}}),this.addInputListener({click:()=>!n.value&&this.focus()}),this.addInputListener({focus:()=>r.set(!0),blur:()=>r.set(!1),over:()=>r.set(!0),out:()=>r.set(!1)});const P=()=>{b=e.selectedScreenProperty.value===t,e.selectedScreenProperty.value=t};this.addInputListener({touchover:P,penover:P}),this.boundsProperty.link(()=>{this.mouseArea=this.touchArea=Ut.bn.bounds(this.localBounds)})}}Ct.Z.register("HomeScreenButton",kn);const Dn=kn;class Ln extends Ee{constructor(t,e){const i=(0,N.ZP)()({initialPlaybackRate:1},e);super(i),this.activeBufferSources=[],this.valueToWrappedAudioBufferMap=t,this.localGainNode=this.audioContext.createGain(),this.localGainNode.connect(this.soundSourceDestination),this.fullyEnabledProperty.lazyLink(t=>{t||this.stopAll()}),this.playbackRate=void 0===i.initialPlaybackRate?1:i.initialPlaybackRate,this.audioContextStateChangeListener=null,this.timeOfDeferredPlayRequest=Number.NEGATIVE_INFINITY}playAssociatedSound(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=this.valueToWrappedAudioBufferMap.get(t);if("running"===this.audioContext.state){if(this.fullyEnabled&&i.audioBufferProperty.value){const t=this.audioContext.currentTime;this.localGainNode.gain.cancelScheduledValues(t),this.localGainNode.gain.setValueAtTime(1,t);const s=this.audioContext.createBufferSource();s.buffer=i.audioBufferProperty.value,s.playbackRate.setValueAtTime(this.playbackRate,this.audioContext.currentTime),s.connect(this.localGainNode),this.activeBufferSources.push(s),s.onended=()=>{const t=this.activeBufferSources.indexOf(s);t>-1&&this.activeBufferSources.splice(t,1)},s.start(t+e)}}else this.audioContextStateChangeListener&&mt.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener),this.timeOfDeferredPlayRequest=Date.now(),this.audioContextStateChangeListener=()=>{(Date.now()-this.timeOfDeferredPlayRequest)/1e3<.2&&this.playAssociatedSound(t,.1),mt.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener),this.audioContextStateChangeListener=null},mt.addStateChangeListener(this.audioContext,this.audioContextStateChangeListener)}setPlaybackRate(t){this.playbackRate=t}stopAll(){const t=this.audioContext.currentTime+.1;this.localGainNode.gain.linearRampToValueAtTime(0,t),this.activeBufferSources.forEach(e=>{e.stop(t)}),this.activeBufferSources.length=0}}j.register("MultiClip",Ln);const _n=Ln,On="data:audio/mpeg;base64,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",Zn=Q(it,On),Nn=K.Z.createLock(On),Bn=new tt;let Rn=!1;const Fn=()=>{Rn||(Nn(),Rn=!0)},Hn=it.decodeAudioData(Zn.buffer,t=>{null===Bn.audioBufferProperty.value&&(Bn.audioBufferProperty.set(t),Fn())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Bn.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Fn()});Hn&&Hn.then(t=>{null===Bn.audioBufferProperty.value&&(Bn.audioBufferProperty.set(t),Fn())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Fn()});const zn=Bn,Un="data:audio/mpeg;base64,//swxAACBbQfAa1vAjjzBGF2uiAGAAAAVtwAAAB7yZwNh6oRieZxJ6ZAiC/ATEjWf4paPzHKWsS3vMPHu8R6o/M8eAnZcHGwD9C4jQ2xTmNgzZHbzxk5zD0HTBEWTHspzBMqDK8KxIF37fd35ff/MUdUL/Ebxn9X8v1v6Fr/qUoAAAAEOAWfACgXUDbgA1LRszBjFcN1Q5A37hmD//syxA4ACgAhKbngkhD9BGDHvgAGGWHvMr8isweRLzBiAgMNQMkxCAAAEEEBgeVczyMNGKtsf6F4Giv/rT/odb3f/NeUfP4tFRANCwGGTlYyyEw/cJjMePwAT7SyQczJUPyKoQwYKqCgmCeiMBgE4FSYDIBVgYCxMAaABwCAANnj7qmgbL//++oAAACT1PNJAHxGinXcyGFGEMY9Mv/7MsQKAAcgGyWu+0Bw1gNkqey8jtZp4mrGBaEuYskFTJir6hjU38h9pGJE1e6j2dP16PZ0+3/r0e0AEfK5YkoDQMIPEstTDOAsMYyMs59DMBoM08VQseAdGGgKwaNoyxP16PIbk+2fs9nT7f//tpoAAAJ72ShtQGa8BoaQQT5hFA5GMcVKdoQoJiOAPgkrOATlQcDhXSQ2qmoydr3/+zLEFoJHJBsnr2GEcMsDZPXfYEaeS3N//s7fTvR/p/SFN8xoeGOEfTDSZ6D6YHbMbFxFJgYAxBqwaRl6p2KP3OOIqcUqvattP9yPq0/6PZv//9MAAAKTiC1xwHUiuHc40mB8CKYCqQx3mymHxcm6GBZP17maxazTein9P+j6m0+3o9llP/9lIOZgrByCHtnZWY4ZiqUpj4uvGhXg//swxCSCBowbJa77gDDRg2Il7+xGuBg9YF4Jpo0hixIXkQQs+iqhVNf1f0r//9v/sd/b/k0AAAAKcFJBzzB8nPiVAZdJYBiuEJnyGdkYSIe5+JIBOnyxgEWjVUbPleFtdPVo//7aPTRZ9bP//pCu9FwMmga40MyCTMMhDE7Fz7dKMIDElBibcARSRyHt9Bnbq/s3pQAAAANVnW6Q//syxDOCRxAfD49rBDCZA2N17vAGCA4OIM4qpYxYOwwIzM5oCgxiAktuxQi1OBF1E6XJqSZp0fRZ+j+zp////SAA0iQCsAHUo9Ia9HYZvsF6GoXAqf9il5jeBrH0jZkRcd+mtIOAlu7GetVcvLMd3/p//9lH/YoAAAXgGg7h7VkfY5r0nAFGMhRQdmDlw/OW+eialAABX+GAANouzf/7MsRIAgZsGxXuvMYw2AReve3ghCHw7VaMOCTf7AkcLBW2GGCSRH8ABzEFogX0VXiamZeIAAAANmlTC4o1mzOAYj1V86QwPjSTpkY95TRZARC/grAwJq4SVhZMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zLEVwBDmBsIjeeAOI2FXrW9GE5VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//swxHqDxWAq183lZngAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Yn=Q(it,Un),Wn=K.Z.createLock(Un),Gn=new tt;let Kn=!1;const Qn=()=>{Kn||(Wn(),Kn=!0)},Xn=it.decodeAudioData(Yn.buffer,t=>{null===Gn.audioBufferProperty.value&&(Gn.audioBufferProperty.set(t),Qn())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Gn.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Qn()});Xn&&Xn.then(t=>{null===Gn.audioBufferProperty.value&&(Gn.audioBufferProperty.set(t),Qn())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Qn()});const jn=Gn;class Jn extends At.Z{}_defineProperty(Jn,"HOME_SCREEN_SELECTED",new(r=Jn)),_defineProperty(Jn,"DIFFERENT_ICON_SELECTED",new r),_defineProperty(Jn,"enumeration",new ft.Z(r));class $n extends _n{constructor(t,e){super(new Map([[Jn.HOME_SCREEN_SELECTED,zn],[Jn.DIFFERENT_ICON_SELECTED,jn]]),e),t.screenProperty.lazyLink(e=>{e.model===t&&this.playAssociatedSound(Jn.HOME_SCREEN_SELECTED)}),t.selectedScreenProperty.lazyLink(()=>{t.screenProperty.value.model===t&&this.playAssociatedSound(Jn.DIFFERENT_ICON_SELECTED)})}}Ct.Z.register("HomeScreenSoundGenerator",$n);const tr=$n;class er extends R.NBX{constructor(t,e){super((0,N.ZP)()({containerTagName:"section",tagName:"div",labelContent:t,labelTagName:"h2"},e))}}U.register("PDOMSectionNode",er);class ir extends er{constructor(t){super(ie.a11y.simSection.controlAreaStringProperty,t)}}U.register("ControlAreaNode",ir);class sr extends er{constructor(t){super(ie.a11y.simSection.playAreaStringProperty,t)}}U.register("PlayAreaNode",sr);class nr extends R.NBX{constructor(){super(),this.openingSummaryNode=new R.NBX({tagName:"p"});const t=new R.NBX({tagName:"p",innerContent:ie.a11y.simSection.screenSummary.keyboardShortcutsHintStringProperty});this.addChild(this.openingSummaryNode),this.addChild(t),this.pdomOrder=[this.openingSummaryNode,null,t]}setIntroString(t,e,i){this.openingSummaryNode.innerContent=i&&e?B.Z.fillIn(ie.a11y.simSection.screenSummary.multiScreenIntroStringProperty,{screen:e}):B.Z.fillIn(ie.a11y.simSection.screenSummary.singleScreenIntroPatternStringProperty,{sim:t})}}U.register("ScreenSummaryNode",nr);const rr=new D.Z(0,0,1024,618);class ar extends R.NBX{constructor(t){const e=(0,N.ZP)()({layoutBounds:rr.copy(),layerSplit:!0,excludeInvisible:!0,tandem:Y.Z.REQUIRED,visiblePropertyOptions:{phetioState:!1,phetioReadOnly:!0},containerTagName:"article",tagName:"div",screenSummaryContent:null,includePDOMNodes:!0},t);super(e),_defineProperty(this,"_screenSummaryContent",null),this.layoutBounds=e.layoutBounds,this.visibleBoundsProperty=new I.Z(e.layoutBounds),this.pdomTitleNode=new R.NBX({tagName:"h1",focusHighlight:"invisible"}),this.pdomPlayAreaNode=new sr,this.pdomControlAreaNode=new ir,this.pdomScreenSummaryNode=new nr,e.screenSummaryContent&&this.setScreenSummaryContent(e.screenSummaryContent),this.visibleProperty.lazyLink(t=>{t?(this.pdomTitleNode.focusable=!0,this.pdomTitleNode.focus()):this.pdomTitleNode.focusable=!1}),this.pdomTitleNode.addInputListener({blur:()=>{this.pdomTitleNode.focusable=!1}}),this.pdomParentNode=new R.NBX({children:e.includePDOMNodes?[this.pdomTitleNode,this.pdomScreenSummaryNode,this.pdomControlAreaNode,this.pdomPlayAreaNode]:[this.pdomTitleNode]}),this.addChild(this.pdomParentNode),this.pdomParentNode.pdomOrder=e.includePDOMNodes?[this.pdomTitleNode,this.pdomScreenSummaryNode,this.pdomPlayAreaNode,this.pdomControlAreaNode]:[this.pdomTitleNode]}setPDOMOrder(t){throw new Error("should not need to set accessible order on a ScreenView")}setChildren(t){return R.NBX.prototype.setChildren.call(this,t),this.pdomParentNode&&!this.hasChild(this.pdomParentNode)&&(this.addChild(this.pdomParentNode),this.pdomParentNode.moveToBack()),this}getLayoutScale(t){return ar.getLayoutScale(this.layoutBounds,t)}layout(t,e){this.matrix=ar.getLayoutMatrix(this.layoutBounds,t,e),this.visibleBoundsProperty.value=this.parentToLocalBounds(t)}get screenSummaryContent(){return this._screenSummaryContent}set screenSummaryContent(t){this.setScreenSummaryContent(t)}setScreenSummaryContent(t){this._screenSummaryContent&&this.pdomScreenSummaryNode.removeChild(this._screenSummaryContent),this._screenSummaryContent=t,t&&this.pdomScreenSummaryNode.addChild(t)}setScreenSummaryIntroAndTitle(t,e,i,s){this.pdomScreenSummaryNode.setIntroString(t,e,s),this.pdomTitleNode.innerContent=i}getVoicingOverviewContent(){throw new Error("The ScreenView should implement getVoicingOverviewContent if Voicing is enabled")}getVoicingDetailsContent(){throw new Error("The ScreenView should implement getVoicingDetailsContent when the Voicing feature is enabled.")}getVoicingHintContent(){throw new Error("The ScreenView should implement getVoicingHintContent when Voicing is enabled.")}interruptSubtreeInput(){var t,e,i;return null===(t=window.phet)||void 0===t||null===(e=t.joist)||void 0===e||null===(i=e.display)||void 0===i||i.interruptOtherPointers(),super.interruptSubtreeInput()}static getLayoutScale(t,e){return Math.min(e.width/t.width,e.height/t.height)}static getLayoutMatrix(t,e,i){const s=(0,N.ZP)()({verticalAlign:"center"},i),n=e.width,r=e.height,a=ar.getLayoutScale(t,e);let o=0,l=0;return a===n/t.width?(l=r/a-t.height,"center"===s.verticalAlign&&(l/=2)):a===r/t.height&&(o=(n/a-t.width)/2),Re.Z.rowMajor(a,0,o*a+e.left,0,a,l*a+e.top,0,0,1)}step(t){}}_defineProperty(ar,"DEFAULT_LAYOUT_BOUNDS",rr),Ct.Z.register("ScreenView",ar);const or=ar;class lr extends or{constructor(t,e,i){const s=(0,N.ZP)()({layoutBounds:lr.LAYOUT_BOUNDS,warningNode:null,includePDOMNodes:!1},i);super(s);const n=new R.NBX({tagName:"p"});this.addChild(n),this.selectedScreenProperty=e.selectedScreenProperty;const r=new R.xvT(t,{font:new $t({size:52,family:lr.TITLE_FONT_FAMILY}),fill:"white",y:130,maxWidth:this.layoutBounds.width-10});r.localBoundsProperty.link(()=>{r.centerX=this.layoutBounds.centerX}),this.addChild(r);const a=s.tandem.createTandem("buttonGroup");this.screenButtons=_.map(e.simScreens,t=>{const i=new Dn(t,e,{showUnselectedHomeScreenIconFrame:t.showUnselectedHomeScreenIconFrame,descriptionContent:t.descriptionContent,voicingHintResponse:t.descriptionContent,tandem:t.tandem.supplied?a.createTandem(t.tandem.name+"Button"):Y.Z.REQUIRED});return i.voicingNameResponse=t.pdomDisplayNameProperty,i.innerContent=t.pdomDisplayNameProperty,i});let o=60;4===e.simScreens.length&&(o=33),e.simScreens.length>=5&&(o=20),this.homeScreenScreenSummaryIntroProperty=new cn(on.Z.a11y.homeScreenDescriptionPatternStringProperty,{name:t,screens:e.simScreens.length},{tandem:Y.Z.OPT_OUT}),n.innerContent=new cn(on.Z.a11y.homeScreenIntroPatternStringProperty,{description:this.homeScreenScreenSummaryIntroProperty,hint:on.Z.a11y.homeScreenHintStringProperty},{tandem:Y.Z.OPT_OUT}),this.screenButtons.forEach(e=>{e.voicingContextResponse=t});const l=new R.BET({spacing:o,align:"top",maxWidth:this.layoutBounds.width-118,tagName:"ol"});if(e.activeSimScreensProperty.link(t=>{l.children=t.map(t=>_.find(this.screenButtons,e=>e.screen===t))}),this.addChild(new R.DbO(l,{alignBounds:this.layoutBounds,yAlign:"top",topMargin:this.layoutBounds.height/3+20})),Tt.addSoundGenerator(new tr(e,{initialOutputLevel:.5}),{categoryName:"user-interface"}),s.warningNode){const t=s.warningNode;this.addChild(t),t.centerX=this.layoutBounds.centerX,t.bottom=this.layoutBounds.maxY-2}}focusHighlightedScreenButton(){for(let t=0;t{""!==t&&(t+=" "),t+=B.Z.fillIn(on.Z.a11y.homeScreenButtonDetailsPatternStringProperty,{name:e.screen.pdomDisplayNameProperty.value,screenHint:e.screen.descriptionContent})}),t}getVoicingHintContent(){return on.Z.a11y.homeScreenHintStringProperty}}_defineProperty(lr,"LAYOUT_BOUNDS",new D.Z(0,0,768,504)),_defineProperty(lr,"TITLE_FONT_FAMILY","Century Gothic, Futura"),Ct.Z.register("HomeScreenView",lr);const hr=lr,cr=on.Z.a11y.homeStringProperty,dr=R.Ilk.BLACK;class ur extends bn{constructor(t,e,i,s,n){const r=(0,N.ZP)()({backgroundColorProperty:new I.Z(dr),name:cr,createKeyboardHelpNode:()=>new nn,instrumentNameProperty:!1},n);super(()=>new Pn(e(),i,s,r.tandem.createTandem("model")),e=>new hr(t,e,{warningNode:r.warningNode,tandem:r.tandem.createTandem("view")}),r)}}_defineProperty(ur,"BACKGROUND_COLOR",dr),Ct.Z.register("HomeScreen",ur);const pr=ur;class mr{constructor(){this.backgroundColorProperty=new I.Z(R.Ilk.BLACK),this.navigationBarDarkProperty=new E.ZP([this.backgroundColorProperty],t=>t.equals(R.Ilk.BLACK)),this.navigationBarFillProperty=new E.ZP([this.navigationBarDarkProperty],t=>t?R.Ilk.WHITE:R.Ilk.BLACK),this.navigationBarTextFillProperty=new E.ZP([this.navigationBarFillProperty],t=>t.equals(R.Ilk.BLACK)?R.Ilk.WHITE:R.Ilk.BLACK)}reset(){this.backgroundColorProperty.reset()}}Ct.Z.register("LookAndFeel",mr);const gr=mr;var yr=i(7464);class fr{constructor(t){this.windowSize=t,this.samples=new Array(t),this.sampleIndex=0,this.total=0,this.numSamples=0,this.clear()}clear(){this.total=0,this.numSamples=0;for(let t=0;t=this.windowSize}updateRunningAverage(t){return this.numSamples=Math.min(this.windowSize,this.numSamples+1),this.total-=this.samples[this.sampleIndex],this.total+=t,this.samples[this.sampleIndex]=t,this.sampleIndex=(this.sampleIndex+1)%this.windowSize,this.getRunningAverage()}}yr.Z.register("RunningAverage",fr);const Ar=fr;let vr=!1;class br{constructor(t){const e=(0,N.ZP)()({windowSize:2e3,memoryLimit:phet.chipper.queryParameters.memoryLimit},t);this.memoryLimit=1048576*e.memoryLimit,this.runningAverage=new Ar(e.windowSize),this.lastMemory=0}measure(){if(!window.performance||!window.performance.memory||!window.performance.memory.usedJSHeapSize)return;const t=window.performance.memory.usedJSHeapSize;this.lastMemory=t;const e=this.runningAverage.updateRunningAverage(t);if(this.memoryLimit&&this.runningAverage.isSaturated()&&!vr&&e>this.memoryLimit&&t>.5*this.memoryLimit)throw vr=!0,new Error(`Average memory used (${br.memoryString(e)}) is above our memoryLimit (${br.memoryString(this.memoryLimit)}). Current memory: ${br.memoryString(t)}.`)}static memoryString(t){return Math.ceil(t/1048576)+"MB"}}Ct.Z.register("MemoryMonitor",br);const Vr=br,Pr=t=>{const e=_.get(window,t);return void 0!==e?e:null};Yt.Z.register("getGlobal",Pr);const wr=Pr;class Mr extends zi{constructor(t){const e=(0,N.ZP)()({iconLength:16,pathOptions:{stroke:"white",lineWidth:2.5,lineCap:"round"},baseColor:Cn.RED_COLORBLIND,xMargin:4,yMargin:4,innerContent:ie.a11y.closeStringProperty,voicingNameResponse:ie.a11y.closeStringProperty},t),i=(new Ut.bn).moveTo(-e.iconLength/2,-e.iconLength/2).lineTo(e.iconLength/2,e.iconLength/2).moveTo(e.iconLength/2,-e.iconLength/2).lineTo(-e.iconLength/2,e.iconLength/2);e.content=new R.y$t(i,e.pathOptions),super(e)}}U.register("CloseButton",Mr);const Sr="data:audio/mpeg;base64,//swxAAAB5gnMzRhAAEHDWyDNLAAAAAaAQAu7tjAQAAABgMBgNNiBBAWD7ykMQf1g+D5/qBMHwfB/iAEPWCDv+o5wfPg+8EAQBMHz6gQB8Hwfsu2uWDrkw/a9xgUaMwFxxwCLsWS7MHN7VJki8fVT75eTqpn7/Xt1QxW//lJVbnfNuFRTzwrLn/5GVBnKMy/FVs5dTYABARKCMRm//syxAQACHBHWZ2kAAEJi+jxpg1Qlry2AYclVGyMwNoFJ29hqHqa1TRqRMCoetKstcqUzHBxQdCJmVcSJ/EQdEo0FXSoNLGkav/ljqPtEvjAoAE0zuEoM3lMJlLY3Uj65AMeMzQN6QWeLFdCcxLNFy4dBVXVfZ1L+gIki4KPQVBb4dERU6CrsFSoaLVHv/Ev9Hw4ANdAAG7VBBhVdP/7MsQFAAh8YybVowABG49vdx6AAm8ODBg8FDy9pmwIBsHPVGiPMueyERxZdIFnSpkzI8fezb+0z6OJVv7HHw7XBWdXwa6/y34l6sq7uitTjFTEgsFYrFQqFQDAGrQXMbpbb3ZGQWPWvTnyyeKKHgQ/nvlUf/u74oOHp/8v3R/dl/UcSXDz+kMBEHI0p5efiDJqb/64foFiBSWqB2r/+zLEA4AIVDlivZGAAQePKiWmDNhtwTYmBYyxnJdmZwmMtZ8ZjInEMMpo+VFWESqmhsWBoClhKKEhCW5UNPCsFVgqImyWS6KTAhEUrYoO7kaAWIJCwQzbgl5XrFBB27xoQwfnY6kozJtFz0SgICsWM3VIKWs6qr0tgI15/pQomHhblqjycRUCWe1dUOpxFOiJ/ooQC+IEEBlVdh0r//swxAUACGCjMy0kSsDoiCAA95gpQaBI041ceup5PSlsv5QNXMyixFLVkTXWpYUBYy/lEl4YCdWlLoZ//zGlKUBEhV0SiFT+us7WdBXqAbQ2hdxgDfH4RQsI+kgo2RnWVECiCa0TrUSNjalrUVVKyg0yapYqqVlRTNVLFf/2P/1qVadsTFKlitVMQU1FMy45OS4zVVVVVVVVVVVV",Tr=Q(it,Sr),Er=K.Z.createLock(Sr),xr=new tt;let Cr=!1;const Ir=()=>{Cr||(Er(),Cr=!0)},qr=it.decodeAudioData(Tr.buffer,t=>{null===xr.audioBufferProperty.value&&(xr.audioBufferProperty.set(t),Ir())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),xr.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Ir()});qr&&qr.then(t=>{null===xr.audioBufferProperty.value&&(xr.audioBufferProperty.set(t),Ir())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Ir()});const kr=new Je(xr,{soundClipOptions:{initialOutputLevel:.4},soundManagerOptions:{categoryName:"user-interface"}});j.register("generalCloseSoundPlayer",kr);const Dr=kr,Lr="data:audio/mpeg;base64,//swxAAABswbPzQxABEQFyzDMlAAAAGoGRIdz0AAARQAAAAAMCd5QEAxBA4sPlz/BAMfw+ooc8EA/EAYKAh/qBBYfwfD4jB/4nD98ZXetEKIxIqnuursF7pTGkY4dNYcaZhOjzgxDNndb75ggdCsIvV3qoeM9HIX215a6Hftuc5FhwFRhvuJuhxbMPp+ir0KlAaCTHVtZuCsLISS//syxAYACGhJXR2jABEVIGmw8YpieZwGg6y5/p6bf69uls4kMS9HVvrXl8hI5WPBY8FawqGh3PYlLA0HQm6ZHvUe/4UB4ChNzls1AZIAAxJNQMBOy4KAeSsL0QgRcxFInzpyhsQ6tvdvaM160ZnbY/2bY19dTlJVJmhrQpT/Vf0eVjfzG////6PMYzmtqJdg0WqADvRwaGDBgBO5T//7MsQFgAkEZSA1swABDRYvdx5QAhmAEZHdFc2HHLBy/LcmfqWvq1yftVsQSJAxzSi25i5w6qqvMy/cjgNSoKu2Q1LHp1S4NCJQsHfLUSINPxK6oxocyIhmMRkMhQAQBuyhLerW2u5zoV4af2nULcHzwOiPxQjFU/nvIyflMKARabfnQqGI/v/FAIV6UJnPAgAca//9NZUgFEnVWuP/+zLEA4AIVL1vnYQAEQkIajDMpMja7T9a7DL+uzSEg2RRajlNmUzFPCBtL7Uyoa/iVlabnj1+Pi9f61X5WuJ9V1XhkOmtYltLGPI1//8s/0PMAKmLuWQPy0Hrh0Uy4C5MCaWoC5bwOjrQpVOQIn9JNDksr2zEBLvAp3LCI8Is9BX1FTsS50j5Us8OCIqEg73ZZ9QByyIAiddlUPU0//swxAUCSEyXLMywatDDBOHA8zBIRfBtlFDU3P7EItHsWE51WgaTVpJLPMzOMYE1qUSth4pRSd1WkZLqqrnGPUobBm4oDUDHol//+rJBUlwL0rYuAoOSuFITEsfTp5a46IhKRBQ6FQkBQCWJESR0KhIeNASKGnsJgJCf///1VUxBTUUzLjk5LjNVVVVVVVVVVVVVVVVVVVVVVVVV",_r=Q(it,Lr),Or=K.Z.createLock(Lr),Zr=new tt;let Nr=!1;const Br=()=>{Nr||(Or(),Nr=!0)},Rr=it.decodeAudioData(_r.buffer,t=>{null===Zr.audioBufferProperty.value&&(Zr.audioBufferProperty.set(t),Br())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Zr.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Br()});Rr&&Rr.then(t=>{null===Zr.audioBufferProperty.value&&(Zr.audioBufferProperty.set(t),Br())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Br()});const Fr=new Je(Zr,{soundClipOptions:{initialOutputLevel:.4},soundManagerOptions:{categoryName:"user-interface"}});j.register("generalOpenSoundPlayer",Fr);const Hr=Fr;const zr=new class{play(){}stop(){}};j.register("nullSoundPlayer",zr);const Ur=zr;var Yr=i(4974);const Wr=new rn.Z("DynamicMarkerIO",{supertype:rn.Z.ObjectIO,applyState:_.noop,toStateObject:()=>({}),isValidValue:_.stubTrue,documentation:"PhET-iO Type used as a place holder for dynamic elements to be created when set for state."});Yr.Z.register("DynamicMarkerIO",Wr);const Gr=Wr,Kr=t=>{const e=t.split("."),i=e.pop(),s=_.get(window,e);return s?s[i].bind(s):null};Yt.Z.register("gracefulBind",Kr);const Qr=Kr,Xr=(t,e)=>class extends t{constructor(){for(var t,i=arguments.length,s=new Array(i),n=0;n{t?l.showPopup(this.popupParent,l.isModal):l.hidePopup(this.popupParent,l.isModal)})}layout(t){this.layoutBounds&&(this.popupParent.matrix=or.getLayoutMatrix(this.layoutBounds,t))}shouldShowPopup(){return!(this.isModal&&this.disableModals)}show(){this.shouldShowPopup()&&(this._nodeToFocusOnHide=this._focusOnHideNode||R.IKS.pdomFocusedNode,this.isShowingProperty.value=!0,this._focusOnShowNode&&this._focusOnShowNode.focusable&&this._focusOnShowNode.focus())}hide(){var t;this.interruptSubtreeInput(),this.isShowingProperty.value=!1,this._nodeToFocusOnHide&&this._nodeToFocusOnHide.focusable&&null!==(t=this._nodeToFocusOnHide.instances[0])&&void 0!==t&&t.visible&&this._nodeToFocusOnHide.focus()}get focusOnHideNode(){return this._focusOnHideNode}dispose(){this.hide(),this.isShowingProperty.dispose(),super.dispose()}};class jr extends R.NBX{constructor(t,e){const i=(0,N.ZP)()({children:[t]},e);super(i),this.show=i.show,this.hide=i.hide,this.layout=i.layout}}oe.register("Popupable",Xr);const Jr=Xr,$r=(0,te.Z)("SUN");oe.register("SunStrings",$r);const ta=$r;class ea extends(Jr(he,1)){constructor(t,e){var i;const s=(0,N.ZP)()({xSpacing:10,ySpacing:10,topMargin:15,bottomMargin:15,leftMargin:null,maxWidthMargin:12,maxHeightMargin:12,closeButtonLength:18.2,closeButtonTopMargin:10,closeButtonRightMargin:10,title:null,titleAlign:"center",addAriaLabelledByFromTitle:!0,layoutStrategy:ia,closeButtonListener:()=>this.hide(),closeButtonColor:"black",closeButtonTouchAreaXDilation:0,closeButtonTouchAreaYDilation:0,closeButtonMouseAreaXDilation:0,closeButtonMouseAreaYDilation:0,closeButtonVoicingDialogTitle:null,closeButtonLastInPDOM:!1,openedSoundPlayer:Hr,closedSoundPlayer:Dr,sim:wr("phet.joist.sim"),showCallback:null,hideCallback:null,layoutBounds:or.DEFAULT_LAYOUT_BOUNDS,focusOnShowNode:null,cornerRadius:10,resize:!0,fill:"white",stroke:"black",backgroundPickable:!0,maxHeight:null,maxWidth:null,tandemNameSuffix:["Dialog",Y.i],phetioType:ea.DialogIO,phetioState:!0,phetioVisiblePropertyInstrumented:!1,tagName:"div",ariaRole:"dialog"},e);s.xMargin=0,s.yMargin=0,null===s.leftMargin&&(s.leftMargin=s.xSpacing+s.closeButtonLength+s.closeButtonRightMargin),!s.maxWidth&&s.layoutBounds&&(s.maxWidth=sa(s.layoutBounds.width,s.maxWidthMargin)),!s.maxHeight&&s.layoutBounds&&(s.maxHeight=sa(s.layoutBounds.height,s.maxHeightMargin));const n=new ci.Z({priority:ci.Z.MEDIUM_PRIORITY,voicingCanAnnounceProperties:[R.LY3.voicingFullyEnabledProperty]}),r=new Mr({iconLength:s.closeButtonLength,baseColor:"transparent",buttonAppearanceStrategy:Bi.FlatAppearanceStrategy,xMargin:0,yMargin:0,listener:()=>{r.voicingSpeakContextResponse({utterance:n}),s.closeButtonListener()},pathOptions:{stroke:s.closeButtonColor},tandem:null===(i=s.tandem)||void 0===i?void 0:i.createTandem("closeButton"),phetioState:!1,phetioVisiblePropertyInstrumented:!1,phetioEnabledPropertyInstrumented:!1,soundPlayer:Ur,tagName:"button",innerContent:ta.a11y.closeStringProperty,voicingContextResponse:ta.a11y.closedStringProperty});let a;if(s.closeButtonVoicingDialogTitle){const t="string"==typeof s.closeButtonVoicingDialogTitle?new X.Z(s.closeButtonVoicingDialogTitle):s.closeButtonVoicingDialogTitle;a=r.voicingNameResponse=new cn(ta.a11y.titleClosePatternStringProperty,{title:t},{tandem:Y.Z.OPT_OUT})}r.touchArea=r.bounds.dilatedXY(s.closeButtonTouchAreaXDilation,s.closeButtonTouchAreaYDilation),r.mouseArea=r.bounds.dilatedXY(s.closeButtonMouseAreaXDilation,s.closeButtonMouseAreaYDilation);let o=[s.title,t];s.closeButtonLastInPDOM?o.push(r):o.unshift(r),o=o.filter(t=>null!=t),s.focusOnShowNode=s.focusOnShowNode?s.focusOnShowNode:o[0].focusable?o[0]:r;const l=new R.SHm({children:s.title?[s.title,t]:[t],spacing:s.ySpacing,align:s.titleAlign}),h=new R.DbO(l,{topMargin:s.topMargin,bottomMargin:s.bottomMargin,leftMargin:s.leftMargin}),c=new R.DbO(r,{topMargin:s.closeButtonTopMargin,rightMargin:s.closeButtonRightMargin}),d=new R.BET({children:[h,c],spacing:s.xSpacing,align:"top"});super(d,s),this.isShowingProperty.lazyLink(t=>{t?(s.openedSoundPlayer.play(),s.showCallback&&s.showCallback()):(s.closedSoundPlayer.play(),s.hideCallback&&s.hideCallback())}),this.sim=s.sim,this.closeButton=r;const u=Vt.Z.multilink([this.sim.boundsProperty,this.sim.screenBoundsProperty,this.sim.scaleProperty,this.sim.selectedScreenProperty,this.isShowingProperty,this.localBoundsProperty],(t,e,i)=>{t&&e&&i&&s.layoutStrategy(this,t,e,i)});this.pdomOrder=o,s.title&&s.title.tagName&&s.addAriaLabelledByFromTitle&&this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:s.title,otherElementName:R.Grz.PRIMARY_SIBLING});const p=new R.F3H({keys:["escape","tab","shift+tab"],callback:(t,e)=>{const i=t.domEvent;if("escape"===e)i.preventDefault(),this.hide();else if(("tab"===e||"shift+tab"===e)&&R.ITT.isFullScreen()){const t=R.IKS.pdomFocus.trail.getUniqueId(),e=R.eDZ.getNextFocusable().id===t,s=R.eDZ.getPreviousFocusable().id===t;e&&s&&i.preventDefault()}}});this.addInputListener(p),this.disposeDialog=()=>{u.dispose(),c.dispose(),this.removeInputListener(p),p.dispose(),a&&a.dispose(),r.dispose(),n.dispose(),l.dispose(),d.removeAllChildren(),d.detach()}}dispose(){this.disposeDialog(),super.dispose()}}function ia(t,e,i,s){t.layoutBounds&&(t.center=t.layoutBounds.center)}function sa(t,e){return t>2*e?t-2*e:t}a=ea,_defineProperty(ea,"DialogIO",new rn.Z("DialogIO",{valueType:a,supertype:Gr})),oe.register("Dialog",ea);var na=i(1091);class ra extends Y.Z{constructor(t,e,i){super(t,e,(0,N.ZP)()({isValidTandemName:t=>Y.Z.getRegexFromCharacterClass(na.Z.BASE_DYNAMIC_TANDEM_CHARACTER_CLASS).test(t)},i))}}Yr.Z.register("DynamicTandem",ra);const aa=ra;i(1773);class oa extends G.Z{constructor(t,e,i){const s=(0,N.ZP)()({phetioState:!1,supportsDynamicState:!0,containerSuffix:"Container",phetioDynamicElementName:void 0},i);if(Array.isArray(e),s.tandem&&!s.phetioDynamicElementName&&(s.phetioDynamicElementName=s.tandem.name.slice(0,s.tandem.name.length-s.containerSuffix.length)),super(s),this.supportsDynamicState=s.supportsDynamicState,this.phetioDynamicElementName=s.phetioDynamicElementName,this.createElement=t,this.defaultArguments=e,this._archetype=this.createArchetype(),this.elementCreatedEmitter=new x.Z({parameters:[{valueType:G.Z,phetioType:s.phetioType.parameterTypes[0],name:"element"},{name:"phetioID",phetioType:se.Z}],tandem:s.tandem.createTandem("elementCreatedEmitter"),phetioDocumentation:"Emitter that fires whenever a new dynamic element is added to the container."}),this.elementDisposedEmitter=new x.Z({parameters:[{valueType:G.Z,phetioType:s.phetioType.parameterTypes[0],name:"element"},{name:"phetioID",phetioType:se.Z}],tandem:s.tandem.createTandem("elementDisposedEmitter"),phetioDocumentation:"Emitter that fires whenever a dynamic element is removed from the container."}),Y.Z.PHET_IO_ENABLED&&(this.elementCreatedEmitter.addListener(t=>this.createdEventListener(t)),this.elementDisposedEmitter.addListener(t=>this.disposedEventListener(t))),this.notificationsDeferred=!1,this.deferredCreations=[],this.deferredDisposals=[],Y.Z.PHET_IO_ENABLED&&this.supportsDynamicState&&!this.phetioIsArchetype){const t=phet.phetio.phetioEngine.phetioStateEngine;t.clearDynamicElementsEmitter.addListener((t,e)=>{this.tandem.hasAncestor(e)&&(this.clear({phetioState:t}),this.setNotificationsDeferred(!0))}),t.undeferEmitter.addListener(()=>{this.notificationsDeferred&&this.setNotificationsDeferred(!1)}),t.addSetStateHelper((t,e)=>{let i=!1,s=0;for(;this.deferredCreations.length>0;){if(s>200)throw new Error("Too many iterations in deferred creations, stillToSetIDs = "+e.join(", "));const t=this.deferredCreations[0];this.stateSetOnAllChildrenOfDynamicElement(t.tandem.phetioID,e)&&(this.notifyElementCreatedWhileDeferred(t),i=!0),s++}return i})}}stateSetOnAllChildrenOfDynamicElement(t,e){for(let i=0;i0;)this.notifyElementCreatedWhileDeferred(this.deferredCreations[0]);for(;this.deferredDisposals.length>0;)this.notifyElementDisposedWhileDeferred(this.deferredDisposals[0])}this.notificationsDeferred=t}get archetype(){return function(t){if(null===t)throw new Error("archetype should exist");return t}(this._archetype)}getMetadata(t){const e=super.getMetadata(t);return(0,bi.Z)({phetioDynamicElementName:this.phetioDynamicElementName},e)}}Yr.Z.register("PhetioDynamicElementContainer",oa);const la=oa;var ha=i(7374);const ca=phetio.PhetioIDUtils.CAPSULE_SUFFIX,da=new ha.Z;class ua extends la{constructor(t,e,i){const s=(0,N.ZP)()({containerSuffix:ca,disposeOnClear:!0,disposeCreatedOnStateSet:!1},i);super(t,e,s),this.element=null,this.disposeOnClear=s.disposeOnClear,this.disposeCreatedOnStateSet=s.disposeCreatedOnStateSet}disposeElement(){super.disposeElement(this.element),this.element=null}hasElement(){return null!==this.element}getElement(){if(!this.element){for(var t=arguments.length,e=new Array(t),i=0;i1&&void 0!==arguments[1]&&arguments[1];return this.element=this.createDynamicElement(this.phetioDynamicElementName,t,Y.Z.PHET_IO_ENABLED?this.phetioType.parameterTypes[0]:null),this.notifyElementCreated(this.element),this.element}}o=ua,_defineProperty(ua,"PhetioCapsuleIO",t=>(da.has(t)||da.set(t,new rn.Z(`PhetioCapsuleIO<${t.typeName}>`,{valueType:o,documentation:"An array that sends notifications when its values have changed.",parameterTypes:[t],metadataDefaults:{phetioDynamicElementName:null},addChildElement(e,i,s){const n=t.stateObjectToCreateElementArguments(s);return e.create(n,!0)}})),da.get(t))),Yr.Z.register("PhetioCapsule",ua);const pa=ua,ma=new Image,ga=K.Z.createLock(ma);ma.onload=ga,ma.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAAA+CAYAAABuv5bfAAAACXBIWXMAABhMAAAYTAGIN/zbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxlJREFUeNrsW8tx2zAQBWPfpWNupiswc8oxcgVhbr6ZJbADswSWoBJQAtwBVUHoDqhbcmIWnuVEhpfSYkhKILU7s8MR/CgsnoH9AFDUtq1akkRRVMDj5aDpEcZoxuzji1qerKfuYImkJULa8JlWj+4CluTTwJ/F8Ph92Abji2Sm9RNmZ5h2mndT9HU7c6Ks/9qg/iQgZpJ+57I8cel1JNnnD8Zr9zC++qpmGhBlCcqQqDuPV/eg+RSEdY4ySAUprXmeWlmybASd0rYglycVBY/MKIOqJ5tZM1mexZG/vWKUNEBSdZF/aqAzrYHHykkdCrBVh2DfbYCEpQ5hVtJzLb25Jrcb5/NbSIR9mmkY4jcXtunJ+fwHt3suKfqD/0SflmC4bkV71XSpjBUb3hshhZ0Hrm8wifyuRDjyFfRvhAyK8GUnpI2Yp41+GDHTrScbtV/mkKcFL0KakBZY7Yl78ImzF2d6sG5VUQG2YeBqqmTCbe3DU6aG2uHALaX4lI3UWPps7BMqidsQm4JUxZAzNw81gcsJXEPgkh4bEwLbMG3UTBsLqm+f5flAtFGn2QkTR7WtmLih7689+hGfJoFgBqRRB6/VyG1UHzYw7J22vaKvG3BtPE/0VP/PG49GMGjLITrpUxHMbl0D7pvjS6jvqzF6xqeiLNfGs5GG4dgwsVxcxcTVinGRxcdG8WkSCIS06yYNnPEWtGVoSrybEriSKoPsmaeDq3rsqRxcg2WUiyvdvhXv8swoM+2ZiUsGtMVEVv/ArFBWbt15pB9ZnuLTFkbafuFcsLeFfCqCpMdncMqWkkg6ayopBkf9yByMW030JdXZALsHVwSsrHyu1YT4NAkEQtoixOdgpSQSxdz1LYDL0PmGIlwbt4Dbsv204h2sULiCwBkV1k0fro1mioMVEfFpQlqYgQDkFxEISsrxgqYBjZFrox6dNLzDrxm4Sk1wAjSmDLVRlqeQJqTNLhBkxDWoaxSSA7mo7C9vdnnuhAcvsSXYe74iv0bhqd1MjbvCNBNCWIRlH36OffAj+1hW4CexiXDZ3VT6J8AAo7gFqk0pOnsAAAAASUVORK5CYII=";const ya=ma,fa=new Image,Aa=K.Z.createLock(fa);fa.onload=Aa,fa.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAAA+CAYAAABuv5bfAAAACXBIWXMAABhMAAAYTAGIN/zbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAttJREFUeNrsW91RwzAMdnu8txsQJqiZoGECyhtvlAmaDSgbZIRuQEYIG4QJCBukb7yFiHPvgisV+fJTJ5XudL24MpI/9Ge7mZRlqUZG24pfas93FadtKpiq8dG8awVjBE0LaM09LW9bwWRkOS2o+NNeo3jaaQ9LrLGPLhRdjSB/hYbvke/TLpQOKTyDGkjwuWTMuekip/nuaQDQ2nxeO8zbVxx1AZjvoMUVbxznQA7bGS66MszX8MSqIOVRqeGkK88aiqdtT3z3bgACoLJzGOerp0Fozayw2yItxVnIR09bWYAdxnJfDPSxuQ2t5y+fAMM8LUSM7pserefvf3JcH5TU8+chp2lTphdK6FQBgjRRAGiBQXEmuLD6wHBqXF8A4xFEYgSeVgoWbt4moLXYcsBlxERYvQ6lTxuspwkJaOfbe87V8fVYytwKZQo/37LlcmLLpNXfW6aCOOEIDP9nI7YWysZjKnEKoahanCFyESIXI3IJIhchcgUipwkbNSJbMG1MmDZuMcUu4bkg/mOYV3DksLEZU67p/LmDHslpUggGABp28Zq1PIbpgMKwt8b2RMHg2thb9QytfEVVsEgdH0unxBnVrZVLMgI0bVVFqspybewNtELxb6y5ctwFUSA1sVFymhQCAe2yQdvBBoLBK2TuCpGLiW1QYcllJ/JhXa5AtlDK6LF1L/sC7YkppxuMBUhXv2DuUGYEaFrCU3La+EHbjxwL9k+zXJpbTeQMTsMaI01nTjTFd8zF3CInE1hju25gd2PQuF35UHcTktOkEAhowyeXnBYjjWKE5Ja1YV+Ia+POcKugbYjtEWbQ0iPQXGzcSXhKThPQLqYQPCCFICYS78qjNXJtTLoALWH+4Uyd6aUIB2pko4SngCagDa4QQPMXCjw4BvJDZXf6gvD8EBycKAVPg37lTbBgERz566npvZ4FDxZgv+/F11+SDRX/PP3SKDM7ixwefgQYAIqW2LtFfuBbAAAAAElFTkSuQmCC";const va=fa;class ba extends R.BET{constructor(t,e,i){const s=(0,N.ZP)()({fill:"white",highlightWidth:1,pickable:!1},i);s.spacing=t;const n=s.fill,r=R.Ilk.toColor(n).withAlpha(0),a={fill:new R.oas(0,0,0,e).addColorStop(0,r).addColorStop(.5,n).addColorStop(1,r)},o=new R.AeJ(0,0,s.highlightWidth,e,a),l=new R.AeJ(0,0,s.highlightWidth,e,a);s.children=[o,l],super(s)}}Ct.Z.register("HighlightNode",ba);const Va=ba;class Pa extends((0,R.CHP)(R.NBX)){constructor(t,e,i){const s=(0,N.ZP)()({cursor:"pointer",listener:null,highlightExtensionWidth:0,highlightExtensionHeight:0,highlightCenterOffsetX:0,highlightCenterOffsetY:0,pointerAreaDilationX:0,pointerAreaDilationY:0,enabledPropertyOptions:{phetioFeatured:!1},disabledOpacity:R.iaM.DISABLED_OPACITY,tagName:"button"},i),n=function(e){return new Va(t.width+s.highlightExtensionWidth,t.height+s.highlightExtensionHeight,{centerX:t.centerX+s.highlightCenterOffsetX,centerY:t.centerY+s.highlightCenterOffsetY,fill:e,pickable:!1})},r=n("white"),a=n("black");s.children=[t,r,a],super(s),this.buttonModel=new _i(s);const o=new qi(this.buttonModel);this.interactionStateProperty=o,Vt.Z.multilink([o,e,this.buttonModel.enabledProperty],(t,e,i)=>{const s=!e.equals(R.Ilk.BLACK);r.visible=!s&&i&&(t===Ii.OVER||t===Ii.PRESSED),a.visible=s&&i&&(t===Ii.OVER||t===Ii.PRESSED)}),this.buttonModel.enabledProperty.link(t=>{this.cursor=t?s.cursor:null}),this._pressListener=this.buttonModel.createPressListener({tandem:s.tandem.createTandem("pressListener")}),this.addInputListener(this._pressListener),this.mouseArea=this.touchArea=Ut.bn.bounds(this.bounds.dilatedXY(s.pointerAreaDilationX,s.pointerAreaDilationY));const l=R.Nqr.getOuterLineWidthFromNode(this);this.focusHighlight=Ut.bn.bounds(this.bounds.shiftedY(-l))}isPDOMClicking(){return this._pressListener.pdomClickingProperty.get()}}Ct.Z.register("JoistButton",Pa);const wa=on.Z.a11y.keyboardHelp.tabToGetStartedStringProperty;class Ma extends ea{constructor(t,e,i){const s=(0,N.ZP)()({titleAlign:"center",fill:"rgb( 214, 237, 249 )",ySpacing:15,phetioReadOnly:!0,phetioDynamicElement:!0,closeButtonVoicingDialogTitle:on.Z.keyboardShortcuts.titleStringProperty,isDisposable:!1,addAriaLabelledByFromTitle:!1},i),n=new R.NBX({tagName:"div"}),r=s.tandem.createTandem("content"),a=[];t.forEach(t=>{const e=t.tandem.supplied?r.createTandem(t.tandem.name):Y.Z.REQUIRED,i=t.createKeyboardHelpNode(e);a.push(i)});const o=new R.JxC(on.Z.keyboardShortcuts.titleStringProperty,{font:new $t({weight:"bold",size:24}),maxWidth:670,tagName:"h1",innerContent:on.Z.a11y.keyboardHelp.keyboardShortcutsStringProperty}),l=new Sa,h=new R.SHm({children:[o,l],spacing:5,tagName:"div"});s.title=h,super(n,s),Vt.Z.multilink([e,this.isShowingProperty],(e,i)=>{const s=a[t.indexOf(e)];i&&(n.children=[s])}),this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:o,otherElementName:R.Grz.PRIMARY_SIBLING})}}class Sa extends((0,R.KwY)(R.NBX)){constructor(t){const e=(0,N.ZP)()({readingBlockNameResponse:wa},t);super();const i=Zs.tab(),s=$s.labelWithIcon(on.Z.keyboardShortcuts.toGetStartedStringProperty,i,{labelInnerContent:wa,iconOptions:{tagName:"p"}}),n=new R.BET({children:[s.icon,s.label],spacing:4});this.addChild(n),this.mutate(e)}}Ct.Z.register("KeyboardHelpDialog",Ma);const Ta=on.Z.a11y.keyboardHelp.keyboardShortcutsStringProperty;class Ea extends Pa{constructor(t,e,i,s){const n=(0,N.ZP)()({highlightExtensionWidth:8.6,highlightExtensionHeight:10,highlightCenterOffsetY:2,visiblePropertyOptions:{phetioFeatured:!0},innerContent:Ta,voicingNameResponse:Ta},s);let r=null;n.listener=()=>{r.getElement().show()};const a=new R.Eep(va,{scale:17.085/va.height,pickable:!1});super(a,i,n),r=new pa(i=>new Ma(t,e,{tandem:i,focusOnHideNode:this}),[],{tandem:n.tandem.createTandem("keyboardHelpDialogCapsule"),phetioType:pa.PhetioCapsuleIO(ea.DialogIO),disposeOnClear:!1}),i.link(t=>{a.image=t.equals(R.Ilk.BLACK)?va:ya})}}Ct.Z.register("KeyboardHelpButton",Ea);const xa=Ea;var Ca=i(6692);class Ia extends ci.Z{constructor(t){const e=(0,N.ZP)()({alertStableDelay:500},t);super(e)}}Ca.Z.register("ActivationUtterance",Ia);const qa=Math.PI/2.7,ka=-1*qa;class Da extends Pa{constructor(t,e,i){const s=(0,N.ZP)()({highlightExtensionWidth:8.6,highlightExtensionHeight:10,highlightCenterOffsetY:0,enabled:!(phet.chipper.isFuzzEnabled()&&phet.chipper.queryParameters.supportsVoicing),visiblePropertyOptions:{phetioFeatured:!0},phetioFeatured:!0,innerContent:on.Z.a11y.soundToggle.labelStringProperty,voicingNameResponse:on.Z.a11y.soundToggle.labelStringProperty},i);s.listener=()=>t.set(!t.get());const n=new R.NBX,r=new R.NBX,a=new R.AeJ(0,0,24.86,22,{fill:"transparent"});n.addChild(a),r.addChild(a);const o=new R.y$t((new Ut.bn).moveTo(9.8252,0).lineTo(4.519592,(16.94-5.929)/2).lineTo(1,(16.94-5.929)/2).arc(1,(16.94-5.929)/2+1,1,1.5*Math.PI,Math.PI,!0).lineToRelative(0,5.929-2).arc(1,10.4345,1,Math.PI,.5*Math.PI,!0).lineToRelative(4.519592-1,0).lineTo(9.8252,16.94).lineTo(9.8252,0).close(),{stroke:"black",lineWidth:1.5,lineJoin:"round",centerY:r.centerY,left:0});n.addChild(o),r.addChild(o);const l=new R.y$t((new Ut.bn).moveTo(0,0).lineTo(16.94*.52,16.94*.52).moveTo(0,16.94*.52).lineTo(16.94*.52,0),{stroke:"black",lineWidth:1.7,lineCap:"round",right:r.width,centerY:r.centerY});r.addChild(l);const h=new R.y$t((new Ut.bn).arc(0,0,10.6722,qa,ka,!0).moveToPoint(new Ht.Z(6.776,0).rotated(qa)).arc(0,0,6.776,qa,ka,!0).moveToPoint(new Ht.Z(6.776-16.94*.23,0).rotated(qa)).arc(0,0,6.776-16.94*.23,qa,ka,!0),{stroke:"black",lineWidth:1.7,lineCap:"round",right:n.width,centerY:n.centerY});n.addChild(h),super(new Ui(Lt.anyOutputEnabledProperty,[{value:!0,createNode:()=>n},{value:!1,createNode:()=>r}],{maxHeight:18.7}),e,s),this.addLinkedElement(t,{tandemName:"property"});const c=new Ia;t.lazyLink(t=>{s.supportsAudioPreferences&&(this.setPDOMAttribute("aria-pressed",t),c.alert=t?on.Z.a11y.soundToggle.alert.simSoundOnStringProperty:on.Z.a11y.soundToggle.alert.simSoundOffStringProperty,this.alertDescriptionUtterance(c),R.LY3.voicingFullyEnabledProperty.value&&R.LY3.speakIgnoringEnabled(c))}),this.setPDOMAttribute("aria-pressed",t.get()),Lt.anySubcomponentEnabledProperty.link(t=>{this.enabled=t}),e.link(t=>{const e=t.equals(R.Ilk.BLACK)?"white":"black";o.stroke=e,l.stroke=e,h.stroke=e})}}Ct.Z.register("NavigationBarAudioToggleButton",Da);const La=Da,_a=new Image,Oa=K.Z.createLock(_a);_a.onload=Oa,_a.src="data:image/png;base64,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";const Za=_a,Na=new Image,Ba=K.Z.createLock(Na);Na.onload=Ba,Na.src="data:image/png;base64,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";const Ra=Na;class Fa extends R.zch{constructor(t){const e=(0,N.ZP)()({headingControl:!1,labelSpacing:10,valueLabelXSpacing:8,ySpacing:5,nestedContent:[],grow:1,layoutOptions:{stretch:!(null!=t&&t.headingControl)}},t);super(e),e.controlNode&&(this.enabledProperty.link(t=>{e.controlNode.enabled=t}),e.controlNode.layoutOptions={row:0,column:1,xAlign:"right"},this.addChild(e.controlNode)),e.labelNode&&(e.labelNode.layoutOptions={row:0,column:0,xAlign:"left",rightMargin:e.labelSpacing},this.addChild(e.labelNode)),e.descriptionNode&&e.labelNode?(e.descriptionNode.layoutOptions={row:1,column:0,horizontalSpan:2,xAlign:"left",stretch:!0,minContentWidth:480},this.addChild(e.descriptionNode)):e.descriptionNode&&(e.descriptionNode.layoutOptions={row:0,column:0,xAlign:"left"},this.addChild(e.descriptionNode)),this.disabledOpacity=R.iaM.DISABLED_OPACITY}}Ct.Z.register("PreferencesControl",Fa);const Ha=Fa,za="data:audio/mpeg;base64,//swxAAAA8ADNZQRgDGHni23MIAC1bbaiNgdgM+wEHBiogUAbxA4MT+////gh//8Mf4YzNI0kYiNYjDZaLJCYAZZgbhKQTNx5Vp34WpSu/bhLvzLYwWSHokUhx0EBR4FA/Mp8sOz3gcWfL9YqH7kKIkzd9fLvSkB201St7337UyHKf7X9Pf//Ue9/6irjy/l3s5gqCo1lPVlVSBj//syxAOACFB7hZyUgDEUCu008ZpKfZq0pMq3UhCDwXYfD+n5X+IUp5YiEYMB0CgRCwfQF0AmAUjAlZVJuE4ZaTbKK0AIJCxUAwrWLf////l1oFP9Yo2m1QI89G8bsISUXc8TjPs5pDlVUzUq1VJLFYcIlvdQS0P1lohZFx5hFpVDCPaSKlRsdgIslDzfeqxt8iVd+v6aClA3ydRso//7MsQDgAhYV13sGEqhEJFpcZMJqE0gGS8ZU3ekWmMRbO4kqZnMgAHAFiPmBRdQFgRZHZrTNwZcRTYLKU4qxy3ieKohBwSNif5UwYc4W/ywiEYAtIWoggTByJ+YPcFxgdYE5MVlD41ZJSYBdPF8gQIZtZPy/cZWxBR5Bm7WwZdGkolTRTQXLpSOcoUvf3in/dyBZwzRXAF3ieJEAxD/+zLEBAAIkJlXlYaAARIWb3MegACpLHqwdgk0mfJ913UT0LiL5W+nIh+DsKATQJ4F0E4PF8c7FxaaaCZ80SpqZbfX7J/99fN0p/Onf+zSaVmKSAKAgKAgMAAAAAEBCVMt4sfsyRdHO3PTH0SBFi4jhEgNBinEXeeDSKeby9zBMKun3/pKZ6L//H/6T/p/82bkkAyj/5m7WOWuRFpI//swxAOACDgvi7zDADEQkW289AoWMABHxkZCUEwfjodDiYmpiWw9NWjIAhJEFkFSo4GnxwiDsrBoGn/g0DT64Kgq9BUFQWBo3WFDf4B//ljZRUwaFSyREkApYqDmkM8qYgtylZx9ZL7knEF4rFKLgqfa4GHahJbD5q+ZdeybNpd1LOzqJVWdmJgs9uNUoK61I9Pf1runDP5da2kA//syxAQACHita6eYTzEMFSdkzAigHGL2uEMDLL6xtFmUuujunUP9ODzjFKbt2J5yt77uOmiJWXQ6GAbIjvu17WVn/dDEccwhLJLW6dXU/dcsEAvP8BAST22Qg8WJEX2Cxxs84/BnOt15rGZwVs2FEtKWVPRHZitdbuySkumtHlb0M/U5QwcQRYSLI91T/epbUqPPogEGy4Ldq0ABj//7MsQEgAfcrTesFG1owIRiqMyYmD9U8MBcisSsURTFgBykNZkSUjL+oDB8VGCT310AYfb2ZlVRgEvbASNp8ptD8y7lYYlvxtFsCgAAYAQABAzjzrwIrmT2cuLIZOOOhHHQELC2rOtlix709VXnYiej4dx2rz2Vd/xL6QQAAHCikADAVHicCJrfesiRcXCNaoKuuneW+r1dXxFDvZf/+zLEEQBFcCEJoLHi8JuFVvDMGGz/vqeWI50KHuGnJHLWAAQIl4qgkpSn8oGq1rUCoSk3UAhEYtCgKWWwwIDo////4sLVTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Ua=Q(it,za),Ya=K.Z.createLock(za),Wa=new tt;let Ga=!1;const Ka=()=>{Ga||(Ya(),Ga=!0)},Qa=it.decodeAudioData(Ua.buffer,t=>{null===Wa.audioBufferProperty.value&&(Wa.audioBufferProperty.set(t),Ka())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Wa.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Ka()});Qa&&Qa.then(t=>{null===Wa.audioBufferProperty.value&&(Wa.audioBufferProperty.set(t),Ka())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Ka()});const Xa=new Je(Wa,{soundClipOptions:{initialOutputLevel:.2},soundManagerOptions:{categoryName:"user-interface"}});j.register("switchToLeftSoundPlayer",Xa);const ja=Xa,Ja="data:audio/mpeg;base64,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",$a=Q(it,Ja),to=K.Z.createLock(Ja),eo=new tt;let io=!1;const so=()=>{io||(to(),io=!0)},no=it.decodeAudioData($a.buffer,t=>{null===eo.audioBufferProperty.value&&(eo.audioBufferProperty.set(t),so())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),eo.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),so()});no&&no.then(t=>{null===eo.audioBufferProperty.value&&(eo.audioBufferProperty.set(t),so())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),so()});const ro=new Je(eo,{soundClipOptions:{initialOutputLevel:.2},soundManagerOptions:{categoryName:"user-interface"}});j.register("switchToRightSoundPlayer",ro);const ao=ro;i(6212);const oo=new L.Z(60,30);class lo extends((0,R.CHP)(R.NBX)){constructor(t,e,i,s){const n=(0,N.ZP)()({size:oo,toggleWhileDragging:null,dragThreshold:3,toggleThreshold:1,thumbFill:null,thumbStroke:"black",thumbTouchAreaXDilation:8,thumbTouchAreaYDilation:8,thumbMouseAreaXDilation:0,thumbMouseAreaYDilation:0,trackFillLeft:null,trackFillRight:null,trackStroke:"black",cursor:"pointer",disabledOpacity:R.iaM.DISABLED_OPACITY,switchToLeftSoundPlayer:ja,switchToRightSoundPlayer:ao,tandem:Y.Z.REQUIRED,tandemNameSuffix:"Switch",phetioEventType:F.Z.USER,phetioReadOnly:G.Z.DEFAULT_OPTIONS.phetioReadOnly,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,phetioFeatured:!0,tagName:"button",ariaRole:"switch",a11yName:null,leftValueContextResponse:null,rightValueContextResponse:null},s);let r=null;n.trackFillLeft&&n.trackFillRight||(r=new R.oas(0,0,0,n.size.height).addColorStop(0,"rgb( 40, 40, 40 )").addColorStop(1,"rgb( 200, 200, 200 )")),n.trackFillLeft=n.trackFillLeft||r,n.trackFillRight=n.trackFillRight||r,n.thumbFill=n.thumbFill||new R.oas(0,0,0,n.size.height).addColorStop(0,"white").addColorStop(1,"rgb( 200, 200, 200 )"),n.a11yName&&(n.voicingNameResponse=n.a11yName,n.innerContent=n.a11yName),super(),_defineProperty(this,"onInputEmitter",new x.Z);const a=n.size.height/2,o=new R.AeJ(0,0,n.size.width,n.size.height,a,a,{stroke:n.trackStroke,fill:n.trackFillLeft});this.addChild(o);const l=new R.AeJ(0,0,n.size.width,n.size.height,a,a,{stroke:n.trackStroke,fill:n.trackFillRight});this.addChild(l);const h=new R.AeJ(0,0,.5*n.size.width,n.size.height,a,a,{fill:n.thumbFill,stroke:n.thumbStroke});this.addChild(h),(n.thumbTouchAreaXDilation||n.thumbTouchAreaYDilation)&&(h.touchArea=Ut.bn.roundRect(-n.thumbTouchAreaXDilation,-n.thumbTouchAreaYDilation,.5*n.size.width+2*n.thumbTouchAreaXDilation,n.size.height+2*n.thumbTouchAreaYDilation,a,a)),(n.thumbMouseAreaXDilation||n.thumbMouseAreaYDilation)&&(h.mouseArea=Ut.bn.roundRect(-n.thumbMouseAreaXDilation,-n.thumbMouseAreaYDilation,.5*n.size.width+2*n.thumbMouseAreaXDilation,n.size.height+2*n.thumbMouseAreaYDilation,a,a));const c=t=>{const i=o.lineWidth/2;t===e?h.left=-i:h.right=n.size.width+i,l.rectWidth=h.right-i,this.setPDOMAttribute("aria-pressed",t!==e),this.setPDOMAttribute("aria-checked",t!==e)};t.link(c);const d=n.dragThreshold*n.dragThreshold,u=new Ht.Z(0,0);let p=!1;const m=new Et.Z(e=>{t.value=e,this.onInputEmitter.emit()},{parameters:[{validValues:[e,i],phetioPrivate:!0}],tandem:n.tandem.createTandem("toggleAction"),phetioDocumentation:"Occurs when the switch is toggled via user interaction",phetioReadOnly:n.phetioReadOnly,phetioEventType:F.Z.USER});this.onInputEmitter.addListener(()=>{t.value===e?n.switchToLeftSoundPlayer.play():n.switchToRightSoundPlayer.play();const s=t.value===i?n.rightValueContextResponse:n.leftValueContextResponse;s&&(this.alertDescriptionUtterance(s),this.voicingSpeakResponse({contextResponse:ci.Z.alertableToText(s)}))});const g=()=>h.centerX!t||"move"!==t.type&&"enter"!==t.type||_.includes(t.trail.nodes,h),start:()=>{u.setXY(0,0),p=!1},drag:(e,i)=>{u.add(i.modelDelta),p=p||u.magnitudeSquared>d;const s=i.getCurrentTarget().globalToLocalPoint(e.pointer.point),r=h.width/2,a=o.lineWidth/2;h.centerX=O.Z.clamp(s.x,r-a,n.size.width-r+a),l.rectWidth=h.right-a;const c=s.x<(1-2*n.toggleThreshold)*r||s.x>(2*n.toggleThreshold-1)*r+n.size.width,y=g();(!0===n.toggleWhileDragging||c&&null===n.toggleWhileDragging)&&t.value!==y&&m.execute(y)},end:()=>{const s=t.value===e?i:e,n=p?g():s;t.value!==n&&m.execute(n),c(n)},canClick:!0});this.addInputListener(y),this.mutate(n),this.addLinkedElement(t,{tandemName:"property"}),this.switchToLeftSoundPlayer=n.switchToLeftSoundPlayer,this.switchToRightSoundPlayer=n.switchToRightSoundPlayer,this.disposeToggleSwitch=()=>{o.dispose(),l.dispose(),t.unlink(c),m.dispose(),y.dispose(),this.onInputEmitter.dispose()}}dispose(){this.disposeToggleSwitch(),super.dispose()}}oe.register("ToggleSwitch",lo);class ho extends R.SHm{constructor(t){const e=(0,N.ZP)()({spacing:hd.CONTENT_SPACING,titleNode:null,contentNode:null,contentNodeOptions:{},contentLeftMargin:30},t),i=new R.Lkj({matchVertical:!1}),s=[];if(e.titleNode&&s.push(i.createBox(e.titleNode,{xAlign:"left"})),e.contentNode){const t=(0,N.JA)({children:[e.contentNode]},e.contentNodeOptions);s.push(i.createBox(new R.NBX(t),{leftMargin:e.contentLeftMargin,xAlign:"left"}))}e.children=s,super(e)}}Ct.Z.register("PreferencesPanelSection",ho);const co=ho,uo=new $t({weight:"bold",size:16}),po=new $t(16),mo={TOGGLE_SWITCH_OPTIONS:{size:new L.Z(36,18),trackFillRight:"#64bd5a",enabled:!(phet.chipper.isFuzzEnabled()&&phet.chipper.queryParameters.supportsVoicing),voicingIgnoreVoicingManagerProperties:!0,tandem:Y.Z.OPT_OUT},CONTROL_LABEL_OPTIONS:{font:uo,maxWidth:360},CONTROL_DESCRIPTION_OPTIONS:{font:po,lineWrap:"stretch"},TOGGLE_SWITCH_LABEL_OPTIONS:{font:po}},go=on.Z.preferences.tabs.audio.sounds.titleStringProperty,yo=on.Z.preferences.tabs.audio.sounds.extraSounds.titleStringProperty,fo=on.Z.preferences.tabs.audio.sounds.descriptionStringProperty,Ao=on.Z.preferences.tabs.audio.sounds.extraSounds.descriptionStringProperty,vo=on.Z.a11y.preferences.tabs.audio.sounds.soundsOnStringProperty,bo=on.Z.a11y.preferences.tabs.audio.sounds.soundsOffStringProperty,Vo=on.Z.a11y.preferences.tabs.audio.sounds.extraSounds.extraSoundsOnStringProperty,Po=on.Z.a11y.preferences.tabs.audio.sounds.extraSounds.extraSoundsOffStringProperty,wo=on.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;class Mo extends co{constructor(t,e){const i=(0,N.ZP)()({includeTitleToggleSwitch:!0},e),s=new R.xvT(go,hd.PANEL_SECTION_LABEL_OPTIONS),n=new cn(wo,{label:go,description:fo},{tandem:Y.Z.OPT_OUT}),r=new R.JxC(fo,(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:n})),a=new lo(t.soundEnabledProperty,!1,!0,(0,N.JA)({visible:i.includeTitleToggleSwitch,a11yName:go,leftValueContextResponse:bo,rightValueContextResponse:vo},mo.TOGGLE_SWITCH_OPTIONS)),o=new Ha({labelNode:s,descriptionNode:r,controlNode:a});let l=null;if(t.supportsExtraSound){const e=new R.xvT(yo,hd.PANEL_SECTION_CONTENT_OPTIONS),i=new gi(t.extraSoundEnabledProperty,e,{labelTagName:"label",labelContent:yo,voicingNameResponse:yo,voicingIgnoreVoicingManagerProperties:!0,voiceNameResponseOnSelection:!1,checkedContextResponse:Vo,uncheckedContextResponse:Po,tandem:Y.Z.OPT_OUT}),s=new cn(wo,{label:yo,description:Ao},{tandem:Y.Z.OPT_OUT}),n=new R.yhY(Ao,(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{lineWrap:300,maxHeight:100,readingBlockNameResponse:s}));l=new R.SHm({children:[i,n],align:"left",spacing:5,tagName:"div"});const r=t=>{l.enabled=t,i.inputEnabled=t};t.soundEnabledProperty.link(r)}super({titleNode:o,contentNode:l})}}Ct.Z.register("SoundPanelSection",Mo);const So=Mo;var To=i(5428);class Eo extends zi{constructor(t,e,i){const s=(0,N.ZP)()({cursor:"pointer",baseColor:"white",stroke:"black",lineWidth:1,cornerRadius:4,xMargin:7,yMargin:5,touchAreaXDilation:7,touchAreaYDilation:7,arrowHeight:20,arrowWidth:20*Math.sqrt(3)/2,arrowFill:"black",arrowStroke:null,arrowLineWidth:1,numberOfArrows:1,arrowSpacing:-10,fireOnHold:!0,fireOnHoldDelay:400,fireOnHoldInterval:100,startCallback:_.noop,endCallback:_.noop},i);s.listener=e;const n=new Ut.bn;for(let r=0;rt.x).concat(t.points.map(t=>t.x)))}getIntersectedXValues(t){const e=this.getCombinedXValues(t),i=[];for(let n=0;ns)&&(n===e.length-2||a.xnew Ht.Z(i,e(this.evaluate(i),t.evaluate(i)))))}binaryPointwiseOperation(t,e){return this.binaryXOperation(t,e,this.getCombinedXValues(t))}binaryIntersectingOperation(t,e){return this.binaryXOperation(t,e,this.getIntersectedXValues(t))}plus(t){return this.binaryPointwiseOperation(t,(t,e)=>t+e)}minus(t){return this.binaryPointwiseOperation(t,(t,e)=>t-e)}min(t){return this.binaryIntersectingOperation(t,Math.min)}max(t){return this.binaryIntersectingOperation(t,Math.max)}withXValues(t){return new Co(t.map(t=>new Ht.Z(t,this.evaluate(t))))}inverted(){const t=this.points.map(t=>new Ht.Z(t.y,t.x));return t.length>1&&t[0].x>t[1].x&&t.reverse(),new Co(t)}static sum(){for(var t=arguments.length,e=new Array(t),i=0;it.plus(e))}static min(){for(var t=arguments.length,e=new Array(t),i=0;it.min(e))}static max(){for(var t=arguments.length,e=new Array(t),i=0;it.max(e))}static constant(t){return new Co([new Ht.Z(0,t)])}static linear(t,e){return new Co([new Ht.Z(0,e),new Ht.Z(1,t+e)])}static sortedUniqueEpsilon(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;t=_.sortBy(t);for(let i=0;i{Bo||(Zo(),Bo=!0)},Fo=it.decodeAudioData(Oo.buffer,t=>{null===No.audioBufferProperty.value&&(No.audioBufferProperty.set(t),Ro())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),No.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Ro()});Fo&&Fo.then(t=>{null===No.audioBufferProperty.value&&(No.audioBufferProperty.set(t),Ro())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Ro()});const Ho=No,zo="data:audio/mpeg;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAEAAAE/QCbm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5vBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4P////////////////////////////////8AAAAUTEFNRTMuMTAwBJgAAAAAAAAAABUgJAXmQQABpAAABP2CPnqIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//ugxAAAAZABXJQAACjSBy/7MvJBlbA24AeHxx+Z+DJ48Acl/O7e/c+wAAAAAAAEggodS1KhDIMHY9Flj8OAaLhIDnqje9htgSxoj0q3Fksjnr007hUgBFiJkAAAAJRul9HpGarkErUNUSqvEO5RRnr0CYblhVBIAACITTDJN3xrY6pMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpcJoKAAAAAArSgBAzM3OFUFV0GH4AAagOAQ5P8ZoVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sgxNoAw8QpV9zxgCg6A+w4kAkEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7EMTlgMI4H1/EgQggMYHqUBQYBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sQxNYDwAAB/gAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",Uo=Q(it,zo),Yo=K.Z.createLock(zo),Wo=new tt;let Go=!1;const Ko=()=>{Go||(Yo(),Go=!0)},Qo=it.decodeAudioData(Uo.buffer,t=>{null===Wo.audioBufferProperty.value&&(Wo.audioBufferProperty.set(t),Ko())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Wo.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Ko()});Qo&&Qo.then(t=>{null===Wo.audioBufferProperty.value&&(Wo.audioBufferProperty.set(t),Ko())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Ko()});const Xo=Wo,jo=new Je(Ho,{soundClipOptions:{initialOutputLevel:.2},soundManagerOptions:{categoryName:"user-interface"}});j.register("generalBoundaryBoopSoundPlayer",jo);const Jo=jo,$o=new Je(Xo,{soundClipOptions:{initialOutputLevel:.2},soundManagerOptions:{categoryName:"user-interface"}});j.register("generalSoftClickSoundPlayer",$o);const tl=$o,el=new Je(Ho,{soundClipOptions:{initialOutputLevel:.2,initialPlaybackRate:1/Math.pow(2,1/6)},soundManagerOptions:{categoryName:"user-interface"}}),il=new Je(Xo,{soundClipOptions:{initialOutputLevel:.2,initialPlaybackRate:1/Math.pow(2,1/6)},soundManagerOptions:{categoryName:"user-interface"}}),sl=t=>O.Z.roundToInterval(t,1e-9),nl=()=>1,rl=()=>{};class al extends we.Z{constructor(t,e){const i=(0,N.ZP)()({middleMovingUpSoundPlayer:tl,middleMovingDownSoundPlayer:il,middleMovingUpPlaybackRateMapper:nl,middleMovingDownPlaybackRateMapper:nl,numberOfMiddleThresholds:null,interThresholdDelta:null,constrainValue:sl,minSoundPlayer:el,maxSoundPlayer:Jo,minimumInterMiddleSoundTime:.035},e);null===i.numberOfMiddleThresholds&&null===i.interThresholdDelta&&(i.numberOfMiddleThresholds=5),super(i),_defineProperty(this,"interThresholdDistance",5),this.valueRangeProperty=t instanceof To.Z?new X.Z(t):t,this.middleMovingUpSoundPlayer=i.middleMovingUpSoundPlayer,this.middleMovingDownSoundPlayer=i.middleMovingDownSoundPlayer,this.middleMovingUpPlaybackRateMapper=i.middleMovingUpPlaybackRateMapper,this.middleMovingDownPlaybackRateMapper=i.middleMovingDownPlaybackRateMapper,this.minSoundPlayer=i.minSoundPlayer,this.maxSoundPlayer=i.maxSoundPlayer,this.minimumInterMiddleSoundTime=i.minimumInterMiddleSoundTime,this.timeOfMostRecentMiddleSound=0,this.constrainValue=i.constrainValue;const s=t=>{null!==i.numberOfMiddleThresholds?this.interThresholdDistance=t.getLength()/(i.numberOfMiddleThresholds+1):null!==i.interThresholdDelta?this.interThresholdDistance=i.interThresholdDelta:this.interThresholdDistance=t.getLength()/2};this.valueRangeProperty.link(s),this.disposeEmitter.addListener(()=>{this.valueRangeProperty.unlink(s)})}playSoundIfThresholdReached(t,e){if(t!==e){const i=this.constrainValue(t),s=this.constrainValue(e),n=this.getSurroundingThresholds(s),r=this.getSurroundingThresholds(i),a=1===n.length&&1===r.length&&Math.abs(n[0]-r[0])>this.interThresholdDistance||1===n.length&&2===r.length&&n[0]!==r[0]&&n[0]!==r[1]||2===n.length&&1===r.length&&r[0]!==n[0]&&r[0]!==n[1]||2===n.length&&2===r.length&&r[0]!==n[0],o=1===r.length&&(2===n.length||n[0]!==r[0]);(a||o||i===this.valueRangeProperty.value.min||i===this.valueRangeProperty.value.max)&&this.playSoundForValueChange(t,e)}}playSoundForValueChange(t,e){const i=this.constrainValue(t),s=this.constrainValue(e);if(i!==s||e!==t&&(t===this.valueRangeProperty.value.min||t===this.valueRangeProperty.value.max))if(t===this.valueRangeProperty.value.min&&this.minSoundPlayer!==al.USE_MIDDLE_SOUND)this.minSoundPlayer.play();else if(t===this.valueRangeProperty.value.max&&this.maxSoundPlayer!==al.USE_MIDDLE_SOUND)this.maxSoundPlayer.play();else{const e=it.currentTime;if(e-this.timeOfMostRecentMiddleSound>this.minimumInterMiddleSoundTime){let n,r;i>s?(n=this.middleMovingUpPlaybackRateMapper,r=this.middleMovingUpSoundPlayer):(n=this.middleMovingUpPlaybackRateMapper,r=this.middleMovingDownSoundPlayer),n!==nl&&r.setPlaybackRate(n(t)),r.play(),this.timeOfMostRecentMiddleSound=e}}}getSurroundingThresholds(t){const e=Math.floor(O.Z.roundToInterval((t-this.valueRangeProperty.value.min)/this.interThresholdDistance,1e-7)),i=O.Z.roundToInterval(e*this.interThresholdDistance+this.valueRangeProperty.value.min,1e-7),s=[i];if(i!==t){const t=Math.min(O.Z.roundToInterval(i+this.interThresholdDistance,1e-7),this.valueRangeProperty.value.max);t>i&&s.push(t)}return s}}_defineProperty(al,"NO_SOUND",new al(new To.Z(0,1),{middleMovingUpSoundPlayer:Ur,minSoundPlayer:Ur,maxSoundPlayer:Ur})),_defineProperty(al,"USE_MIDDLE_SOUND",{play:rl,stop:rl}),j.register("ValueChangeSoundPlayer",al);const ol=al;var ll=i(2573);const hl=t=>""+t,cl={withNameResponse:!1,withObjectResponse:!0,onlyOnValueChange:!0},dl=["startInput","endInput","onInput","constrainValue","keyboardStep","shiftKeyboardStep","pageKeyboardStep","ariaOrientation","panTargetNode","roundToStepSize","a11yMapPDOMValue","a11yMapValue","a11yRepeatEqualValueText","a11yCreateAriaValueText","a11yCreateContextResponseAlert","contextResponsePerValueChangeDelay","contextResponseMaxDelay","a11yDependencies","voicingOnEndResponseOptions"],ul=(t,e)=>{const i=(0,R.reX)("AccessibleValueHandler",dl,class extends((0,R.CHP)(t)){constructor(){for(var t=arguments.length,i=new Array(t),s=0;sa.value.max-t,inverseMap:t=>a.value.max-t}):this._valueProperty=r,this._enabledRangeProperty=a,this._a11yValueTextUpdateListener=this.invalidateAriaValueText.bind(this),this.keyboardStep=(a.get().max-a.get().min)/20,this.shiftKeyboardStep=(a.get().max-a.get().min)/100,this.pageKeyboardStep=(a.get().max-a.get().min)/10,this._valueOnStart=r.value,this.invalidateA11yDependencies();const o=this.invalidateEnabledRange.bind(this);this._enabledRangeProperty.link(o);const l=this.invalidateValueProperty.bind(this);this._valueProperty.link(l),this._pdomPointerListener={interrupt:()=>{this._onInteractionEnd(null)}},this._disposeAccessibleValueHandler=()=>{this._enabledRangeProperty.unlink(o),this._valueProperty.unlink(l),n.reverseAlternativeInput&&this._valueProperty.dispose(),this._dependenciesMultilink&&this._dependenciesMultilink.dispose(),this._panTargetNode=null,this._a11yDependencies=[]}}set startInput(t){this._startInput=t}get startInput(){return this._startInput}set onInput(t){this._onInput=t}get onInput(){return this._onInput}set endInput(t){this._endInput=t}get endInput(){return this._endInput}set constrainValue(t){this._constrainValue=t}get constrainValue(){return this._constrainValue}set panTargetNode(t){this._panTargetNode=t}get panTargetNode(){return this._panTargetNode}set roundToStepSize(t){this._roundToStepSize=t}get roundToStepSize(){return this._roundToStepSize}set a11yMapPDOMValue(t){this._a11yMapPDOMValue=t,this.invalidateEnabledRange(this._enabledRangeProperty.value),this.invalidateValueProperty(),this.invalidateAriaValueText()}get a11yMapPDOMValue(){return this._a11yMapPDOMValue}set a11yMapValue(t){this._a11yMapValue=t}get a11yMapValue(){return this._a11yMapValue}set a11yRepeatEqualValueText(t){this._a11yRepeatEqualValueText=t,this.invalidateAriaValueText()}get a11yRepeatEqualValueText(){return this._a11yRepeatEqualValueText}set a11yCreateAriaValueText(t){this._a11yCreateAriaValueText=t,this.invalidateAriaValueText()}get a11yCreateAriaValueText(){return this._a11yCreateAriaValueText}set a11yCreateContextResponseAlert(t){this._a11yCreateContextResponseAlert=t}get a11yCreateContextResponseAlert(){return this._a11yCreateContextResponseAlert}set contextResponsePerValueChangeDelay(t){this._contextResponsePerValueChangeDelay=t}get contextResponsePerValueChangeDelay(){return this._contextResponsePerValueChangeDelay}set contextResponseMaxDelay(t){this._contextResponseMaxDelay=t}get contextResponseMaxDelay(){return this._contextResponseMaxDelay}set voicingOnEndResponseOptions(t){this._voicingOnEndResponseOptions=t}get voicingOnEndResponseOptions(){return this._voicingOnEndResponseOptions}invalidateAriaValueText(){this._updateAriaValueText(this._oldValue),this._oldValue=this._valueProperty.value}invalidateEnabledRange(t){const e=this._getMappedValue(t.min),i=this._getMappedValue(t.max);this.setPDOMAttribute("min",e),this.setPDOMAttribute("max",i),this._updateSiblingStepAttribute()}invalidateValueProperty(){const t=this._getMappedValue();this.setPDOMAttribute("aria-valuenow",t),this.inputValue=t}invalidateA11yDependencies(){this._dependenciesMultilink&&this._dependenciesMultilink.dispose(),this._dependenciesMultilink=Vt.Z.multilinkAny(this._a11yDependencies.concat([this._valueProperty]),this._a11yValueTextUpdateListener)}setA11yDependencies(t){this._a11yDependencies=t,this.invalidateA11yDependencies()}getA11yDependencies(){return this._a11yDependencies}set a11yDependencies(t){this.setA11yDependencies(t)}get a11yDependencies(){return this.getA11yDependencies()}_updateAriaValueText(t){const e=this._getMappedValue(),i=this._a11yCreateAriaValueText(e,this._valueProperty.value,t);let s=R.eDZ.unwrapStringProperty(i);this._a11yRepeatEqualValueText&&this.ariaValueText&&s===this.ariaValueText.replace(new RegExp(" ","g"),"")&&(s=this.ariaValueText+" "),this.ariaValueText=s}alertContextResponse(){let t=!1;if(this._a11yCreateContextResponseAlert){const e=this._getMappedValue(),i=this._a11yCreateContextResponseAlert(e,this._valueProperty.value,this._valueOnStart);i&&(this._contextResponseUtterance.alert=i,this.forEachUtteranceQueue(e=>{t||(e.hasUtterance(this._contextResponseUtterance)?(t=!0,this._timesChangedBeforeAlerting++):this._timesChangedBeforeAlerting=1),this._contextResponseUtterance.alertStableDelay=Math.min(this._contextResponseMaxDelay,this._timesChangedBeforeAlerting*this._contextResponsePerValueChangeDelay),e.addToBack(this._contextResponseUtterance)}))}}reset(){this._a11yCreateAriaValueText.reset&&this._a11yCreateAriaValueText.reset(),this._a11yCreateContextResponseAlert&&this._a11yCreateContextResponseAlert.reset&&this._a11yCreateContextResponseAlert.reset(),this._timesChangedBeforeAlerting=0,this._updateAriaValueText(null)}_getMappedValue(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._valueProperty.value;return this._a11yMapPDOMValue(t)}getAccessibleValueHandlerInputListener(){return{keydown:this.handleKeyDown.bind(this),keyup:this.handleKeyUp.bind(this),input:this.handleInput.bind(this),change:this.handleChange.bind(this),blur:this.handleBlur.bind(this)}}handleKeyDown(t){const e=t.domEvent,i=R.ntP.getEventCode(e);if(i&&(this._shiftKey=e.shiftKey,R.ntP.isKeyEvent(e,R.ntP.KEY_TAB)&&(this._blockInput=!0),this.enabledProperty.get()&&R.ntP.isRangeKey(e)&&(e.preventDefault(),!e.metaKey))){t.pointer.reserveForKeyboardDrag();let s=!0;this._anyKeysDown()||this._onInteractionStart(t),this._rangeKeysDown[i]=!0;let n=this._valueProperty.get();if(R.ntP.isAnyKeyEvent(e,[R.ntP.KEY_END,R.ntP.KEY_HOME]))i===R.ntP.KEY_END?n=this._enabledRangeProperty.get().max:i===R.ntP.KEY_HOME&&(n=this._enabledRangeProperty.get().min);else{let t;i===R.ntP.KEY_PAGE_UP||i===R.ntP.KEY_PAGE_DOWN?(t=this.pageKeyboardStep,i===R.ntP.KEY_PAGE_UP?n=this._valueProperty.get()+t:i===R.ntP.KEY_PAGE_DOWN&&(n=this._valueProperty.get()-t)):R.ntP.isArrowKey(e)&&(t=e.shiftKey?this.shiftKeyboardStep:this.keyboardStep,s=!e.shiftKey,i===R.ntP.KEY_RIGHT_ARROW||i===R.ntP.KEY_UP_ARROW?n=this._valueProperty.get()+t:i!==R.ntP.KEY_LEFT_ARROW&&i!==R.ntP.KEY_DOWN_ARROW||(n=this._valueProperty.get()-t),this._roundToStepSize&&(n=pl(n,this._valueProperty.get(),t)))}const r=this._a11yMapValue(n,this._valueProperty.get());let a=r;s&&(a=this._constrainValue(r)),this._valueProperty.set(O.Z.clamp(a,this._enabledRangeProperty.get().min,this._enabledRangeProperty.get().max)),this._onInput(t);const o=this._panTargetNode||this;R.Yj2.initialized&&R.Yj2.listener.panToNode(o,!0,o.limitPanDirection)}}handleKeyUp(t){const e=R.ntP.getEventCode(t.domEvent);this._allKeysUp()||(R.ntP.SHIFT_KEYS.includes(e)&&(this._shiftKey=!1),this.enabledProperty.get()&&R.ntP.isRangeKey(t.domEvent)&&(this._rangeKeysDown[e]=!1,this._allKeysUp()&&this._onInteractionEnd(t)))}handleChange(t){this._a11yInputHandled||this.handleInput(t),this._a11yInputHandled=!1}handleInput(t){if(this.enabledProperty.get()&&!this._blockInput){this._a11yInputHandled=!0;let e=this._valueProperty.get();const i=parseFloat(t.domEvent.target.value),s=this._shiftKey?this.shiftKeyboardStep:this.keyboardStep,n=this._getMappedValue();this._onInteractionStart(t),i>n?e=this._valueProperty.get()+s:i!t)}_anyKeysDown(){return!!_.find(this._rangeKeysDown,t=>t)}_updateSiblingStepAttribute(){let t="any";if(Z.Z.mobileSafari){const e=Math.min(this.keyboardStep,this.shiftKeyboardStep,this.pageKeyboardStep);t=Math.pow(10,-O.Z.numberOfDecimalPlaces(e));const i=this._getMappedValue(this._enabledRangeProperty.get().min),s=this._getMappedValue(this._enabledRangeProperty.get().max);t/(s-i)<1e-5&&(t=s/100,t=Number(t.toPrecision(8)))}this.setPDOMAttribute("step",t)}voicingOnEndResponse(t,e){const i=(0,N.JA)({},this._voicingOnEndResponseOptions,e),s=t!==this._valueProperty.value,n=this._valueProperty.value===this._enabledRangeProperty.value.min||this._valueProperty.value===this._enabledRangeProperty.value.max,r=!(!i.withNameResponse||!this.voicingNameResponse)||!(!i.withObjectResponse||!this.voicingObjectResponse);(!i.onlyOnValueChange||n||s)&&r&&this.voicingSpeakFullResponse({nameResponse:i.withNameResponse?this.voicingNameResponse:null,objectResponse:i.withObjectResponse?this.voicingObjectResponse:null,hintResponse:null})}dispose(){this._disposeAccessibleValueHandler(),super.dispose()}});return i.prototype._mutatorKeys=dl.concat(i.prototype._mutatorKeys),i};oe.register("AccessibleValueHandler",ul);const pl=function(t,e,i){let s=t;return 0!==i&&(s=O.Z.roundSymmetric(s/i)*i,s=ml(s,e,i)),s},ml=function(t,e,i){let s=t;const n=Math.abs(t-e),r=n>i,a=O.Z.equalsEpsilon(n,i,1e-14);return r&&!a&&(s+=t>e?-i:i),s};ul.DEFAULT_TAG_NAME="input";const gl=ul,yl=["startDrag","drag","endDrag"],fl=(t,e)=>{const i=(0,R.reX)("AccessibleSlider",yl,class extends(gl(t,e)){constructor(){for(var t=arguments.length,i=new Array(t),s=0;s{this.removeInputListener(n)}}set startDrag(t){this._startDrag=t,this.startInput=t}get startDrag(){return this._startDrag}set drag(t){this._drag=t,this.onInput=t}get drag(){return this._drag}set endDrag(t){this._endDrag=t,this.endInput=t}get endDrag(){return this._endDrag}dispose(){this._disposeAccessibleSlider(),super.dispose()}});return i.prototype._mutatorKeys=yl.concat(i.prototype._mutatorKeys),i};oe.register("AccessibleSlider",fl);const Al=fl;class vl{constructor(t,e,i,s){let n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];this.a1=t,this.a2=e,this.b1=i,this.b2=s,this.clamp=n}evaluate(t){return bl(this.a1,this.a2,this.b1,this.b2,t,this.clamp)}inverse(t){return bl(this.b1,this.b2,this.a1,this.a2,t,this.clamp)}}const bl=(t,e,i,s,n,r)=>{let a=O.Z.linear(t,e,i,s,n);if(r){const t=Math.max(i,s),e=Math.min(i,s);a=O.Z.clamp(a,e,t)}return a};yr.Z.register("LinearFunction",vl);class Vl extends((0,R.pL8)(R.NBX)){constructor(t,e,i,s){super(),this.rangeProperty=i instanceof To.Z?new X.Z(i):i;const n=(0,N.ZP)()({size:new L.Z(100,5),startDrag:_.noop,drag:_.noop,endDrag:_.noop,constrainValue:_.identity,enabledRangeProperty:this.rangeProperty,soundGenerator:Cl.DEFAULT_SOUND_GENERATOR,valueChangeSoundGeneratorOptions:{},voicingOnEndResponse:_.noop,leftVisualOverflow:0,rightVisualOverflow:0,tandem:Y.Z.REQUIRED,tandemNameSuffix:"TrackNode"},s);n.soundGenerator===Cl.DEFAULT_SOUND_GENERATOR?n.soundGenerator=new ol(this.rangeProperty.value,n.valueChangeSoundGeneratorOptions||{}):null===n.soundGenerator&&(n.soundGenerator=ol.NO_SOUND),this.leftVisualOverflow=n.leftVisualOverflow,this.rightVisualOverflow=n.rightVisualOverflow,this.minimumSize=n.size,this.minimumWidth=this.minimumSize.width,this.internalWidthProperty=new E.ZP([this.localPreferredWidthProperty],t=>(null===t?this.minimumSize.width:Math.max(this.minimumSize.width,t))-n.leftVisualOverflow-n.rightVisualOverflow),this.sizeProperty=new E.ZP([this.internalWidthProperty],t=>new L.Z(t,this.minimumSize.height)),this.valueToPositionProperty=new E.ZP([this.rangeProperty,this.internalWidthProperty],(t,e)=>new vl(t.min,t.max,0,e,!0));const r=(e,i)=>{const s=t.value,r=i.subtrailTo(this).getTransform().inversePosition2(e.pointer.point).x,a=this.valueToPositionProperty.value.inverse(r),o=n.enabledRangeProperty.value.constrainValue(a),l=n.constrainValue(o);t.set(l),"down"===e.type&&n.soundGenerator.playSoundIfThresholdReached(l,s)};this.addChild(e);let a=t.value;this.dragListener=new R._U3({tandem:n.tandem.createTandem("dragListener"),start:(e,i)=>{n.startDrag(e),a=t.value,r(e,i.pressedTrail)},drag:(t,e)=>{n.drag(t),r(t,e.pressedTrail)},end:t=>{n.endDrag(t),n.voicingOnEndResponse(a)}}),e.addInputListener(this.dragListener),this.mutate(n),this.disposeSliderTrack=()=>{e.removeInputListener(this.dragListener),this.dragListener.dispose()}}dispose(){this.disposeSliderTrack(),super.dispose()}}oe.register("SliderTrack",Vl);class Pl extends Vl{constructor(t,e,i){const s=(0,N.ZP)()({fillEnabled:"white",fillDisabled:"gray",stroke:"black",lineWidth:1,cornerRadius:0},i),n=new R.AeJ({fill:s.fillDisabled,stroke:s.stroke,lineWidth:s.lineWidth,cornerRadius:s.cornerRadius,cursor:"default",pickable:!1}),r=new R.AeJ({fill:s.fillEnabled,stroke:s.stroke,lineWidth:s.lineWidth,cornerRadius:s.cornerRadius});super(t,new R.NBX({children:[n,r]}),e,(0,N.JA)({leftVisualOverflow:null!==s.stroke?s.lineWidth/2:0,rightVisualOverflow:null!==s.stroke?s.lineWidth/2:0},s));const a=Vt.Z.multilink([s.enabledRangeProperty,this.valueToPositionProperty,this.sizeProperty],(t,e,i)=>{const s=e.evaluate(t.min),a=e.evaluate(t.max);n.setRect(0,0,i.width,i.height),r.setRect(s,0,a-s,i.height)});this.disposeDefaultSliderTrack=()=>{a.dispose()}}dispose(){this.disposeDefaultSliderTrack(),super.dispose()}}oe.register("DefaultSliderTrack",Pl);class wl extends R.AeJ{constructor(t){const e=(0,N.ZP)()({size:new L.Z(22,45),fillHighlighted:"rgb( 71, 207, 255 )",centerLineStroke:"white",fill:"rgb( 50, 145, 184 )",stroke:"black",lineWidth:1,tandem:Y.Z.REQUIRED,tandemNameSuffix:"ThumbNode"},t);void 0===e.cornerRadius&&(e.cornerRadius=.25*e.size.width),e.cachedPaints=[e.fill,e.fillHighlighted],super(0,0,e.size.width,e.size.height,e);const i=R.AeJ.bounds(this.bounds.dilated(5),{fill:"transparent",localBounds:this.bounds,pickable:!1});this.addChild(i);this.addChild(new R.y$t(Ut.bn.lineSegment(e.size.width/2,3,e.size.width/2,e.size.height-3),{stroke:e.centerLineStroke}));const s=new R.$o8({attach:!1,tandem:Y.Z.OPT_OUT});s.isHighlightedProperty.link(t=>{this.fill=t?e.fillHighlighted:e.fill}),this.addInputListener(s)}}oe.register("SliderThumb",wl);const Ml={VALUE_NAMED_PLACEHOLDER:"{{value}}",VALUE_NUMBERED_PLACEHOLDER:"{0}",SLIDER_VERTICAL_ROTATION:-Math.PI/2};oe.register("SunConstants",Ml);const Sl=Ml;class Tl{constructor(t,e,i,s,n,r,a,o,l){this.parent=t,this.value=e,this.label=i,this.labelXProperty=new E.ZP([l.valueToPositionProperty],t=>t.evaluate(e)),this.tickNode=new R.NBX,t.addChild(this.tickNode);const h=new R.y$t((new Ut.bn).moveTo(0,l.top).lineTo(0,l.top-s),{stroke:n,lineWidth:r});this.labelXProperty.link(t=>{h.x=t}),this.tickNode.addChild(h),i&&(this.labelContainer=new R.NBX({pickable:!1}),this.tickNode.addChild(this.labelContainer),this.labelContainer.addChild(i),o===qo.Z.VERTICAL&&(this.labelContainer.rotation=-Sl.SLIDER_VERTICAL_ROTATION),this.labelManualConstraint=R.bGt.create(this.tickNode,[h,this.labelContainer],(t,e)=>{e.centerX=t.centerX,e.bottom=t.top-a.tickLabelSpacing}))}dispose(){this.parent.removeChild(this.tickNode),this.labelContainer&&this.labelContainer.dispose(),this.labelXProperty.dispose(),this.labelManualConstraint&&this.labelManualConstraint.dispose()}}oe.register("SliderTick",Tl);const El=new L.Z(100,5),xl=new L.Z(17,34);class Cl extends((0,R.tTM)(Al(R.NBX,0))){constructor(t,e,i){const s=(0,N.ZP)()({orientation:qo.Z.HORIZONTAL,trackNode:null,trackSize:null,trackFillEnabled:"white",trackFillDisabled:"gray",trackStroke:"black",trackLineWidth:1,trackCornerRadius:0,trackPickable:!0,thumbNode:null,thumbSize:null,thumbFill:"rgb(50,145,184)",thumbFillHighlighted:"rgb(71,207,255)",thumbStroke:"black",thumbLineWidth:1,thumbCenterLineStroke:"white",thumbTouchAreaXDilation:11,thumbTouchAreaYDilation:11,thumbMouseAreaXDilation:0,thumbMouseAreaYDilation:0,thumbYOffset:0,tickLabelSpacing:6,majorTickLength:25,majorTickStroke:"black",majorTickLineWidth:1,minorTickLength:10,minorTickStroke:"black",minorTickLineWidth:1,cursor:"pointer",startDrag:_.noop,drag:_.noop,endDrag:_.noop,constrainValue:_.identity,disabledOpacity:R.iaM.DISABLED_OPACITY,soundGenerator:Cl.DEFAULT_SOUND_GENERATOR,valueChangeSoundGeneratorOptions:{},phetioLinkedProperty:null,tandem:Y.Z.REQUIRED,tandemNameSuffix:"Slider",phetioType:Cl.SliderIO,phetioFeatured:!0,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},i),n=e instanceof To.Z?new X.Z(e):e;if(s.soundGenerator===Cl.DEFAULT_SOUND_GENERATOR?s.soundGenerator=new ol(n.value,s.valueChangeSoundGeneratorOptions||{}):null===s.soundGenerator&&(s.soundGenerator=ol.NO_SOUND),s.soundGenerator!==ol.NO_SOUND){let e=t.value;const i=s.drag;s.drag=n=>{n.isFromPDOM()?s.soundGenerator.playSoundForValueChange(t.value,e):s.soundGenerator.playSoundIfThresholdReached(t.value,e),i(n),e=t.value}}s.orientation===qo.Z.VERTICAL&&(s.trackSize&&(s.trackSize=s.trackSize.swapped()),s.thumbSize&&(s.thumbSize=s.thumbSize.swapped()),Lo(s,"thumbTouchAreaXDilation","thumbTouchAreaYDilation"),Lo(s,"thumbMouseAreaXDilation","thumbMouseAreaYDilation")),s.trackSize=s.trackSize||El,s.thumbSize=s.thumbSize||xl;const r=s.tandem.createTandem(Cl.THUMB_NODE_TANDEM_NAME);Y.Z.VALIDATION&&s.thumbNode;const a=s.thumbNode||new wl({size:s.thumbSize,fill:s.thumbFill,fillHighlighted:s.thumbFillHighlighted,stroke:s.thumbStroke,lineWidth:s.thumbLineWidth,centerLineStroke:s.thumbCenterLineStroke,tandem:r}),o=!s.enabledRangeProperty,l=_.pick(s,R.NBX.REQUIRES_BOUNDS_OPTION_KEYS),h=(0,N.JA)({ariaOrientation:s.orientation,valueProperty:t,panTargetNode:a,enabledRangeProperty:s.enabledRangeProperty||(e instanceof To.Z?new I.Z(e,{valueType:To.Z,isValidValue:t=>t.min>=e.min&&t.max<=e.max,tandem:s.tandem.createTandem("enabledRangeProperty"),phetioValueType:To.Z.RangeIO,phetioDocumentation:"Sliders support two ranges: the outer range which specifies the min and max of the track and the enabledRangeProperty, which determines how low and high the thumb can be dragged within the track."}):e)},s);super(h),_defineProperty(this,"ticks",(0,T.Z)()),_defineProperty(this,"proposedValue",null),this.orientation=h.orientation,this.enabledRangeProperty=h.enabledRangeProperty,this.tickOptions=_.pick(s,"tickLabelSpacing","majorTickLength","majorTickStroke","majorTickLineWidth","minorTickLength","minorTickStroke","minorTickLineWidth");const c=[];this.majorTicksParent=new R.NBX,this.minorTicksParent=new R.NBX,c.push(this.majorTicksParent),c.push(this.minorTicksParent);const d=s.tandem.createTandem(Cl.TRACK_NODE_TANDEM_NAME);Y.Z.VALIDATION&&s.trackNode;const u=new R.NBX;c.push(u),this.track=s.trackNode||new Pl(t,e,{size:h.trackSize,fillEnabled:h.trackFillEnabled,fillDisabled:h.trackFillDisabled,stroke:h.trackStroke,lineWidth:h.trackLineWidth,cornerRadius:h.trackCornerRadius,startDrag:h.startDrag,drag:h.drag,endDrag:h.endDrag,constrainValue:h.constrainValue,enabledRangeProperty:this.enabledRangeProperty,soundGenerator:s.soundGenerator,pickable:h.trackPickable,voicingOnEndResponse:this.voicingOnEndResponse.bind(this),tandem:d}),c.push(this.track),a.setCenterY(this.track.centerY+s.thumbYOffset),c.push(a);const p=new R.NBX({children:c});s.orientation===qo.Z.VERTICAL&&(p.rotation=Sl.SLIDER_VERTICAL_ROTATION),this.addChild(p),s.thumbNode||!s.thumbTouchAreaXDilation&&!s.thumbTouchAreaYDilation||(a.touchArea=a.localBounds.dilatedXY(s.thumbTouchAreaXDilation,s.thumbTouchAreaYDilation)),s.thumbNode||!s.thumbMouseAreaXDilation&&!s.thumbMouseAreaYDilation||(a.mouseArea=a.localBounds.dilatedXY(s.thumbMouseAreaXDilation,s.thumbMouseAreaYDilation));let m=0,g=t.value;const y=new R._U3({tandem:a.tandem.createTandem("dragListener"),start:(e,i)=>{if(this.enabledProperty.get()){g=t.value,s.startDrag(e);const n=i.pressedTrail.subtrailTo(p).getTransform();m=n.inversePosition2(e.pointer.point).x-a.centerX}},drag:(e,i)=>{if(this.enabledProperty.get()){const n=i.pressedTrail.subtrailTo(p).getTransform().inversePosition2(e.pointer.point).x-m;this.proposedValue=this.track.valueToPositionProperty.value.inverse(n);const r=this.enabledRangeProperty.get().constrainValue(this.proposedValue);t.set(s.constrainValue(r)),s.drag(e)}},end:t=>{this.enabledProperty.get()&&(s.endDrag(t),this.voicingOnEndResponse(g)),this.proposedValue=null}});a.addInputListener(y),this.thumbDragListener=y,this.trackDragListener=this.track.dragListener;const f=Vt.Z.multilink([t,this.track.valueToPositionProperty],(t,e)=>{a.centerX=e.evaluate(t)}),A=e=>{if(!t.isPhetioInstrumented()||!It.Z.value)if(null===this.proposedValue)t.set(O.Z.clamp(t.value,e.min,e.max));else{const i=O.Z.clamp(this.proposedValue,e.min,e.max),n=s.constrainValue(i);t.set(n)}};this.enabledRangeProperty.link(A);const v=new Il(this,this.track,a,p,s.orientation,u,this.ticks);this.disposeSlider=()=>{v.dispose(),a.dispose&&a.dispose(),this.track.dispose&&this.track.dispose(),o?this.enabledRangeProperty.dispose():this.enabledRangeProperty.unlink(A),f.dispose(),y.dispose()},this.focusHighlight=new R.bjc(a);const b=s.phetioLinkedProperty||(t instanceof xo.Z?t:null);b&&this.addLinkedElement(b,{tandemName:"valueProperty"}),!o&&this.enabledRangeProperty instanceof xo.Z&&this.addLinkedElement(this.enabledRangeProperty,{tandemName:"enabledRangeProperty"}),this.mutate(l)}get majorTicksVisible(){return this.getMajorTicksVisible()}set majorTicksVisible(t){this.setMajorTicksVisible(t)}get minorTicksVisible(){return this.getMinorTicksVisible()}set minorTicksVisible(t){this.setMinorTicksVisible(t)}dispose(){this.disposeSlider(),this.ticks.forEach(t=>{t.dispose()}),super.dispose()}addMajorTick(t,e){this.addTick(this.majorTicksParent,t,e,this.tickOptions.majorTickLength,this.tickOptions.majorTickStroke,this.tickOptions.majorTickLineWidth)}addMinorTick(t,e){this.addTick(this.minorTicksParent,t,e,this.tickOptions.minorTickLength,this.tickOptions.minorTickStroke,this.tickOptions.minorTickLineWidth)}addTick(t,e,i,s,n,r){this.ticks.push(new Tl(t,e,i,s,n,r,this.tickOptions,this.orientation,this.track))}setMajorTicksVisible(t){this.majorTicksParent.visible=t}getMajorTicksVisible(){return this.majorTicksParent.visible}setMinorTicksVisible(t){this.minorTicksParent.visible=t}getMinorTicksVisible(){return this.minorTicksParent.visible}}h=Cl,_defineProperty(Cl,"DEFAULT_SOUND_GENERATOR",new ol(new To.Z(0,1))),_defineProperty(Cl,"THUMB_NODE_TANDEM_NAME","thumbNode"),_defineProperty(Cl,"TRACK_NODE_TANDEM_NAME","trackNode"),_defineProperty(Cl,"SliderIO",new rn.Z("SliderIO",{valueType:h,documentation:"A traditional slider component, with a knob and possibly tick marks",supertype:R.NBX.NodeIO}));class Il extends R.dmK{constructor(t,e,i,s,n,r,a){super(t),this.slider=t,this.track=e,this.thumb=i,this.sliderPartsNode=s,this.orientation=n,this.trackSpacer=r,this.ticks=a,n===qo.Z.HORIZONTAL?(t.heightSizable=!1,this.preferredProperty=this.slider.localPreferredWidthProperty):(t.widthSizable=!1,this.preferredProperty=this.slider.localPreferredHeightProperty),this.preferredProperty.lazyLink(this._updateLayoutListener),this.track.rangeProperty.lazyLink(this._updateLayoutListener),this.thumb.localBoundsProperty.lazyLink(this._updateLayoutListener);const o=t=>{t.tickNode.localBoundsProperty.lazyLink(this._updateLayoutListener),a.addItemRemovedListener(e=>{e===t&&e.tickNode.localBoundsProperty.hasListener(this._updateLayoutListener)&&t.tickNode.localBoundsProperty.unlink(this._updateLayoutListener)})};a.addItemAddedListener(o),this.addNode(e),this.layout(),this.disposeSliderConstraint=()=>{a.removeItemAddedListener(o),this.preferredProperty.unlink(this._updateLayoutListener),this.track.rangeProperty.unlink(this._updateLayoutListener),this.thumb.localBoundsProperty.unlink(this._updateLayoutListener)}}layout(){super.layout();const t=this.slider,e=this.track,i=this.thumb;this.trackSpacer.localBounds=e.localBounds.dilatedX(i.width/2);const s=e.leftVisualOverflow+e.rightVisualOverflow,n=e.minimumWidth,r=n-s,a=t=>O.Z.linear(e.rangeProperty.value.min,e.rangeProperty.value.max,0,1,t),o=-i.width/2-e.leftVisualOverflow,l=i.width/2-e.leftVisualOverflow,h=new To.Z(o,n+l);if(this.ticks.forEach(t=>{const e=r*a(t.value),i=t.tickNode.width/2;h.includeRange(new To.Z(-i,i).shifted(e))}),t.widthSizable&&null!==this.preferredProperty.value){const t=Io.max(Io.linear(1,l),...this.ticks.map(t=>{const e=a(t.value);return Io.linear(e,t.tickNode.width/2-s*e)})).minus(Io.min(Io.constant(o),...this.ticks.map(t=>{const e=a(t.value);return Io.linear(e,-t.tickNode.width/2-s*e)}))),i=t.withXValues([n-1,n,...t.points.map(t=>t.x).filter(t=>t>n+1e-10)]).inverted();e.preferredWidth=Math.max(n,i.evaluate(this.preferredProperty.value))}else e.preferredWidth=e.minimumWidth;const c=h.getLength();this.orientation===qo.Z.HORIZONTAL?t.localMinimumWidth=c:t.localMinimumHeight=c}dispose(){this.disposeSliderConstraint(),super.dispose()}}oe.register("Slider",Cl);const ql={PLUS:"+",MINUS:"−",TIMES:"×",DIVIDE:"÷",DOT:"⋅",UNARY_PLUS:"+",UNARY_MINUS:"-",EQUAL_TO:"=",NOT_EQUAL_TO:"≠",GREATER_THAN:">",LESS_THAN:"<",LESS_THAN_OR_EQUAL:"≤",GREATER_THAN_OR_EQUAL:"≥",PERCENT:"%",INFINITY:"∞",PI:"π",PLUS_MINUS:"±",THETA:"θ",NO_VALUE:"—",DEGREES:"°"};U.register("MathSymbols",ql);const kl=ql,Dl=new $t(20);class Ll extends R.NBX{constructor(t,e,i){const s=(0,N.ZP)()({align:"right",valuePattern:Sl.VALUE_NAMED_PLACEHOLDER,decimalPlaces:0,numberFormatter:null,numberFormatterDependencies:[],useRichText:!1,useFullHeight:!1,textOptions:{font:Dl,fill:"black",maxWidth:null,phetioReadOnly:!0},xMargin:8,yMargin:2,cornerRadius:0,backgroundFill:"white",backgroundStroke:"lightGray",backgroundLineWidth:1,backgroundLineDash:[],minBackgroundWidth:0,noValueString:kl.NO_VALUE,noValueAlign:null,noValuePattern:null,tandem:Y.Z.OPT_OUT,phetioType:Ll.NumberDisplayIO},i);const n=new X.Z(s.numberFormatter?s.numberFormatter:t=>null===s.decimalPlaces?""+t:O.Z.toFixed(t,s.decimalPlaces));s.noValueAlign||(s.noValueAlign=s.align);const r=t=>t.includes(Sl.VALUE_NUMBERED_PLACEHOLDER)?B.Z.format(t,Sl.VALUE_NAMED_PLACEHOLDER):t,a="string"==typeof s.valuePattern?new X.Z(r(s.valuePattern)):new E.ZP([s.valuePattern],r);s.noValuePattern||(s.noValuePattern=new E.ZP([a],t=>t));const o="string"==typeof s.noValuePattern?new X.Z(s.noValuePattern):s.noValuePattern,l=E.ZP.deriveAny([n,...s.numberFormatterDependencies],()=>_l(e.min,s.noValueString,n.value)),h=E.ZP.deriveAny([n,...s.numberFormatterDependencies],()=>_l(e.max,s.noValueString,n.value)),c=new E.ZP([a,l,h],(t,e,i)=>B.Z.fillIn(t,{value:e.length>i.length?e:i})),d=s.useRichText?R.Hof:R.xvT,u=s.textOptions.tandem||s.tandem.createTandem("valueText"),p=E.ZP.deriveAny([t,o,a,n,...s.numberFormatterDependencies],()=>{const e=t.value,i=o.value,r=a.value,l=n.value,h=null===e&&i?i:r,c=_l(e,s.noValueString,l);return B.Z.fillIn(h,{value:c})},{phetioFeatured:!0,phetioValueType:se.Z,tandemNameSuffix:"StringProperty",tandem:u.createTandem(R.xvT.STRING_PROPERTY_TANDEM_NAME)}),m=(0,N.JA)({tandem:u},s.textOptions,{maxWidth:null}),g=new d(p,m),y=g.height,f=new R.AeJ({cornerRadius:s.cornerRadius,fill:s.backgroundFill,stroke:s.backgroundStroke,lineWidth:s.backgroundLineWidth,lineDash:s.backgroundLineDash});c.link(t=>{const e=new d(t,_.omit(m,"tandem"));g.maxWidth=null!==s.textOptions.maxWidth?s.textOptions.maxWidth:0!==e.width?e.width:null,e.maxWidth=g.maxWidth,f.rectWidth=Math.max(s.minBackgroundWidth,e.width+2*s.xMargin),f.rectHeight=(s.useFullHeight?y:e.height)+2*s.yMargin});const A=new R.NBX({children:[g]});s.children=[f,A],super(),this.numberFormatterProperty=n,this.valueText=g,this.backgroundNode=f,R.bGt.create(this,[A,f],(e,i)=>{const n=null===t.value?s.noValueAlign:s.align,r=i.centerY;"center"===n?e.center=new Ht.Z(i.centerX,r):"left"===n?e.leftCenter=new Ht.Z(i.left+s.xMargin,r):e.rightCenter=new Ht.Z(i.right-s.xMargin,r)}),this.mutate(s),this.disposeNumberDisplay=()=>{p.dispose(),a.dispose()}}dispose(){this.disposeNumberDisplay(),super.dispose()}setNumberFont(t){this.valueText.font=t}set numberFont(t){this.setNumberFont(t)}setNumberFill(t){this.valueText.fill=t}set numberFill(t){this.setNumberFill(t)}setBackgroundFill(t){this.backgroundNode.fill=t}set backgroundFill(t){this.setBackgroundFill(t)}get backgroundFill(){return this.getBackgroundFill()}getBackgroundFill(){return this.backgroundNode.fill}setBackgroundStroke(t){this.backgroundNode.stroke=t}set backgroundStroke(t){this.setBackgroundStroke(t)}getBackgroundWidth(){return this.backgroundNode.getRectWidth()}setBackgroundWidth(t){this.backgroundNode.setRectWidth(t)}get backgroundWidth(){return this.getBackgroundWidth()}set backgroundWidth(t){this.setBackgroundWidth(t)}}c=Ll,_defineProperty(Ll,"NumberDisplayIO",new rn.Z("NumberDisplayIO",{valueType:c,supertype:R.NBX.NodeIO,documentation:"A numeric readout with a background"})),U.register("NumberDisplay",Ll);const _l=(t,e,i)=>{let s=e;return null!==t&&(s=i(t)),s},Ol=["startDrag","endDrag","leftStart","leftEnd","rightStart","rightEnd"],Zl=new ol(new To.Z(0,1)),Nl=new L.Z(180,3),Bl=new L.Z(17,34);class Rl extends((0,R.pL8)(R.NBX)){constructor(t,e,i,s){!function(t){!t.startCallback&&t.endCallback;let e=!1,i=!1;t.arrowButtonOptions&&(e=Fl(t.arrowButtonOptions));t.sliderOptions&&(i=Fl(t.sliderOptions))}(s||{});const n=(0,N.ZP)()({numberDisplayOptions:{},sliderOptions:{},arrowButtonOptions:{},titleNodeOptions:{},startCallback:_.noop,endCallback:_.noop,delta:1,disabledOpacity:.5,layoutFunction:Rl.createLayoutFunction1(),includeArrowButtons:!0,soundGenerator:Zl,valueChangeSoundGeneratorOptions:{},tandem:Y.Z.REQUIRED,tandemNameSuffix:"Control",phetioType:Rl.NumberControlIO,phetioEnabledPropertyInstrumented:!0,visiblePropertyOptions:{phetioFeatured:!0}},s);super();const r=n.arrowButtonOptions&&n.arrowButtonOptions.hasOwnProperty("scale"),a=()=>l.enabledRangeProperty?l.enabledRangeProperty.value:i,o=t=>{const e=O.Z.roundToInterval(t,l.delta);return a().constrainValue(e)};if(n.soundGenerator===Zl){let t=n.valueChangeSoundGeneratorOptions;_.isEmpty(n.valueChangeSoundGeneratorOptions)&&(t={interThresholdDelta:n.delta,constrainValue:o}),n.soundGenerator=new ol(i,t)}else null===n.soundGenerator&&(n.soundGenerator=ol.NO_SOUND);const l=(0,N.JA)({arrowButtonOptions:{touchAreaXDilation:3.5,touchAreaYDilation:7,mouseAreaXDilation:0,mouseAreaYDilation:0,enabledEpsilon:0,leftStart:n.startCallback,leftEnd:n.endCallback,rightStart:n.startCallback,rightEnd:n.endCallback,enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1}},sliderOptions:{orientation:qo.Z.HORIZONTAL,startDrag:n.startCallback,endDrag:n.endCallback,majorTickLength:20,minorTickStroke:"rgba( 0, 0, 0, 0.3 )",majorTicks:[],minorTickSpacing:0,constrainValue:o,soundGenerator:n.soundGenerator,tandem:n.tandem.createTandem(Rl.SLIDER_TANDEM_NAME)},numberDisplayOptions:{textOptions:{font:new $t(12),stringPropertyOptions:{phetioFeatured:!0}},tandem:n.tandem.createTandem("numberDisplay"),visiblePropertyOptions:{phetioFeatured:!0}},titleNodeOptions:{font:new $t(12),maxWidth:null,fill:"black",tandem:n.tandem.createTandem("titleText")}},n);l.enabledRangeProperty&&(l.sliderOptions.enabledRangeProperty=l.enabledRangeProperty),l.arrowButtonOptions.tagName=null,this.groupFocusHighlight=l.includeArrowButtons,l.sliderOptions.trackNode||(l.sliderOptions=(0,N.JA)({trackSize:l.sliderOptions.orientation===qo.Z.HORIZONTAL?Nl:Nl.swapped()},l.sliderOptions)),l.sliderOptions.thumbNode||(l.sliderOptions=(0,N.JA)({thumbSize:l.sliderOptions.orientation===qo.Z.HORIZONTAL?Bl:Bl.swapped(),thumbTouchAreaXDilation:6},l.sliderOptions)),l.sliderOptions=(0,N.JA)({shiftKeyboardStep:l.delta,phetioType:Cl.SliderIO},l.sliderOptions),l.sliderOptions.thumbFill&&!l.sliderOptions.thumbFillHighlighted&&(this.thumbFillProperty=new R.M4p(l.sliderOptions.thumbFill),l.sliderOptions.thumbFillHighlighted=new E.ZP([this.thumbFillProperty],t=>t.brighterColor()));const h=new R.xvT(t,l.titleNodeOptions),c=new Ll(e,i,l.numberDisplayOptions);this.slider=new Cl(e,i,l.sliderOptions);let d=null,u=null,p=null;if(l.includeArrowButtons){const t=l.arrowButtonOptions.touchAreaXDilation,i=l.arrowButtonOptions.mouseAreaXDilation;if(d=new Eo("left",()=>{const t=e.get();let i=e.get()-l.delta;i=O.Z.roundToInterval(i,l.delta),i=Math.max(i,a().min),e.set(i),l.soundGenerator.playSoundForValueChange(i,t),this.slider.voicingOnEndResponse(t)},(0,N.JA)({soundPlayer:Ur,startCallback:l.arrowButtonOptions.leftStart,endCallback:l.arrowButtonOptions.leftEnd,tandem:l.tandem.createTandem("decrementButton"),touchAreaXShift:-t,mouseAreaXShift:-i},l.arrowButtonOptions)),u=new Eo("right",()=>{const t=e.get();let i=e.get()+l.delta;i=O.Z.roundToInterval(i,l.delta),i=Math.min(i,a().max),e.set(i),l.soundGenerator.playSoundForValueChange(i,t),this.slider.voicingOnEndResponse(t)},(0,N.JA)({soundPlayer:Ur,startCallback:l.arrowButtonOptions.rightStart,endCallback:l.arrowButtonOptions.rightEnd,tandem:l.tandem.createTandem("incrementButton"),touchAreaXShift:t,mouseAreaXShift:i},l.arrowButtonOptions)),!r){d.setScaleMagnitude(1);const t=c.localBounds.height/d.height;d.setScaleMagnitude(t),u.setScaleMagnitude(t)}p=()=>{const t=e.value;d.enabled=t-l.arrowButtonOptions.enabledEpsilon>a().min&&!this.slider.isFocused(),u.enabled=t+l.arrowButtonOptions.enabledEpsilon{d.enabled=!1,u.enabled=!1},blur:()=>p()})}const m=l.sliderOptions.majorTicks;for(let y=0;y0)for(let y=i.min;y<=i.max;)_.find(m,t=>t.value===y)||this.slider.addMinorTick(y),y+=l.sliderOptions.minorTickSpacing;const g=l.layoutFunction(h,c,this.slider,d,u);if(this.widthSizable=(0,R.S3T)(g),(0,R.AXx)(g)){const t=t=>{this.localMinimumWidth=t};g.minimumWidthProperty.link(t);const e=t=>{g.preferredWidth=t};this.localPreferredWidthProperty.link(e),this.disposeEmitter.addListener(()=>{g.minimumWidthProperty.unlink(t),this.localPreferredWidthProperty.unlink(e)})}l.children=[g],this.mutate(l),this.numberDisplay=c,this.disposeNumberControl=()=>{h.dispose(),c.dispose(),this.slider.dispose(),this.thumbFillProperty&&this.thumbFillProperty.dispose(),d&&d.dispose(),u&&u.dispose(),p&&e.unlink(p),p&&l.enabledRangeProperty&&l.enabledRangeProperty.unlink(p)}}dispose(){this.disposeNumberControl(),super.dispose()}static withMinMaxTicks(t,e,i,s){const n=(0,N.ZP)()({tickLabelFont:new $t(12)},s);return n.sliderOptions=(0,N.JA)({majorTicks:[{value:i.min,label:new R.xvT(i.min,{font:n.tickLabelFont})},{value:i.max,label:new R.xvT(i.max,{font:n.tickLabelFont})}]},n.sliderOptions),new Rl(t,e,i,n)}static createLayoutFunction1(t){const e=(0,N.ZP)()({align:"center",titleXSpacing:5,arrowButtonsXSpacing:15,ySpacing:5},t);return(t,i,s,n,r)=>(s.mutateLayoutOptions({grow:1}),new R.SHm({align:e.align,spacing:e.ySpacing,children:[new R.BET({spacing:e.titleXSpacing,children:[t,i]}),new R.BET({layoutOptions:{stretch:!0},spacing:e.arrowButtonsXSpacing,children:[n,s,r]})]}))}static createLayoutFunction2(t){const e=(0,N.ZP)()({align:"center",xSpacing:5,ySpacing:5},t);return(t,i,s,n,r)=>(s.mutateLayoutOptions({stretch:!0}),new R.SHm({align:e.align,spacing:e.ySpacing,children:[new R.BET({spacing:e.xSpacing,children:[t,n,i,r]}),s]}))}static createLayoutFunction3(t){const e=(0,N.ZP)()({alignTitle:"center",alignNumber:"center",titleLeftIndent:0,xSpacing:5,ySpacing:5},t);return(t,i,s,n,r)=>{s.mutateLayoutOptions({stretch:!0});const a=new R.SHm({spacing:e.ySpacing,align:e.alignTitle,children:[new R.DbO(t,{leftMargin:e.titleLeftIndent}),new R.SHm({layoutOptions:{stretch:!0},spacing:e.ySpacing,align:e.alignNumber,children:[new R.BET({spacing:e.xSpacing,children:[n,i,r]}),s]})]});return t.boundsProperty.lazyLink(()=>{a.updateLayout()}),a}}static createLayoutFunction4(t){const e=(0,N.ZP)()({sliderPadding:0,verticalSpacing:5,arrowButtonSpacing:5,hasReadoutProperty:null,layoutInvisibleButtons:!1,createBottomContent:null},t);return(t,i,s,n,r)=>{s.mutateLayoutOptions({grow:1});const a=!!n,o=new R.BET({spacing:e.arrowButtonSpacing,children:a?[n,s,r]:[s],excludeInvisibleChildrenFromBounds:!e.layoutInvisibleButtons}),l=e.createBottomContent?e.createBottomContent(o):o;return l.mutateLayoutOptions({stretch:!0,xMargin:e.sliderPadding}),new R.SHm({spacing:e.verticalSpacing,children:[new R.BET({spacing:e.sliderPadding,children:[t,new R.NBX({children:[i],visibleProperty:e.hasReadoutProperty||null,excludeInvisibleChildrenFromBounds:!0})],layoutOptions:{stretch:!0}}),l]})}}}function Fl(t){const e=Object.keys(t);return Ol.filter(t=>_.includes(e,t)).length>0}d=Rl,_defineProperty(Rl,"NumberControlIO",new rn.Z("NumberControlIO",{valueType:d,documentation:"A number control with a title, slider and +/- buttons",supertype:R.NBX.NodeIO})),_defineProperty(Rl,"SLIDER_TANDEM_NAME","slider"),U.register("NumberControl",Rl);const Hl=(t,e,i)=>(e.labelTagName="p",e.labelContent=i,e);class zl extends zi{constructor(t,e,i,s,n){const r=(0,N.ZP)()({align:"left",arrowDirection:"down",arrowFill:"black",comboBoxVoicingNameResponsePattern:Sl.VALUE_NAMED_PLACEHOLDER,cursor:"pointer",baseColor:"white",buttonAppearanceStrategy:Bi.FlatAppearanceStrategy,xMargin:12,yMargin:8,stroke:"black",lineWidth:1,soundPlayer:Ur,enabledPropertyOptions:{phetioFeatured:!1},visiblePropertyOptions:{phetioFeatured:!1},localPreferredWidthProperty:new X.Z(null),localMinimumWidthProperty:new X.Z(null),containerTagName:"div",accessibleNameBehavior:Hl},n),a=r.xMargin,o=r.yMargin,l=Kl.getMaxItemWidthProperty(i),h=Kl.getMaxItemHeightProperty(i),c=new R.y$t(null,{fill:r.arrowFill}),d=_.find(e,e=>e.value===t.value),u=e.indexOf(d),p=new R.NBX({layoutOptions:{yMargin:o,grow:1,xAlign:r.align},children:[i[u]]}),m=new R.x12(0,0,0,0,{stroke:"black",lineWidth:r.lineWidth});r.content=new R.zch({rows:[[p,m,c]]}),Vt.Z.multilink([l,h],(t,e)=>{const i=e+2*o,s=i,n=.35*s,l=2*n*Math.sqrt(3)/3,h=a,d=a-r.lineWidth/2,u=-r.lineWidth/2;var g,y,f;c.shape=(g=r.arrowDirection,y=l,f=n,"up"===g?(new Ut.bn).moveTo(0,f).lineTo(y/2,0).lineTo(y,f).close():(new Ut.bn).moveTo(0,0).lineTo(y,0).lineTo(y/2,f).close()),c.mutateLayoutOptions({minContentWidth:s,minContentHeight:s}),p.mutateLayoutOptions({minContentWidth:t,minContentHeight:e,leftMargin:h,rightMargin:d}),m.y2=i,m.mutateLayoutOptions({rightMargin:u})}),r.xMargin=0,r.yMargin=0,super(r),this.minimumWidthProperty.link(t=>{r.localMinimumWidthProperty.value=t});const g=t=>{this.preferredWidth=t};r.localPreferredWidthProperty.link(g),this._blockNextVoicingFocusListener=!1,this.voicingFocusListener=()=>{!this._blockNextVoicingFocusListener&&this.defaultFocusListener(),this._blockNextVoicingFocusListener=!1};let y=null;const f=new E.ZP([t],t=>{const i=_.find(e,e=>e.value===t);return i}),A=new E.ZP([f],t=>i[e.indexOf(t)]),v=new Rt.Z(f,{derive:t=>s.get(t.value)});A.link(t=>{p.removeAllChildren(),p.addChild(t)}),v.link(t=>{this.innerContent=t;const e="string"==typeof r.comboBoxVoicingNameResponsePattern?new I.Z(r.comboBoxVoicingNameResponsePattern):r.comboBoxVoicingNameResponsePattern;y&&y.dispose(),this.voicingNameResponse=y=new cn(e,{value:t||""},{tandem:Y.Z.OPT_OUT})}),this.ariaLabelledbyAssociations=[{otherNode:this,otherElementName:R.Grz.LABEL_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING},{otherNode:this,otherElementName:R.Grz.PRIMARY_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING}],R.uai.mutateNode(this,"listbox"),this.disposeComboBoxButton=()=>{l.dispose(),h.dispose(),f.dispose(),r.localPreferredWidthProperty.unlink(g),y&&y.dispose()},this.arrow=c,this.separatorLine=m}setDisplayOnly(t){this.arrow.visible=!t,this.separatorLine.visible=!t}blockNextVoicingFocusListener(){this._blockNextVoicingFocusListener=!0}dispose(){this.disposeComboBoxButton(),super.dispose()}}oe.register("ComboBoxButton",zl);class Ul extends((0,R.CHP)(R.NBX)){constructor(t,e,i,s,n,r){const a=(0,N.ZP)()({cursor:"pointer",align:"left",xMargin:6,highlightFill:"rgb( 245, 245, 245 )",highlightCornerRadius:4,tagName:"li",focusable:!0,ariaRole:"option",positionInPDOM:!0,voicingFocusListener:()=>this.comboBoxListItemNodeVoicingFocusListener(),comboBoxVoicingNameResponsePattern:Sl.VALUE_NAMED_PLACEHOLDER,tandem:Y.Z.REQUIRED,tandemNameSuffix:"Item",phetioType:R.RnV,phetioState:!0,visiblePropertyOptions:{phetioFeatured:!0}},r);a.comboBoxVoicingNameResponsePattern=a.comboBoxVoicingNameResponsePattern.get?a.comboBoxVoicingNameResponsePattern.get():a.comboBoxVoicingNameResponsePattern;const o=new R.AeJ({cornerRadius:a.highlightCornerRadius}),l=new R.NBX({children:[e]}),h=t=>{o.rectWidth=t,l.maxWidth=t};s.link(h);const c=t=>{o.rectHeight=t,l.maxHeight=t};n.link(c);const d=()=>{"left"===a.align?l.left=o.left+a.xMargin:"right"===a.align?l.right=o.right-a.xMargin:l.centerX=o.centerX,l.centerY=o.centerY};l.boundsProperty.lazyLink(d),d(),a.children=[o,l],super(a),this._supplyOpenResponseOnNextFocus=!1;const u=new E.ZP([i],t=>t||""),p="string"==typeof a.comboBoxVoicingNameResponsePattern?new I.Z(a.comboBoxVoicingNameResponsePattern):a.comboBoxVoicingNameResponsePattern,m=new cn(p,{value:u},{tandem:Y.Z.OPT_OUT});this.voicingNameResponse=m;const g=t=>{this.innerContent=t,this.voicingObjectResponse=t};i.link(g),this.item=t,this.localBoundsProperty.link(t=>{this.focusHighlight=Ut.bn.bounds(t)});const y=new R.$o8({attach:!1,tandem:Y.Z.OPT_OUT});this.addInputListener(y),y.looksOverProperty.link(t=>{o.fill=t?a.highlightFill:null}),this.disposeComboBoxListItemNode=()=>{y.dispose(),m.dispose(),u.dispose(),i.unlink(g),s.unlink(h),n.unlink(c)}}supplyOpenResponseOnNextFocus(){this._supplyOpenResponseOnNextFocus=!0}dispose(){this.disposeComboBoxListItemNode(),super.dispose()}comboBoxListItemNodeVoicingFocusListener(){this.voicingSpeakFullResponse({nameResponse:this._supplyOpenResponseOnNextFocus?this.voicingNameResponse:null,objectResponse:this._supplyOpenResponseOnNextFocus?null:this.voicingObjectResponse,contextResponse:null,hintResponse:this._supplyOpenResponseOnNextFocus?this.voicingHintResponse:null}),this._supplyOpenResponseOnNextFocus=!1}}oe.register("ComboBoxListItemNode",Ul);class Yl extends he{constructor(t,e,i,s,n,r,a,o,l){const h=(0,N.ZP)()({highlightFill:"rgb( 245, 245, 245 )",comboBoxListItemNodeOptions:{},xMargin:12,yMargin:8,backgroundPickable:!0,tagName:"ul",ariaRole:"listbox",groupFocusHighlight:!0,openedSoundPlayer:Hr,closedNoChangeSoundPlayer:Dr,visiblePropertyOptions:{phetioReadOnly:!0}},l),c=new Et.Z(e=>{const i=e.currentTarget;this.selectionOnFireAction=i;const s=t.value;r(),t.value=this.selectionOnFireAction.item.value,n(),this.voiceOnNewSelection(t.value,s,i),e.abort()},{parameters:[{phetioPrivate:!0,valueType:R.IAx}],tandem:o.createTandem("fireAction"),phetioEventType:F.Z.USER}),d={up(t){c.execute(t)},keyup:t=>{t.domEvent&&R.ntP.isAnyKeyEvent(t.domEvent,[R.ntP.KEY_ENTER,R.ntP.KEY_SPACE])&&c.execute(t)},click:t=>{c.execute(t)}},u=Kl.getMaxItemWidthProperty(i),p=Kl.getMaxItemHeightProperty(i),m=new E.ZP([u],t=>t+h.xMargin),g=new E.ZP([p],t=>t+h.yMargin),y=[];e.forEach((t,e)=>{const n=s.get(t.value),r=new Ul(t,i[e],n,m,g,(0,N.JA)({align:h.align,highlightFill:h.highlightFill,highlightCornerRadius:h.cornerRadius,xMargin:.5*h.xMargin,tandem:t.tandemName?o.createTandem(t.tandemName):Y.Z.OPTIONAL},h.comboBoxListItemNodeOptions,t.comboBoxListItemNodeOptions));y.push(r),r.addInputListener(d)});const f=new R.SHm({spacing:0,excludeInvisibleChildrenFromBounds:!0,children:y});super(f,(0,N.JA)({},h,{xMargin:h.xMargin/2,yMargin:h.yMargin/2})),this.content=f,this.voiceOnSelectionNode=a,this.selectionOnFireAction=this.getListItemNode(t.value);const A=e.map(t=>De.getSelectionSoundPlayer(e.indexOf(t)));let v;this.visibleProperty.lazyLink(e=>{if(e)h.openedSoundPlayer.play(),v=this.getListItemNode(t.value);else if(v===this.selectionOnFireAction)h.closedNoChangeSoundPlayer.play();else{const t=this.selectionOnFireAction.item;if(t.soundPlayer)t.soundPlayer.play();else{const t=this.getVisibleListItemNodes().indexOf(this.selectionOnFireAction);-1!==t&&A[t].play()}}});const b=new R.F3H({keys:["escape","tab","shift+tab","arrowUp","arrowDown","home","end"],callback:(t,e)=>{const i=t,s=this.getVisibleListItemNodes();if("escape"===e||"tab"===e||"shift+tab"===e)i.abort(),n(),r();else if("arrowUp"===e||"arrowDown"===e){const t=i.domEvent;t.preventDefault();const n="arrowDown"===e?1:-1,r=s.indexOf(this.getFocusedItemNode()),a=r+n;s[a]&&s[a].focus(),i.pointer.reserveForKeyboardDrag()}else"home"===e?s[0].focus():"end"===e&&s[s.length-1].focus()}});this.addInputListener(b),this.disposeComboBoxListBox=()=>{for(let t=0;tt.visible)}getListItemNode(t){const e=_.find(this.getAllListItemNodes(),e=>e.item.value===t);return e}getFocusedItemNode(){const t=_.find(this.getAllListItemNodes(),t=>t.focused);return t}focusListItemNode(t){let e=this.getListItemNode(t);e.visible||(e=_.find(this.getAllListItemNodes(),t=>t.visible)),e&&(e.supplyOpenResponseOnNextFocus(),e.focus())}voiceOnNewSelection(t,e,i){const s={nameResponse:i.voicingNameResponse,objectResponse:null,contextResponse:i.voicingContextResponse,hintResponse:null};e===t&&(s.contextResponse=null),this.voiceOnSelectionNode.voicingSpeakResponse(s)}}oe.register("ComboBoxListBox",Yl);const Wl=(t,e,i,s)=>(s.push(()=>{t.button.accessibleName=i}),e),Gl=(t,e,i,s)=>(s.push(()=>{t.button.helpText=i}),e);class Kl extends((0,R.pL8)(R.NBX)){constructor(t,e,i,s){const n=(0,N.ZP)()({align:"left",listPosition:"below",labelXSpacing:10,disabledOpacity:.5,cornerRadius:4,highlightFill:"rgb( 245, 245, 245 )",xMargin:12,yMargin:8,buttonFill:"white",buttonStroke:"black",buttonLineWidth:1,buttonTouchAreaXDilation:0,buttonTouchAreaYDilation:0,buttonMouseAreaXDilation:0,buttonMouseAreaYDilation:0,listFill:"white",listStroke:"black",listLineWidth:1,openedSoundPlayer:Hr,closedNoChangeSoundPlayer:Dr,tagName:"div",accessibleNameBehavior:Wl,helpTextBehavior:Gl,comboBoxVoicingNameResponsePattern:Sl.VALUE_NAMED_PLACEHOLDER,comboBoxVoicingContextResponse:null,comboBoxVoicingHintResponse:null,tandem:Y.Z.REQUIRED,tandemNameSuffix:"ComboBox",phetioType:Kl.ComboBoxIO,phetioFeatured:!0,phetioEventType:F.Z.USER,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},s),r=Oe(e,n.tandem.createTandem("items"));super(),this.nodes=r,this.a11yNamePropertyMap=Kl.getA11yNamePropertyMap(e),this.listPosition=n.listPosition,this.button=new zl(t,e,r,this.a11yNamePropertyMap,{align:n.align,arrowDirection:"below"===n.listPosition?"down":"up",cornerRadius:n.cornerRadius,xMargin:n.xMargin,yMargin:n.yMargin,baseColor:n.buttonFill,stroke:n.buttonStroke,lineWidth:n.buttonLineWidth,touchAreaXDilation:n.buttonTouchAreaXDilation,touchAreaYDilation:n.buttonTouchAreaYDilation,mouseAreaXDilation:n.buttonMouseAreaXDilation,mouseAreaYDilation:n.buttonMouseAreaYDilation,localPreferredWidthProperty:this.localPreferredWidthProperty,localMinimumWidthProperty:this.localMinimumWidthProperty,comboBoxVoicingNameResponsePattern:n.comboBoxVoicingNameResponsePattern,tandem:n.tandem.createTandem("button")}),this.addChild(this.button),this.listBox=new Yl(t,e,r,this.a11yNamePropertyMap,this.hideListBox.bind(this),()=>{this.button.blockNextVoicingFocusListener(),this.button.focus()},this.button,n.tandem.createTandem("listBox"),{align:n.align,highlightFill:n.highlightFill,xMargin:n.xMargin,yMargin:n.yMargin,cornerRadius:n.cornerRadius,fill:n.listFill,stroke:n.listStroke,lineWidth:n.listLineWidth,visible:!1,comboBoxListItemNodeOptions:{comboBoxVoicingNameResponsePattern:n.comboBoxVoicingNameResponsePattern,voicingContextResponse:n.comboBoxVoicingContextResponse,voicingHintResponse:n.comboBoxVoicingHintResponse},openedSoundPlayer:n.openedSoundPlayer,closedNoChangeSoundPlayer:n.closedNoChangeSoundPlayer,ariaLabelledbyAssociations:[{otherNode:this.button,otherElementName:R.Grz.LABEL_SIBLING,thisElementName:R.Grz.PRIMARY_SIBLING}]}),i.addChild(this.listBox),this.listParent=i;const a=new R.z$X(this.button,this.listParent,{fromCoordinateFrame:"parent",toCoordinateFrame:"local"});Vt.Z.multilink([a,this.button.localBoundsProperty,this.listBox.localBoundsProperty],t=>{this.scaleAndPositionListBox(t)}),this.opacityProperty.link(t=>{this.listBox.opacityProperty.value=t}),this.mutate(n),this.button.addListener(()=>{this.listBox.visibleProperty.value=!this.listBox.visibleProperty.value,this.listBox.visibleProperty.value&&this.listBox.focusListItemNode(t.value)}),this.display=null,this.clickToDismissListener={down:t=>{(!phet.chipper.isFuzzEnabled()||H.Z.nextDouble()<.005)&&(t.trail.containsNode(this.button)||t.trail.containsNode(this.listBox)||this.hideListBox())}},this.dismissWithFocusListener=t=>{t&&!t.trail.containsNode(this.listBox)&&this.hideListBox()},R.IKS.pdomFocusProperty.link(this.dismissWithFocusListener),this.listBox.visibleProperty.link(t=>{t?(this.scaleListBox(),this.listBox.moveToFront(),this.display=this.getUniqueTrail().rootNode().getRootedDisplays()[0],this.display.addInputListener(this.clickToDismissListener)):this.display&&this.display.hasInputListener(this.clickToDismissListener)&&(this.display.removeInputListener(this.clickToDismissListener),this.display=null)}),this.displayOnlyProperty=new S.Z(!1,{tandem:n.tandem.createTandem("displayOnlyProperty"),phetioFeatured:!0,phetioDocumentation:"disables interaction with the ComboBox and makes it appear like a display that shows the current selection"}),this.displayOnlyProperty.link(t=>{this.hideListBox(),this.button.setDisplayOnly(t),this.pickable=!t}),this.addLinkedElement(t,{tandemName:"property"}),this.disposeComboBox=()=>{a.dispose(),this.display&&this.display.hasInputListener(this.clickToDismissListener)&&this.display.removeInputListener(this.clickToDismissListener),R.IKS.pdomFocusProperty.unlink(this.dismissWithFocusListener),this.displayOnlyProperty.dispose(),this.listBox.dispose(),this.button.dispose(),r.forEach(t=>t.dispose())}}dispose(){this.disposeComboBox(),super.dispose()}showListBox(){this.listBox.visibleProperty.value=!0}hideListBox(){this.listBox.visibleProperty.value=!1}scaleListBox(){if(!this.listBox.localBounds.isEmpty()){const t=this.button.localToGlobalBounds(this.button.localBounds).width/this.button.localBounds.width,e=this.listBox.localToGlobalBounds(this.listBox.localBounds).width/this.listBox.localBounds.width;this.listBox.scale(t/e)}}scaleAndPositionListBox(t){t&&(this.scaleListBox(),"above"===this.listPosition?this.listBox.leftBottom=t.timesVector2(this.button.leftTop):this.listBox.leftTop=t.timesVector2(this.button.leftBottom))}setItemVisible(t,e){this.listBox.setItemVisible(t,e)}isItemVisible(t){return this.listBox.isItemVisible(t)}static getMaxItemWidthProperty(t){const e=_.flatten(t.map(t=>{const e=[t.boundsProperty];return(0,R.AXx)(t)&&(e.push(t.isWidthResizableProperty),e.push(t.minimumWidthProperty)),e}));return E.ZP.deriveAny(e,()=>Math.max(...t.map(t=>(0,R.S3T)(t)?t.minimumWidth||0:t.width)),{strictAxonDependencies:!1})}static getMaxItemHeightProperty(t){const e=t.map(t=>t.boundsProperty);return E.ZP.deriveAny(e,()=>Math.max(...t.map(t=>t.height)),{strictAxonDependencies:!1})}static getA11yNamePropertyMap(t){const e=new Map;return t.forEach(t=>{let i;i=(0,gs.i)(t.a11yName)?t.a11yName:"string"==typeof t.a11yName?new X.Z(t.a11yName):new X.Z(null),e.set(t.value,i)}),e}}u=Kl,_defineProperty(Kl,"ComboBoxIO",new rn.Z("ComboBoxIO",{valueType:u,documentation:"A combo box is composed of a push button and a listbox. The listbox contains items that represent choices. Pressing the button pops up the listbox. Selecting from an item in the listbox sets the value of an associated Property. The button shows the item that is currently selected.",supertype:R.NBX.NodeIO,events:["listBoxShown","listBoxHidden"]})),oe.register("ComboBox",Kl);class Ql extends Cl{constructor(t,e,i){super(t,e,(0,N.ZP)()({orientation:qo.Z.HORIZONTAL},i))}}oe.register("HSlider",Ql);var Xl=i(8588);const jl=on.Z.a11y.preferences.tabs.audio.voicing.titleStringProperty,Jl=on.Z.a11y.preferences.tabs.audio.voicing.toolbar.titleStringProperty,$l=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.titleStringProperty,th=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.labelStringStringProperty,eh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.pitch.titleStringProperty,ih=on.Z.a11y.preferences.tabs.audio.voicing.voicingOnStringProperty,sh=on.Z.a11y.preferences.tabs.audio.voicing.voicingOffStringProperty,nh=on.Z.a11y.preferences.tabs.audio.voicing.voicingOffOnlyAvailableInEnglishStringProperty,rh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.variablesPatternStringProperty,ah=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.titleStringProperty,oh=on.Z.a11y.preferences.tabs.audio.voicing.toolbar.toolbarRemovedStringProperty,lh=on.Z.a11y.preferences.tabs.audio.voicing.toolbar.toolbarAddedStringProperty,hh=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.titleStringProperty,ch=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.descriptionStringProperty,dh=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.labelStringProperty,uh=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.labelStringProperty,ph=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.labelStringProperty,mh=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.enabledAlertStringProperty,gh=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.disabledAlertStringProperty,yh=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.enabledAlertStringProperty,fh=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.disabledAlertStringProperty,Ah=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.enabledAlertStringProperty,vh=on.Z.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.disabledAlertStringProperty,bh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.titleStringProperty,Vh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.titlePatternStringProperty,Ph=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.noVoicesAvailableStringProperty,wh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.expandedAlertStringProperty,Mh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.collapsedAlertStringProperty,Sh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.writtenVariablesPatternStringProperty,Th=on.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty,Eh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.voiceRateNormalStringProperty,xh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.lowStringProperty,Ch=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.normalStringProperty,Ih=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.aboveNormalStringProperty,qh=on.Z.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.highStringProperty,kh=on.Z.preferences.tabs.audio.voicing.titleEnglishOnlyStringProperty,Dh=on.Z.preferences.tabs.audio.voicing.descriptionStringProperty,Lh=new Map;Lh.set(new To.Z(.5,.75),xh),Lh.set(new To.Z(.75,1.25),Ch),Lh.set(new To.Z(1.25,1.5),Ih),Lh.set(new To.Z(1.5,2),qh);const _h=new L.Z(13,26),Oh=new L.Z(100,5);class Zh extends co{constructor(t,e){const i=Xl.Z.validValues&&Xl.Z.validValues.length>1?kh:jl,s=new R.xvT(i,hd.PANEL_SECTION_LABEL_OPTIONS),n=new cn(Th,{label:i,description:Dh},{tandem:Y.Z.OPT_OUT}),r=new R.JxC(Dh,(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:n})),a=new lo(t.voicingEnabledProperty,!1,!0,(0,N.JA)({a11yName:i},mo.TOGGLE_SWITCH_OPTIONS)),o=new Ha({labelNode:s,descriptionNode:r,controlNode:a}),l=new R.xvT(Jl,hd.PANEL_SECTION_LABEL_OPTIONS),h=new lo(t.toolbarEnabledProperty,!1,!0,(0,N.JA)({a11yName:Jl,leftValueContextResponse:oh,rightValueContextResponse:lh},mo.TOGGLE_SWITCH_OPTIONS)),c=new Ha({labelNode:l,controlNode:h}),d=new R.xvT(hh,(0,bi.Z)({},hd.PANEL_SECTION_LABEL_OPTIONS,{tagName:"h3",innerContent:hh})),u=new cn(Th,{label:hh,description:ch},{tandem:Y.Z.OPT_OUT}),p=new R.JxC(ch,(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:u})),m=(t,e,i,s,n)=>{const r=new R.xvT(t,hd.PANEL_SECTION_CONTENT_OPTIONS);return new gi(e,r,{labelTagName:"label",labelContent:t,voicingNameResponse:t,voicingIgnoreVoicingManagerProperties:!0,voiceNameResponseOnSelection:!1,checkedContextResponse:i,uncheckedContextResponse:s,tandem:Y.Z.OPT_OUT})},g=new R.NBX,y=new R.SHm({align:"left",spacing:hd.VERTICAL_CONTENT_SPACING,children:[m(dh,t.voicingObjectResponsesEnabledProperty,mh,gh),m(uh,t.voicingContextResponsesEnabledProperty,yh,fh),m(ph,t.voicingHintResponsesEnabledProperty,Ah,vh)]});g.children=[d,p,y],p.leftTop=d.leftBottom.plusXY(0,hd.VERTICAL_CONTENT_SPACING),y.leftTop=p.leftBottom.plusXY(hd.CONTENT_INDENTATION_SPACING,hd.VERTICAL_CONTENT_SPACING);const f=new Nh($l,th,t.voiceRateProperty),A=new Rh(eh,t.voicePitchProperty),v=new R.SHm({spacing:hd.VERTICAL_CONTENT_SPACING,align:"left",children:[f,A]}),b=new R.xvT(ah,(0,bi.Z)({},hd.PANEL_SECTION_LABEL_OPTIONS,{cursor:"pointer"})),V=new S.Z(!1),P=new ms(V,{sideLength:16,innerContent:ah,voicingNameResponse:ah,voicingIgnoreVoicingManagerProperties:!0,tandem:Y.Z.OPT_OUT}),w=new R.NBX({children:[b,P]}),M=new R.$o8({press:()=>{V.toggle()},tandem:Y.Z.OPT_OUT});b.addInputListener(M);const T=new R.NBX({children:[g,c,w,v]});c.leftTop=g.leftBottom.plusXY(0,20),b.leftTop=c.leftBottom.plusXY(0,20),P.leftCenter=b.rightCenter.plusXY(10,0),v.leftTop=b.leftBottom.plusXY(0,10),V.link(t=>{v.visible=t}),P.focusHighlight=new R.bjc(w),super({titleNode:o,contentNode:T});t.voicingEnabledProperty.link(t=>{T.visible=t});Xl.Z.link(t=>{o.enabledProperty.value=t.startsWith("en")});const E=new ci.Z;t.voicingEnabledProperty.lazyLink(e=>{t.voicingMainWindowVoicingEnabledProperty.value&&(E.alert=e?ih:Xl.Z.value.startsWith("en")?sh:nh,this.isInsidePhetioArchetype()||R.LY3.speakIgnoringEnabled(E),this.alertDescriptionUtterance(E))});let x=null;R.LY3.voicesProperty.link(e=>{x&&(v.removeChild(x),x.dispose());let i=[];if(e.length>0){i=R.LY3.getEnglishPrioritizedVoices().slice(0,12)}const s=phet.joist.sim.topLayer||new R.NBX;x=new Bh(t.voiceProperty,i,s),v.addChild(x)}),V.lazyLink(t=>{const e=t?wh:Mh;P.voicingSpeakContextResponse({contextResponse:e}),this.alertDescriptionUtterance(e)})}}class Nh extends Rl{constructor(t,e,i){super(t,i,i.range,{includeArrowButtons:!1,layoutFunction:Rl.createLayoutFunction4(),delta:.25,titleNodeOptions:(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:45}),numberDisplayOptions:{decimalPlaces:2,valuePattern:rh,textOptions:(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:45})},sliderOptions:{thumbSize:_h,trackSize:Oh,keyboardStep:.25,minorTickSpacing:.25,labelTagName:"label",labelContent:e,voicingOnEndResponseOptions:{withNameResponse:!0}},tandem:Y.Z.OPT_OUT}),this.slider.voicingNameResponse=e,this.slider.voicingIgnoreVoicingManagerProperties=!0;const s=new cn(Sh,{value:i},{tandem:Y.Z.OPT_OUT}),n=new E.ZP([i,Eh,s],(t,e,i)=>1===t?e:i);this.slider.voicingObjectResponse=n}}class Bh extends Kl{constructor(t,e,i,s){const n=(0,N.ZP)()({listPosition:"above",accessibleName:bh,comboBoxVoicingNameResponsePattern:Vh.value,tandem:Y.Z.OPT_OUT},s),r=[];0===e.length&&r.push({value:null,createNode:t=>new R.xvT(Ph,hd.PANEL_SECTION_CONTENT_OPTIONS),a11yName:Ph}),e.forEach(t=>{r.push({value:t,createNode:e=>new R.xvT(t.name,hd.PANEL_SECTION_CONTENT_OPTIONS),a11yName:t.name})}),t.set(r[0].value),super(t,r,i,n),this.button.voicingIgnoreVoicingManagerProperties=!0,this.disposeVoiceComboBox=()=>{r.forEach(t=>{t.value=null})}}dispose(){this.disposeVoiceComboBox(),super.dispose()}}class Rh extends R.SHm{constructor(t,e){const i=new R.xvT(t,hd.PANEL_SECTION_CONTENT_OPTIONS),s=e.range,n=new Ql(e,s,{majorTickLength:10,thumbSize:_h,trackSize:Oh,keyboardStep:.25,shiftKeyboardStep:.1,constrainValue:t=>O.Z.roundToInterval(t,.01),labelTagName:"label",labelContent:t,voicingNameResponse:t,voicingIgnoreVoicingManagerProperties:!0,tandem:Y.Z.OPT_OUT}),r=new R.xvT("Low",{font:new $t(14)});n.addMajorTick(s.min,r);const a=new R.xvT("High",{font:new $t(14)});n.addMajorTick(s.max,a),super();e.link((t,e)=>{n.voicingObjectResponse=this.getPitchDescriptionString(t)}),this.mutate({children:[i,n],spacing:5})}getPitchDescriptionString(t){let e="";return Lh.forEach((i,s)=>{s.contains(t)&&(e=i)}),e}}Ct.Z.register("VoicingPanelSection",Zh);const Fh=Zh;class Hh extends R.NBX{constructor(t,e,i,s){const n=(0,N.ZP)()({tagName:"div",labelTagName:"h2"},s);n.tandem=Y.Z.OPT_OUT,super(n),Vt.Z.multilink([e,i],(e,i)=>{this.visible=e===t&&i})}}Ct.Z.register("PreferencesPanel",Hh);const zh=Hh;class Uh extends At.Z{}_defineProperty(Uh,"OVERVIEW",new(p=Uh)),_defineProperty(Uh,"SIMULATION",new p),_defineProperty(Uh,"VISUAL",new p),_defineProperty(Uh,"AUDIO",new p),_defineProperty(Uh,"INPUT",new p),_defineProperty(Uh,"LOCALIZATION",new p),_defineProperty(Uh,"enumeration",new ft.Z(p)),Ct.Z.register("PreferencesType",Uh);const Yh=on.Z.preferences.tabs.audio.audioFeatures.titleStringProperty;class Wh extends zh{constructor(t,e,i,s){super(Uh.AUDIO,e,i,{labelContent:Yh});const n={align:"left",spacing:hd.CONTENT_SPACING,excludeInvisibleChildrenFromBounds:!1},r=new R.SHm(n),a=new R.SHm(n);if(t.supportsVoicing){const e=new Fh(t);r.addChild(e)}if(t.supportsSound){const e=t.supportsVoicing!==t.supportsSound,i=new So(t,{includeTitleToggleSwitch:!e});a.addChild(i)}const o=new R.BET({align:"top",spacing:10,children:[r,a],tagName:"div"});t.customPreferences.forEach((t,e)=>{const i=e%2==0?r:a,n=t.createContent(s.tandem),o=new co({contentNode:n,contentNodeOptions:{excludeInvisibleChildrenFromBounds:!0},contentLeftMargin:0});i.addChild(o)});const l=new R.xvT(Yh,hd.PANEL_SECTION_LABEL_OPTIONS),h=new lo(t.audioEnabledProperty,!1,!0,(0,N.JA)({a11yName:Yh},mo.TOGGLE_SWITCH_OPTIONS)),c=new Ha({labelNode:l,controlNode:h,headingControl:!0});t.audioEnabledProperty.link(t=>{o.enabled=t});const d=new R.SHm({align:"center",spacing:25,children:[c,o]});this.addChild(d)}}Ct.Z.register("AudioPreferencesTabPanel",Wh);const Gh=Wh;class Kh extends zh{constructor(t,e,i,s){const n=(0,N.ZP)()({labelContent:"Simulation",phetioVisiblePropertyInstrumented:!1},s);super(Uh.SIMULATION,e,i,n);const r=new R.SHm({align:"left",spacing:hd.CONTENT_SPACING});this.addChild(r);const a=[];t.customPreferences.forEach(t=>{const e=t.createContent(n.tandem),i=new co({contentNode:e});a.push(i)}),r.children=a}}Ct.Z.register("SimulationPreferencesPanel",Kh);const Qh=Kh,Xh=on.Z.a11y.preferences.tabs.input.gestureControl.enabledAlertStringProperty,jh=on.Z.a11y.preferences.tabs.input.gestureControl.disabledAlertStringProperty,Jh=on.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;class $h extends zh{constructor(t,e,i,s){super(Uh.INPUT,e,i,{labelContent:"Input"});const n=new R.SHm({spacing:hd.CONTENT_SPACING,align:"left"});if(this.addChild(n),t.supportsGestureControl){const e=new R.xvT("Gesture Control",hd.PANEL_SECTION_LABEL_OPTIONS),i=new R.yhY("Use touch with custom swipes and taps instead. No direct touch with gesture control enabled.",(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{lineWrap:350,maxHeight:100,readingBlockNameResponse:B.Z.fillIn(Jh,{label:"Gesture Control",description:"Use touch with custom swipes and taps instead. No direct touch with gesture control enabled."})})),s=new lo(t.gestureControlsEnabledProperty,!1,!0,(0,N.JA)({a11yName:"Gesture Control",leftValueContextResponse:jh,rightValueContextResponse:Xh},mo.TOGGLE_SWITCH_OPTIONS)),r=new Ha({labelNode:e,descriptionNode:i,controlNode:s}),a=new co({titleNode:r,contentLeftMargin:0});n.addChild(a)}const r=new R.SHm({spacing:hd.CONTENT_SPACING,align:"left"});t.customPreferences.forEach(t=>{const e=t.createContent(s.tandem);r.addChild(new R.NBX({children:[e]}))});const a=new co({contentNode:r,contentLeftMargin:0});n.addChild(a)}}Ct.Z.register("InputPreferencesPanel",$h);const tc=$h;class ec extends Ha{constructor(t,e){const i=new R.xvT(on.Z.projectorModeStringProperty,hd.PANEL_SECTION_LABEL_OPTIONS),s=new R.JxC(on.Z.preferences.tabs.visual.projectorModeDescriptionStringProperty,hd.PANEL_SECTION_CONTENT_OPTIONS),n=phet.chipper.colorProfiles.find(t=>t!==R.iaM.PROJECTOR_COLOR_PROFILE),r=new lo(t,n,R.iaM.PROJECTOR_COLOR_PROFILE,(0,N.JA)({a11yName:on.Z.projectorModeStringProperty},mo.TOGGLE_SWITCH_OPTIONS)),a=new cn(on.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty,{label:on.Z.projectorModeStringProperty,description:on.Z.preferences.tabs.visual.projectorModeDescriptionStringProperty},{tandem:Y.Z.OPT_OUT});s.readingBlockNameResponse=a,super((0,N.ZP)()({labelNode:i,descriptionNode:s,controlNode:r},e))}}Ct.Z.register("ProjectorModeToggleSwitch",ec);const ic=ec,sc=on.Z.preferences.tabs.visual.interactiveHighlightsStringProperty,nc=on.Z.preferences.tabs.visual.interactiveHighlightsDescriptionStringProperty,rc=on.Z.a11y.preferences.tabs.visual.interactiveHighlights.enabledAlertStringProperty,ac=on.Z.a11y.preferences.tabs.visual.interactiveHighlights.disabledAlertStringProperty,oc=on.Z.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;class lc extends zh{constructor(t,e,i,s){const n=(0,N.ZP)()({labelContent:"Visual"},s),r=n.tandem;n.tandem=Y.Z.OPT_OUT,super(Uh.VISUAL,e,i,n);const a=new R.SHm({spacing:hd.CONTENT_SPACING,align:"left"});if(t.supportsProjectorMode){const e=new ic(t.colorProfileProperty);a.addChild(e)}if(t.supportsInteractiveHighlights){const e=new R.xvT(sc,hd.PANEL_SECTION_LABEL_OPTIONS),i=new cn(oc,{label:sc,description:nc},{tandem:Y.Z.OPT_OUT}),s=new R.JxC(nc,(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:i})),n=new lo(t.interactiveHighlightsEnabledProperty,!1,!0,(0,N.JA)({a11yName:sc,leftValueContextResponse:ac,rightValueContextResponse:rc},mo.TOGGLE_SWITCH_OPTIONS)),r=new Ha({labelNode:e,descriptionNode:s,controlNode:n});a.addChild(r)}t.customPreferences.forEach(t=>{const e=t.createContent(r),i=new R.NBX({children:[e]});a.addChild(i)});const o=new co({contentNode:a,contentLeftMargin:0});this.addChild(o)}}Ct.Z.register("VisualPreferencesPanel",lc);const hc=lc,cc=window.phet&&phet.chipper?phet.chipper.packageObject:{name:"placeholder"};Ct.Z.register("packageJSON",cc);const dc=cc,uc="usa",pc=["usa","africa","africaModest","asia","latinAmerica","oceania","random"],mc=_.uniq([uc,...(null==dc||null===(m=dc.phet)||void 0===m||null===(g=m.simFeatures)||void 0===g?void 0:g.supportedRegionsAndCultures)||[]].filter(t=>pc.includes(t))),gc=window.phet.chipper.queryParameters.regionAndCulture,yc=(fc=gc)&&mc.includes(fc)?gc:uc;var fc;phet.chipper.regionAndCulture=yc;class Ac extends I.Z{unguardedSet(t){mc.includes(t)&&super.unguardedSet(t)}}const vc=mc.length>1,bc=new Ac(yc,{validValues:mc.sort(),tandem:vc?Y.Z.GENERAL_MODEL.createTandem("regionAndCultureProperty"):Y.Z.OPT_OUT,phetioFeatured:vc,phetioValueType:se.Z,phetioDocumentation:"Describes how a region and culture will be portrayed in the sim."});Ct.Z.register("regionAndCultureProperty",bc);const Vc=bc,Pc={africa:on.Z.preferences.tabs.localization.regionAndCulture.africaStringProperty,africaModest:on.Z.preferences.tabs.localization.regionAndCulture.africaModestStringProperty,asia:on.Z.preferences.tabs.localization.regionAndCulture.asiaStringProperty,latinAmerica:on.Z.preferences.tabs.localization.regionAndCulture.latinAmericaStringProperty,oceania:on.Z.preferences.tabs.localization.regionAndCulture.oceaniaStringProperty,random:on.Z.preferences.tabs.localization.regionAndCulture.randomStringProperty,usa:on.Z.preferences.tabs.localization.regionAndCulture.unitedStatesOfAmericaStringProperty};class wc extends Kl{constructor(t){const e=(0,N.ZP)()({yMargin:3,tandem:Y.Z.OPT_OUT},t),i=mc.slice().sort().map(t=>({value:t,createNode:()=>new R.xvT(Pc[t],hd.PANEL_SECTION_CONTENT_OPTIONS)}));super(Vc,i,phet.joist.sim.topLayer,e)}}Ct.Z.register("RegionAndCultureComboBox",wc);const Mc=wc;class Sc extends R.AeJ{constructor(t,e){const i=B.Z.localeToLocalizedName(e),s=phet.chipper.queryParameters.dev?B.Z.wrapLTR(`${i} (${e})`):i,n=phet.chipper.localeData[e],r=n.englishName,a=new R.xvT(s,{font:hd.CONTENT_FONT});super(a.bounds.dilated(5),{cursor:"pointer",tagName:"button",innerContent:r}),a.center=this.center,this.addChild(a),this.locale=e;const o=new R.eMb({fire:()=>{t.value=e,Ci.play(),this.alertDescriptionUtterance(B.Z.fillIn(on.Z.a11y.preferences.tabs.localization.languageSelection.languageChangeResponsePatternStringProperty,{language:r}))},tandem:Y.Z.OPT_OUT});this.addInputListener(o),o.isOverProperty.link(t=>{this.stroke=t?R.JPB.getInnerGroupHighlightColor():R.Ilk.TRANSPARENT});t.link(t=>{this.fill=t===e?Cn.PHET_LOGO_BLUE:null})}}Ct.Z.register("LanguageSelectionNode",Sc);class Tc extends he{constructor(t){const e=t.validValues.slice().sort((t,e)=>{const i=B.Z.localeToLocalizedName(t).toLowerCase(),s=B.Z.localeToLocalizedName(e).toLowerCase();return i.localeCompare(s,"en-US",{sensitivity:"base"})});super(new R.zch({xMargin:5,xAlign:"left",autoRows:15,maxWidth:1e3,resize:!1,children:e.map(e=>new Sc(t,e))}),{tagName:"div",labelTagName:"h3",labelContent:on.Z.preferences.tabs.localization.languageSelection.titleStringProperty,descriptionTagName:"p",descriptionContent:on.Z.preferences.tabs.localization.languageSelection.descriptionStringProperty})}}Ct.Z.register("LocalePanel",Tc);const Ec=Tc,xc=on.Z.preferences.tabs.localization.titleStringProperty,Cc=on.Z.preferences.tabs.localization.regionAndCulture.titleStringProperty,Ic=on.Z.preferences.tabs.localization.regionAndCulture.descriptionStringProperty;class qc extends zh{constructor(t,e,i,s){const n=(0,N.ZP)()({labelContent:xc,phetioVisiblePropertyInstrumented:!1},s);super(Uh.LOCALIZATION,e,i,n);const r=new R.SHm({spacing:hd.CONTENT_SPACING});if(mc.length>1){const t=new Mc,e=new R.xvT(Cc,mo.CONTROL_LABEL_OPTIONS),i=new R.Hof(Ic,mo.CONTROL_DESCRIPTION_OPTIONS);r.addChild(new Ha({labelNode:e,controlNode:t,descriptionNode:i}))}if(t.supportsDynamicLocale&&t.includeLocalePanel){const e=new R.xvT(on.Z.preferences.tabs.localization.languageSelection.titleStringProperty,mo.CONTROL_LABEL_OPTIONS),i=new R.Hof(on.Z.preferences.tabs.localization.languageSelection.descriptionStringProperty,mo.CONTROL_DESCRIPTION_OPTIONS),s=new Ec(t.localeProperty),n=new R.SHm({children:[e,i,s],align:"left",spacing:5,stretch:!0,layoutOptions:{stretch:!0}});r.addChild(n)}t.customPreferences.forEach(t=>{const e=t.createContent(s.tandem);r.addChild(new R.NBX({children:[e]}))}),r.align=r.children.length>1?"left":"center";const a=new co({contentNode:r,contentLeftMargin:0});this.addChild(a)}}Ct.Z.register("LocalizationPreferencesPanel",qc);const kc=qc,Dc=new E.ZP([Xl.Z],t=>"ltr"===phet.chipper.localeData[t].direction);Ct.Z.register("isLeftToRightProperty",Dc);const Lc=Dc;class _c extends zh{constructor(t,e){super(Uh.OVERVIEW,t,e);const i=(0,bi.Z)({},hd.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:null,lineWrap:600,maxHeight:600,tagName:"p"}),s=[new R.yhY(on.Z.preferences.tabs.general.accessibilityIntroStringProperty,i),new R.yhY(on.Z.preferences.tabs.general.moreAccessibilityStringProperty,i)],n=new R.SHm({spacing:10,children:s});this.addChild(n);Lc.link(t=>{s.forEach(e=>{const i=t?"left":"right";e.align=i,n.align=i})})}}Ct.Z.register("OverviewPreferencesPanel",_c);const Oc=_c;class Zc extends R.NBX{constructor(t,e,i,s,n){const r=(0,N.ZP)()({phetioVisiblePropertyInstrumented:!1,isDisposable:!1},n),a=r.tandem;r.tandem=Y.Z.OPT_OUT,super(r),_defineProperty(this,"content",[]),this.selectedTabProperty=i;const o=new R.Lkj({matchVertical:!1});let l=null;if(e.includes(Uh.OVERVIEW)){l=new Oc(i,s.getTabVisibleProperty(Uh.OVERVIEW));const t=o.createBox(l);this.addChild(t),this.content.push(new Nc(l,Uh.OVERVIEW))}let h=null;if(e.includes(Uh.SIMULATION)){h=new Qh(t.simulationModel,i,s.getTabVisibleProperty(Uh.SIMULATION),{tandem:a.createTandem("simulationPreferencesPanel")});const e=o.createBox(h);this.addChild(e),this.content.push(new Nc(h,Uh.SIMULATION))}let c=null;if(e.includes(Uh.VISUAL)){c=new hc(t.visualModel,i,s.getTabVisibleProperty(Uh.VISUAL),{tandem:a.createTandem("visualPreferencesPanel")});const e=o.createBox(c);this.addChild(e),this.content.push(new Nc(c,Uh.VISUAL))}let d=null;if(e.includes(Uh.AUDIO)){d=new Gh(t.audioModel,i,s.getTabVisibleProperty(Uh.AUDIO),{tandem:a.createTandem("audioPreferencesPanel")});const e=o.createBox(d);this.addChild(e),this.content.push(new Nc(d,Uh.AUDIO))}let u=null;if(e.includes(Uh.INPUT)){u=new tc(t.inputModel,i,s.getTabVisibleProperty(Uh.INPUT),{tandem:a.createTandem("inputPreferencesPanel")});const e=o.createBox(u);this.addChild(e),this.content.push(new Nc(u,Uh.INPUT))}let p=null;if(e.includes(Uh.LOCALIZATION)){p=new kc(t.localizationModel,i,s.getTabVisibleProperty(Uh.LOCALIZATION),{tandem:a.createTandem("localizationPreferencesPanel")});const e=o.createBox(p);this.addChild(e),this.content.push(new Nc(p,Uh.LOCALIZATION))}}getSelectedContent(){for(let t=0;t{t.focusable=!1}})}}Ct.Z.register("PreferencesPanels",Zc);const Bc=Zc,Rc=new Ut.bn("M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z").makeImmutable();class Fc extends((0,R.CHP)(R.NBX)){constructor(t,e,i,s){const n=(0,N.ZP)()({iconNode:null,pointerAreaXDilation:0,phetioFeatured:!0,visiblePropertyOptions:{phetioFeatured:!0},cursor:"pointer",tagName:"button",innerContent:t,ariaRole:"tab",focusable:!0,containerTagName:"li",containerAriaRole:"presentation"},s),r=[new R.xvT(t,hd.TAB_OPTIONS)];n.iconNode&&r.push(n.iconNode);const a=new R.BET({children:r,spacing:8}),o=new R.AeJ({children:[a]}),l=new R.x12(0,0,0,0,{stroke:R.Nqr.INNER_FOCUS_COLOR,lineWidth:5});super(n),this.children=[o,l],a.boundsProperty.link(t=>{o.rectBounds=t.dilatedXY(15,10),l.x2=t.width,l.centerTop=t.centerBottom.plusXY(0,5),this.mouseArea=this.localBounds.dilatedX(n.pointerAreaXDilation),this.touchArea=this.mouseArea}),this.value=i;const h=new cn(on.Z.a11y.preferences.tabs.tabResponsePatternStringProperty,{title:t},{tandem:Y.Z.OPT_OUT});this.voicingNameResponse=h;const c=new R.$o8({press:()=>{e.set(i),this.voicingSpeakNameResponse()},tandem:Y.Z.OPT_OUT});this.addInputListener(c),Vt.Z.multilink([e,c.isOverProperty],(t,e)=>{o.opacity=t===i?1:e?.8:.6,this.focusable=t===i,l.visible=t===i})}}Ct.Z.register("PreferencesTab",Fc);const Hc=Fc;class zc extends R.BET{constructor(t,e,i){const s=(0,N.ZP)()({isDisposable:!1,tagName:"ul",ariaRole:"tablist",groupFocusHighlight:!0,spacing:10,align:"bottom"},i);super(s),_defineProperty(this,"selectedButton",null),_defineProperty(this,"content",[]),this.selectedPanelProperty=e;const n=e=>_.includes(t,e),r=s.spacing/2;n(Uh.OVERVIEW)&&this.content.push(new Hc(on.Z.preferences.tabs.overview.titleStringProperty,e,Uh.OVERVIEW,{pointerAreaXDilation:r,tandem:s.tandem.createTandem("overviewTab")})),n(Uh.SIMULATION)&&this.content.push(new Hc(on.Z.preferences.tabs.simulation.titleStringProperty,e,Uh.SIMULATION,{pointerAreaXDilation:r,tandem:s.tandem.createTandem("simulationTab")})),n(Uh.VISUAL)&&this.content.push(new Hc(on.Z.preferences.tabs.visual.titleStringProperty,e,Uh.VISUAL,{pointerAreaXDilation:r,tandem:s.tandem.createTandem("visualTab")})),n(Uh.AUDIO)&&this.content.push(new Hc(on.Z.preferences.tabs.audio.titleStringProperty,e,Uh.AUDIO,{pointerAreaXDilation:r,tandem:s.tandem.createTandem("audioTab")})),n(Uh.INPUT)&&this.content.push(new Hc(on.Z.preferences.tabs.input.titleStringProperty,e,Uh.INPUT,{pointerAreaXDilation:r,tandem:s.tandem.createTandem("inputTab")})),n(Uh.LOCALIZATION)&&this.content.push(new Hc(on.Z.preferences.tabs.localization.titleStringProperty,e,Uh.LOCALIZATION,{pointerAreaXDilation:r,iconNode:new R.y$t(Rc,{scale:.04,fill:"black"}),tandem:s.tandem.createTandem("localizationTab")})),this.children=this.content,Vt.Z.multilinkAny([e,...this.content.map(t=>t.visibleProperty)],()=>{if(!this.content.find(t=>t.value===e.value).visibleProperty.value){const t=this.content.find(t=>t.visibleProperty.value);t&&(e.value=t.value)}});const a=new R.F3H({keys:["arrowRight","arrowLeft","arrowUp","arrowDown"],callback:(t,i,s)=>{const n=t;if(s.keysDown)n.pointer.reserveForKeyboardDrag();else if("arrowRight"===i||"arrowLeft"===i){n.domEvent.preventDefault();const t="arrowRight"===i?1:-1;for(let i=0;i{this.content.forEach(t=>{t.value===this.selectedPanelProperty.value&&(this.selectedButton=t)})}),1===t.length&&(this.focusable=!1,this.inputEnabledProperty.value=!1)}getTabVisibleProperty(t){const e=_.find(this.content,e=>e.value===t);return e.visibleProperty}focusSelectedTab(){this.content.forEach(t=>{t.value===this.selectedPanelProperty.value&&t.focus()})}}Ct.Z.register("PreferencesTabs",zc);const Uc=zc,Yc="data:audio/mpeg;base64,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Ak9VmOWhIXESKVktJ2z4qoUibZXEhJVmo54y2pTCpKrkqInxtCMiURCZMUikUkts1JpZqUkLOLbHCI0RE1oSXNz+SbNkLMYykmzS0yFmTUlVCZ6udDBEKnkJlZCQhktiVP8kt2mGpHnoyCiA//u0xFQAFJGA2aSZNKMnNZKxzTAlCSoDGlYIaVGpygYYefKF0UpWkqkrtgp6HRRPZ5axHA+enRVOHHuXIak+k6KgHkM9YJwSlxO+7i7XWv7etVMjdXHJVJA/RPnrxiHQnFtT7Ubs7M81d1qM5hc9lw+EkhHZdLh2oMkqI6XmSVTa388cpVBk+crFS06YfpGtgvy6B6ubzT5iVVCpnL8ZJXz2BGeprtHKHFuQrC0SWDoeSoZnhGAiKi22w9p6SjtQfUMkPvmzPZvfXN6zV52lmQL/9EfSDeEzcSop1UxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//u0xAADwAAAAAAAACAAADSAAAAETEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Wc=Q(it,Yc),Gc=K.Z.createLock(Yc),Kc=new tt;let Qc=!1;const Xc=()=>{Qc||(Gc(),Qc=!0)},jc=it.decodeAudioData(Wc.buffer,t=>{null===Kc.audioBufferProperty.value&&(Kc.audioBufferProperty.set(t),Xc())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Kc.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Xc()});jc&&jc.then(t=>{null===Kc.audioBufferProperty.value&&(Kc.audioBufferProperty.set(t),Xc())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Xc()});const Jc=Kc;class $c extends Ie{constructor(t,e){super(Jc,e);t.lazyLink(()=>{this.play()})}dispose(){we.Z.assertNotDisposable()}}Ct.Z.register("PreferencesTabSwitchSoundGenerator",$c);const td=$c,ed=new $t({size:24,weight:"bold"}),id=new $t(20),sd={font:id,maxWidth:120},nd=new $t(16),rd={font:nd,maxWidth:500},ad=new $t({weight:"bold",size:16}),od={font:ad,maxWidth:360};class ld extends ea{constructor(t,e){const i=new R.xvT(on.Z.preferences.titleStringProperty,{font:ed,maxWidth:500,tagName:"h1",innerContent:on.Z.preferences.titleStringProperty}),s=(0,N.ZP)()({titleAlign:"center",title:i,isDisposable:!1,phetioDynamicElement:!0,closeButtonVoicingDialogTitle:on.Z.preferences.titleStringProperty,positionInPDOM:!0},e),n=[Uh.OVERVIEW];t.supportsSimulationPreferences()&&n.push(Uh.SIMULATION),t.supportsVisualPreferences()&&n.push(Uh.VISUAL),t.supportsAudioPreferences()&&n.push(Uh.AUDIO),t.supportsInputPreferences()&&n.push(Uh.INPUT),t.supportsLocalizationPreferences()&&n.push(Uh.LOCALIZATION);const r=new vi(Uh.OVERVIEW,{validValues:n,tandem:s.tandem.createTandem("selectedTabProperty")}),a=new Uc(n,r,{tandem:s.tandem.createTandem("preferencesTabs")}),o=new Bc(t,n,r,a,{tandem:s.tandem.createTandem("preferencesPanels")}),l=new R.SHm({children:[a,new R.qYj({layoutOptions:{bottomMargin:20,stretch:!0}}),o]}),h=new td(r,{initialOutputLevel:.2});Tt.addSoundGenerator(h,{categoryName:"user-interface"}),super(l,s),this.preferencesTabs=a,this.preferencesPanels=o,a.addInputListener(new R.F3H({keys:["arrowDown"],callback:()=>{this.focusSelectedPanel()}})),l.addInputListener(new R.F3H({keys:["arrowUp"],callback:t=>{t&&this.preferencesPanels.isFocusableSelectedContent(t.target)&&this.focusSelectedTab()}}))}focusSelectedTab(){this.preferencesTabs.focusSelectedTab()}focusSelectedPanel(){this.preferencesPanels.focusSelectedPanel()}}_defineProperty(ld,"TAB_FONT",id),_defineProperty(ld,"TAB_OPTIONS",sd),_defineProperty(ld,"TITLE_FONT",ed),_defineProperty(ld,"CONTENT_FONT",nd),_defineProperty(ld,"CONTENT_MAX_WIDTH",500),_defineProperty(ld,"PANEL_SECTION_CONTENT_OPTIONS",rd),_defineProperty(ld,"PANEL_SECTION_LABEL_FONT",ad),_defineProperty(ld,"PANEL_SECTION_LABEL_MAX_WIDTH",360),_defineProperty(ld,"PANEL_SECTION_LABEL_OPTIONS",od),_defineProperty(ld,"CONTENT_SPACING",20),_defineProperty(ld,"VERTICAL_CONTENT_SPACING",5),_defineProperty(ld,"CONTENT_INDENTATION_SPACING",15),_defineProperty(ld,"LABEL_CONTENT_SPACING",10),Ct.Z.register("PreferencesDialog",ld);const hd=ld;class cd extends Pa{constructor(t,e,i){const s=(0,N.ZP)()({listener:()=>{const t=r.getElement();t.show(),t.focusSelectedTab()},highlightExtensionWidth:8.6,highlightExtensionHeight:10,innerContent:on.Z.preferences.titleStringProperty,positionInPDOM:!0,voicingNameResponse:on.Z.preferences.titleStringProperty,visiblePropertyOptions:{phetioFeatured:!0}},i),n=new R.Eep(Ra,{scale:18.85/Ra.height,pickable:!1});super(n,e,s);const r=new pa(e=>new hd(t,{tandem:e,focusOnHideNode:this}),[],{tandem:s.tandem.createTandem("preferencesDialogCapsule"),phetioType:pa.PhetioCapsuleIO(ea.DialogIO),disposeOnClear:!1});e.link(t=>{n.image=t.equals(R.Ilk.BLACK)?Ra:Za}),this.setPDOMAttribute("aria-haspopup",!0)}}Ct.Z.register("NavigationBarPreferencesButton",cd);const dd=cd;class ud extends R.BET{constructor(t,e,i){const s=(0,N.ZP)()({align:"center",spacing:2,tandem:Y.Z.REQUIRED},i),n=[];if(t.preferencesModel.shouldShowDialog()){const i=new dd(t.preferencesModel,e,{tandem:s.tandem.createTandem("preferencesButton"),pointerAreaDilationX:1,pointerAreaDilationY:1});n.push(i)}const r=t.preferencesModel.supportsAudioPreferences();if(r&&n.push(new La(Lt.audioEnabledProperty,e,{tandem:s.tandem.createTandem("audioToggleButton"),pointerAreaDilationX:1,pointerAreaDilationY:.15,supportsAudioPreferences:r})),t.hasKeyboardHelpContent){const i=new xa(t.screens,t.selectedScreenProperty,e,{tandem:s.tandem.createTandem("keyboardHelpButton"),pointerAreaDilationX:1,pointerAreaDilationY:1});phet.chipper.queryParameters.supportsInteractiveDescription&&!Z.Z.mobileSafari&&n.push(i)}s.children=n,super(_.omit(s,"tandem"))}}Ct.Z.register("A11yButtonsHBox",ud);const pd=ud,md=new Ut.bn("M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z").makeImmutable(),gd=on.Z.a11y.homeScreenDescriptionStringProperty;class yd extends Pa{constructor(t,e,i,s){const n=(0,N.ZP)()({highlightExtensionWidth:4,containerTagName:"li",descriptionContent:gd,appendDescription:!0,voicingHintResponse:gd},s),r=new R.y$t(md);r.setScaleMagnitude(.48*t/r.height*.85);const a=new R.AeJ(0,0,r.width/.85+12,t);r.center=a.center;const o=new R.NBX({children:[a,r]}),l=new ci.Z,h=n.listener;n.listener=()=>{h&&h(),this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null,utterance:l})},super(o,e,n);const c=R.Nqr.getOuterLineWidthFromNode(this);this.focusHighlight=Ut.bn.bounds(this.bounds.setMaxY(this.bounds.maxY-c/2)),Vt.Z.multilink([this.interactionStateProperty,e],(t,e)=>{e.equals(R.Ilk.BLACK)?r.fill=t===Ii.PRESSED?"gray":"white":r.fill=t===Ii.PRESSED?"#444":"#222"}),this.addInputListener({focus:()=>{this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})}}),i.link(t=>{this.innerContent=t,this.voicingNameResponse=t})}}Ct.Z.register("HomeButton",yd);const fd=t=>t.width+8;class Ad extends((0,R.CHP)(R.NBX)){constructor(t,e,i,s,n,r){const a=(0,N.ZP)()({cursor:"pointer",phetioDocumentation:`Button in the navigation bar that selects the '${i.tandem.name}' screen`,maxButtonWidth:null,tagName:"button",containerTagName:"li",descriptionContent:i.descriptionContent,appendDescription:!0,voicingHintResponse:i.descriptionContent},r);super(),this.screen=i,i.pdomDisplayNameProperty.link(t=>{this.innerContent=t,this.voicingNameResponse=t});const o=new R.NBX({children:[i.navigationBarIcon],maxHeight:.625*n,pdomVisible:!1}),l=new R.AeJ(0,0,o.width,o.height),h=new R.NBX({children:[o,l]}),c=new R.xvT(i.nameProperty,{font:new $t(10)}),d=new R.SHm({children:[h,c],pickable:!1,usesOpacity:!0,maxHeight:n}),u=new R.AeJ({rectBounds:d.bounds}),p=fd(u),m=new Va(p,u.height,{center:d.center,fill:"white"}),g=new Va(p,u.height,{center:d.center,fill:"black"}),y=new E.ZP([e],t=>t===i);this.buttonModel=new _i({listener:()=>{e.value!==i&&this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null}),e.value=i},tandem:a.tandem,phetioEnabledPropertyInstrumented:!1});const f=this.buttonModel.createPressListener({tandem:a.tandem.createTandem("pressListener")});this.addInputListener(f),this.addInputListener({focus:()=>{this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})}}),Vt.Z.multilink([y,this.buttonModel.looksPressedProperty,this.buttonModel.looksOverProperty,t,this.buttonModel.enabledProperty],(t,e,s,n,r)=>{const a=!n.equals(R.Ilk.BLACK),o=a?"black":Cn.BUTTON_YELLOW,h=a?"gray":"white";c.fill=t?o:h,d.opacity=t?1:e?.65:.5,m.visible=!a&&r&&(s||e),g.visible=a&&r&&(s||e),"black"===i.showScreenIconFrameForNavigationBarFill&&n.equals(R.Ilk.BLACK)?l.stroke=Cn.SCREEN_ICON_FRAME:"white"===i.showScreenIconFrameForNavigationBarFill&&n.equals(R.Ilk.WHITE)?l.stroke="black":l.stroke="transparent"}),this.buttonModel.enabledProperty.link(t=>{this.cursor=t?a.cursor:null});const A=()=>{d.spacing=O.Z.clamp(12-c.height,0,3),u.setRectBounds(d.bounds),m.spacing=g.spacing=fd(u),m.center=g.center=d.center};d.boundsProperty.lazyLink(A),c.boundsProperty.link(A),this.children=[d,u,m,g];const v=a.maxButtonWidth&&this.width>a.maxButtonWidth;c.maxWidth=v?o.maxWidth=a.maxButtonWidth-(this.width-d.width):this.width,this.localBoundsProperty.link(t=>{this.focusHighlight=Ut.bn.bounds(t)}),this.mutate(a)}}Ct.Z.register("NavigationBarScreenButton",Ad);const vd=Ad;class bd extends R.y$t{constructor(t){const e=new Ut.bn;for(let i=0;i<3;i++)e.circle(0,3.543*i*2.5,2.5);super(e,t)}}Ct.Z.register("KebabMenuIcon",bd);const Vd=bd;var Pd=i(8377);const wd=new Ut.bn("M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z").makeImmutable(),Md=new R.y$t(wd,{fill:"rgba(0,0,0,0.7)",maxWidth:15.5}),Sd=Md.width+2;class Td extends((0,R.pL8)((0,R.CHP)(R.NBX))){constructor(t,e,i,s,n,r){var a;const o=(0,N.ZP)()({separatorBefore:!1,checkedProperty:null,textFill:"black",cursor:"pointer",phetioDocumentation:"Item buttons shown in a popup menu",phetioEventType:F.Z.USER,tagName:"button",containerTagName:"li",containerAriaRole:"none",ariaRole:"menuitem",positionInPDOM:!0},r);super(),n&&this.setVisibleProperty(R.U2N);const l=t=>{this.innerContent=t,this.voicingNameResponse=t};e.link(l),this.present=s;const h=new R.xvT(e,{font:new $t(18),fill:o.textFill,maxWidth:400}),c=new R.AeJ({cornerRadius:5});h.boundsProperty.link(t=>{this.localMinimumWidth=t.width+2+5+Sd,c.rectHeight=t.height+3+3}),this.localPreferredWidthProperty.link(t=>{(t=null===t?this.localMinimumWidth:Math.max(this.localMinimumWidth||0,t))&&(c.rectWidth=t)}),this.addChild(c),this.addChild(h),R.bGt.create(this,[c,h],(t,e)=>{e.left=t.left+2+Sd,e.centerY=t.centerY}),this.addInputListener({enter:()=>{c.fill="#a6d2f4"},exit:()=>{c.fill=null}}),this.addInputListener(new R.eMb({tandem:null===(a=o.tandem)||void 0===a?void 0:a.createTandem("fireListener"),fire:e=>{t(e),i(e)}})),this.separatorBefore=o.separatorBefore;let d=null;if(o.checkedProperty){const t=new R.NBX({children:[Md],right:h.left-2,centerY:h.centerY});d=e=>{t.visible=e},o.checkedProperty.link(d),this.addChild(t)}this.mutate(o),this.disposeMenuItem=()=>{o.checkedProperty&&d&&o.checkedProperty.hasListener(d)&&o.checkedProperty.unlink(d),e.hasListener(l)&&e.unlink(l),h.dispose()}}dispose(){this.disposeMenuItem(),super.dispose()}}oe.register("MenuItem",Td);class Ed extends R.SHm{constructor(t,e){const i={font:(e=(0,N.ZP)()({titleFont:new $t({size:18,weight:"bold"}),textFont:new $t(16),align:"left",spacing:1,maxWidth:550},e)).textFont,align:"left",lineWrap:e.maxWidth,tagName:"p"},s=[];s.push(new R.JxC(on.Z.credits.titleStringProperty,{font:e.titleFont,tagName:"h2"}));const n=(t,e)=>new E.ZP([t],t=>B.Z.format(t,`‪${e}‬`));if(t.leadDesign){const e=n(on.Z.credits.leadDesignStringProperty,t.leadDesign);s.push(new R.yhY(e,i))}if(t.softwareDevelopment){const e=n(on.Z.credits.softwareDevelopmentStringProperty,t.softwareDevelopment);s.push(new R.yhY(e,i))}if(t.team){const e=n(on.Z.credits.teamStringProperty,t.team);s.push(new R.yhY(e,i))}if(t.contributors){const e=n(on.Z.credits.contributorsStringProperty,t.contributors);s.push(new R.yhY(e,i))}if(t.qualityAssurance){const e=n(on.Z.credits.qualityAssuranceStringProperty,t.qualityAssurance);s.push(new R.yhY(e,i))}if(t.graphicArts){const e=n(on.Z.credits.graphicArtsStringProperty,t.graphicArts);s.push(new R.yhY(e,i))}if(t.soundDesign){const e=n(on.Z.credits.soundDesignStringProperty,t.soundDesign);s.push(new R.yhY(e,i))}if(t.thanks){s.length>0&&s.push(new R.mE$(13)),s.push(new R.JxC(on.Z.credits.thanksStringProperty,{font:e.titleFont,tagName:"h2"}));const n=new R.yhY(t.thanks,i);n.innerContent=t.thanks,s.push(n)}e.children=s,super(e),this.disposeCreditsNode=()=>{s.forEach(t=>{t.dispose&&t.dispose()})}}dispose(){this.disposeCreditsNode(),super.dispose()}}Ct.Z.register("CreditsNode",Ed);class xd extends At.Z{}_defineProperty(xd,"UP_TO_DATE",new(y=xd)),_defineProperty(xd,"OUT_OF_DATE",new y),_defineProperty(xd,"CHECKING",new y),_defineProperty(xd,"OFFLINE",new y),_defineProperty(xd,"UNCHECKED",new y),_defineProperty(xd,"enumeration",new ft.Z(y,{phetioDocumentation:"Describes the states that can occur during an Update check"})),Ct.Z.register("UpdateState",xd);const Cd=phet.preloads.chipper.SimVersion,Id=dc.name,qd=Cd.parse(dc.version,phet.chipper.buildTimestamp),kd="https:"===document.location.protocol?"https:":"http:";const Dd=new class{constructor(){this.stateProperty=new vi(xd.UNCHECKED),this.latestVersion=null,this.ourVersion=qd,this.timeoutCallback=this.timeout.bind(this),this.areUpdatesChecked="phet"===phet.chipper.brand&&!phet.chipper.isApp&&phet.chipper.queryParameters.yotta,this.updateURL=`https://phet.colorado.edu/html-sim-update?simulation=${encodeURIComponent(Id)}&version=${encodeURIComponent(qd.toString())}&buildTimestamp=${encodeURIComponent(""+phet.chipper.buildTimestamp)}`,this.timeoutId=-1}clearTimeout(){window.clearTimeout(this.timeoutId)}setTimeout(){this.timeoutId=window.setTimeout(this.timeoutCallback,15e3)}resetTimeout(){this.stateProperty.value===xd.CHECKING&&(this.clearTimeout(),this.setTimeout())}timeout(){this.stateProperty.value=xd.OFFLINE}check(){if(!this.areUpdatesChecked||this.stateProperty.value!==xd.UNCHECKED&&this.stateProperty.value!==xd.OFFLINE)return;if(this.ourVersion.isSimNotPublished)return void(this.stateProperty.value=xd.UP_TO_DATE);const t=new XMLHttpRequest;"withCredentials"in t&&(this.stateProperty.value=xd.CHECKING,this.setTimeout(),t.onload=()=>{this.clearTimeout();try{const e=JSON.parse(t.responseText);e.error?(console.log("Update check failure: "+e.error),this.stateProperty.value=xd.OFFLINE):(this.updateURL&&(this.updateURL=e.updateURL),this.latestVersion=Cd.parse(e.latestVersion,e.buildTimestamp),"out-of-date"===e.state?this.stateProperty.value=xd.OUT_OF_DATE:"up-to-date"===e.state?this.stateProperty.value=xd.UP_TO_DATE:(console.log("Failed to get proper state: "+e.state),this.stateProperty.value=xd.OFFLINE))}catch(e){this.stateProperty.value=xd.OFFLINE}},t.onerror=()=>{this.clearTimeout(),this.stateProperty.value=xd.OFFLINE},t.open("post",kd+"//phet.colorado.edu/services/check-html-updates",!0),t.send(JSON.stringify({api:"1.0",simulation:Id,locale:phet.joist.sim.locale,currentVersion:this.ourVersion.toString(),buildTimestamp:phet.chipper.buildTimestamp})))}};Ct.Z.register("updateCheck",Dd);const Ld=Dd;class _d extends R.NBX{constructor(t){const e=(0,N.ZP)()({diameter:15,speed:1,numberOfElements:16,elementFactory:_d.rectangleFactory,activeColor:"rgba( 0, 0, 0, 1 )",inactiveColor:"rgba( 0, 0, 0, 0.15 )"},t);super(e),this.indicatorRotation=2*Math.PI,this.angleDelta=2*Math.PI/e.numberOfElements,this.activeColorProperty=new R.M4p(e.activeColor),this.inactiveColorProperty=new R.M4p(e.inactiveColor),this.speed=e.speed,this.elements=[];let i=0;for(let s=0;s{s.dispose()}}dispose(){this.disposeTextPushButton(),super.dispose()}}oe.register("TextPushButton",Zd);const Nd=new $t(14),Bd={createCheckingNode:function(t){const e=new _d({diameter:t.big?24:18}),i=new R.BET((0,bi.Z)({spacing:t.big?10:8,maxWidth:550,children:[e,new R.JxC(on.Z.updates.checkingStringProperty,{font:new $t(t.big?16:14),fontWeight:t.big?"bold":"normal"})]},t));return i.step=function(t){Ld.stateProperty.value===xd.CHECKING&&e.step(t)},i.stepListener=i.step.bind(i),i},createUpToDateNode:function(t){return new R.BET((0,bi.Z)({spacing:8,maxWidth:550,children:[new R.AeJ(0,0,20,20,5,5,{fill:"#5c3",scale:t.big?1.2:1,children:[new R.y$t(wd,{fill:"#fff",scale:.029,centerX:10,centerY:10})]}),new R.JxC(on.Z.updates.upToDateStringProperty,{font:new $t(t.big?16:14),fontWeight:t.big?"bold":"normal"})]},t))},createOutOfDateAboutNode:function(t){const e=new E.ZP([on.Z.updates.outOfDateStringProperty,R.U2N],(t,e)=>e?`${t}`:t),i={url:Ld.updateURL},s=new R.Hof(e,{links:i,font:Nd});return new R.BET((0,bi.Z)({spacing:8,maxWidth:550,children:[new R.y$t(Od,{fill:"#E87600",scale:.03}),s],tagName:"div"},t))},createOutOfDateDialogNode:function(t,e,i,s){const n=new E.ZP([on.Z.updates.newVersionAvailableStringProperty],t=>B.Z.format(t,i)),r=new E.ZP([on.Z.updates.yourCurrentVersionStringProperty],t=>B.Z.format(t,e));return new R.SHm((0,bi.Z)({spacing:15,maxWidth:550,children:[new R.SHm({spacing:5,align:"left",children:[new R.JxC(n,{font:new $t(16),fontWeight:"bold"}),new R.JxC(r,{font:Nd})]}),new R.BET({spacing:25,children:[new Zd(on.Z.updates.getUpdateStringProperty,{visibleProperty:R.U2N,baseColor:"#6f6",font:Nd,listener:function(){(0,R.MwI)(Ld.updateURL)}}),new Zd(on.Z.updates.noThanksStringProperty,{baseColor:"#ddd",font:Nd,listener:function(){t.hide()}})]})]},s))},createOfflineNode:function(t){return new R.BET((0,bi.Z)({spacing:0,maxWidth:550,children:[new R.mE$(20),new R.JxC(on.Z.updates.offlineStringProperty,{font:new $t(t.big?16:14),fontWeight:t.big?"bold":"normal"})]},t))}};Ct.Z.register("UpdateNodes",Bd);const Rd=Bd;class Fd extends ea{constructor(t,e,i,s,n){const r=(0,N.ZP)()({xSpacing:26,topMargin:26,bottomMargin:26,leftMargin:26,phetioReadOnly:!0,phetioDynamicElement:!0,isDisposable:!1,tandem:Y.Z.REQUIRED},n),a=phet.brand.Brand;let o=[];const l=new R.JxC(t,{font:new $t(32),maxWidth:550,tagName:"h1"});o.push(l);const h=new E.ZP([on.Z.versionPatternStringProperty],t=>B.Z.format(t,e));o.push(new R.JxC(h,{font:new $t(16),maxWidth:550,tagName:"p"})),phet.chipper.buildTimestamp&&o.push(new R.JxC(phet.chipper.buildTimestamp,{font:new $t(10.4),maxWidth:550,tagName:"p",innerContent:phet.chipper.buildTimestamp}));let c=null,d=null,u=null;if(Ld.areUpdatesChecked){const t={left:0,top:0},e=Rd.createCheckingNode(t),i=Rd.createUpToDateNode(t),s=Rd.createOutOfDateAboutNode(t),n=Rd.createOfflineNode(t);c=e.stepListener,d=t=>{e.visible=t===xd.CHECKING,i.visible=t===xd.UP_TO_DATE,s.visible=t===xd.OUT_OF_DATE,n.visible=t===xd.OFFLINE,e.pdomVisible=e.visible,i.pdomVisible=i.visible,s.pdomVisible=s.visible,n.pdomVisible=n.visible},u=new R.NBX({children:[e,i,s,n],maxWidth:550,visibleProperty:R.U2N}),o.push(u)}const p=[];if(a.name&&p.push(new R.yhY(a.name,{font:new $t(16),supScale:.5,supYOffset:3,maxWidth:550,tagName:"h2",innerContent:a.name})),a.copyright){const t=phet.chipper.buildTimestamp?phet.chipper.buildTimestamp.split("-")[0]:(new Date).getFullYear(),e=B.Z.fillIn(a.copyright,{year:t});p.push(new R.JxC(e,{font:new $t(12),maxWidth:550,tagName:"p",innerContent:e}))}let m=null;a.additionalLicenseStatement&&(m=new R.yhY(a.additionalLicenseStatement,{font:new $t(10.4),fill:"gray",align:"left",maxWidth:550,tagName:"p",innerContent:a.additionalLicenseStatement}),p.push(m)),p.length>0&&(o.push(new R.mE$(15)),o=o.concat(p));let g=null;"phet"!==a.id&&"phet-io"!==a.id||(o.push(new R.mE$(15)),g=new Ed(i,{titleFont:new $t({size:16,weight:"bold"}),textFont:new $t(12),maxWidth:550}),o.push(g));const y=[],f=a.getLinks(dc.name,s);if(f&&f.length>0){y.push(new R.mE$(15));for(let e=0;ee?`${i}`:`${i}: ${t.url}`);y.push(new R.Hof(i,{links:{url:t.url},font:new $t(16)}))}const t=new R.SHm({spacing:6,align:"left",children:y,maxWidth:550});o.push(t)}super(new R.SHm({align:"left",spacing:6,children:o,tagName:"div"}),r),this.updateStepListener=c,this.updateVisibilityListener=d,this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherElementName:R.Grz.PRIMARY_SIBLING,otherNode:l})}show(){this.shouldShowPopup()&&(Ld.areUpdatesChecked&&!this.isShowingProperty.value&&(Ld.resetTimeout(),Ld.stateProperty.value!==xd.OFFLINE&&Ld.stateProperty.value!==xd.UNCHECKED||Ld.check(),this.updateStepListener&&q.Z.addListener(this.updateStepListener),this.updateVisibilityListener&&Ld.stateProperty.link(this.updateVisibilityListener)),super.show())}hide(){this.isShowingProperty.value&&(super.hide(),Ld.areUpdatesChecked&&(this.updateVisibilityListener&&Ld.stateProperty.unlink(this.updateVisibilityListener),this.updateStepListener&&q.Z.removeListener(this.updateStepListener)))}}Ct.Z.register("AboutDialog",Fd);class Hd{static generateScreenshotAtIncreasedResolution(t,e){const i=document.createElement("canvas"),s=i.getContext("2d"),n=R.cQK.backingScale(s)*e;i.width=t.display.width*n,i.height=t.display.height*n,s.scale(n,n),s.fillStyle=t.display.domElement.style.backgroundColor,s.fillRect(0,0,i.width,i.height);const r=new R.LdF(i,s);return t.rootNode.renderToCanvasSubtree(r,Re.Z.scaling(n)),i}static renderAtScale(t,e){const i=document.createElement("canvas"),s=i.getContext("2d");return i.width=t.width*e,i.height=t.height*e,s.scale(e,e),s.drawImage(t,0,0),i}static generateScreenshot(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"image/png";const i=Hd.generateScreenshotAtIncreasedResolution(t,2);return Hd.renderAtScale(i,.5).toDataURL(e)}}Ct.Z.register("ScreenshotGenerator",Hd);const zd=Hd;class Ud extends ea{constructor(t){const e={centerX:0,centerY:0,big:!0},i=Rd.createCheckingNode(e),s=Rd.createUpToDateNode(e),n=new R.NBX({tagName:"div"}),r=Rd.createOfflineNode(e);super(new R.NBX({children:[i,s,n,r],tagName:"div"}),t);const a=()=>{const t=Ld.latestVersion?Ld.latestVersion.toString():"x.x.xx",i=Ld.ourVersion.toString();n.children=[Rd.createOutOfDateDialogNode(this,i,t,e)]};a(),this.updateStepListener=i.stepListener,this.updateVisibilityListener=t=>{t===xd.OUT_OF_DATE&&a(),i.visible=t===xd.CHECKING,s.visible=t===xd.UP_TO_DATE,n.visible=t===xd.OUT_OF_DATE,r.visible=t===xd.OFFLINE,i.pdomVisible=i.visible,s.pdomVisible=s.visible,n.pdomVisible=n.visible,r.pdomVisible=r.visible}}show(){this.shouldShowPopup()&&(Ld.areUpdatesChecked&&!this.isShowingProperty.value&&(Ld.resetTimeout(),Ld.stateProperty.value!==xd.OFFLINE&&Ld.stateProperty.value!==xd.UNCHECKED||Ld.check(),q.Z.addListener(this.updateStepListener),Ld.stateProperty.link(this.updateVisibilityListener)),super.show())}hide(){this.isShowingProperty.value&&(super.hide(),Ld.areUpdatesChecked&&(Ld.stateProperty.unlink(this.updateVisibilityListener),q.Z.removeListener(this.updateStepListener)))}}Ct.Z.register("UpdateDialog",Ud);class Yd extends(Jr(R.NBX,0)){constructor(t,e){const i="phet"===phet.chipper.brand,s=phet.chipper.isApp,n=(0,N.ZP)()({phetioType:Yd.PhetMenuIO,phetioState:!1,phetioDocumentation:"This menu is displayed when the PhET button is pressed.",phetioVisiblePropertyInstrumented:!1,tagName:"ul",ariaRole:"menu"},e);super(n);const r=new pa(e=>new Fd(t.simNameProperty,t.version,t.credits,t.locale,{tandem:e,focusOnHideNode:this.focusOnHideNode}),[],{tandem:n.tandem.createTandem("aboutDialogCapsule"),phetioType:pa.PhetioCapsuleIO(ea.DialogIO),disposeOnClear:!1});let a=null;const o=[{textStringProperty:on.Z.menuItem.phetWebsiteStringProperty,present:i,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{(0,R.MwI)("https://phet.colorado.edu/"+t.locale)}},{textStringProperty:on.Z.menuItem.reportAProblemStringProperty,present:i&&!s,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{const e=`https://phet.colorado.edu/files/troubleshooting/?sim=${encodeURIComponent(t.simNameProperty.value)}&version=${encodeURIComponent(`${t.version} ${phet.chipper.buildTimestamp?phet.chipper.buildTimestamp:"(unbuilt)"}`)}&url=${encodeURIComponent(window.location.href)}&dependencies=${encodeURIComponent(JSON.stringify({}))}`;(0,R.MwI)(e)}},{textStringProperty:new X.Z("QR code"),present:phet.chipper.queryParameters.qrCode,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{(0,R.MwI)(`http://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(window.location.href)}&size=220x220&margin=0`)}},{textStringProperty:on.Z.menuItem.getUpdateStringProperty,present:Ld.areUpdatesChecked,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{a||(a=new Ud({focusOnHideNode:this.focusOnHideNode})),a.show()},options:{textFill:new E.ZP([Ld.stateProperty],t=>t===xd.OUT_OF_DATE?"#0a0":"#000")}},{textStringProperty:on.Z.menuItem.screenshotStringProperty,present:!s,shouldBeHiddenWhenLinksAreNotAllowed:!1,callback:()=>{const e=zd.generateScreenshot(t);if(window.Blob&&new window.Blob){const i="data:image/png;base64,",s=e.slice(i.length),n=window.atob(s),r=new window.Uint8Array(n.length);for(let t=0;t{phet.chipper.isFuzzEnabled()||R.ITT.toggleFullScreen(t.display)},options:{checkedProperty:R.ITT.isFullScreenProperty,tandem:n.tandem.createTandem("fullScreenMenuItem"),phetioDocumentation:"This menu item requests full-screen access for the simulation display.",visiblePropertyOptions:{phetioFeatured:!0}}},{textStringProperty:on.Z.menuItem.aboutStringProperty,present:!0,shouldBeHiddenWhenLinksAreNotAllowed:!1,callback:()=>r.getElement().show(),options:{separatorBefore:i,tandem:n.tandem.createTandem("aboutMenuItem"),phetioDocumentation:"This menu item shows a dialog with information about the simulation.",visiblePropertyOptions:{phetioFeatured:!0}}}].filter(t=>t.present||t.options&&t.options.tandem).map(t=>new Td(()=>this.hide(),t.textStringProperty,t.callback,t.present,t.shouldBeHiddenWhenLinksAreNotAllowed,t.options)).filter(t=>t.present);this.items=o;const l=new R.SHm({stretch:!0,spacing:2,children:_.flatten(o.map(t=>t.separatorBefore?[new R.qYj({stroke:"gray"}),t]:[t]))}),h=new R.y$t(null,{fill:"white",stroke:"black"});l.localBoundsProperty.link(()=>{l.left=5,l.top=5}),l.boundsProperty.link(t=>{h.shape=Wd(t.width+10,t.height+10)}),this.addChild(h),this.addChild(l);const c=new R.F3H({keys:["escape","arrowDown","arrowUp","tab","shift+tab"],callback:(t,e)=>{const i=this.items[0],s=this.items[this.items.length-1];if(t&&t.domEvent&&(t.domEvent&&t.domEvent.preventDefault(),t.pointer.reserveForKeyboardDrag()),"arrowDown"===e){(s.focused?i:R.eDZ.getNextFocusable()).focus()}else if("arrowUp"===e){(i.focused?s:R.eDZ.getPreviousFocusable()).focus()}else"escape"!==e&&"tab"!==e&&"shift+tab"!==e||this.hide()}});this.addInputListener(c),this.disposePhetMenu=()=>{this.removeInputListener(c),c.dispose()}}dispose(){this.disposePhetMenu(),_.each(this.items,t=>t.dispose()),super.dispose()}}f=Yd,_defineProperty(Yd,"PhetMenuIO",new rn.Z("PhetMenuIO",{valueType:f,documentation:"The PhET Menu in the bottom right of the screen"}));const Wd=(t,e)=>{const i=(new Ut.bn).moveTo(t-20,e).lineToRelative(0,20).lineToRelative(-20,-20).close();return Ut.bn.roundRect(0,0,t,e,8,8).shapeUnion(i)};Ct.Z.register("PhetMenu",Yd);const Gd=Yd;class Kd extends Pa{constructor(t,e,i){const s=phet.brand.Brand,n=s.logoOnBlackBackground,r=s.logoOnWhiteBackground,a=new R.Eep(n,{scale:.28/n.height*108*.85,pickable:!1}),o=new Vd({scale:.83,left:a.width+8,bottom:a.bottom-.5,pickable:!1}),l=[a,o];super(new R.NBX({children:l}),e,{highlightExtensionWidth:6,highlightExtensionHeight:5,highlightCenterOffsetY:4,listener:()=>{h.show(),h.items[0].focus(),Ci.play()},tandem:i,phetioType:Kd.PhetButtonIO,phetioDocumentation:"The button that appears at the right side of the navigation bar, which shows a menu when pressed",enabledPropertyOptions:{phetioFeatured:!0,phetioDocumentation:"When disabled, the (three dots) are hidden and the button cannot be pressed, hiding the PhET menu."},phetioVisiblePropertyInstrumented:!1,innerContent:on.Z.a11y.phetMenuStringProperty,voicingNameResponse:on.Z.a11y.phetMenuStringProperty});const h=new Gd(t,{tandem:i.createTandem("phetMenu"),focusOnHideNode:this});Vt.Z.multilink([t.boundsProperty,t.screenBoundsProperty,t.scaleProperty,h.localBoundsProperty],(t,e,i)=>{if(t&&e&&i){h.setScaleMagnitude(i),h.right=t.right-2;const s=t.height-e.height;h.bottom=e.bottom+s/2}}),Vt.Z.multilink([e,t.selectedScreenProperty,Ld.stateProperty],(e,i,s)=>{const l=i===t.homeScreen,h=!e.equals(R.Ilk.BLACK)&&!l,c=s===xd.OUT_OF_DATE;o.fill=h?c?"#0a0":"#222":c?"#3F3":"white",a.image=h?r:n}),this.buttonModel.enabledProperty.link(t=>{o.visible=t}),R.uai.mutateNode(this,!0)}}A=Kd,_defineProperty(Kd,"PhetButtonIO",new rn.Z("PhetButtonIO",{valueType:A,documentation:"The PhET Button in the bottom right of the screen"})),Ct.Z.register("PhetButton",Kd);const Qd=Kd,Xd=new L.Z(hr.LAYOUT_BOUNDS.width,40);class jd extends R.NBX{constructor(t,e){super(),_defineProperty(this,"homeButton",null),this.navigationBarFillProperty=new E.ZP([t.selectedScreenProperty,t.lookAndFeel.navigationBarFillProperty],(e,i)=>e===t.homeScreen?pr.BACKGROUND_COLOR:i),this.background=new R.AeJ(0,0,Xd.width,Xd.height,{pickable:!0,fill:this.navigationBarFillProperty}),this.addChild(this.background),this.barContents=new R.NBX,this.addChild(this.barContents);const i=new R.xvT(t.displayedSimNameProperty,{font:new $t(16),fill:t.lookAndFeel.navigationBarTextFillProperty,tandem:e.createTandem("titleText"),phetioFeatured:!0,phetioDocumentation:"Displays the title of the simulation in the navigation bar (bottom left)",visiblePropertyOptions:{phetioFeatured:!0},stringPropertyOptions:{phetioReadOnly:!0},phetioVisiblePropertyInstrumented:!0}),s=new R.NBX({children:[i],visibleProperty:new E.ZP([t.selectedScreenProperty],e=>e!==t.homeScreen)});this.barContents.addChild(s);const n=new Qd(t,this.navigationBarFillProperty,e.createTandem("phetButton"));let r;this.barContents.addChild(n),this.a11yButtonsHBox=new pd(t,this.navigationBarFillProperty,{tandem:e}),this.barContents.addChild(this.a11yButtonsHBox),this.localeNode&&this.barContents.addChild(this.localeNode),this.addAriaLabelledbyAssociation({thisElementName:R.Grz.PRIMARY_SIBLING,otherNode:this,otherElementName:R.Grz.LABEL_SIBLING});const a=this.a11yButtonsHBox.bounds.isValid()?this.a11yButtonsHBox.width:0;if(1===t.simScreens.length)i.maxWidth=hr.LAYOUT_BOUNDS.width-10-25-6-a-(this.localeNode?this.localeNode.width:0)-6-n.width-10;else{const s=Math.min(i.width,.2*hr.LAYOUT_BOUNDS.width),o=new S.Z(!0,{tandem:Y.Z.GENERAL_MODEL.createTandem("screens").createTandem("isUserNavigableProperty"),phetioFeatured:!0,phetioDocumentation:"If the screens are user navigable, icons are displayed in the navigation bar and the user can switch between screens."});r=new R.NBX({tagName:"ol",containerTagName:"nav",labelTagName:"h2",labelContent:on.Z.a11y.simScreensStringProperty,visibleProperty:new E.ZP([t.activeSimScreensProperty,t.selectedScreenProperty,o],(e,i,s)=>i!==t.homeScreen&&e.length>1&&s)}),r.ariaLabelledbyAssociations=[{thisElementName:R.Grz.CONTAINER_PARENT,otherElementName:R.Grz.LABEL_SIBLING,otherNode:r}],this.barContents.addChild(r),this.homeButton=new yd(Xd.height,t.lookAndFeel.navigationBarFillProperty,t.homeScreen?t.homeScreen.pdomDisplayNameProperty:new Gs.Z("NO HOME SCREEN"),{listener:()=>{t.selectedScreenProperty.value=t.homeScreen,this.homeButton.isPDOMClicking()&&t.homeScreen.view.focusHighlightedScreenButton()},tandem:e.createTandem("homeButton"),centerY:Xd.height/2}),t.homeScreen&&r.addChild(this.homeButton);const l=hr.LAYOUT_BOUNDS.width/2-10-s-25-5-this.homeButton.width-5,h=hr.LAYOUT_BOUNDS.width/2-6-a-(this.localeNode?this.localeNode.width:0)-6-n.width-10,c=2*Math.min(l,h),d=(c-0*(t.simScreens.length-1))/t.simScreens.length,u=t.simScreens.map(i=>new vd(t.lookAndFeel.navigationBarFillProperty,t.selectedScreenProperty,i,t.simScreens.indexOf(i),Xd.height,{maxButtonWidth:d,tandem:i.tandem.supplied?e.createTandem(i.tandem.name+"Button"):Y.Z.REQUIRED})),p=[this.homeButton,...u],m=Math.max(60,_.maxBy(u,t=>t.width).width),g=_.maxBy(u,t=>t.height).height,y=new Map;u.forEach(t=>{y.set(t.screen,new R.DbO(t,{excludeInvisibleChildrenFromBounds:!0,alignBounds:new D.Z(0,0,m,g),visibleProperty:t.visibleProperty}))});const f=new R.BET({spacing:0,maxWidth:c});r.addChild(f),t.activeSimScreensProperty.link(t=>{f.children=t.map(t=>y.get(t))}),R.bGt.create(this,[this.background,f],(t,e)=>{e.center=t.center}),R.$1I.create(this.barContents,[this.homeButton,...u],(function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),s=1;st&&t.visible);t&&n.length>0&&(t.right=Math.min(...n.map(t=>t.left))-5)})),R.bGt.create(this.barContents,[this.homeButton,i],(t,e)=>{e.maxWidth=t.left-10-25}),t.simNameProperty.link(t=>{p.forEach(e=>{e.voicingContextResponse=t})})}i.left=10,i.centerY=Xd.height/2,n.centerY=Xd.height/2,R.bGt.create(this,[this.background,n],(t,e)=>{e.right=t.right-10}),R.bGt.create(this.barContents,[n,this.a11yButtonsHBox],(t,e)=>{e.right=t.left-6,e.centerY=t.centerY}),this.localeNode&&R.bGt.create(this.barContents,[n,this.a11yButtonsHBox,this.localeNode],(t,e,i)=>{e.right=t.left-6,e.centerY=t.centerY,i.centerY=t.centerY,i.right=Math.min(e.left,t.left)-6}),this.layout(1,Xd.width,Xd.height);const o=new R.NBX({tagName:"div",containerTagName:"section",labelTagName:"h2",labelContent:on.Z.a11y.simResourcesStringProperty,pdomOrder:[this.a11yButtonsHBox,n].filter(t=>void 0!==t)});o.ariaLabelledbyAssociations=[{thisElementName:R.Grz.CONTAINER_PARENT,otherElementName:R.Grz.LABEL_SIBLING,otherNode:o}],this.addChild(o)}layout(t,e,i){this.background.rectWidth=e,this.background.rectHeight=i,this.barContents.setScaleMagnitude(t)}}_defineProperty(jd,"NAVIGATION_BAR_SIZE",Xd),Ct.Z.register("NavigationBar",jd);const Jd=jd;var $d=i(6103);let tu=null;class eu{constructor(){_defineProperty(this,"enabled",!0),_defineProperty(this,"registedProperties",[]);try{window.localStorage.setItem("test","test")}catch(t){if(this.enabled=!1,t instanceof Error){if(!(window.navigator.userAgent.includes("Safari")&&!window.navigator.userAgent.includes("Chrome"))||!t.message.includes("QuotaExceededError"))throw t;console.log("It looks like you are browsing with private mode in Safari. Please turn that setting off if you want to use PreferencesStorage")}}}registerToLocalStorage(t,e){const i="PREFERENCES:"+e;window.localStorage.getItem(i)&&(t.value=JSON.parse(window.localStorage.getItem(i))),t.link(t=>{window.localStorage.setItem(i,JSON.stringify(t))}),this.registedProperties.push(t)}static register(t,e){return phet.chipper.queryParameters.preferencesStorage?(tu||(tu=new eu),tu.enabled&&tu.registerToLocalStorage(t,e),t):t}}Ct.Z.register("PreferencesStorage",eu);const iu=eu;var su=i(621),nu=i(5602);const ru={africa:on.Z.preferences.tabs.localization.regionAndCulture.africaStringProperty,africaModest:on.Z.preferences.tabs.localization.regionAndCulture.africaModestStringProperty,asia:on.Z.preferences.tabs.localization.regionAndCulture.asiaStringProperty,latinAmerica:on.Z.preferences.tabs.localization.regionAndCulture.latinAmericaStringProperty,oceania:on.Z.preferences.tabs.localization.regionAndCulture.oceaniaStringProperty,random:on.Z.preferences.tabs.localization.regionAndCulture.randomStringProperty,usa:on.Z.preferences.tabs.localization.regionAndCulture.unitedStatesOfAmericaStringProperty};class au extends G.Z{constructor(t,e){super(e),this.regionAndCulture=t,this.labelProperty=ru[t]}static createRegionAndCulturePortrayalProperty(t,e){const i=new I.Z(t,{validValues:e});return i.link(t=>{Vc.value=t.regionAndCulture}),Vc.lazyLink(t=>{const s=e.find(e=>e.regionAndCulture===t);s&&(i.value=s)}),i}}Ct.Z.register("RegionAndCulturePortrayal",au);null==dc||null===(v=dc.phet)||void 0===v||v.simFeatures;class ou extends G.Z{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=phet.chipper.queryParameters,i={...(0,N.ZP)()({tandem:Y.Z.OPT_OUT,phetioType:ou.PreferencesModelIO,phetioFeatured:!0,phetioState:!1,phetioReadOnly:!0},t),simulationOptions:(0,N.ZP)()({tandemName:"simulationModel",customPreferences:[]},t.simulationOptions),visualOptions:(0,N.ZP)()({tandemName:"visualModel",supportsProjectorMode:!1,supportsInteractiveHighlights:e.supportsInteractiveHighlights,customPreferences:[]},t.visualOptions),audioOptions:(0,N.ZP)()({tandemName:"audioModel",supportsVoicing:e.supportsVoicing,supportsSound:e.supportsSound,supportsExtraSound:e.supportsExtraSound,customPreferences:[]},t.audioOptions),inputOptions:(0,N.ZP)()({tandemName:"inputModel",supportsGestureControl:e.supportsGestureControl,customPreferences:[]},t.inputOptions),localizationOptions:(0,N.ZP)()({tandemName:"localizationModel",supportsDynamicLocale:!!Xl.Z.validValues&&Xl.Z.validValues.length>1&&phet.chipper.queryParameters.supportsDynamicLocale,portrayals:[],customPreferences:[],includeLocalePanel:!0},t.localizationOptions)};super(i),this.simulationModel=i.simulationOptions;const s=i.tandem.createTandem("visualModel");this.visualModel=(0,bi.Z)({interactiveHighlightsEnabledProperty:new S.Z(phet.chipper.queryParameters.interactiveHighlightsInitiallyEnabled,{tandem:s.createTandem("interactiveHighlightsEnabledProperty"),phetioState:!1}),colorProfileProperty:R.CEW},i.visualOptions);const n=i.audioOptions.supportsVoicing&&su.Z.isSpeechSynthesisSupported()&&(phet.chipper.locale.startsWith("en")||phet.chipper.queryParameters.supportsDynamicLocale&&_.some(Xl.Z.validValues,t=>t.startsWith("en"))),r="disabled"!==phet.chipper.queryParameters.audio;this.audioModel={supportsVoicing:n&&r,supportsSound:i.audioOptions.supportsSound&&r,supportsExtraSound:i.audioOptions.supportsExtraSound&&r,audioEnabledProperty:Lt.audioEnabledProperty,soundEnabledProperty:Tt.enabledProperty,extraSoundEnabledProperty:Tt.extraSoundEnabledProperty,voicingEnabledProperty:R.LY3.enabledProperty,voicingMainWindowVoicingEnabledProperty:R.LY3.mainWindowVoicingEnabledProperty,voicingObjectResponsesEnabledProperty:$d.Z.objectResponsesEnabledProperty,voicingContextResponsesEnabledProperty:$d.Z.contextResponsesEnabledProperty,voicingHintResponsesEnabledProperty:$d.Z.hintResponsesEnabledProperty,voicePitchProperty:R.LY3.voicePitchProperty,voiceRateProperty:R.LY3.voiceRateProperty,voiceProperty:R.LY3.voiceProperty,toolbarEnabledProperty:new S.Z(!0,{tandem:i.tandem.createTandem("audioModel").createTandem("toolbarEnabledProperty"),phetioState:!1}),customPreferences:i.audioOptions.customPreferences,tandemName:i.audioOptions.tandemName};const a=i.tandem.createTandem("inputModel");this.inputModel=(0,bi.Z)({gestureControlsEnabledProperty:new S.Z(!1,{tandem:a.createTandem("gestureControlsEnabledProperty"),phetioState:!1})},i.inputOptions),this.localizationModel=(0,bi.Z)({localeProperty:Xl.Z},i.localizationOptions);const o=i.localizationOptions.portrayals;if(o.length>0){0;let t=o[0];const i=e.regionAndCulture;i&&(t=o.find(t=>t.regionAndCulture===i),this.localizationModel.regionAndCulturePortrayalProperty=au.createRegionAndCulturePortrayalProperty(t,o))}if(this.audioModel.supportsExtraSound,this.addPhetioLinkedElementsForModel(i.tandem,this.simulationModel),this.addPhetioLinkedElementsForModel(i.tandem,this.visualModel,[{property:this.visualModel.colorProfileProperty}]),this.addPhetioLinkedElementsForModel(i.tandem,this.audioModel,[{property:this.audioModel.audioEnabledProperty,tandemName:"audioEnabledProperty"},{property:this.audioModel.soundEnabledProperty,tandemName:"soundEnabledProperty"},{property:this.audioModel.extraSoundEnabledProperty,tandemName:"extraSoundEnabledProperty"},{property:this.audioModel.voicingEnabledProperty,tandemName:"voicingEnabledProperty"},{property:this.audioModel.voicingMainWindowVoicingEnabledProperty,tandemName:"voicingMainWindowVoicingEnabledProperty"},{property:this.audioModel.voicingObjectResponsesEnabledProperty,tandemName:"voicingObjectResponsesEnabledProperty"},{property:this.audioModel.voicingContextResponsesEnabledProperty,tandemName:"voicingContextResponsesEnabledProperty"},{property:this.audioModel.voicingHintResponsesEnabledProperty,tandemName:"voicingHintResponsesEnabledProperty"},{property:this.audioModel.voicePitchProperty,tandemName:"voicePitchProperty"},{property:this.audioModel.voiceRateProperty,tandemName:"voiceRateProperty"}]),this.addPhetioLinkedElementsForModel(i.tandem,this.inputModel),this.addPhetioLinkedElementsForModel(i.tandem,this.localizationModel,[{property:this.localizationModel.localeProperty,tandemName:"localeProperty"}]),n){R.LY3.enabledProperty.value=phet.chipper.queryParameters.voicingInitiallyEnabled;let t=!1;if(Xl.Z.link(e=>{const i=R.LY3.voicingSupportedForLocale(e);R.LY3.enabledProperty.value?(R.LY3.enabledProperty.value=i,t=!0):t&&i&&(R.LY3.enabledProperty.value=!0,t=!1)}),R.LY3.enabledProperty.link(t=>{R.KsW.enabled=t,!t&&R.KsW.clear()}),phet.chipper.queryParameters.voicingInitiallyEnabled){$d.Z.objectResponsesEnabledProperty.value=!0,$d.Z.contextResponsesEnabledProperty.value=!0,$d.Z.hintResponsesEnabledProperty.value=!0;const t=Vt.Z.multilink([R.LY3.voicesProperty,R.LY3.isInitializedProperty],(e,i)=>{i&&e.length>0&&(R.LY3.voiceProperty.value=R.LY3.getEnglishPrioritizedVoices()[0],Vt.Z.unmultilink(t))})}}phet.chipper.queryParameters.printVoicingResponses&&R.LY3.startSpeakingEmitter.addListener(t=>console.log(t)),this.registerPreferencesStorage()}registerPreferencesStorage(){this.visualModel.supportsInteractiveHighlights&&iu.register(this.visualModel.interactiveHighlightsEnabledProperty,"interactiveHighlightsEnabledProperty"),this.audioModel.supportsVoicing&&(iu.register(this.audioModel.voicingObjectResponsesEnabledProperty,"objectResponsesEnabledProperty"),iu.register(this.audioModel.voicingContextResponsesEnabledProperty,"contextResponsesEnabledProperty"),iu.register(this.audioModel.voicingHintResponsesEnabledProperty,"hintResponsesEnabledProperty"),iu.register(this.audioModel.voiceRateProperty,"voiceRateProperty"),iu.register(this.audioModel.voicePitchProperty,"voicePitchProperty")),this.audioModel.supportsExtraSound&&iu.register(this.audioModel.extraSoundEnabledProperty,"extraSoundEnabledProperty"),this.inputModel.supportsGestureControl&&iu.register(this.inputModel.gestureControlsEnabledProperty,"gestureControlsEnabledProperty")}addPhetioLinkedElementsForModel(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const s=t.createTandem(e.tandemName),n=i;for(let r=0;r0}supportsSimulationPreferences(){return this.preferenceModelHasCustom(this.simulationModel)}supportsVisualPreferences(){return this.visualModel.supportsInteractiveHighlights||this.visualModel.supportsProjectorMode||this.preferenceModelHasCustom(this.visualModel)}supportsAudioPreferences(){return this.audioModel.supportsSound||this.audioModel.supportsExtraSound||this.audioModel.supportsVoicing||this.preferenceModelHasCustom(this.audioModel)}supportsInputPreferences(){return this.inputModel.supportsGestureControl||this.preferenceModelHasCustom(this.inputModel)}supportsLocalizationPreferences(){return this.localizationModel.supportsDynamicLocale||mc.length>1||this.preferenceModelHasCustom(this.localizationModel)}shouldShowDialog(){return this.supportsSimulationPreferences()||this.supportsVisualPreferences()||this.supportsInputPreferences()||this.supportsLocalizationPreferences()||this.supportsAudioPreferences()}}b=ou,_defineProperty(ou,"PreferencesModelIO",new rn.Z("PreferencesModelIO",{valueType:b,toStateObject:t=>({supportsProjectorMode:t.visualModel.supportsProjectorMode,supportsInteractiveHighlights:t.visualModel.supportsInteractiveHighlights,supportsVoicing:t.audioModel.supportsVoicing,supportsSound:t.audioModel.supportsSound,supportsExtraSound:t.audioModel.supportsExtraSound,supportsGestureControl:t.inputModel.supportsGestureControl,supportsDynamicLocale:t.localizationModel.supportsDynamicLocale,supportsAudioPreferences:t.supportsAudioPreferences(),supportsInputPreferences:t.supportsInputPreferences(),supportsLocalizationPreferences:t.supportsLocalizationPreferences(),supportsSimulationPreferences:t.supportsSimulationPreferences(),supportsVisualPreferences:t.supportsVisualPreferences()}),stateSchema:{supportsProjectorMode:nu.Z,supportsInteractiveHighlights:nu.Z,supportsVoicing:nu.Z,supportsSound:nu.Z,supportsExtraSound:nu.Z,supportsGestureControl:nu.Z,supportsDynamicLocale:nu.Z,supportsAudioPreferences:nu.Z,supportsInputPreferences:nu.Z,supportsLocalizationPreferences:nu.Z,supportsSimulationPreferences:nu.Z,supportsVisualPreferences:nu.Z}})),Ct.Z.register("PreferencesModel",ou);class lu{constructor(){_defineProperty(this,"allTimes",[]),_defineProperty(this,"histogram",[]),_defineProperty(this,"longTimes",[]),_defineProperty(this,"frameStartTime",0),_defineProperty(this,"previousFrameStartTime",0);for(let t=0;t<30;t++)this.histogram.push(0);$("body").append('
')}static start(t){const e=new lu;t.frameStartedEmitter.addListener(()=>e.frameStarted()),t.frameEndedEmitter.addListener(()=>e.frameEnded())}frameStarted(){this.frameStartTime=Date.now()}frameEnded(){if(this.allTimes.length>0&&this.allTimes.length%60==0){let t=0;for(let i=0;i0&&(this.longTimes.sort((t,e)=>e-t),e=e+" — "+this.longTimes),$("#phetProfiler").html(e);for(let i=0;i<30;i++)this.histogram[i]=0;this.longTimes.length=0,this.allTimes.length=0}if(this.previousFrameStartTime){const t=this.frameStartTime-this.previousFrameStartTime;this.allTimes.push(t),t<30?this.histogram[t]++:this.longTimes.push(t)}this.previousFrameStartTime=this.frameStartTime}}Ct.Z.register("Profiler",lu);const hu=lu,cu=new Image,du=K.Z.createLock(cu);cu.onload=du,cu.src="data:image/png;base64,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";const uu=cu;class pu extends ea{constructor(t,e){const i=(0,N.ZP)()({topMargin:20,bottomMargin:20,phetioType:pu.OopsDialogIO},e),s=new R.Hof(t,(0,N.ZP)()({font:new $t(20),maxWidth:600,maxHeight:400},i.richTextOptions)),n=i.iconNode||new R.Eep(uu,{maxHeight:132});super(new R.BET({spacing:20,children:[s,n]}),i),this.disposeOopsDialog=()=>{s.dispose()},"string"!=typeof t&&this.addLinkedElement(t)}dispose(){this.disposeOopsDialog(),super.dispose()}}V=pu,_defineProperty(pu,"OopsDialogIO",new rn.Z("OopsDialogIO",{valueType:V,supertype:ea.DialogIO})),U.register("OopsDialog",pu);class mu extends pu{constructor(t,e){const i=(0,N.ZP)()({richTextOptions:{font:new $t(16)},title:new R.xvT(on.Z.queryParametersWarningDialog.invalidQueryParametersStringProperty,{font:new $t(28)})},e);let s=on.Z.queryParametersWarningDialog.oneOrMoreQueryParametersStringProperty.value+"

";t.forEach(t=>{s+=`${t.key}=${t.value}
`}),s+="
"+on.Z.queryParametersWarningDialog.theSimulationWillStartStringProperty.value,super(s,i)}}Ct.Z.register("QueryParametersWarningDialog",mu);const gu=mu,yu="data:audio/mpeg;base64,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",fu=Q(it,yu),Au=K.Z.createLock(yu),vu=new tt;let bu=!1;const Vu=()=>{bu||(Au(),bu=!0)},Pu=it.decodeAudioData(fu.buffer,t=>{null===vu.audioBufferProperty.value&&(vu.audioBufferProperty.set(t),Vu())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),vu.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Vu()});Pu&&Pu.then(t=>{null===vu.audioBufferProperty.value&&(vu.audioBufferProperty.set(t),Vu())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Vu()});const wu=vu;class Mu extends Ie{constructor(t,e,i){super(wu,i),t.lazyLink(t=>{t!==e&&this.play()})}}Ct.Z.register("ScreenSelectionSoundGenerator",Mu);const Su=Mu;function Tu(t,e,i,s,n,r,a,o,l){if(1===t.length&&i&&e){const t="cannot specify homeScreen=true for single-screen sims";QueryStringMachine.addWarning("homeScreen",e,t)}let h=[];if(a&&r)for(let p=0;p=0&&i1&&e&&(u=l(h),c.unshift(u)),d=u&&0===s?u:0===s?h[0]:t[s-1],!c.includes(d))throw new Error("screen not found: "+s);return{homeScreen:u,initialScreen:d,selectedSimScreens:h,screens:c,allScreensCreated:_.isEqual(new Set(t),new Set(h))&&(!(t.length>1)||!!u)}}Ct.Z.register("selectScreens",Tu);class Eu{constructor(){_defineProperty(this,"stringFactor",1),_defineProperty(this,"stride",0)}handleEvent(t){"ArrowLeft"===t.code?this.halveStrings():"ArrowRight"===t.code?this.doubleStrings():"ArrowUp"===t.code?this.setStride(this.stride+1):"ArrowDown"===t.code?this.setStride(this.stride-1):"Space"===t.code&&this.reset()}doubleStrings(){this.setStringFactor(Math.min(2*this.stringFactor,8))}halveStrings(){this.setStringFactor(Math.max(.5*this.stringFactor,.01))}setStringFactor(t){this.stringFactor=t,console.log("stringFactor = "+this.stringFactor),function(t){te.j.forEach(e=>{if(e.restoreInitialValue("en"),1!==t){const i=e.property.value.replace(/[\u202A\u202B\u202C]/g,"");e.property.value=function(t,e){if(t>1)return function(t,e){let i=t;for(;e>1;)i+=t,e-=1;return i}(e,t);{const i=e.match(/{{(.+?)}}/g)||[],s=e.replace(/{{(.+?)}}/g,""),n=O.Z.toFixedNumber(s.length*t+1,0);return s.substring(0,n)+i.join("")}}(t,i)}})}(this.stringFactor)}setStride(t){const e=Eu.WORDS;t>e.length-1?t=0:t<0&&(t=e.length-1),this.stride=t,console.log("stride = "+this.stride),te.j.forEach((t,i)=>{t.property.value=e[(i+this.stride)%e.length]})}reset(){this.setStride(0),this.setStringFactor(1)}}_defineProperty(Eu,"WORDS","Sometimes when Hippopotomonstrosesquippedaliophobia want lyrics you turn to Shakespeare like the following text copied from some work To be or not to be that is the question Supercalifragilisticexpeladocious tis nobler in the mind to suffer The slings and arrows of antidisestablishmentarianism fortune Or to take Incomprehensibility against a sea of Floccinaucinihilipilification".split(" ")),Ct.Z.register("DynamicStringTest",Eu);class xu{constructor(t,e){_defineProperty(this,"initialPointerPoint",null),_defineProperty(this,"relativePointerDistance",0),this.display=t;const i={move:this.handleMove.bind(this)},s=()=>{this.display.focusManager.pdomFocusHighlightsVisibleProperty.value=!0},n={};if(["click","input","change","keydown","keyup"].forEach(t=>{n[t]=s}),this.display.addInputListener(n),R.MMl.keyupEmitter.addListener(t=>{R.ntP.isKeyEvent(t,R.ntP.KEY_TAB)&&s()}),e.visualModel.supportsInteractiveHighlights){e.visualModel.interactiveHighlightsEnabledProperty.link(t=>{this.display.focusManager.interactiveHighlightsVisibleProperty.value=t});const t=e.visualModel.interactiveHighlightsEnabledProperty,s=this.display.focusManager.pdomFocusHighlightsVisibleProperty;Vt.Z.multilink([t,s],(t,e)=>{t&&e?(this.display.addInputListener(i),this.initialPointerPoint=null,this.relativePointerDistance=0):this.display.hasInputListener(i)&&this.display.removeInputListener(i)})}this.display.addInputListener({down:t=>{this.display.bounds.containsPoint(t.pointer.point)&&(this.display.focusManager.pdomFocusHighlightsVisibleProperty.value=!1,R.IKS.pdomFocusedNode&&(t.trail.nodes.includes(R.IKS.pdomFocusedNode)||(R.IKS.pdomFocus=null)))}})}handleMove(t){null===this.initialPointerPoint?this.initialPointerPoint=t.pointer.point:(this.relativePointerDistance=t.pointer.point.distance(this.initialPointerPoint),this.relativePointerDistance>100&&(this.display.focusManager.pdomFocusHighlightsVisibleProperty.value=!1,this.display.focusManager.interactiveHighlightsVisibleProperty.value=!0))}}Ct.Z.register("HighlightVisibilityController",xu);const Cu=xu;class Iu extends R.sSl{constructor(t){const e=(0,N.ZP)()({rootRenderer:"svg",webgl:Iu.DEFAULT_WEBGL,allowBackingScaleAntialiasing:!0,allowSceneOverflow:!1,allowWebGL:phet.chipper.queryParameters.webgl,assumeFullWindow:!0,forceSVGRefresh:phet.chipper.queryParameters.forceSVGRefresh,accessibility:phet.chipper.queryParameters.supportsInteractiveDescription,tandem:Y.Z.REQUIRED},t);e.supportsInteractiveHighlights=e.preferencesModel.visualModel.supportsInteractiveHighlights,e.rootRenderer=phet.chipper.queryParameters.rootRenderer||e.rootRenderer,QueryStringMachine.containsKey("webgl")&&(e.webgl=phet.chipper.queryParameters.webgl),R.cQK.setWebGLEnabled(e.webgl),phet.chipper.isFuzzEnabled()&&(window.open=function(){return{focus:_.noop,blur:_.noop}}),$("body").css("padding","0").css("margin","0").css("overflow","hidden"),document.getElementById("sim")&&document.getElementById("sim").parentNode===document.body&&document.body.removeChild(document.getElementById("sim")),document.onselectstart=function(){return!1},super(new R.NBX({renderer:e.rootRenderer}),e),_defineProperty(this,"simulationRoot",new R.NBX),this.simulationRoot=new R.NBX,this.rootNode.addChild(this.simulationRoot),Z.Z.chromium&&this.simulationRoot.transformEmitter.addListener(()=>{this.refreshSVGOnNextFrame()});const i=phet.chipper.queryParameters.randomSeed*Math.PI;if(this.inputFuzzer=new R.$AB(this,i),this.keyboardFuzzer=new R.eXg(this,i),this.supportsPanAndZoomProperty=new S.Z(phet.chipper.queryParameters.supportsPanAndZoom,{tandem:e.tandem.createTandem("supportsPanAndZoomProperty"),phetioFeatured:!0}),this.domElement.id="sim",phet.chipper.queryParameters.supportsInteractiveDescription&&(this.pdomRootElement.lang="en"),this.highlightVisibilityController=new Cu(this,e.preferencesModel),phet.chipper.queryParameters.sceneryLog&&R.QF$.enableLogging(phet.chipper.queryParameters.sceneryLog),phet.chipper.queryParameters.sceneryStringLog&&R.QF$.switchLogToString(),"dynamic"===phet.chipper.queryParameters.stringTest){const t=new Eu;window.addEventListener("keydown",e=>t.handleEvent(e))}this.initializeEvents({tandem:Y.Z.GENERAL_CONTROLLER.createTandem("input")}),window.phet.joist.rootNode=this.rootNode,window.phet.joist.display=this,this.setPointerDisplayVisible(phet.chipper.queryParameters.showPointers),this.setPointerAreaDisplayVisible(phet.chipper.queryParameters.showPointerAreas),this.setHitAreaDisplayVisible(phet.chipper.queryParameters.showHitAreas),this.setCanvasNodeBoundsVisible(phet.chipper.queryParameters.showCanvasNodeBounds),this.setFittedBlockBoundsVisible(phet.chipper.queryParameters.showFittedBlockBounds),R.Yj2.initialize(this.simulationRoot,{tandem:e.tandem.createTandem("panZoomListener")});const s=R.Yj2.listener;this.supportsPanAndZoomProperty.link(t=>{t?this.addInputListener(s):this.hasInputListener(s)&&this.removeInputListener(s)}),window.addEventListener("pageshow",t=>{t.persisted&&window.location.reload()})}fuzzInputEvents(){const t=phet.chipper.queryParameters.fuzzTouch||phet.chipper.queryParameters.fuzz,e=phet.chipper.queryParameters.fuzzMouse||phet.chipper.queryParameters.fuzz;(e||t)&&this.inputFuzzer.fuzzEvents(phet.chipper.queryParameters.fuzzRate,e,t,phet.chipper.queryParameters.fuzzPointers),phet.chipper.queryParameters.fuzzBoard&&document.hasFocus()&&this.keyboardFuzzer.fuzzBoardEvents(phet.chipper.queryParameters.fuzzRate)}step(t){this.supportsPanAndZoomProperty.value&&R.Yj2.listener.step(t)}}_defineProperty(Iu,"DEFAULT_WEBGL",!1),Ct.Z.register("SimDisplay",Iu);var qu=i(0),ku=i(2306),Du=i(170);class Lu extends G.Z{constructor(t){let e,i,s;super({tandem:Y.Z.GENERAL_MODEL.createTandem("simInfo"),phetioType:Lu.SimInfoIO,phetioReadOnly:!0,phetioDocumentation:"A collection of data about the runtime and simulation. Available in the simStarted PhET-iO data stream event, as well as on demand in the PhET-iO state."}),_defineProperty(this,"info",{}),this.putInfo("url",window.location.href),this.putInfo("randomSeed",window.phet.chipper.queryParameters.randomSeed),this.putInfo("userAgent",window.navigator.userAgent),this.putInfo("language",window.navigator.language),this.putInfo("window",`${window.innerWidth}x${window.innerHeight}`),this.putInfo("referrer",document.referrer),this.putInfo("checkIE11StencilSupport",R.cQK.checkIE11StencilSupport()),this.putInfo("isWebGLSupported",!!phet.chipper.queryParameters.webgl&&R.cQK.isWebGLSupported);const n=[];window.navigator.pointerEnabled&&n.push("pointerEnabled"),window.navigator.msPointerEnabled&&n.push("msPointerEnabled"),window.navigator.onLine||n.push("offline");try{e=document.createElement("canvas"),i=e.getContext("2d"),s=R.cQK.backingStorePixelRatio(i),this.putInfo("pixelRatio",`${window.devicePixelRatio||1}/${s}`),(window.devicePixelRatio||1)/s!=1&&n.push("pixelRatioScaling")}catch(r){}this.putInfo("flags",n.join(", ")),e=null,this.putInfo("simName",t.simNameProperty.value),this.putInfo("simVersion",t.version),this.putInfo("repoName",dc.name),this.putInfo("screens",t.screens.map(e=>{const i={name:e.nameProperty.value||t.simNameProperty.value};return Y.Z.PHET_IO_ENABLED&&(i.phetioID=e.tandem.phetioID),i})),Y.Z.PHET_IO_ENABLED&&(this.putInfo("screenPropertyValue",t.selectedScreenProperty.value.tandem.phetioID),this.putInfo("wrapperMetadata",phet.preloads.phetio.simStartedMetadata),this.putInfo("dataStreamVersion",phet.phetio.dataStream.VERSION),this.putInfo("phetioCommandProcessorProtocol",phet.phetio.phetioCommandProcessor.PHET_IO_PROTOCOL))}putInfo(t,e){void 0===e&&(e="{{undefined}}"),this.info[t]=e}}P=Lu,_defineProperty(Lu,"SimInfoIO",new rn.Z("SimInfoIO",{valueType:P,toStateObject:t=>({simName:t.info.simName,screens:t.info.screens,repoName:t.info.repoName,screenPropertyValue:t.info.screenPropertyValue,dataStreamVersion:t.info.dataStreamVersion,phetioCommandProcessorProtocol:t.info.phetioCommandProcessorProtocol,simVersion:Y.Z.API_GENERATION?null:t.info.simVersion,wrapperMetadata:Y.Z.API_GENERATION?null:t.info.wrapperMetadata,randomSeed:Y.Z.API_GENERATION?null:t.info.randomSeed,url:Y.Z.API_GENERATION?null:t.info.url,userAgent:Y.Z.API_GENERATION?null:t.info.userAgent,window:Y.Z.API_GENERATION?null:t.info.window,referrer:Y.Z.API_GENERATION?null:t.info.referrer,language:Y.Z.API_GENERATION?null:t.info.language,pixelRatio:Y.Z.API_GENERATION?null:t.info.pixelRatio,isWebGLSupported:Y.Z.API_GENERATION?null:t.info.isWebGLSupported,checkIE11StencilSupport:Y.Z.API_GENERATION?null:t.info.checkIE11StencilSupport,flags:Y.Z.API_GENERATION?null:t.info.flags||null}),stateSchema:{simName:se.Z,screens:(0,qu.Z)(Du.Z),repoName:se.Z,screenPropertyValue:se.Z,wrapperMetadata:(0,ku.Z)(Du.Z),dataStreamVersion:se.Z,phetioCommandProcessorProtocol:se.Z,simVersion:(0,ku.Z)(se.Z),randomSeed:(0,ku.Z)(xt.Z),url:(0,ku.Z)(se.Z),userAgent:(0,ku.Z)(se.Z),window:(0,ku.Z)(se.Z),referrer:(0,ku.Z)(se.Z),language:(0,ku.Z)(se.Z),pixelRatio:(0,ku.Z)(se.Z),isWebGLSupported:(0,ku.Z)(nu.Z),checkIE11StencilSupport:(0,ku.Z)(nu.Z),flags:(0,ku.Z)(se.Z)}})),Ct.Z.register("SimInfo",Lu);const _u=Lu;class Ou{constructor(t){this.sim=t,window.addEventListener("message",e=>{"pause"===e.data.messageName?(t.stepOneFrame(),t.activeProperty.value=!1):"resume"===e.data.messageName&&(t.activeProperty.value=!0)})}start(){this.sim.isConstructionCompleteProperty.link(t=>{t&&window.parent!==window&&window.parent.postMessage({message:"init"},"*")})}}Ct.Z.register("LegendsOfLearningSupport",Ou);const Zu=Ou;class Nu extends Bi{constructor(t,e,i){const s=(0,N.ZP)()({radius:i&&i.content?null:30,lineWidth:.5,stroke:null,touchAreaDilation:0,mouseAreaDilation:0,touchAreaXShift:0,touchAreaYShift:0,mouseAreaXShift:0,mouseAreaYShift:0,aspectRatio:1,cursor:"pointer",xMargin:5,yMargin:5,buttonAppearanceStrategy:Nu.ThreeDAppearanceStrategy},i);s.content,s.radius&&(s.minUnstrokedWidth=2*s.radius,s.minUnstrokedHeight=2*s.radius),s.buttonAppearanceStrategyOptions||(s.buttonAppearanceStrategyOptions={stroke:s.stroke,lineWidth:s.lineWidth});const n=s.radius||Math.max(s.content.width+2*s.xMargin,s.content.height+2*s.yMargin)/2;if(s.content&&s.radius){const t=s.content,e=Math.min(2*(s.radius-s.xMargin)/t.width,2*(s.radius-s.yMargin)/t.height);s.content=new R.NBX({children:[t],scale:e})}const r=new R.Cdc(n);super(t,r,e,s);const a=r.localBounds.width/2;this.touchArea=Ut.bn.circle(s.touchAreaXShift,s.touchAreaYShift,a+s.touchAreaDilation),this.mouseArea=Ut.bn.circle(s.mouseAreaXShift,s.mouseAreaYShift,a+s.mouseAreaDilation),this.focusHighlight=Ut.bn.circle(0,0,a+5)}}Nu.ThreeDAppearanceStrategy=class{constructor(t,e,i,s){const n=s&&s.stroke?s.stroke:new R.M4p(i,{luminanceFactor:-.4}),r=s&&void 0!==s.lineWidth?s.lineWidth:.3,a=(0,N.ZP)()({stroke:n,lineWidth:r,overStroke:n,overLineWidth:r,overButtonOpacity:1,selectedStroke:n,selectedLineWidth:r,selectedButtonOpacity:1,deselectedStroke:n,deselectedLineWidth:r,deselectedButtonOpacity:1,overFill:i},s),o=new R.M4p(i,{luminanceFactor:.8}),l=new R.M4p(i,{luminanceFactor:.7}),h=new R.M4p(i,{luminanceFactor:.3}),c=new R.M4p(i,{luminanceFactor:-.1}),d=new R.M4p(i,{luminanceFactor:-.2}),u=new R.M4p(i,{luminanceFactor:-.4}),p=new R.M4p(i,{luminanceFactor:-.5}),m=new E.ZP([i],t=>t.withAlpha(0)),g=t.width/2,y=g-2.5,f=g+2.5,A=new R.XMe(2.5,2.5,y,2.5,2.5,f).addColorStop(0,i).addColorStop(1,l),v=new R.XMe(-2.5,-2.5,y,-2.5,-2.5,f).addColorStop(0,m).addColorStop(1,p),b=new R.XMe(2.5,2.5,y,2.5,2.5,f).addColorStop(0,h).addColorStop(1,o),V=new R.XMe(-2.5,-2.5,y,-2.5,-2.5,f).addColorStop(0,m).addColorStop(1,p),P=new R.XMe(-2.5,-2.5,0,0,0,f).addColorStop(0,c).addColorStop(.6,d).addColorStop(.8,i).addColorStop(1,o),w=new R.Cdc(g,{stroke:a.stroke?a.stroke:u,lineWidth:a.lineWidth,pickable:!1});function M(e){switch(e){case Ii.IDLE:t.fill=A,t.stroke=a.deselectedStroke,t.lineWidth=a.deselectedLineWidth,t.opacity=a.deselectedButtonOpacity,w.fill=v,w.opacity=a.deselectedButtonOpacity;break;case Ii.OVER:t.fill=b,t.stroke=a.overStroke,t.lineWidth=a.overLineWidth,t.opacity=a.overButtonOpacity,w.fill=V,w.opacity=a.overButtonOpacity;break;case Ii.PRESSED:t.fill=P,t.stroke=a.selectedStroke,t.lineWidth=a.selectedLineWidth,t.opacity=a.selectedButtonOpacity,w.fill=V,w.opacity=a.selectedButtonOpacity;break;default:throw new Error("unsupported interactionState: "+e)}}t.addChild(w),this.maxLineWidth=w.hasStroke()&&a&&"number"==typeof a.lineWidth?a.lineWidth:0,t.cachedPaints=[A,b,P],w.cachedPaints=[v,V],e.link(M),this.disposeThreeDAppearanceStrategy=()=>{e.hasListener(M)&&e.unlink(M),o.dispose(),l.dispose(),h.dispose(),c.dispose(),d.dispose(),u.dispose(),p.dispose(),m.dispose()}}dispose(){this.disposeThreeDAppearanceStrategy()}},oe.register("RoundButton",Nu);class Bu extends Nu{constructor(t){const e=(0,N.ZP)()({soundPlayer:Ci,tandem:Y.Z.REQUIRED},t),i=e.listener,s=_.omit(e,["listener"]),n=new _i(s);super(n,new qi(n),s),this.pushButtonModel=n,i&&this.addListener(i);const r=()=>{e.soundPlayer.play()};n.produceSoundEmitter.addListener(r),this.disposeRoundPushButton=()=>{n.produceSoundEmitter.removeListener(r),n.dispose()}}dispose(){super.dispose(),this.disposeRoundPushButton()}addListener(t){this.pushButtonModel.addListener(t)}removeListener(t){this.pushButtonModel.removeListener(t)}}oe.register("RoundPushButton",Bu);class Ru{constructor(t){this.screenProperty=t}createOverviewContent(){const t=this.screenProperty.value.view;return t.getVoicingOverviewContent()}createDetailsContent(){const t=this.screenProperty.value.view;return t.getVoicingDetailsContent()}createHintContent(){this.screenProperty.value.view;return this.screenProperty.value.view.getVoicingHintContent()}}Ct.Z.register("VoicingToolbarAlertManager",Ru);const Fu=Ru,Hu={DEFAULT_BUTTON_RADIUS:20.8,PLAY_CONTROL_BUTTON_RADIUS:28};U.register("SceneryPhetConstants",Hu);const zu=Hu;class Uu extends Ut.bn{constructor(t){super(),this.rect(0,0,t,t)}}U.register("StopIconShape",Uu);class Yu extends Nu{constructor(t,e,i,s){const n=(0,N.ZP)()({valueOffSoundPlayer:ts,valueOnSoundPlayer:hs,tandem:Y.Z.REQUIRED,phetioFeatured:!0},s),r=new ds(e,i,t,n),a=new cs(r);super(r,a,n),this.addLinkedElement(t,{tandemName:"property"});const o=()=>{t.value===e?n.valueOffSoundPlayer.play():t.value===i&&n.valueOnSoundPlayer.play()};this.buttonModel.produceSoundEmitter.addListener(o),this.disposeRoundToggleButton=()=>{this.buttonModel.produceSoundEmitter.removeListener(o),r.dispose()}}dispose(){this.disposeRoundToggleButton(),super.dispose()}}oe.register("RoundToggleButton",Yu);class Wu extends Yu{constructor(t,e,i,s){const n=(0,N.ZP)()({content:null,tandem:Y.Z.REQUIRED},s),r=new Yi(t,e,i,{tandem:n.tandem.createTandem("toggleNode")});n.content=r,super(t,!1,!0,n),this.disposeBooleanRoundToggleButton=function(){r.dispose()}}dispose(){this.disposeBooleanRoundToggleButton(),super.dispose()}}oe.register("BooleanRoundToggleButton",Wu);const Gu=Wu,Ku="data:audio/mpeg;base64,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",Qu=Q(it,Ku),Xu=K.Z.createLock(Ku),ju=new tt;let Ju=!1;const $u=()=>{Ju||(Xu(),Ju=!0)},tp=it.decodeAudioData(Qu.buffer,t=>{null===ju.audioBufferProperty.value&&(ju.audioBufferProperty.set(t),$u())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),ju.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),$u()});tp&&tp.then(t=>{null===ju.audioBufferProperty.value&&(ju.audioBufferProperty.set(t),$u())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),$u()});const ep=new Je(ju,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});j.register("pauseSoundPlayer",ep);const ip=ep,sp="data:audio/mpeg;base64,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",np=Q(it,sp),rp=K.Z.createLock(sp),ap=new tt;let op=!1;const lp=()=>{op||(rp(),op=!0)},hp=it.decodeAudioData(np.buffer,t=>{null===ap.audioBufferProperty.value&&(ap.audioBufferProperty.set(t),lp())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),ap.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),lp()});hp&&hp.then(t=>{null===ap.audioBufferProperty.value&&(ap.audioBufferProperty.set(t),lp())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),lp()});const cp=new Je(ap,{soundClipOptions:{initialOutputLevel:.7},soundManagerOptions:{categoryName:"user-interface"}});j.register("playSoundPlayer",cp);const dp=cp;class up extends Ut.bn{constructor(t,e){super(),this.moveTo(0,0),this.lineTo(t,e/2),this.lineTo(0,e),this.close()}}U.register("PlayIconShape",up);class pp extends Gu{constructor(t,e,i){const s=(0,N.ZP)()({radius:zu.PLAY_CONTROL_BUTTON_RADIUS,scaleFactorWhenNotPlaying:1,includeGlobalHotkey:!1,startPlayingLabel:ie.a11y.playControlButton.playStringProperty,endPlayingLabel:null,valueOffSoundPlayer:ip,valueOnSoundPlayer:dp,xMargin:0,yMargin:0},i),n=.8*s.radius,r=s.radius,a=new R.y$t(new up(n,r),{fill:"black",centerX:.05*s.radius,centerY:0}),o=new R.Cdc(s.radius,{children:[a]});e.centerX=0,e.centerY=0;const l=new R.Cdc(s.radius,{children:[e]});super(t,l,o,s);const h=(t,e)=>{this.innerContent=t?s.endPlayingLabel:s.startPlayingLabel;const i=null===e?1:1/s.scaleFactorWhenNotPlaying;this.scale(t?i:s.scaleFactorWhenNotPlaying)};t.link(h);const c=["alt+k"];let d=null;s.includeGlobalHotkey&&phet.chipper.queryParameters.supportsInteractiveDescription&&(d=new R.F3H({keys:c,global:!0,listenerFireTrigger:"up",callback:()=>{t.set(!t.get());const e=t.get()?s.valueOnSoundPlayer:s.valueOffSoundPlayer;e&&e.play()}}),this.addInputListener(d)),this.disposePlayStopButton=()=>{t.hasListener(h)&&t.unlink(h),d&&(this.removeInputListener(d),d.dispose())}}dispose(){this.disposePlayStopButton(),super.dispose()}}U.register("PlayControlButton",pp);class mp extends pp{constructor(t,e){const i=(0,N.ZP)()({radius:zu.PLAY_CONTROL_BUTTON_RADIUS,endPlayingLabel:ie.a11y.playControlButton.stopStringProperty},e),s=.75*i.radius;super(t,new R.y$t(new Uu(s),{fill:"black"}),i)}}U.register("PlayStopButton",mp);const gp=on.Z.a11y.toolbar.voicing.titleStringProperty,yp=on.Z.a11y.toolbar.voicing.quickInfoStringProperty,fp=on.Z.a11y.toolbar.voicing.simVoicingOnAlertStringProperty,Ap=on.Z.a11y.toolbar.voicing.simVoicingOffAlertStringProperty,vp=on.Z.a11y.toolbar.titleStringProperty,bp=on.Z.a11y.toolbar.voicing.playOverviewLabelStringProperty,Vp=on.Z.a11y.toolbar.voicing.playDetailsLabelStringProperty,Pp=on.Z.a11y.toolbar.voicing.playHintLabelStringProperty,wp=on.Z.a11y.toolbar.voicing.overviewLabelStringProperty,Mp=on.Z.a11y.toolbar.voicing.detailsLabelStringProperty,Sp=on.Z.a11y.toolbar.voicing.hintLabelStringProperty;class Tp extends R.NBX{constructor(t,e,i){var s,n;const r=(0,N.ZP)()({tagName:"section",labelTagName:"h2",labelContent:vp,visiblePropertyOptions:{phetioReadOnly:!0}},i);super(r);const a={font:new $t(14),fill:e.navigationBarTextFillProperty,maxWidth:90},o=new R.xvT(gp,a),l=new R.JxC(yp,a);l.focusHighlight=new R.qLK(l,{innerStroke:"white"});const h=new lo(R.LY3.mainWindowVoicingEnabledProperty,!1,!0,(0,N.JA)({a11yName:gp,rightValueContextResponse:fp,leftValueContextResponse:Ap,tandem:null===(s=r.tandem)||void 0===s?void 0:s.createTandem("muteSpeechSwitch")},mo.TOGGLE_SWITCH_OPTIONS)),c=new Ha({labelNode:o,controlNode:h,tandem:null===(n=r.tandem)||void 0===n?void 0:n.createTandem("muteSpeechControl")}),d=new R.Lkj,u=new R.Lkj,p=new Ep(wp,bp,d,u,e,t.createOverviewContent.bind(t)),m=new Ep(Mp,Vp,d,u,e,t.createDetailsContent.bind(t)),g=new Ep(Sp,Pp,d,u,e,t.createHintContent.bind(t));this.children=[c,l,p.content,m.content,g.content],l.leftTop=c.leftBottom.plusXY(0,10),p.content.leftTop=l.leftBottom.plusXY(20,10),m.content.leftTop=p.content.leftBottom.plusXY(0,10),g.content.leftTop=m.content.leftBottom.plusXY(0,10);const y=[p,m,g],f=[p.playingProperty,m.playingProperty,g.playingProperty];y.forEach(t=>{t.playingProperty.link(e=>{t.playContent(f)})}),this.disposeVoicingToolbarItem=()=>{l.dispose(),o.dispose()}}dispose(){this.disposeVoicingToolbarItem(),super.dispose()}}class Ep{constructor(t,e,i,s,n,r){this.lookAndFeel=n,this.objectResponseUtterance=new ci.Z,this.createAlert=r,this.playingProperty=new S.Z(!1,{reentrant:!0}),this.playStopButton=new mp(this.playingProperty,{startPlayingLabel:e,voicingNameResponse:e,voicingIgnoreVoicingManagerProperties:!0,radius:12,tandem:Y.Z.OPT_OUT});const a=new R.xvT(t,{font:new $t(12),fill:this.lookAndFeel.navigationBarTextFillProperty,maxWidth:100}),o=i.createBox(a,{xAlign:"left"}),l=s.createBox(this.playStopButton,{xAlign:"right"});this.content=new R.BET({children:[o,l],spacing:10}),R.LY3.endSpeakingEmitter.addListener((t,e)=>{e===this.objectResponseUtterance&&(this.playingProperty.set(!1),R.sSl.inputListeners.includes(c)&&R.sSl.removeInputListener(c))});const h=t=>{t.trail.nodes.includes(this.playStopButton)||(R.sSl.removeInputListener(c),this.objectResponseUtterance.priorityProperty.value=ci.Z.LOW_PRIORITY)},c={down:h,focus:h};R.LY3.startSpeakingEmitter.addListener((t,e)=>{e===this.objectResponseUtterance&&R.sSl.addInputListener(c)})}playContent(t){if(this.playingProperty.value){_.without(t,this.playingProperty).forEach(t=>{t.value=!1}),this.objectResponseUtterance.priorityProperty.value=ci.Z.TOP_PRIORITY,this.playStopButton.voicingSpeakResponse({objectResponse:this.createAlert(),utterance:this.objectResponseUtterance})}else R.KsW.cancelUtterance(this.objectResponseUtterance)}}Ct.Z.register("VoicingToolbarItem",Tp);const xp=Tp,Cp=on.Z.a11y.toolbar.openToolbarStringProperty,Ip=on.Z.a11y.toolbar.closeToolbarStringProperty,qp=on.Z.a11y.toolbar.hideToolbarStringProperty,kp=on.Z.a11y.toolbar.showToolbarStringProperty,Dp=on.Z.a11y.toolbar.toolbarShownStringProperty,Lp=on.Z.a11y.toolbar.toolbarHiddenStringProperty;class _p extends R.NBX{constructor(t,e,i,s){var n;const r=(0,N.ZP)()({tagName:"div",visiblePropertyOptions:{phetioReadOnly:!0}},s);super(r),_defineProperty(this,"layoutScale",1),this.isEnabledProperty=t,this.backgroundRectangle=new R.AeJ(0,0,0,0,{fill:i.navigationBarFillProperty}),this.openProperty=new S.Z(!0),this.isShowingProperty=E.ZP.and([this.isEnabledProperty,R.LY3.enabledProperty,Lt.audioEnabledProperty]);const a=new Fu(e);this.menuContent=new xp(a,i,{tandem:null===(n=r.tandem)||void 0===n?void 0:n.createTandem("menuContent")});const o=new Op;this.openButton=new Bu({content:o,listener:()=>this.openProperty.toggle(),buttonAppearanceStrategy:Bi.FlatAppearanceStrategy,baseColor:"lightgrey",tandem:Y.Z.OPT_OUT}),this.contentWidth=this.menuContent.localBounds.width,this.contentMargin=this.openButton.localBounds.width,this.rightPositionProperty=new C.Z(this.getHiddenPosition()),this.rightDestinationPosition=0;const l=new R.NBX({children:[this.backgroundRectangle,this.menuContent,this.openButton]});this.addChild(l);q.Z.addListener(t=>{this.step(t)});const h=(t,e)=>{if(o.matrix=t?Re.Z.scaling(-1,1):Re.Z.IDENTITY,this.menuContent.pdomVisible=t,this.openButton.innerContent=t?Ip:Cp,this.openButton.voicingNameResponse=t?qp:kp,this.updateDestinationPosition(),null!==e){const e=t?Dp:Lp;this.openButton.voicingSpeakContextResponse({contextResponse:e}),this.alertDescriptionUtterance(e)}};this.openProperty.link(h);const c=t=>{this.updateDestinationPosition(),l.pdomVisible=t};this.isShowingProperty.link(c),this.disposeToolbar=()=>{this.isShowingProperty.unlink(c),this.openProperty.unlink(h)}}getDisplayedWidth(){return this.rightPositionProperty.value*this.layoutScale+this.openButton.width/2}getHiddenPosition(){return-this.contentMargin/2}updateDestinationPosition(){this.isShowingProperty.value?this.rightDestinationPosition=this.openProperty.value?this.contentWidth+2*this.contentMargin:this.contentMargin:this.rightDestinationPosition=this.getHiddenPosition()}step(t){const e=Math.abs(this.rightPositionProperty.value-this.rightDestinationPosition);if(0!==e){const i=Math.min(e,250*t),s=this.rightPositionProperty.value;this.rightPositionProperty.value=this.rightDestinationPosition>s?s+i:s-i}}layout(t,e){this.layoutScale=t,this.menuContent.setScaleMagnitude(t),this.openButton.setScaleMagnitude(t),this.backgroundRectangle.rectWidth=t*(this.contentWidth+2*this.contentMargin),this.backgroundRectangle.rectHeight=e,this.backgroundRectangle.right=this.rightPositionProperty.value*t,this.openButton.center=this.backgroundRectangle.rightCenter,this.menuContent.centerTop=this.backgroundRectangle.centerTop.plusXY(0,15)}dispose(){this.disposeToolbar(),super.dispose()}}class Op extends R.y$t{constructor(){const t=new Ut.bn;for(let e=0;e<2;e++){const i=8*e;t.moveTo(i,0),t.lineTo(i+5,6),t.lineTo(i,12)}super(t,{stroke:"black",lineWidth:3.5,lineCap:"round"})}}Ct.Z.register("Toolbar",_p);const Zp=_p;class Np{constructor(t){this.inclusions=t}size(){return this.inclusions.length}includes(t){return this.inclusions[t]}apply(t){return t.filter((t,e)=>this.inclusions[e])}inverted(){return new Np(this.inclusions.map(t=>!t))}getIncludedIndices(){return _.range(0,this.size()).filter(t=>this.inclusions[t])}toString(){return`C[${this.inclusions.map(t=>t?"1":"0").join("")}]`}equals(t){return this.inclusions.length===t.inclusions.length&&_.isEqual(this.inclusions,t.inclusions)}static empty(t){return new Np(_.range(0,t).map(()=>!1))}static full(t){return new Np(_.range(0,t).map(()=>!0))}static combinations(t){const e=[],i=[];return function s(n){n===t?e.push(new Np(i.slice())):(i.push(!1),s(n+1),i.pop(),i.push(!0),s(n+1),i.pop())}(0),e}static forEachCombination(t,e){const i=[];!function s(n){n===t.length?e(i):(s(n+1),i.push(t[n]),s(n+1),i.pop())}(0)}static combinationsOf(t){const e=[];return Np.forEachCombination(t,t=>{e.push(t.slice())}),e}}yr.Z.register("Combination",Np);const Bp=Np;var Rp=i(2238);const Fp=Z.Z.android||Z.Z.mobileSafari;phet.joist.elapsedTime=0,phet.joist.playbackModeEnabledProperty=new S.Z(phet.chipper.queryParameters.playbackMode);class Hp extends G.Z{constructor(t,e,i){window.phetSplashScreenDownloadComplete();const s=(0,N.ZP)()({credits:{},homeScreenWarningNode:null,preferencesModel:null,webgl:Iu.DEFAULT_WEBGL,phetioState:!1,phetioReadOnly:!0,tandem:Y.Z.ROOT},i);s.preferencesModel||(s.preferencesModel=new ou);const n={webgl:s.webgl,tandem:Y.Z.GENERAL_VIEW.createTandem("display"),preferencesModel:s.preferencesModel};super(s),_defineProperty(this,"_isConstructionCompleteProperty",new I.Z(!1)),_defineProperty(this,"isConstructionCompleteProperty",this._isConstructionCompleteProperty),_defineProperty(this,"frameStartedEmitter",new x.Z),_defineProperty(this,"frameEndedEmitter",new x.Z({tandem:Y.Z.GENERAL_MODEL.createTandem("frameEndedEmitter"),phetioHighFrequency:!0,phetioDocumentation:"Indicates when a frame ends. Listen to this Emitter if you have an action that must be performed after the model and view step completes."})),_defineProperty(this,"activeProperty",new S.Z(!0,{tandem:Y.Z.GENERAL_MODEL.createTandem("activeProperty"),phetioFeatured:!0,phetioDocumentation:"Determines whether the entire simulation is running and processing user input. Setting this property to false pauses the simulation, and prevents user interaction."})),_defineProperty(this,"scaleProperty",new C.Z(1)),_defineProperty(this,"boundsProperty",new I.Z(null)),_defineProperty(this,"screenBoundsProperty",new I.Z(null)),_defineProperty(this,"lookAndFeel",new gr),_defineProperty(this,"memoryMonitor",new Vr),_defineProperty(this,"version",dc.version),_defineProperty(this,"frameCounter",0),_defineProperty(this,"resizePending",!0),_defineProperty(this,"locale",phet.chipper.locale||"en"),_defineProperty(this,"toolbar",null),_defineProperty(this,"modalNodeStack",(0,T.Z)()),_defineProperty(this,"barrierRectangle",new W(this.modalNodeStack)),_defineProperty(this,"topLayer",new R.NBX({children:[this.barrierRectangle]})),_defineProperty(this,"lastStepTime",-1),_defineProperty(this,"lastAnimationFrameTime",-1),this.credits=s.credits,this.simNameProperty=t,phet.joist.playbackModeEnabledProperty.lazyLink(()=>{throw new Error("playbackModeEnabledProperty cannot be changed after Sim construction has begun")});const r=new I.Z(new L.Z(0,0),{valueComparisonStrategy:"equalsFunction"});this.dimensionProperty=r,this.resizeAction=new Et.Z((t,e)=>{if(r.value=new L.Z(t,e),0===t||0===e)return;const i=Math.min(t/hr.LAYOUT_BOUNDS.width,e/hr.LAYOUT_BOUNDS.height),s=i*Jd.NAVIGATION_BAR_SIZE.height;this.navigationBar.layout(i,t,s),this.navigationBar.y=e-s,this.display.setSize(new L.Z(t,e));const n=e-this.navigationBar.height;this.toolbar&&this.toolbar.layout(i,n);const a=this.toolbar?this.toolbar.getDisplayedWidth():0,o=new D.Z(a,0,t,n);_.each(this.screens,t=>t.view.layout(o)),this.topLayer.children.forEach(t=>{t.layout&&t.layout(o)}),Z.Z.mobileSafari&&window.scrollTo(0,0),this.scaleProperty.value=i,this.boundsProperty.value=new D.Z(0,0,t,e),this.screenBoundsProperty.value=o.copy(),R.Yj2.listener.setTargetScale(i),R.Yj2.listener.setTargetBounds(this.boundsProperty.value),R.Yj2.listener.setPanBounds(this.boundsProperty.value)},{tandem:Y.Z.GENERAL_MODEL.createTandem("resizeAction"),parameters:[{name:"width",phetioType:xt.Z},{name:"height",phetioType:xt.Z}],phetioPlayback:!0,phetioEventMetadata:{alwaysPlaybackableOverride:!0},phetioDocumentation:"Executes when the sim is resized. Values are the sim dimensions in CSS pixels."}),this.stepSimulationAction=new Et.Z(t=>{this.frameStartedEmitter.emit(),this.frameCounter++,t*=phet.chipper.queryParameters.speed,this.resizePending&&this.resizeToWindow();const e=this.selectedScreenProperty.value;t=Math.min(t,e.maxDT),phet.joist.elapsedTime+=1e3*t,q.Z.emit(t),e.model.step&&t&&e.model.step(t),window.TWEEN&&window.TWEEN.update(phet.joist.elapsedTime),this.display.step(t),e.view.step(t),Y.Z.PHET_IO_ENABLED&&!phet.phetio.phetioEngine.isReadyForDisplay||this.display.updateDisplay(),phet.chipper.queryParameters.memoryLimit&&this.memoryMonitor.measure(),this.frameEndedEmitter.emit()},{tandem:Y.Z.GENERAL_MODEL.createTandem("stepSimulationAction"),parameters:[{name:"dt",phetioType:xt.Z,phetioDocumentation:"The amount of time stepped in each call, in seconds."}],phetioHighFrequency:!0,phetioPlayback:!0,phetioDocumentation:"A function that steps time forward."});const a=Y.Z.GENERAL_MODEL.createTandem("screens"),o=Tu(e,phet.chipper.queryParameters.homeScreen,QueryStringMachine.containsKey("homeScreen"),phet.chipper.queryParameters.initialScreen,QueryStringMachine.containsKey("initialScreen"),phet.chipper.queryParameters.screens,QueryStringMachine.containsKey("screens"),t=>{const i=t.map(t=>e.indexOf(t)+1),s=_.flatten(Bp.combinationsOf(i).map(t=>Rp.Z.permutationsOf(t))).filter(t=>t.length>0).sort();this.availableScreensProperty=new I.Z(i,{tandem:a.createTandem("availableScreensProperty"),isValidValue:t=>_.some(s,e=>_.isEqual(t,e)),phetioFeatured:!0,phetioValueType:(0,qu.Z)(xt.Z),phetioDocumentation:"Controls which screens are available, and the order they are displayed."}),this.activeSimScreensProperty=new E.ZP([this.availableScreensProperty],t=>t.map(t=>e[t-1]))},t=>new pr(this.simNameProperty,()=>this.selectedScreenProperty,t,this.activeSimScreensProperty,{tandem:s.tandem.createTandem(window.phetio.PhetioIDUtils.HOME_SCREEN_COMPONENT_NAME),warningNode:s.homeScreenWarningNode}));this.homeScreen=o.homeScreen,this.simScreens=o.selectedSimScreens,this.screens=o.screens,this.allScreensCreated=o.allScreensCreated,this.selectedScreenProperty=new I.Z(o.initialScreen,{tandem:a.createTandem("selectedScreenProperty"),phetioFeatured:!0,phetioDocumentation:"Determines which screen is selected in the simulation",validValues:this.screens,phetioValueType:bn.ScreenIO}),this.activeSimScreensProperty.lazyLink(t=>{const e=this.selectedScreenProperty.value;e===this.homeScreen?1===t.length?this.selectedScreenProperty.value=t[0]:t.includes(this.homeScreen.model.selectedScreenProperty.value)||(this.homeScreen.model.selectedScreenProperty.value=t[0]):t.includes(e)||(this.selectedScreenProperty.value=t[0])}),this.displayedSimNameProperty=E.ZP.deriveAny([this.availableScreensProperty,this.simNameProperty,this.selectedScreenProperty,on.Z.simTitleWithScreenNamePatternStringProperty,...this.screens.map(t=>t.nameProperty)],()=>{const t=this.availableScreensProperty.value,i=this.simNameProperty.value,s=this.selectedScreenProperty.value,n=on.Z.simTitleWithScreenNamePatternStringProperty.value,r=s.nameProperty.value,a=1===t.length&&e.length>1;return a&&i&&r?B.Z.fillIn(n,{simName:i,screenName:r}):a&&r?r:i},{tandem:Y.Z.GENERAL_MODEL.createTandem("displayedSimNameProperty"),tandemNameSuffix:"NameProperty",phetioDocumentation:"Customize this string by editing its dependencies.",phetioFeatured:!0,phetioValueType:se.Z});const l=new S.Z(!0,{tandem:Y.Z.GENERAL_MODEL.createTandem("browserTabVisibleProperty"),phetioDocumentation:"Indicates whether the browser tab containing the simulation is currently visible",phetioReadOnly:!0,phetioFeatured:!0});this.browserTabVisibleProperty=l,document.addEventListener("visibilitychange",()=>{l.set("visible"===document.visibilityState)},!1),this.supportsGestureDescription=phet.chipper.queryParameters.supportsInteractiveDescription&&Fp,this.hasKeyboardHelpContent=_.some(this.simScreens,t=>!!t.createKeyboardHelpNode),window.phet.joist.sim=this,this.preferencesModel=s.preferencesModel,Lt.initialize(this),this.preferencesModel.audioModel.supportsSound&&Tt.addSoundGenerator(new Su(this.selectedScreenProperty,this.homeScreen,{initialOutputLevel:.5}),{categoryName:"user-interface"}),window.phet.joist.ScreenshotGenerator=zd,this.simNameProperty.link(t=>{document.title=t}),this.preferencesModel.audioModel.supportsVoicing&&(this.toolbar=new Zp(this.preferencesModel.audioModel.toolbarEnabledProperty,this.selectedScreenProperty,this.lookAndFeel),this.toolbar.rightPositionProperty.lazyLink(()=>{this.resize(this.boundsProperty.value.width,this.boundsProperty.value.height)})),this.display=new Iu(n),this.rootNode=this.display.rootNode,As.initialize(this,this.display),Vt.Z.multilink([this.activeProperty,phet.joist.playbackModeEnabledProperty],(t,e)=>{e?(this.display.interactive=!0,R.MMl.enabled=!0):(this.display.interactive=t,R.MMl.enabled=t)}),document.body.appendChild(this.display.domElement),Nt.start(this),this.navigationBar=new Jd(this,Y.Z.GENERAL_VIEW.createTandem("navigationBar")),this.updateBackground=()=>{this.lookAndFeel.backgroundColorProperty.value=R.Ilk.toColor(this.selectedScreenProperty.value.backgroundColorProperty.value)},this.lookAndFeel.backgroundColorProperty.link(t=>{this.display.backgroundColor=t}),this.selectedScreenProperty.link(()=>this.updateBackground()),this.selectedScreenProperty.lazyLink((t,e)=>e.view.interruptSubtreeInput()),this.simInfo=new _u(this),Y.Z.PHET_IO_ENABLED&&phet.phetio.phetioEngine.onSimConstructionStarted(this.simInfo,this.isConstructionCompleteProperty,this.frameEndedEmitter,this.display),It.Z.lazyLink(t=>{t||this.updateViews()}),this.boundRunAnimationLoop=this.runAnimationLoop.bind(this),phet.chipper.queryParameters.legendsOfLearning&&new Zu(this).start()}updateViews(){this.resizeToWindow(),this.selectedScreenProperty.value.view.step&&this.selectedScreenProperty.value.view.step(0),this.display.descriptionUtteranceQueue.clear(),R.KsW.clear(),M.Z.runOnNextTick(()=>phet.joist.display.updateDisplay())}finishInit(t){_.each(t,t=>{t.view.layerSplit=!0,this.display.simulationRoot.addChild(t.view)}),this.display.simulationRoot.addChild(this.navigationBar),this.preferencesModel.audioModel.supportsVoicing&&(this.display.simulationRoot.addChild(this.toolbar),this.display.simulationRoot.pdomOrder=[this.toolbar],R.LY3.voicingFullyEnabledProperty.link(t=>{this.setSimVoicingVisible(t)})),this.selectedScreenProperty.link(e=>{t.forEach(t=>{const i=t===e;i&&t.activeProperty.set(i),t.view.setVisible(i),i||t.activeProperty.set(i)}),this.updateBackground(),It.Z.value||R.Yj2.listener.resetTransform()}),this.display.simulationRoot.addChild(this.topLayer);const e=()=>{phet.joist.playbackModeEnabledProperty.value||(this.resizePending=!0)};if($(window).resize(e),window.addEventListener("resize",e),window.addEventListener("orientationchange",e),window.visualViewport&&window.visualViewport.addEventListener("resize",e),this.resizeToWindow(),Ld.check(),QueryStringMachine.warnings.length){const t=new gu(QueryStringMachine.warnings,{closeButtonListener:()=>{t.hide(),t.dispose()}});t.show()}}showPopup(t,e){e&&(this.rootNode.interruptSubtreeInput(),this.modalNodeStack.push(t),this.setPDOMViewsVisible(!1),this.setNonModalVoicingVisible(!1)),t.layout&&t.layout(this.screenBoundsProperty.value),this.topLayer.addChild(t)}hidePopup(t,e){e&&(this.modalNodeStack.remove(t),0===this.modalNodeStack.length&&(this.setNonModalVoicingVisible(R.LY3.voicingFullyEnabledProperty.value),this.setPDOMViewsVisible(!0))),this.topLayer.removeChild(t)}resizeToWindow(){this.resizePending=!1,this.resize(window.innerWidth,window.innerHeight)}resize(t,e){this.resizeAction.execute(t,e)}start(){const t=[];this.screens.forEach(e=>{t.push(()=>{e.backgroundColorProperty.hasListener(this.updateBackground)||e.backgroundColorProperty.link(this.updateBackground),e.initializeModel()}),t.push(()=>{e.initializeView(this.simNameProperty,this.displayedSimNameProperty,this.screens.length,this.homeScreen===e)})});const e=i=>{setTimeout(()=>{t[i]();const s=O.Z.linear(0,t.length-1,.25,1,i);document.getElementById("progressBarForeground")&&document.getElementById("progressBarForeground").setAttribute("width",""+273*s),i+1{if(this.finishInit(this.screens),R.cQK.polyfillRequestAnimationFrame(),phet.chipper.queryParameters.profiler&&hu.start(this),this._isConstructionCompleteProperty.value=!0,this.boundRunAnimationLoop(),phet.joist.playbackModeEnabledProperty.value){0,q.Z.emit(0)}Y.Z.PHET_IO_ENABLED&&!phet.preloads.phetio.queryParameters.phetioStandalone||window.phetSplashScreen.dispose(),phet.chipper.brand,phet.chipper.queryParameters.continuousTest&&phet.chipper.reportContinuousTestResult({type:"continuous-test-load"}),phet.chipper.queryParameters.postMessageOnLoad&&window.parent&&window.parent.postMessage(JSON.stringify({type:"load",url:window.location.href}),"*")},25)},30/t.length)};e(0)}runAnimationLoop(){window.requestAnimationFrame(this.boundRunAnimationLoop),this.activeProperty.value&&!phet.joist.playbackModeEnabledProperty.value&&(this.frameCounter>0&&this.display.fuzzInputEvents(),this.stepOneFrame());const t=Date.now();M.Z.emit(zp(this.lastAnimationFrameTime,t)),this.lastAnimationFrameTime=t,Y.Z.PHET_IO_ENABLED&&phet.phetio.phetioCommandProcessor.onAnimationLoop(this)}stepOneFrame(){const t=Date.now(),e=zp(this.lastStepTime,t);this.lastStepTime=t,e>0&&this.stepSimulation(e)}stepSimulation(t){this.stepSimulationAction.execute(t)}setPDOMViewsVisible(t){for(let e=0;e=2&&this.screens.forEach(t=>{if(!(t instanceof pr)&&t.nameProperty instanceof k.Z){t.nameProperty.stringKey}})}}function zp(t,e){return-1===t?1/60:(e-t)/1e3}Ct.Z.register("Sim",Hp);let Up=null;const Yp=K.Z.createLock({name:"brand"});if(i(163)(`./${phet.chipper.brand}/js/Brand.js`).then(t=>Yp()).catch(t=>console.log(t)),Y.Z.PHET_IO_ENABLED){const t=K.Z.createLock({name:"phetioEngine"});Promise.resolve().then((function(){var t=new Error("Cannot find module '../../phet-io/js/phetioEngine.js'");throw t.code="MODULE_NOT_FOUND",t})).then(e=>{Up=e.default,t()}).catch(t=>console.log(t))}const Wp=K.Z.createLock({name:"launch"});const Gp=new class{constructor(){this.launchComplete=!1}launch(t){K.Z.addListener(()=>{var e;(window.phet.joist.launchSimulation=()=>{var e;(this.launchComplete=!0,Y.Z.PHET_IO_ENABLED)&&(null===(e=Up)||void 0===e||e.onCrossFrameListenersReady());t()},Y.Z.PHET_IO_ENABLED)&&(null===(e=Up)||void 0===e||e.initialize());phet.chipper.queryParameters.postMessageOnReady&&window.parent&&window.parent.postMessage(JSON.stringify({type:"ready",url:window.location.href}),"*"),Y.Z.PHET_IO_ENABLED&&!phet.preloads.phetio.queryParameters.phetioStandalone||phet.chipper.queryParameters.playbackMode||window.phet.joist.launchSimulation()}),Wp(),window.phet.joist.launchCalled=!0}};Ct.Z.register("simLauncher",Gp);const Kp=Gp,Qp=new z.Z("arithmetic"),Xp=(0,te.Z)("ARITHMETIC");Qp.register("ArithmeticStrings",Xp);const jp=Xp,Jp={BACKGROUND_COLOR:"rgb( 173, 202, 255 )",CURSOR_BLINK_INTERVAL:500,EQUATION_FONT_TEXT:new $t({size:32}),ICON_BACKGROUND_COLOR:"rgb( 173, 202, 255 )",INPUT_LENGTH_MAX:3,SCREEN_ICON_SIZE:bn.MINIMUM_HOME_SCREEN_ICON_SIZE,NUM_STARS:5,WORKSPACE_BACKGROUND_COLOR:"rgb(130,181,252)",LEVEL_1_TABLE_SIZE:6,LEVEL_2_TABLE_SIZE:9,LEVEL_3_TABLE_SIZE:12,CONTROL_PANEL_VBOX_SPACING:22};Qp.register("ArithmeticConstants",Jp);const $p=Jp,tm={timerEnabledProperty:new I.Z(!1)};Qp.register("ArithmeticGlobals",tm);const em=tm,im=new z.Z("vegas");function sm(t){return{public:!0,type:"array",elementSchema:{type:"number",isValidValue:e=>Number.isInteger(e)&&e>0&&e<=t},defaultValue:Array.from({length:t},(t,e)=>e+1),isValidValue:t=>null===t||t.length>0&&t.length===_.uniq(t).length&&_.every(t,(t,e,i)=>0===e||i[e-1]<=t)}}im.register("getGameLevelsSchema",sm);const nm=sm,rm=QueryStringMachine.getAll({gameLevels:nm(3),autoAnswer:{type:"flag"}});phet.chipper.isProduction&&!phet.chipper.isDebugBuild&&(rm.autoAnswer=!1),Qp.register("ArithmeticQueryParameters",rm);const am=rm;class om{constructor(){this.pointsToDisplayProperty=new I.Z(1),this.isSmileProperty=new I.Z(!0),this.showFaceEmitter=new x.Z,this.hideFaceEmitter=new x.Z}showFace(){this.showFaceEmitter.emit()}hideFace(){this.hideFaceEmitter.emit()}reset(){this.pointsToDisplayProperty.reset(),this.isSmileProperty.reset()}}Qp.register("FaceModel",om);const lm=om,hm={SELECTING_LEVEL:"SELECTING_LEVEL",AWAITING_USER_INPUT:"AWAITING_USER_INPUT",DISPLAYING_CORRECT_ANSWER_FEEDBACK:"DISPLAYING_CORRECT_ANSWER_FEEDBACK",DISPLAYING_INCORRECT_ANSWER_FEEDBACK:"DISPLAYING_INCORRECT_ANSWER_FEEDBACK",SHOWING_LEVEL_COMPLETED_DIALOG:"SHOWING_LEVEL_COMPLETED_DIALOG",LEVEL_COMPLETED:"LEVEL_COMPLETED"};Qp.register("GameState",hm);const cm=hm,dm=(0,te.Z)("VEGAS");im.register("VegasStrings",dm);const um=dm;class pm{constructor(){this.isRunningProperty=new S.Z(!1),this.elapsedTimeProperty=new C.Z(0),this.intervalId=null}reset(){this.isRunningProperty.reset(),this.elapsedTimeProperty.reset()}start(){this.isRunningProperty.value||(this.elapsedTimeProperty.value=0,this.intervalId=q.Z.setInterval(()=>{this.elapsedTimeProperty.value=this.elapsedTimeProperty.value+1},1e3),this.isRunningProperty.value=!0)}stop(){this.isRunningProperty.value&&(q.Z.clearInterval(this.intervalId),this.intervalId=null,this.isRunningProperty.value=!1)}restart(){this.stop(),this.start()}static formatTime(t){const e=Math.floor(t/3600),i=Math.floor((t-3600*e)/60),s=Math.floor(t-3600*e-60*i),n=i>9||0===e?i:"0"+i,r=s>9?s:"0"+s;return e>0?B.Z.format(um.pattern["0hours"]["1minutes"]["2secondsStringProperty"].value,e,n,r):B.Z.format(um.pattern["0minutes"]["1secondsStringProperty"].value,n,r)}}im.register("GameTimer",pm);class mm{constructor(t){this.bestTimeProperty=new I.Z(null),this.currentScoreProperty=new I.Z(0),this.displayScoreProperty=new I.Z(0),this.tableSize=t,this.perfectScore=t*t,this.gameTimer=new pm,this.cellUsedStates=new Array(t);for(let e=0;e{-1!==e.indexOf(!1)&&t.push(i+1)}),!t.length)return null;const i=H.Z.shuffle(t)[0];return this.cellUsedStates[i-1].forEach((t,i)=>{t||e.push(i+1)}),{multiplicand:i,multiplier:H.Z.sample(e)}}}Qp.register("LevelModel",mm);const gm=mm;class ym{constructor(){this.multiplicandProperty=new I.Z(void 0),this.multiplierProperty=new I.Z(void 0),this.productProperty=new I.Z(void 0),this.possiblePointsProperty=new I.Z(1)}reset(){this.multiplicandProperty.reset(),this.multiplierProperty.reset(),this.productProperty.reset(),this.possiblePointsProperty.reset()}}Qp.register("ProblemModel",ym);const fm=ym;class Am{constructor(t,e){this.checkAnswerEmitter=new x.Z({tandem:t.createTandem("checkAnswerEmitter"),parameters:[{name:"multiplicand",phetioType:xt.Z},{name:"multiplier",phetioType:xt.Z},{name:"product",phetioType:xt.Z},{name:"isCorrect",phetioType:nu.Z},{name:"asString",phetioType:se.Z},{name:"input",phetioType:se.Z}]}),e=(0,bi.Z)({fillEquation:null},e),this.fillEquation=e.fillEquation,this.levelNumberProperty=new I.Z(null),this.inputProperty=new I.Z(""),this.activeInputProperty=new I.Z(null),this.stateProperty=new I.Z(cm.SELECTING_LEVEL),this.refreshEmitter=new x.Z,this.levelModels=[new gm($p.LEVEL_1_TABLE_SIZE),new gm($p.LEVEL_2_TABLE_SIZE),new gm($p.LEVEL_3_TABLE_SIZE)],this.problemModel=new fm,this.faceModel=new lm,this.stateProperty.lazyLink((t,e)=>{e===cm.SELECTING_LEVEL&&t===cm.AWAITING_USER_INPUT&&(this.activeLevelModel.gameTimer.start(),this.activeLevelModel.displayScoreProperty.set(this.activeLevelModel.currentScoreProperty.get()))})}get activeLevelModel(){return this.levelModels[this.levelNumberProperty.get()]}submitAnswer(){const t=this.problemModel.multiplicandProperty.get()*this.problemModel.multiplierProperty.get()===this.problemModel.productProperty.get(),e=`${this.problemModel.multiplicandProperty.get()} x ${this.problemModel.multiplierProperty.get()} = ${this.problemModel.productProperty.get()}`;this.checkAnswerEmitter.emit(this.problemModel.multiplicandProperty.get(),this.problemModel.multiplierProperty.get(),this.problemModel.productProperty.get(),t,e,this.inputProperty.get()),t?(this.activeLevelModel.currentScoreProperty.value+=this.problemModel.possiblePointsProperty.get(),this.activeLevelModel.displayScoreProperty.set(this.activeLevelModel.currentScoreProperty.get()),this.faceModel.pointsToDisplayProperty.set(this.problemModel.possiblePointsProperty.get()),this.faceModel.isSmileProperty.set(!0),this.faceModel.showFace(),this.activeLevelModel.markCellAsUsed(this.problemModel.multiplicandProperty.get(),this.problemModel.multiplierProperty.get()),this.stateProperty.set(cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK),this.feedbackTimer=q.Z.setTimeout(()=>{this.feedbackTimer=null,this.nextProblem()},1200)):(this.problemModel.possiblePointsProperty.set(0),this.faceModel.pointsToDisplayProperty.set(this.problemModel.possiblePointsProperty.get()),this.faceModel.isSmileProperty.set(!1),this.faceModel.showFace(),this.stateProperty.set(cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK))}nextProblem(){this.setUpUnansweredProblem()?(this.inputProperty.reset(),this.stateProperty.set(cm.AWAITING_USER_INPUT)):(this.stateProperty.set(cm.SHOWING_LEVEL_COMPLETED_DIALOG),this.activeLevelModel.gameTimer.stop())}retryProblem(){this.stateProperty.set(cm.AWAITING_USER_INPUT)}setUpUnansweredProblem(){throw new Error("this function must be overridden in sub-classes")}autoAnswer(){}returnToLevelSelectScreen(){this.stateProperty.get()===cm.AWAITING_USER_INPUT&&this.inputProperty.reset(),this.saveGameEnvironment(),this.feedbackTimer&&q.Z.clearTimeout(this.feedbackTimer),this.stateProperty.set(cm.SELECTING_LEVEL)}refreshLevel(){this.feedbackTimer&&q.Z.clearTimeout(this.feedbackTimer),this.resetLevel(),this.activeLevelModel.displayScoreProperty.reset(),this.nextProblem(),this.activeLevelModel.gameTimer.start(),this.refreshEmitter.emit(),am.autoAnswer&&this.autoAnswer()}resetLevelModels(){this.levelModels.forEach(t=>{t.reset()})}setLevel(t){this.levelNumberProperty.set(t),this.levelModels[t].environment?(this.restoreGameEnvironment(this.levelModels[t].environment),this.stateProperty.get()===cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK&&this.nextProblem()):(this.nextProblem(),am.autoAnswer&&this.autoAnswer())}resetLevel(){this.activeLevelModel.reset(),this.inputProperty.reset(),this.problemModel.reset(),this.faceModel.reset(),this.faceModel.hideFace()}selectUnusedMultiplierPair(){return this.activeLevelModel.selectUnusedMultiplierPair()}reset(){this.levelNumberProperty.reset(),this.inputProperty.reset(),this.activeInputProperty.reset(),this.stateProperty.reset(),this.resetLevelModels(),this.clearGameEnvironments(),em.timerEnabledProperty.reset()}clearGameEnvironments(){this.levelModels.forEach(t=>{t.environment=null})}restoreGameEnvironment(t){this.activeLevelModel.currentScoreProperty.set(t.currentScore),this.activeInputProperty.set(t.activeInput),this.problemModel.multiplicandProperty.set(t.multiplicand),this.problemModel.multiplierProperty.set(t.multiplier),this.problemModel.productProperty.set(t.product),this.problemModel.possiblePointsProperty.set(t.possiblePoints),this.stateProperty.set(t.state),this.inputProperty.set(t.input),this.activeLevelModel.gameTimer.elapsedTimeProperty.value=t.elapsedTime}saveGameEnvironment(){this.activeLevelModel.environment={input:this.inputProperty.get(),multiplicand:this.problemModel.multiplicandProperty.get(),multiplier:this.problemModel.multiplierProperty.get(),product:this.problemModel.productProperty.get(),state:this.stateProperty.get(),currentScore:this.activeLevelModel.currentScoreProperty.get(),elapsedTime:this.activeLevelModel.gameTimer.elapsedTimeProperty.value,possiblePoints:this.problemModel.possiblePointsProperty.get(),activeInput:this.activeInputProperty.get()}}}Qp.register("ArithmeticModel",Am);const vm=Am;class bm extends vm{constructor(t){super(t,{fillEquation:()=>{this.problemModel.multiplierProperty.set(Number(this.problemModel.multiplierProperty.get())),this.problemModel.multiplicandProperty.set(Number(this.problemModel.multiplicandProperty.get())),this.submitAnswer()}})}setUpUnansweredProblem(){const t=this.selectUnusedMultiplierPair();return!!t&&(this.problemModel.multiplicandProperty.reset(),this.problemModel.multiplierProperty.reset(),this.problemModel.productProperty.reset(),this.problemModel.possiblePointsProperty.reset(),this.problemModel.productProperty.set(t.multiplicand*t.multiplier),H.Z.nextBoolean()?(this.problemModel.multiplicandProperty.set(t.multiplicand),this.activeInputProperty.set("multiplier")):(this.problemModel.multiplierProperty.set(t.multiplier),this.activeInputProperty.set("multiplicand")),!0)}autoAnswer(){const t=Tt.enabled;Tt.enabled=!1;const e=this.activeLevelModel.tableSize*this.activeLevelModel.tableSize,i=e-1;console.log("Automatically answering",i,"of",e,"questions."),_.times(i,t=>{if(this.problemModel.multiplicandProperty.get()){if(this.problemModel.multiplierProperty.get())throw new Error("unexpected problem structure for problem",t);this.problemModel.multiplierProperty.set(this.problemModel.productProperty.get()/this.problemModel.multiplicandProperty.get())}else this.problemModel.multiplicandProperty.set(this.problemModel.productProperty.get()/this.problemModel.multiplierProperty.get());this.activeLevelModel.currentScoreProperty.value+=this.problemModel.possiblePointsProperty.get(),this.activeLevelModel.displayScoreProperty.set(this.activeLevelModel.currentScoreProperty.get()),this.activeLevelModel.markCellAsUsed(this.problemModel.multiplicandProperty.get(),this.problemModel.multiplierProperty.get()),this.stateProperty.set(cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK),this.nextProblem()}),Tt.enabled=t}}Qp.register("DivideModel",bm);const Vm=bm,Pm=$p.SCREEN_ICON_SIZE;class wm extends R.AeJ{constructor(){super(0,0,Pm.width,Pm.height,{fill:$p.ICON_BACKGROUND_COLOR}),this.addChild(new R.x12(0,0,.4*Pm.width,0,{stroke:"#FFF31E",lineWidth:33,center:this.center})),this.addChild(new R.Cdc(30,{fill:"#FFF31E",centerX:Pm.width/2,centerY:.3*Pm.height})),this.addChild(new R.Cdc(30,{fill:"#FFF31E",centerX:Pm.width/2,centerY:.7*Pm.height}))}}Qp.register("DivideScreenIconNode",wm);const Mm=wm;mc.filter(t=>"random"!==t);let Sm=null;const Tm=new E.ZP([Vc],t=>{const e="random"===t?H.Z.sample(mc.filter(t=>"random"!==t&&t!==Sm)):t;return Sm=e,e},{strictAxonDependencies:!1});Ct.Z.register("concreteRegionAndCultureProperty",Tm);const Em=Tm;class xm extends E.oL{constructor(t,e){super([Em],t=>{const i=e[t];return i}),this.imageName=t,this.imageMap=e}}Ct.Z.register("LocalizedImageProperty",xm);const Cm=new Image,Im=K.Z.createLock(Cm);Cm.onload=Im,Cm.src="data:image/svg+xml;base64,"+btoa('');const qm=Cm,km=new Image,Dm=K.Z.createLock(km);km.onload=Dm,km.src="data:image/svg+xml;base64,"+btoa('');const Lm=km,_m=new Image,Om=K.Z.createLock(_m);_m.onload=Om,_m.src="data:image/svg+xml;base64,"+btoa('');const Zm=_m,Nm=new Image,Bm=K.Z.createLock(Nm);Nm.onload=Bm,Nm.src="data:image/svg+xml;base64,"+btoa('');const Rm=Nm,Fm=new Image,Hm=K.Z.createLock(Fm);Fm.onload=Hm,Fm.src="data:image/svg+xml;base64,"+btoa('');const zm=Fm,Um=new Image,Ym=K.Z.createLock(Um);Um.onload=Ym,Um.src="data:image/svg+xml;base64,"+btoa('');const Wm=Um,Gm=new Image,Km=K.Z.createLock(Gm);Gm.onload=Km,Gm.src="data:image/svg+xml;base64,"+btoa('');const Qm=Gm,Xm=new Image,jm=K.Z.createLock(Xm);Xm.onload=jm,Xm.src="data:image/svg+xml;base64,"+btoa('');const Jm=Xm,$m=new Image,tg=K.Z.createLock($m);$m.onload=tg,$m.src="data:image/svg+xml;base64,"+btoa('');const eg=$m,ig=new Image,sg=K.Z.createLock(ig);ig.onload=sg,ig.src="data:image/svg+xml;base64,"+btoa('');const ng=ig,rg=new Image,ag=K.Z.createLock(rg);rg.onload=ag,rg.src="data:image/svg+xml;base64,"+btoa('');const og=rg,lg=new Image,hg=K.Z.createLock(lg);lg.onload=hg,lg.src="data:image/svg+xml;base64,"+btoa('');const cg=lg,dg=new Image,ug=K.Z.createLock(dg);dg.onload=ug,dg.src="data:image/svg+xml;base64,"+btoa('');const pg=dg,mg=new Image,gg=K.Z.createLock(mg);mg.onload=gg,mg.src="data:image/svg+xml;base64,"+btoa('');const yg=mg,fg=new Image,Ag=K.Z.createLock(fg);fg.onload=Ag,fg.src="data:image/svg+xml;base64,"+btoa('');const vg=fg,bg=new Image,Vg=K.Z.createLock(bg);bg.onload=Vg,bg.src="data:image/svg+xml;base64,"+btoa('');const Pg=bg,wg=new Image,Mg=K.Z.createLock(wg);wg.onload=Mg,wg.src="data:image/svg+xml;base64,"+btoa('');const Sg=wg,Tg=new Image,Eg=K.Z.createLock(Tg);Tg.onload=Eg,Tg.src="data:image/svg+xml;base64,"+btoa('');const xg=Tg,Cg=new Image,Ig=K.Z.createLock(Cg);Cg.onload=Ig,Cg.src="data:image/svg+xml;base64,"+btoa('');const qg=Cg,kg=new Image,Dg=K.Z.createLock(kg);kg.onload=Dg,kg.src="data:image/svg+xml;base64,"+btoa('');const Lg=kg,_g=new Image,Og=K.Z.createLock(_g);_g.onload=Og,_g.src="data:image/svg+xml;base64,"+btoa('');const Zg=_g,Ng=new Image,Bg=K.Z.createLock(Ng);Ng.onload=Bg,Ng.src="data:image/svg+xml;base64,"+btoa('');const Rg=Ng,Fg=new Image,Hg=K.Z.createLock(Fg);Fg.onload=Hg,Fg.src="data:image/svg+xml;base64,"+btoa('');const zg=Fg,Ug=new Image,Yg=K.Z.createLock(Ug);Ug.onload=Yg,Ug.src="data:image/svg+xml;base64,"+btoa('');const Wg=Ug,Gg=new Image,Kg=K.Z.createLock(Gg);Gg.onload=Kg,Gg.src="data:image/svg+xml;base64,"+btoa('');const Qg=Gg,Xg=new Image,jg=K.Z.createLock(Xg);Xg.onload=jg,Xg.src="data:image/svg+xml;base64,"+btoa('');const Jg=Xg,$g=new Image,ty=K.Z.createLock($g);$g.onload=ty,$g.src="data:image/svg+xml;base64,"+btoa('');const ey=$g,iy=new Image,sy=K.Z.createLock(iy);iy.onload=sy,iy.src="data:image/svg+xml;base64,"+btoa('');const ny=iy,ry=new Image,ay=K.Z.createLock(ry);ry.onload=ay,ry.src="data:image/svg+xml;base64,"+btoa('');const oy=ry,ly=new Image,hy=K.Z.createLock(ly);ly.onload=hy,ly.src="data:image/svg+xml;base64,"+btoa('');const cy=ly,dy=new Image,uy=K.Z.createLock(dy);dy.onload=uy,dy.src="data:image/svg+xml;base64,"+btoa('');const py=dy,my=new Image,gy=K.Z.createLock(my);my.onload=gy,my.src="data:image/svg+xml;base64,"+btoa('');const yy=my,fy=new Image,Ay=K.Z.createLock(fy);fy.onload=Ay,fy.src="data:image/svg+xml;base64,"+btoa('');const vy=fy,by=new Image,Vy=K.Z.createLock(by);by.onload=Vy,by.src="data:image/svg+xml;base64,"+btoa('');const Py=by,wy=new Image,My=K.Z.createLock(wy);wy.onload=My,wy.src="data:image/svg+xml;base64,"+btoa('');const Sy=wy,Ty=new Image,Ey=K.Z.createLock(Ty);Ty.onload=Ey,Ty.src="data:image/svg+xml;base64,"+btoa('');const xy=Ty,Cy=new Image,Iy=K.Z.createLock(Cy);Cy.onload=Iy,Cy.src="data:image/svg+xml;base64,"+btoa('');const qy=Cy,ky=new Image,Dy=K.Z.createLock(ky);ky.onload=Dy,ky.src="data:image/svg+xml;base64,"+btoa('');const Ly=ky,_y=new Image,Oy=K.Z.createLock(_y);_y.onload=Oy,_y.src="data:image/svg+xml;base64,"+btoa('');const Zy=_y,Ny=new Image,By=K.Z.createLock(Ny);Ny.onload=By,Ny.src="data:image/svg+xml;base64,"+btoa('');const Ry=Ny,Fy=new Image,Hy=K.Z.createLock(Fy);Fy.onload=Hy,Fy.src="data:image/svg+xml;base64,"+btoa('');const zy=Fy,Uy=new Image,Yy=K.Z.createLock(Uy);Uy.onload=Yy,Uy.src="data:image/svg+xml;base64,"+btoa('');const Wy=Uy,Gy=new Image,Ky=K.Z.createLock(Gy);Gy.onload=Ky,Gy.src="data:image/svg+xml;base64,"+btoa('');const Qy=Gy,Xy=new Image,jy=K.Z.createLock(Xy);Xy.onload=jy,Xy.src="data:image/svg+xml;base64,"+btoa('');const Jy=Xy,$y=new Image,tf=K.Z.createLock($y);$y.onload=tf,$y.src="data:image/svg+xml;base64,"+btoa('');const ef=$y,sf={divideLevel1ImageProperty:new xm("divideLevel1",{africa:qm,africaModest:ng,asia:yg,latinAmerica:zg,oceania:yy,usa:qy}),divideLevel2ImageProperty:new xm("divideLevel2",{africa:Lm,africaModest:Lm,asia:vg,latinAmerica:Wg,oceania:vy,usa:Ly}),divideLevel3ImageProperty:new xm("divideLevel3",{africa:Zm,africaModest:og,asia:Pg,latinAmerica:Qg,oceania:Pg,usa:Zy}),factorLevel1ImageProperty:new xm("factorLevel1",{africa:Rm,africaModest:Rm,asia:Sg,latinAmerica:Jg,oceania:Sg,usa:Ry}),factorLevel2ImageProperty:new xm("factorLevel2",{africa:zm,africaModest:zm,asia:xg,latinAmerica:ey,oceania:Py,usa:zy}),factorLevel3ImageProperty:new xm("factorLevel3",{africa:Wm,africaModest:cg,asia:qg,latinAmerica:ny,oceania:qg,usa:Wy}),multiplyLevel1ImageProperty:new xm("multiplyLevel1",{africa:Qm,africaModest:Qm,asia:Lg,latinAmerica:oy,oceania:Sy,usa:Qy}),multiplyLevel2ImageProperty:new xm("multiplyLevel2",{africa:Jm,africaModest:Jm,asia:Zg,latinAmerica:cy,oceania:xy,usa:Jy}),multiplyLevel3ImageProperty:new xm("multiplyLevel3",{africa:eg,africaModest:pg,asia:Rg,latinAmerica:py,oceania:Rg,usa:ef})};Qp.register("ArithmeticImages",sf);const nf=sf;i(1685);const rf=new z.Z("twixt");class af{constructor(t,e,i){this.value=t,this.derivative=e,this.secondDerivative=i}static polynomialEaseInValue(t,e){return Math.pow(e,t)}static polynomialEaseOutValue(t,e){return 1-Math.pow(1-e,t)}static polynomialEaseInOutValue(t,e){return e<=.5?.5*Math.pow(2*e,t):1-af.polynomialEaseInOutValue(t,1-e)}static polynomialEaseInDerivative(t,e){return t*Math.pow(e,t-1)}static polynomialEaseOutDerivative(t,e){return t*Math.pow(1-e,t-1)}static polynomialEaseInOutDerivative(t,e){return e<=.5?Math.pow(2,t-1)*t*Math.pow(e,t-1):af.polynomialEaseInOutDerivative(t,1-e)}static polynomialEaseInSecondDerivative(t,e){return(t-1)*t*Math.pow(e,t-2)}static polynomialEaseOutSecondDerivative(t,e){return-(t-1)*t*Math.pow(1-e,t-2)}static polynomialEaseInOutSecondDerivative(t,e){return e<=.5?Math.pow(2,t-1)*(t-1)*t*Math.pow(e,t-2):-af.polynomialEaseInOutSecondDerivative(t,1-e)}static polynomialEaseIn(t){return new af(af.polynomialEaseInValue.bind(null,t),af.polynomialEaseInDerivative.bind(null,t),af.polynomialEaseInSecondDerivative.bind(null,t))}static polynomialEaseOut(t){return new af(af.polynomialEaseOutValue.bind(null,t),af.polynomialEaseOutDerivative.bind(null,t),af.polynomialEaseOutSecondDerivative.bind(null,t))}static polynomialEaseInOut(t){return new af(af.polynomialEaseInOutValue.bind(null,t),af.polynomialEaseInOutDerivative.bind(null,t),af.polynomialEaseInOutSecondDerivative.bind(null,t))}}_defineProperty(af,"LINEAR",(w=af).polynomialEaseIn(1)),_defineProperty(af,"QUADRATIC_IN",w.polynomialEaseIn(2)),_defineProperty(af,"QUADRATIC_OUT",w.polynomialEaseOut(2)),_defineProperty(af,"QUADRATIC_IN_OUT",w.polynomialEaseInOut(2)),_defineProperty(af,"CUBIC_IN",w.polynomialEaseIn(3)),_defineProperty(af,"CUBIC_OUT",w.polynomialEaseOut(3)),_defineProperty(af,"CUBIC_IN_OUT",w.polynomialEaseInOut(3)),_defineProperty(af,"QUARTIC_IN",w.polynomialEaseIn(4)),_defineProperty(af,"QUARTIC_OUT",w.polynomialEaseOut(4)),_defineProperty(af,"QUARTIC_IN_OUT",w.polynomialEaseInOut(4)),_defineProperty(af,"QUINTIC_IN",w.polynomialEaseIn(5)),_defineProperty(af,"QUINTIC_OUT",w.polynomialEaseOut(5)),_defineProperty(af,"QUINTIC_IN_OUT",w.polynomialEaseInOut(5)),rf.register("Easing",af);const of=af;class lf{constructor(t){_defineProperty(this,"startingValue",null),_defineProperty(this,"endingValue",null);const e=(0,N.ZP)()({setValue:null,getValue:null,property:null,object:null,attribute:null,to:null,delta:null,speed:null,from:null,easing:of.CUBIC_IN_OUT,blend:lf.DEFAULT_BLEND,distance:lf.DEFAULT_DISTANCE,add:lf.DEFAULT_ADD},t);e.object&&(e.setValue=lf.OBJECT_SET(e.object,e.attribute),e.getValue=lf.OBJECT_GET(e.object,e.attribute)),e.property&&(e.setValue=lf.PROPERTY_SET(e.property),e.getValue=lf.PROPERTY_GET(e.property)),this.getValue=e.getValue,this.setValue=e.setValue,this.easing=e.easing,this.from=e.from,this.to=e.to,this.delta=e.delta,this.speed=e.speed,this.blend=e.blend,this.distance=e.distance,this.add=e.add}static DEFAULT_BLEND(t,e,i){if(0===i)return t;if(1===i)return e;if("number"==typeof t&&"number"==typeof e)return t+(e-t)*i;if("object"==typeof t&&"object"==typeof e&&"function"==typeof t.blend)return t.blend(e,i);throw new Error(`Blending not supported for: ${JSON.stringify(t)}, ${JSON.stringify(e)}, pass in a blend option`)}static DEFAULT_DISTANCE(t,e){if("number"==typeof t&&"number"==typeof e)return Math.abs(t-e);if("object"==typeof t&&"object"==typeof e&&"function"==typeof t.distance)return t.distance(e);throw new Error(`Distance (required for speed) by default not supported for: ${JSON.stringify(t)}, ${JSON.stringify(e)}, pass in a distance option`)}static DEFAULT_ADD(t,e){if("number"==typeof t&&"number"==typeof e)return t+e;if("object"==typeof t&&"object"==typeof e&&"function"==typeof t.plus)return t.plus(e);throw new Error(`Addition (required for delta) by default not supported for: ${JSON.stringify(t)}, ${JSON.stringify(e)}, pass in an add option`)}static OBJECT_SET(t,e){return function(i){t[e]=i}}static OBJECT_GET(t,e){return function(){return t[e]}}static PROPERTY_SET(t){return function(e){t.value=e}}static PROPERTY_GET(t){return function(){return t.value}}computeStartEnd(){this.startingValue=null!==this.from?this.from:this.getValue(),this.endingValue=null!==this.to?this.to:this.add(this.startingValue,this.delta)}update(t){this.setValue(this.blend(this.startingValue,this.endingValue,this.easing.value(t)))}hasPreferredDuration(){return null!==this.speed}getPreferredDuration(){return null===this.speed?null:this.speed*this.distance(this.startingValue,this.delta)}}rf.register("AnimationTarget",lf);const hf=lf;class cf extends we.Z{constructor(t){const e=(0,N.ZP)()({targets:null,duration:null,delay:0,stepEmitter:q.Z},t);super(e),_defineProperty(this,"length",0),_defineProperty(this,"remainingDelay",0),_defineProperty(this,"remainingAnimation",0),_defineProperty(this,"runningProperty",new S.Z(!1)),_defineProperty(this,"animatingProperty",new S.Z(!1)),_defineProperty(this,"startEmitter",new x.Z),_defineProperty(this,"beginEmitter",new x.Z),_defineProperty(this,"finishEmitter",new x.Z({parameters:[{valueType:"number"}]})),_defineProperty(this,"stopEmitter",new x.Z),_defineProperty(this,"endedEmitter",new x.Z({hasListenerOrderDependencies:!0})),_defineProperty(this,"updateEmitter",new x.Z),this.targets=(null===e.targets?[e]:e.targets).map(t=>new hf(t)),this.duration=e.duration,this.delay=e.delay;const i=e.stepEmitter;if(i){const t=this.step.bind(this);this.runningProperty.link(e=>{e&&!i.hasListener(t)?i.addListener(t):!e&&i.hasListener(t)&&i.removeListener(t)}),this.disposeEmitter.addListener(()=>{i.hasListener(t)&&i.removeListener(t)})}}start(t){return this.runningProperty.value||(this.remainingDelay=this.delay,this.runningProperty.value=!0,this.startEmitter.emit(),this.step(void 0!==t?t:0)),this}stop(){return this.runningProperty.value?(this.runningProperty.value=!1,this.stopEmitter.emit(),this.endedEmitter.emit(),this):this}step(t){if(!this.runningProperty.value)return this;if(!this.animatingProperty.value){if(this.remainingDelay-=t,t=-this.remainingDelay,this.remainingDelay>0)return this;this.length=this.duration;for(let t=0;t0?O.Z.clamp((this.length-this.remainingAnimation)/this.length,0,1):1;for(let i=0;it.start(e)),t}dispose(){this.runningProperty.dispose(),this.animatingProperty.dispose(),this.startEmitter.dispose(),this.beginEmitter.dispose(),this.finishEmitter.dispose(),this.stopEmitter.dispose(),this.endedEmitter.dispose(),this.updateEmitter.dispose(),super.dispose()}}rf.register("Animation",cf);const df=cf,uf="data:audio/mpeg;base64,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",pf=Q(it,uf),mf=K.Z.createLock(uf),gf=new tt;let yf=!1;const ff=()=>{yf||(mf(),yf=!0)},Af=it.decodeAudioData(pf.buffer,t=>{null===gf.audioBufferProperty.value&&(gf.audioBufferProperty.set(t),ff())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),gf.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),ff()});Af&&Af.then(t=>{null===gf.audioBufferProperty.value&&(gf.audioBufferProperty.set(t),ff())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),ff()});const vf=gf,bf="data:audio/mpeg;base64,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",Vf=Q(it,bf),Pf=K.Z.createLock(bf),wf=new tt;let Mf=!1;const Sf=()=>{Mf||(Pf(),Mf=!0)},Tf=it.decodeAudioData(Vf.buffer,t=>{null===wf.audioBufferProperty.value&&(wf.audioBufferProperty.set(t),Sf())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),wf.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Sf()});Tf&&Tf.then(t=>{null===wf.audioBufferProperty.value&&(wf.audioBufferProperty.set(t),Sf())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Sf()});const Ef=wf,xf="data:audio/mpeg;base64,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",Cf=Q(it,xf),If=K.Z.createLock(xf),qf=new tt;let kf=!1;const Df=()=>{kf||(If(),kf=!0)},Lf=it.decodeAudioData(Cf.buffer,t=>{null===qf.audioBufferProperty.value&&(qf.audioBufferProperty.set(t),Df())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),qf.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Df()});Lf&&Lf.then(t=>{null===qf.audioBufferProperty.value&&(qf.audioBufferProperty.set(t),Df())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Df()});const _f=qf,Of="data:audio/mpeg;base64,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rcqD2R7/qIYKJG/9Azn/82LE9SF8MkAoecWJ3+7ln//p3eVssagYfLLVWpFsBSTS9XGPBlhsglzxxYUqGQUUNti0RsFhRx8L8JiBRrDeuRaKSxIstMLx8EErzlr28r2zSlzQhwLsXjxSOmw+j+T5ViiEuq6zgsSFTpqJvTfXUtUjxGraSKGswqMn+ZK1zIUgVrr97ZP/3G////xX1/dP9Jys1+lO7aMz7lys//NixOwfEipIPHtFiJOxrXZUs7rYzIxbmIyEc6HcYUqCyhFuY0NODixGI01CvRnMLyPi8NsYV0K27mL1NszULTTZPdysOoT4Iz++320JhqmYI9EWCuz22XTdP8J5wyA9PL/MxgWVssmZi+lWyShpEhuj6163+YnnqqCWa3V0v/q6jX6v7f/v//29/pps1J/7z/7/renjtfe4pryNm//zYsT/I+xKOAp8hTWGp2hoNuo92gVXUxxXmNQ9W2LRxPy219LYugk1ohxcqIpMQU1F/xBanxmeWRua0Ozw/o0VeTerG9bvcSrkpt+DvtR1yTRvg+YGt4z8T/otwfB9mrbtJA/dTuPlpfrWk0HP+pjoe7+r6mlRoR/dOenSjLrn06//9eaR/9/Pt7Kltkrnos7bMZmWU33qqGlj1JX/82DE/yPsfjAAe014sUS8R6js2YZZTnQGwuaOKSedMks+31kX/f2dcRhaEJVMQU1FMy45OS4zVVVVIAIFv5GAd6zrKjRF8MjrgPlyauokYTR6CTy4RBUMtr6qwAl8WCTsWtWh0+nu4lytvtQzGpNXqGjnSk03DNrLsnfO2H+UzWrrsX26lOp/+RHz/hRJclJGHI7/Ph5G3XaHsfX/82LE+iKsgjAKec18jt/eRDrF1R/Ilnir0k1MoR7D8ZHRTOiR9yEorMFd2BOqTICEWMZSzIIlmEQKzlVn2QweKnKVjX1Yxqt6lhn6hWMz/opZjGMbXob/Q3/qFayGM/Qz/ylLmfyt0ev/T/NmM/0KUrSgIluv9WrXce1at+s7WZnDlS09b2TkxJRkfPVWuphCUtPMxLnkoSiUqOT3//NixPIgjII1lkFG/KEcQOolruW2uW2xWJ3zY6EZedEoSo2Vq11adXW1rWToykxBTUUzLjk5LjOqqpdsIyaZkZlTRGRbTMjMqYSMi2mZGZU0RkW0zIzKmEjIj/mRk1/kZH/+0IyMy3IyIyp/+ZEZU8zL///yMiMv/zI7q6uvm7GUVlUk0kk0k0l4ThV1ebGSqFEQkQyHhsgIy6Bs8f/zYsT+I7SCCCgomVwwpIhkaEQyNDZARoG2HNKrKpJqLqrKrJpLqLppJ0GLVUxBTUUzLjk5LjNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/82DE9SEMbTGKCFNdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",Zf=Q(it,Of),Nf=K.Z.createLock(Of),Bf=new tt;let Rf=!1;const Ff=()=>{Rf||(Nf(),Rf=!0)},Hf=it.decodeAudioData(Zf.buffer,t=>{null===Bf.audioBufferProperty.value&&(Bf.audioBufferProperty.set(t),Ff())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Bf.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Ff()});Hf&&Hf.then(t=>{null===Bf.audioBufferProperty.value&&(Bf.audioBufferProperty.set(t),Ff())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Ff()});const zf=Bf,Uf="data:audio/mpeg;base64,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",Yf=Q(it,Uf),Wf=K.Z.createLock(Uf),Gf=new tt;let Kf=!1;const Qf=()=>{Kf||(Wf(),Kf=!0)},Xf=it.decodeAudioData(Yf.buffer,t=>{null===Gf.audioBufferProperty.value&&(Gf.audioBufferProperty.set(t),Qf())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Gf.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Qf()});Xf&&Xf.then(t=>{null===Gf.audioBufferProperty.value&&(Gf.audioBufferProperty.set(t),Qf())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Qf()});const jf=Gf,Jf=new Ie(_f),$f=new Ie(vf),tA=new Ie(jf),eA=new Ie(Ef),iA=new Ie(zf);let sA=!1;class nA{constructor(){sA||(Tt.addSoundGenerator(Jf),Tt.addSoundGenerator($f),Tt.addSoundGenerator(tA),Tt.addSoundGenerator(eA),Tt.addSoundGenerator(iA),sA=!0)}correctAnswer(){Jf.play()}wrongAnswer(){$f.play()}challengeComplete(){iA.play()}gameOverZeroScore(){$f.play()}gameOverImperfectScore(){tA.play()}gameOverPerfectScore(){eA.play()}}im.register("GameAudioPlayer",nA);const rA="data:audio/mpeg;base64,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7e9diUP/+zDEqoMHICsabPMmEM4Eow2e5MIIZrVcxtoYKA8xbIDmUnGddoh0rLaVhaELboGA3I///+32tj0qUhAXA4lABA0VFRzYs5Bxwo8cRAZqIgBjC0wyrCVrVBy0Sl3U0lLcrNkmJX3vXQ9xHrF1kft9KnLd0/5XIPY0tSK0DTykPgmqBACpusgAjZhT0YwByozh1IJWKp2KmeLt9Ov/+zLEt4MG7C8QLXcGENuFYg2eZMLR2pQ6RirmqAoCYKg0PHnDwUA5I6x8afWSCCjoaGWkABNLoLs3MMFnGvzaGfMY2VvKaYxjfVvVP6f/9DGVtSlb//VsrzTGDCnJFXIg08GgaduIVUxBTUUzLjk5LjNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//syxMQDx4gzCgzwxsDphiFBzJkQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7MsTMggc4KQgN5YhA0YShqJwkmlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zDE2QBG9BsHQYXiANIdX3A0iMBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",aA=Q(it,rA),oA=K.Z.createLock(rA),lA=new tt;let hA=!1;const cA=()=>{hA||(oA(),hA=!0)},dA=it.decodeAudioData(aA.buffer,t=>{null===lA.audioBufferProperty.value&&(lA.audioBufferProperty.set(t),cA())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),lA.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),cA()});dA&&dA.then(t=>{null===lA.audioBufferProperty.value&&(lA.audioBufferProperty.set(t),cA())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),cA()});const uA=new Je(lA,{soundClipOptions:{initialOutputLevel:.39,enabledDuringPhetioStateSetting:!0},soundManagerOptions:{categoryName:"user-interface"}});j.register("resetAllSoundPlayer",uA);const pA=uA;class mA extends Ut.bn{constructor(t){super();const e=.4*t,i=.625*t,s=2.25*(i-e),n=.35*-Math.PI,r=-2*Math.PI*.85,a=.18*-Math.PI;this.moveTo(e*Math.cos(n),e*Math.sin(n)),this.lineTo(i*Math.cos(n),i*Math.sin(n));const o=n+r;this.arc(0,0,i,n,o,!0);const l=(s-(i-e))/2;this.lineTo((i+l)*Math.cos(o),(i+l)*Math.sin(o));const h=.55*(i+e);this.lineTo(h*Math.cos(o+a),h*Math.sin(o+a)),this.lineTo((e-l)*Math.cos(o),(e-l)*Math.sin(o)),this.lineTo(e*Math.cos(o),e*Math.sin(o)),this.arc(0,0,e,o,n),this.close()}}U.register("ResetShape",mA);class gA extends Bu{constructor(t){const e=t&&t.radius?t.radius:24,i=(0,N.ZP)()({radius:e,arrowColor:"black",baseColor:"white",xMargin:6,yMargin:6,xContentOffset:-.03*e,yContentOffset:-.0125*e,tandem:Y.Z.REQUIRED,tandemNameSuffix:"ResetButton"},t),s=new mA(i.radius),n=new R.y$t(s,{fill:i.arrowColor}),r=new R.y$t(s.transformed(Re.Z.scaling(-1,-1)));n.localBounds=n.localBounds.union(r.localBounds),i.content=n,super(i)}}U.register("ResetButton",gA);const yA=5/zu.DEFAULT_BUTTON_RADIUS;class fA extends gA{constructor(t){const e=(0,N.ZP)()({radius:zu.DEFAULT_BUTTON_RADIUS,phetioRestoreScreenStateOnReset:!0,touchAreaDilation:5.2,baseColor:Cn.RESET_ALL_BUTTON_BASE_COLOR,arrowColor:"white",tandem:Y.Z.REQUIRED,tandemNameSuffix:"ResetAllButton",phetioDocumentation:"The orange, round button that can be used to restore the initial state",soundPlayer:pA,innerContent:ie.a11y.resetAll.labelStringProperty,voicingNameResponse:ie.a11y.resetAll.labelStringProperty,voicingContextResponse:ie.a11y.voicing.resetAll.contextResponseStringProperty},t);e.xMargin=e.yMargin=e.radius*yA,super(e);const i=new Ia({alert:ie.a11y.resetAll.alertStringProperty});let s=R.KsW.enabled;const n=new Map;this.pushButtonModel.isFiringProperty.lazyLink(t=>{t?(s=R.KsW.enabled,R.KsW.enabled=!1,R.KsW.clear()):(Y.Z.PHET_IO_ENABLED&&e.phetioRestoreScreenStateOnReset&&this.isPhetioInstrumented()&&phet.phetio.phetioEngine.phetioStateEngine.restoreStateForScreen(e.tandem),R.KsW.enabled=s,this.voicingSpeakFullResponse()),this.forEachUtteranceQueue(e=>{t?(n.set(e,e.enabled),e.enabled=!1,e.clear()):(e.enabled=n.get(e)||e.enabled,e.addToBack(i))})});const r=new R.F3H({keys:["alt+r"],callback:()=>this.pdomClick(),global:!0,listenerFireTrigger:"up"});this.addInputListener(r),this.disposeResetAllButton=()=>{this.removeInputListener(r),n.clear()}}dispose(){this.disposeResetAllButton(),super.dispose()}}U.register("ResetAllButton",fA);class AA extends R.NBX{constructor(t,e){super();const i=(0,N.ZP)()({fill:"white",stroke:"black",lineWidth:2},e);this.addChild(new R.Cdc(t,i)),this.addChild(new R.Cdc(.15*t,{fill:i.stroke}));const s={stroke:i.stroke,lineWidth:i.lineWidth,lineCap:"round",lineJoin:"round"};this.addChild(new R.x12(0,0,0,.75*-t,s)),this.addChild(new R.x12(0,0,.45*t,.3*t,s)),this.centerX=t,this.centerY=t,this.mutate(i)}}U.register("SimpleClockIcon",AA);class vA extends ps{constructor(t,e){const i=(0,N.ZP)()({baseColor:Cn.BUTTON_YELLOW,minWidth:45,minHeight:45,xMargin:4,yMargin:4},e);super(t,function(t){return new AA(t)}(45*.35),function(t){const e=new AA(t,{opacity:.8}),i=.8*e.width,s=(new Ut.bn).moveTo(0,0).lineTo(i,i).moveTo(0,i).lineTo(i,0),n=new R.y$t(s,{stroke:"red",opacity:.55,lineWidth:6,lineCap:"round",center:e.center});return new R.NBX({children:[e,n]})}(45*.35),i)}}U.register("TimerToggleButton",vA);const bA="data:audio/mpeg;base64,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",VA=Q(it,bA),PA=K.Z.createLock(bA),wA=new tt;let MA=!1;const SA=()=>{MA||(PA(),MA=!0)},TA=it.decodeAudioData(VA.buffer,t=>{null===wA.audioBufferProperty.value&&(wA.audioBufferProperty.set(t),SA())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),wA.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),SA()});TA&&TA.then(t=>{null===wA.audioBufferProperty.value&&(wA.audioBufferProperty.set(t),SA())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),SA()});const EA=wA;class xA extends Ut.bn{constructor(t){const e=(0,N.ZP)()({outerRadius:15,innerRadius:7.5,numberStarPoints:5},t);super();const i=2*e.numberStarPoints;_.times(i,t=>{const s=t/i*Math.PI*2-Math.PI/2,n=t%2==0?e.outerRadius:e.innerRadius;this.lineTo(n*Math.cos(s),n*Math.sin(s))}),this.close(),this.makeImmutable()}}U.register("StarShape",xA);class CA extends R.NBX{constructor(t){const e=(0,N.ZP)()({value:1,emptyFill:"#e1e1e1",emptyStroke:"#d3d1d1 ",emptyLineWidth:1.5,emptyLineJoin:"round",filledFill:"#fcff03",filledStroke:"black",filledLineWidth:1.5,filledLineJoin:"round",starShapeOptions:{}},t);super();const i=new IA({stroke:e.emptyStroke,fill:e.emptyFill,lineWidth:e.emptyLineWidth,lineJoin:e.emptyLineJoin,starShapeOptions:e.starShapeOptions});if(this.addChild(i),e.value>0){const t=new IA({stroke:e.filledStroke,fill:e.filledFill,lineWidth:e.filledLineWidth,lineJoin:e.filledLineJoin,starShapeOptions:e.starShapeOptions});if(e.value<1){const i=t.starShapeBounds,s=i.dilated(1.5*e.filledLineWidth);t.clipArea=Ut.bn.bounds(s.withMaxX(i.left+e.value*i.width))}this.addChild(t)}this.mutate(e)}}class IA extends R.y$t{constructor(t){const e=(0,N.ZP)()({starShapeOptions:{}},t);e.boundsMethod="none";const i=new xA(e.starShapeOptions);super(i,e),this.starShapeBounds=i.getBounds()}computeShapeBounds(){return this.starShapeBounds}}U.register("StarNode",CA);const qA=CA;class kA extends R.BET{constructor(t,e){const i=(0,N.ZP)()({numberOfStars:1,perfectScore:1,starNodeOptions:{starShapeOptions:{outerRadius:10,innerRadius:5},filledLineWidth:1.5,emptyLineWidth:1.5},spacing:3},e),s=i.numberOfStars,n=i.perfectScore;super(i);const r=t=>{const e=[],r=t/n,a=Math.floor(r*s);for(let s=0;s1e-6&&e.push(new qA((0,N.JA)({value:o},i.starNodeOptions)));const l=s-e.length;for(let s=0;snew kA(e),scoreDisplayProportion:.2,scoreDisplayMinXMargin:10,scoreDisplayMinYMargin:5,iconToScoreDisplayYSpace:10,cornerRadius:10,baseColor:"rgb( 242, 255, 204 )",xMargin:10,yMargin:10,soundPlayerIndex:0,tandem:Y.Z.REQUIRED},i),n=s.buttonWidth-2*s.xMargin,r=s.createScoreDisplay(e),a=s.buttonHeight*s.scoreDisplayProportion,o=new R.AeJ(0,0,n,a,{cornerRadius:s.cornerRadius,fill:"white",stroke:"black",pickable:!1});r.maxWidth=o.width-2*s.scoreDisplayMinXMargin,r.maxHeight=o.height-2*s.scoreDisplayMinYMargin;const l=s.buttonHeight-o.height-2*s.yMargin-s.iconToScoreDisplayYSpace,h=new L.Z(n,l),c=DA.createSizedImageNode(t,h);c.centerX=o.centerX,c.bottom=o.top-s.iconToScoreDisplayYSpace;const d=()=>{r.center=o.center};if(r.boundsProperty.lazyLink(d),d(),s.content=new R.NBX({children:[c,o,r]}),void 0===s.soundPlayer){const t=new Ie(EA,{initialOutputLevel:.5,rateChangesAffectPlayingSounds:!1});Tt.addSoundGenerator(t,{categoryName:"user-interface"}),s.soundPlayer={play(){t.setPlaybackRate(Math.pow(yt.TWELFTH_ROOT_OF_TWO,s.soundPlayerIndex),0),t.play()},stop(){t.stop()}}}super(s),this.disposeLevelSelectionButton=()=>{r.dispose()}}static createSizedImageNode(t,e){if(t.scale(Math.min(e.width/t.bounds.width,e.height/t.bounds.height)),Math.abs(t.bounds.width-e.width)<1e-4&&Math.abs(t.bounds.height-e.height)<1e-4)return t;const i=R.AeJ.dimension(e);return t.center=i.center,i.addChild(t),i}dispose(){this.disposeLevelSelectionButton(),super.dispose()}}im.register("LevelSelectionButton",DA);class LA extends R.NBX{constructor(t,e){const i=(0,N.ZP)()({flowBoxOptions:{orientation:"horizontal",spacing:10},tandem:Y.Z.REQUIRED},e),s=t.map((t,e)=>{let s=Y.Z.OPT_OUT;if(i.tandem.supplied){const n=t.tandemName||`level${e+1}Button`;s=i.tandem.createTandem(n)}const n=(0,N.JA)({buttonHeight:i.groupButtonHeight,buttonWidth:i.groupButtonWidth,tandem:s},i.levelSelectionButtonOptions,t.options);return new DA(t.icon,t.scoreProperty,n)});let n;i.gameLevels&&s.forEach((t,e)=>{t.visible=i.gameLevels.includes(e+1)}),n=i.createLayoutNode?i.createLayoutNode(s):new R.N52((0,N.JA)({children:s},i.flowBoxOptions)),i.children=[n],super(i),this.buttons=s}focusLevelSelectionButton(t){this.buttons[t-1].focus()}}im.register("LevelSelectionButtonGroup",LA);const _A=new $t({size:24}),OA=new $t({size:54}),ZA=jp.chooseYourLevelStringProperty;class NA extends R.NBX{constructor(t,e,i,s,n,r){super(),r=(0,bi.Z)({buttonBaseColor:"white"},r);const a=new R.xvT(e,{font:OA,maxWidth:550}),o=new R.xvT(ZA,{font:_A,maxWidth:550}),l=n.map(t=>new R.Eep(t)),h=t.levelModels.map((e,s)=>({icon:l[s],scoreProperty:t.levelModels[s].displayScoreProperty,options:{baseColor:r.buttonBaseColor,listener:()=>{i(s)},createScoreDisplay:t=>new kA(t,{numberOfStars:$p.NUM_STARS,perfectScore:e.perfectScore}),soundPlayerIndex:s}})),c=new LA(h,{groupButtonHeight:175,groupButtonWidth:175,flowBoxOptions:{spacing:50},gameLevels:am.gameLevels,levelSelectionButtonOptions:{iconToScoreDisplayYSpace:5}}),d=new R.SHm({children:[a,o,c],spacing:15}),u=new R.DbO(d,{alignBounds:s,yAlign:"bottom",xAlign:"center",bottomMargin:155});this.addChild(u);const p=new R.SHm({spacing:5,children:[new vA(em.timerEnabledProperty)],right:.08*s.maxX,bottom:.95*s.maxY});this.addChild(p);const m=new fA({listener:()=>{t.reset()},right:.98*s.maxX,bottom:.95*s.maxY});this.addChild(m),this.mutate(r)}}Qp.register("LevelSelectionNode",NA);const BA=NA,RA="data:audio/mpeg;base64,//swxAAABQAa+1TxgDFCDup3NzkCAAH92WUAAJAWA7wvwM4SMl7Ph+/f3B8PreCAIQQg+fhjKA+//W/8HwKBwMBQOlmNWKPQNgADBQUxIUAsOcUHkIOsC7cbfB/zKwsx0Jz7jRJfpXoU1hY+I4oM56BJAHYQYPt6aInMN/IAjf/Igm5ucdi/6f06//0epUAQGBAKBQMiGAAAAAAJ//syxAcACWBnY7mMABEHmOwzsKAGOhMwZluH1LGDiUdk4JOIGAMkZt4UQU8fiOHx9sQaUBFOKdVMsfxaUjsXolcw+XPpoT/gZhchNSAnUxVu66wCkQyN/ASBRdxXW0Adpq0ruw9PXM70PdrSIK4cNZSUhdWd31kLj02WRU9LiQ/RXWsVE6FNVIRFFWej5R7lbTvMLLAK4zIo64wBJP/7MsQEgEiUx2esJUnxBRds9PYdPmyRpn1cQJX/x8aEyNitAqy8TA6S52r6P4Qj6sf8Ko11VA7srxGadBEnPJS6kJjgOodq3y/q+6N9vKFsnaB3Go5XYbxukiF1hAMhTaLYWa45JLjOSoDWKe3nZmSAu+9dhW2H5RGIxzzVijeBwdpFD8cAUc3+hJuZ875bIZndQEkgESIACtcgplb/+zLEBYAI2KNJTb1nIRIZK2mFliIiAjPd4BNDOzgeOS4ZF04XcWESEtE5GRa824EJFrPpVY82SbVel/7xx6TCWzmkg1i43u79RfjpfK4h0bNCBUBcjoAmZuXr4c0y5Hqv227sUkYuu2/8P1rkBw2/8X6NB2NGwdCzzd/830974owX7emLy3zSV4bIT6nM6NYv/3+O+hXEAEAwBW2Q//swxAOASBhpX6ywxeEKF2pllgmaANxfbEkSDARFKOb51ydOBEoLiUmeJJdUE5GZUEcukoL06lSW+nW3RQOJItZswwkcMueMUJUviL2fugMFACp2FvyYq4eAahBR1qMQi7Gbb6qxvCRdyxN2JuVpdQrAQpeDZ52E7Gkff7mqhiatdX2DNfYtDm2LiXjyQis25tXAAAAGACEteLcG//syxAUACMBTVS1hJYEDDa0k/LEGCjpoiGhFIegFPdgSbqIRdUac1Bs78RFa8MMzLPqiZo19ho+IRQIRUJROGFGEL6GMgOoSROEQJKB9zg/pwGAEZbwYlEzBqTHRyVqXZIjsjLwOtrrpYFKZCZEB2dtWmb9LjXefnZzbwwn5yw8nQoXcK+S9xU9p988Yfi2r9D1ASAMFNuSQAWXJhv/7MsQFgAe0Z2+noM6w+ZTs9PSJN1sSxVppoI5OM0072jx+wjIZQGtX8xY9gYoLWChkm62rXkxNkNaZPcDCw8ILWl/Jp+3tWgDAWgknHYAMHuEtChQDpK56W05xlUBlzAudFREyiUC1//2aU3tGvseyos4hnVNmtMZVd7cft+ofa1619aE7wWaUlyRgDSbQkQ4ZgUwfdZDFQ7nqhEz/+zLEC4AHlKVjR7BlsPKYbXTDHk6yeoaiVgHZ/FUEZkbhRixH/8VlB9sLwFWOMXwwYA/1++QJbKl/VAC24045bQADEFhOHMoEoiRtF1IYD2KnaEF05dZOh2dncmOeRsQmGYwS13WhfWieUrVGvsDG6svKtr+f5dVAAgAk5AAOvgkcIq39GV2S9JQ+CtA0RHwiHhOUSc0BKsvCEfF5//swxBKAB3iPU0yk55DnFGslhhz+rNUBhmZZSWqI3daWvLVEw3zIRolOiJsCWV2/AK0UhsKFUmlS9+C8U+nPRwNmEafbsRk7q7B15SDOA/KqyYn7Kyu1euyu0+17QSfLW8el6qaFwZJSX8AcJ0VG1SDzhQiTXHC2CBEi00aEJOva2oXvpLK6wkXaEeeFM4v2a1q0lHzbeVAM0LJK//syxBsAR3CjUywk6bDnFWolhhS+8feVrqlYCKVD648bdSrpLoRiFlzVQDZ0gmRvyVS+qrJcj7Gq5K8dQVNjemoqonI6iIZn1ErVxgFSnXjeMqokVYC+5bW1bIABRjoTJKF3CdnANCElHRJKnJfT1cG85VY+FvVT/pWITbBbj3bPOdE0Qtjp2O3voG+2St+9kSqV1oyWDAPQsRqnaP/7MsQkAEdYjWGnvOPw6ZRrdPQeTrenEsZT1VqVcxMwl1HjveORpvKGI2NPrLXm99W0ZJRsp07UFYRZQ3KvjjkdFKoADp0oAvOgAcuLBDN406jwq+8i+zpkFoXmSIwVHSaF3AmGpCneFD8E4e1TVu+Mmjx2Jpn1DLJORnu1YAlCxJCk8AA3g0sER4fGRyl0OmIoBsP4OHqw2WADOmH/+zLELQAHTI1DrLCqoO+T5/WmFPD44q2Uyt+UzYebDuhes16DHwvt0xg3QXxo+uv6KgDblBcQAA/FR8yPI3v2VuE+aJyoSPXR4lmdG0QLnK/tbry1N2tqinku/ecpesupgCBc0lVBJ5ffesANmRt19WYglBSEYgNSE5opDsCZuTDMmiOPRJemBBpA+N1HlVZwTHsNeZm5xUvlXxBN//swxDWARyiPPUw85dDfE6hxBii+tybUzV+XAOAmUKBc2SABg9AYyAKtETosvibBop5dam+nMt30ducSJ8j268xKwyayC7r2oVO14Rlt+Ro5Gz+//0UIyCkU4B+TGDHwhKIIwxxZtCVYuRL1n5zzfOCTY/lJAhFCR6vhNz4i3h3Ja3lW7Yivty8jR/9yv6KaKiSAVAIjDUQMOjE1//syxECCB2yFKu285cDnkKVpp5y6JcJcF+dyiqmpkZP01gkhDBx6ezgXlqntWOB+NkVEfWUGr51vznsvu/9H/fYrGJJvgCVATKOgYlXsOCngTSuo+ew4qIVdpmSJvjZctbgNgZEcmi9sG7T1/2/qqroAAATjO8ShJlliawmBbjx7KVqUgIMVmZiHrFp2lfXb0Ls62DRHYUllcq1jyv/7MsRJg0b4dyJtMasQuwyjgbeIunWd3Kz7ZZf8u9NFn/q//h6zvuVSQ+JVEVgwcpJySggrc7hqkV5VaiQ5YC5VT2CqafKhKykFiDLAZ5xTGp+XrxJ66LP/1f/0f+PqAACdApqF/AbgB4pN5HT4xINM8b9VesNxg6gxMyFUUs9kmCygC9S6it5uLHmyXap/6v7LPsm0N7vREwFOa8D/+zLEWgOH/HUSbeID0NWOog2nlLrXXoBPlYp8OVkHgiLnOR41zWoFhjHeCfN3/j/hZadNQ2CH7e8fhdRPbQft/6/MYVyXPQBCACTf/A9pATRWL7jZEOJzbWR92wsW779ebt3/R/y8To//iW04E9F0FZW25eGkvkrbUAonEwZtKABKSoYjF1+BoFLFFobCidG0fL01Eo6LQG5fmf6A//swxGMABxxnCm08pdDcHyHdg4i6T0Fb/9DE367/bYAAAOQ5FHj8PJogwF1aAsdDDXCIly6RWkKnu6Xh3d3cGcSYWUGQEfMhHppHIafqYT4kNMhNv/6qdqg1dUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//syxG6ABkjpBUecR5CikeB0sYiWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7MsSFAMQYRv2jCSqwfoPTuPekJ1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zDEqIPAAAGkAAAAIAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zLEu4PAAAGkAAAAIAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",FA=Q(it,RA),HA=K.Z.createLock(RA),zA=new tt;let UA=!1;const YA=()=>{UA||(HA(),UA=!0)},WA=it.decodeAudioData(FA.buffer,t=>{null===zA.audioBufferProperty.value&&(zA.audioBufferProperty.set(t),YA())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),zA.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),YA()});WA&&WA.then(t=>{null===zA.audioBufferProperty.value&&(zA.audioBufferProperty.set(t),YA())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),YA()});const GA=zA;class KA extends Ut.bn{constructor(t,e,i,s,n){if(super(),i!==t||s!==e){const r=KA.getArrowShapePoints(t,e,i,s,[],n);this.moveTo(r[0].x,r[0].y);const a=_.tail(r);_.each(a,t=>this.lineTo(t.x,t.y)),this.close()}}static getArrowShapePoints(t,e,i,s,n,r){const a=(0,N.ZP)()({tailWidth:5,headWidth:10,headHeight:10,fractionalHeadHeight:.5,doubleHead:!1,isHeadDynamic:!1,scaleTailToo:!1},r);if(n||(n=[]),i===t&&s===e)n.length=0;else{const r=new Ht.Z(i-t,s-e),o=r.magnitude;let l=a.headWidth,h=a.headHeight,c=a.tailWidth;if(a.isHeadDynamic){const t=a.fractionalHeadHeight*o;a.headHeight>t&&(h=t,a.scaleTailToo&&(l=a.headWidth*h/a.headHeight,c=a.tailWidth*h/a.headHeight))}else h=Math.min(a.headHeight,a.doubleHead?.35*o:.99*o);let d=0;const u=r.normalized(),p=u.rotated(Math.PI/2),m=function(i,s){const r=u.x*i+p.x*s+t,a=u.y*i+p.y*s+e;n[d]?(n[d].x=r,n[d].y=a):n.push(new Ht.Z(r,a)),d++};a.doubleHead?(m(0,0),m(h,l/2),m(h,c/2)):m(0,c/2),m(o-h,c/2),m(o-h,l/2),m(o,0),m(o-h,-l/2),m(o-h,-c/2),a.doubleHead?(m(h,-c/2),m(h,-l/2)):m(0,-c/2),d{e=e&&i(t)}),e}updateKeys(t){this.accumulatedKeysProperty.set(t)}handleClearOnNextKeyPress(t){let e;return e=this.getClearOnNextKeyPress()&&t!==tv.BACKSPACE?[]:_.clone(this.accumulatedKeysProperty.get()),this.setClearOnNextKeyPress(!1),e}dispose(){this.accumulatedKeysProperty.dispose()}}U.register("AbstractKeyAccumulator",ev);const iv=ev,sv=(Number.MAX_SAFE_INTEGER||9007199254740991).toString().length-1;class nv extends iv{constructor(t){const e=(0,N.ZP)()({maxDigitsRightOfMantissa:0,maxDigits:sv,tandem:Y.Z.REQUIRED,tandemNameSuffix:"NumberAccumulator"},t);super([t=>this.getNumberOfDigits(t)<=e.maxDigits&&!(this.getNumberOfDigits(t)===e.maxDigits&&t[t.length-1]===tv.DECIMAL)&&this.getNumberOfDigitsRightOfMantissa(t)<=e.maxDigitsRightOfMantissa]),this.stringProperty=new ne([this.accumulatedKeysProperty],t=>this.keysToString(t),{tandem:e.tandem.createTandem("stringProperty")}),this.valueProperty=new E.ZP([this.accumulatedKeysProperty],t=>{const e=this.keysToString(t);return this.stringToInteger(e)},{tandem:e.tandem.createTandem("valueProperty"),phetioValueType:(0,ku.Z)(xt.Z)})}handleKeyPressed(t){const e=this.handleClearOnNextKeyPress(t);this.isDigit(t)?(this.removeLeadingZero(e),e.push(t)):t===tv.BACKSPACE?e.pop():t===tv.PLUS_MINUS?e.length>0&&e[0]===tv.PLUS_MINUS?e.shift():e.unshift(t):t===tv.DECIMAL&&(this.containsFloatingPoint(e)||e.push(t)),this.validateKeys(e)&&this.updateKeys(e)}removeLeadingZero(t){0!==this.valueProperty.get()||this.containsFloatingPoint(t)||t.pop()}keysToString(t){let e="",i=0;for(t.length>0&&t[i]===tv.PLUS_MINUS&&(e="−",i++);i0&&(1!==t.length||!t.startsWith("−"))&&(this.getNumberOfDigitsLeftOfMantissa(this.accumulatedKeysProperty.get())>0||this.getNumberOfDigitsRightOfMantissa(this.accumulatedKeysProperty.get())>0)&&(e=Number(t.replace("−","-").replace(".","."))),e}getNumberOfDigitsLeftOfMantissa(t){let e=0;for(let i=0;i=0)for(let s=e;s="0"&&t<="9"}clear(){super.clear(),this.setClearOnNextKeyPress(!1)}dispose(){this.valueProperty.dispose(),this.stringProperty.dispose(),super.dispose()}}U.register("NumberAccumulator",nv);const rv=nv,av=new $t({size:20}),ov=new JA("0",tv.ZERO,{keyboardIdentifiers:["0"]}),lv=new JA("1",tv.ONE,{keyboardIdentifiers:["1"]}),hv=new JA("2",tv.TWO,{keyboardIdentifiers:["2"]}),cv=new JA("3",tv.THREE,{keyboardIdentifiers:["3"]}),dv=new JA("4",tv.FOUR,{keyboardIdentifiers:["4"]}),uv=new JA("5",tv.FIVE,{keyboardIdentifiers:["5"]}),pv=new JA("6",tv.SIX,{keyboardIdentifiers:["6"]}),mv=new JA("7",tv.SEVEN,{keyboardIdentifiers:["7"]}),gv=new JA("8",tv.EIGHT,{keyboardIdentifiers:["8"]}),yv=new JA("9",tv.NINE,{keyboardIdentifiers:["9"]}),fv=new JA("0",tv.ZERO,{horizontalSpan:2,keyboardIdentifiers:["0"]}),Av=new JA(".",tv.DECIMAL,{keyboardIdentifiers:["period"]}),vv=new JA(new XA({scale:1.5}),tv.BACKSPACE,{keyboardIdentifiers:["backspace"]}),bv=new JA("+/−",tv.PLUS_MINUS,{keyboardIdentifiers:["minus","plus"]});class Vv extends R.NBX{constructor(t,e){const i=(0,N.ZP)()({buttonWidth:35,buttonHeight:35,xSpacing:10,ySpacing:10,touchAreaXDilation:5,touchAreaYDilation:5,buttonColor:"white",buttonFont:av,accumulator:null,accumulatorOptions:null,tandem:Y.Z.REQUIRED,tandemNameSuffix:"Keypad",tagName:"div",ariaLabel:"Keypad",focusable:!0,keyboardListenerOptions:{}},e);super(),this.keyAccumulator=i.accumulator?i.accumulator:new rv((0,bi.Z)({tandem:i.tandem.createTandem("numberAccumulator")},i.accumulatorOptions)),this.accumulatedKeysProperty=this.keyAccumulator.accumulatedKeysProperty,this.stringProperty=this.keyAccumulator.stringProperty,this.valueProperty=this.keyAccumulator.valueProperty,this.buttonNodes=[];let s=t.length,n=0;for(let h=0;hn&&(n=t[h].length);let r=1;for(let h=0;hr&&(r=e.verticalSpan)}s+=r-1;const a=[];for(let h=0;h0&&r?r.horizontalSpan-1:0),c=n.verticalSpan,d=n.horizontalSpan;for(let t=e;t{const i=o[e];this.keyAccumulator.handleKeyPressed(i.identifier)}}));this.addInputListener(l),this.disposeEmitter.addListener(()=>l.dispose()),this.stringProperty.link(t=>{this.innerContent=t}),this.mutate(i)}clear(){this.keyAccumulator.clear()}setClearOnNextKeyPress(t){this.keyAccumulator.setClearOnNextKeyPress(t)}getClearOnNextKeyPress(){return this.keyAccumulator.getClearOnNextKeyPress()}dispose(){this.keyAccumulator.dispose(),this.buttonNodes.forEach(t=>t.dispose()),super.dispose()}}function Pv(t,e,i,s,n,r){const a=t.label instanceof R.NBX?new R.NBX({children:[t.label]}):new R.xvT(t.label,{font:r.buttonFont}),o=new zi({content:a,baseColor:r.buttonColor,touchAreaXDilation:r.touchAreaXDilation,touchAreaYDilation:r.touchAreaYDilation,minWidth:i,minHeight:s,xMargin:5,yMargin:5,listener:()=>e.handleKeyPressed(t.identifier),tagName:0===t.keyboardIdentifiers.length?"button":null,tandem:n.createTandem(t.buttonTandemName)});return o.dispose=function(){a.dispose(),zi.prototype.dispose.call(this)},o.scale(i/o.width,s/o.height),o}_defineProperty(Vv,"PositiveIntegerLayout",[[mv,gv,yv],[dv,uv,pv],[lv,hv,cv],[fv,vv]]),_defineProperty(Vv,"PositiveDecimalLayout",[[mv,gv,yv],[dv,uv,pv],[lv,hv,cv],[Av,ov,vv]]),_defineProperty(Vv,"PositiveAndNegativeIntegerLayout",[[mv,gv,yv],[dv,uv,pv],[lv,hv,cv],[vv,ov,bv]]),_defineProperty(Vv,"PositiveFloatingPointLayout",[[mv,gv,yv],[dv,uv,pv],[lv,hv,cv],[Av,ov,vv]]),_defineProperty(Vv,"PositiveAndNegativeFloatingPointLayout",[[mv,gv,yv],[dv,uv,pv],[lv,hv,cv],[fv,bv],[Av,null,vv]]),_defineProperty(Vv,"WeirdLayout",[[new JA("1",tv.ONE),new JA("2",tv.TWO),new JA("3",tv.THREE,{horizontalSpan:3})],[null,new JA("4",tv.FOUR,{horizontalSpan:5})],[new JA("5",tv.FIVE,{verticalSpan:2}),new JA("6",tv.SIX),new JA("7",tv.SEVEN)],[null,new JA("8",tv.EIGHT),new JA("9",tv.NINE)],[null,new JA("0",tv.ZERO,{horizontalSpan:2,verticalSpan:2})]]),_defineProperty(Vv,"KEY_0",ov),_defineProperty(Vv,"KEY_1",lv),_defineProperty(Vv,"KEY_2",hv),_defineProperty(Vv,"KEY_3",cv),_defineProperty(Vv,"KEY_4",dv),_defineProperty(Vv,"KEY_5",uv),_defineProperty(Vv,"KEY_6",pv),_defineProperty(Vv,"KEY_7",mv),_defineProperty(Vv,"KEY_8",gv),_defineProperty(Vv,"KEY_9",yv),_defineProperty(Vv,"KEY_WIDE_ZERO",fv),_defineProperty(Vv,"KEY_DECIMAL",Av),_defineProperty(Vv,"KEY_BACKSPACE",vv),_defineProperty(Vv,"KEY_PLUS_MINUS",bv),U.register("Keypad",Vv);const wv=Vv;class Mv extends R.NBX{constructor(t,e){const i=(0,N.ZP)()({headFill:R.Ilk.YELLOW,headStroke:null,eyeFill:"black",mouthStroke:"black",headLineWidth:1},e);super();const s=new R.M4p(i.headFill);i.headStroke=i.headStroke||new E.ZP([s],t=>t.darkerColor()),this.addChild(new R.Cdc(t/2,{fill:i.headFill,stroke:i.headStroke,lineWidth:i.headLineWidth}));const n=.075*t;this.addChild(new R.Cdc(n,{fill:i.eyeFill,centerX:.2*-t,centerY:.1*-t})),this.addChild(new R.Cdc(n,{fill:i.eyeFill,centerX:.2*t,centerY:.1*-t}));const r=.05*t;this.smileMouth=new R.y$t((new Ut.bn).arc(0,.05*t,.25*t,.2*Math.PI,.8*Math.PI),{stroke:i.mouthStroke,lineWidth:r,lineCap:"round"}),this.addChild(this.smileMouth),this.frownMouth=new R.y$t((new Ut.bn).arc(0,.4*t,.2*t,.75*-Math.PI,.25*-Math.PI),{stroke:i.mouthStroke,lineWidth:r,lineCap:"round"}),this.addChild(this.frownMouth),this.smile(),this.mutate(i)}smile(){return this.smileMouth.visible=!0,this.frownMouth.visible=!1,this}frown(){return this.smileMouth.visible=!1,this.frownMouth.visible=!0,this}}U.register("FaceNode",Mv);class Sv extends R.NBX{constructor(t){const e=(0,N.ZP)()({spacing:2,faceDiameter:100,faceOpacity:1,pointsAlignment:"centerBottom",pointsFont:new $t({size:44,weight:"bold"}),pointsFill:"black",pointsStroke:null,pointsOpacity:1,showZeroPoints:!1,points:0},t);super(),this.spacing=e.spacing,this.pointsAlignment=e.pointsAlignment,this.showZeroPoints=e.showZeroPoints,this.faceNode=new Mv(e.faceDiameter,{opacity:e.faceOpacity}),this.pointsNode=new R.xvT("",{font:e.pointsFont,fill:e.pointsFill,opacity:e.pointsOpacity,stroke:e.pointsStroke,lineWidth:1}),e.children=[this.faceNode,this.pointsNode],this.mutate(e),this.setPoints(e.points)}smile(){this.faceNode.smile(),this.pointsNode.visible=!0}frown(){this.faceNode.frown(),this.pointsNode.visible=!1}setPoints(t){0!==t||this.showZeroPoints?this.pointsNode.string="+"+t:this.pointsNode.string="",this.updatePointsPosition()}updatePointsPosition(){switch(this.pointsAlignment){case"centerBottom":this.pointsNode.centerX=this.faceNode.centerX,this.pointsNode.top=this.faceNode.bottom+this.spacing;break;case"rightBottom":this.pointsNode.leftCenter=new Ht.Z(this.faceNode.right+this.spacing,this.faceNode.centerY).rotate(Math.PI/4);break;case"rightCenter":this.pointsNode.left=this.faceNode.right+this.spacing,this.pointsNode.centerY=this.faceNode.centerY;break;default:throw new Error("unsupported pointsAlignment: "+this.pointsAlignment)}}}U.register("FaceWithPointsNode",Sv);class Tv extends Sv{constructor(t,e){super(e=(0,bi.Z)({pointsFont:new $t({size:26,weight:"bold"}),visible:!1},e)),t.pointsToDisplayProperty.link(t=>this.setPoints(t)),t.isSmileProperty.link(t=>{t?this.smile():this.frown()});let i=null;t.showFaceEmitter.addListener(()=>{this.visible=!0,this.opacity=1;let t=2e3;null!==i&&q.Z.clearInterval(i),i=q.Z.setInterval(()=>{t-=1/60*1e3,this.opacity=O.Z.clamp(t/1e3,0,1),0===this.opacity&&(q.Z.clearInterval(i),i=null,this.visible=!1)},1/60*1e3)}),t.hideFaceEmitter.addListener(()=>{null!==i&&(q.Z.clearTimeout(i),i=null),this.visible=!1})}}Qp.register("ArithmeticFaceWithPointsNode",Tv);const Ev=Tv,xv=new $t({size:28,weight:"bold"}),Cv=new $t({size:22,weight:"bold"}),Iv=new $t(26);class qv extends he{constructor(t,e,i,s,n,r,a,o,l,h){const c=(0,N.ZP)()({levelVisible:!0,ySpacing:30,titleFont:xv,infoFont:Cv,buttonFont:Iv,buttonFill:Cn.BUTTON_YELLOW,starDiameter:62,contentMaxWidth:null,fill:"rgb( 180, 205, 255 )",stroke:"black",lineWidth:2,cornerRadius:35,xMargin:20,yMargin:20,tandem:Y.Z.REQUIRED},h),d=[],u=e/i;let p=um.keepTryingStringProperty;u>.95?p=um.excellentStringProperty:u>.75?p=um.greatStringProperty:u>=.5&&(p=um.goodStringProperty);const m=new R.xvT(p,{font:c.titleFont,maxWidth:c.contentMaxWidth});d.push(m);const g=new kA(new I.Z(e),{numberOfStars:s,perfectScore:i,starNodeOptions:{starShapeOptions:{innerRadius:c.starDiameter/4,outerRadius:c.starDiameter/2}},maxWidth:c.contentMaxWidth});if(d.push(g),c.levelVisible){const e=new E.ZP([um.label.levelStringProperty],e=>B.Z.format(e,t));d.push(new R.xvT(e,{font:c.infoFont,maxWidth:c.contentMaxWidth}))}const y=new E.ZP([um.label.score.maxStringProperty],t=>B.Z.format(t,e,i));if(d.push(new R.xvT(y,{font:c.infoFont,maxWidth:c.contentMaxWidth})),n){const t=new E.ZP([um.label.timeStringProperty,um.pattern["0hours"]["1minutes"]["2secondsStringProperty"],um.pattern["0minutes"]["1secondsStringProperty"]],t=>B.Z.format(t,pm.formatTime(r)));let e;e=o?new E.ZP([t,um.yourNewBestStringProperty],(t,e)=>`${t}
${e}`):null!==a?new E.ZP([t,um.pattern["0yourBestStringProperty"]],(t,e)=>`${t}
${B.Z.format(e,pm.formatTime(a))}`):t,d.push(new R.Hof(e,{font:c.infoFont,align:"center",maxWidth:c.contentMaxWidth}))}const f=new Zd(um.continueStringProperty,{listener:l,font:c.buttonFont,baseColor:c.buttonFill,tandem:c.tandem.createTandem("continueButton"),maxWidth:c.contentMaxWidth});d.push(f),super(new R.SHm({children:d,spacing:c.ySpacing}),c),this.disposeLevelCompletedNode=()=>{d.forEach(t=>t.dispose())}}dispose(){this.disposeLevelCompletedNode(),super.dispose()}}im.register("LevelCompletedNode",qv);class kv extends R.NBX{constructor(t,e,i,s,n,r,a){super(a),i.lazyLink(i=>{if(i===cm.SHOWING_LEVEL_COMPLETED_DIALOG){const i=t[e.value],a=new qv(e.value+1,i.currentScoreProperty.get(),i.perfectScore,$p.NUM_STARS,s.value,i.gameTimer.elapsedTimeProperty.value,i.bestTimeProperty.get(),i.gameTimer.elapsedTimeProperty.get(){Fv||(Bv(),Fv=!0)},zv=it.decodeAudioData(Nv.buffer,t=>{null===Rv.audioBufferProperty.value&&(Rv.audioBufferProperty.set(t),Hv())},t=>{console.warn("decode of audio data failed, using stubbed sound, error: "+t),Rv.audioBufferProperty.set(it.createBuffer(1,1,it.sampleRate)),Hv()});zv&&zv.then(t=>{null===Rv.audioBufferProperty.value&&(Rv.audioBufferProperty.set(t),Hv())}).catch(t=>{console.warn("promise rejection caught for audio decode, error = "+t),Hv()});const Uv=Rv;class Yv extends zi{constructor(t){const e=(0,N.ZP)()({iconWidth:20,baseColor:Cn.BUTTON_YELLOW,soundPlayer:new Je(Uv,{soundClipOptions:{initialOutputLevel:.22}})},t);e.content=new R.Eep(Ov),e.content.scale(e.iconWidth/e.content.width),super(e)}}U.register("EraserButton",Yv);const Wv={fill:"#dddddd",lineWidth:.5,margin:15,cornerRadius:5,align:"center"},Gv={font:new $t({size:18,weight:"bold"}),maxWidth:120},Kv={font:new $t({size:18}),maxWidth:120};class Qv extends he{constructor(t,e,i,s,n,r){r=(0,bi.Z)({title:""},r);const a=new R.xvT(new cn(jp.pattern.level["0levelNumberStringProperty"],{level:t},{formatNames:["level"],maps:{level:t=>null!==t?(t+1).toString():""}}),Gv),o=new I.Z(null!==t.value?i[t.value]:null),l=new Rt.Z(o,{derive:"currentScoreProperty",defaultValue:0}),h=new Rt.Z(o,{derive:t=>t.gameTimer.elapsedTimeProperty,defaultValue:0}),c=new R.xvT(new cn(um.label.scorePatternStringProperty,{score:l},{formatNames:["score"]}),Kv),d=new R.xvT(new ne([h,um.label.timeStringProperty,um.pattern["0hours"]["1minutes"]["2secondsStringProperty"],um.pattern["0minutes"]["1secondsStringProperty"]],(t,e)=>{const i=pm.formatTime(t);return B.Z.format(e,i)}),Kv),u=(0,bi.Z)({},Wv,r),p=new R.SHm({spacing:16,children:[new R.xvT(r.title,Gv),a,c,d,new Yv({iconHeight:24,xMargin:14,yMargin:7,listener:n})]});super(p,u),t.lazyLink(t=>{e.value===cm.SELECTING_LEVEL&&i[t]&&o.set(i[t])}),s.link(t=>{t?p.insertChild(2,d):p.removeChild(d)})}}Qp.register("ScoreboardNode",Qv);const Xv=Qv,jv=Cn.BUTTON_YELLOW,Jv=new L.Z(20,10),$v=Cn.BUTTON_YELLOW,tb=new $t({size:20}),eb=jp.checkStringProperty,ib=jp.tryAgainStringProperty;class sb extends R.NBX{constructor(t,e,i,s,n){super(),n=(0,bi.Z)({scoreboardTitle:"",showKeypad:!0},n);const r=new QA({baseColor:jv,xMargin:Jv.width,yMargin:Jv.height,scale:.75,left:.02*s.maxX,top:.02*s.maxY,listener:()=>{t.returnToLevelSelectScreen()}});this.addChild(r),e.mutate({top:.02*s.maxY,centerX:.43*s.width}),this.addChild(e),t.refreshEmitter.addListener(()=>{e.refreshLevel(t.levelNumberProperty.get())}),i.bottom=.87*s.maxY,i.centerX=.45*s.width,this.addChild(i),t.stateProperty.link((t,e)=>{i.visible=!(t===cm.LEVEL_COMPLETED||e===cm.LEVEL_COMPLETED&&t===cm.SELECTING_LEVEL)});const a=s.maxX-e.right-60;let o=null;const l=new Xv(t.levelNumberProperty,t.stateProperty,t.levelModels,em.timerEnabledProperty,()=>{t.refreshLevel(),o&&o.clear()},{title:n.scoreboardTitle,minWidth:a,maxWidth:a,layoutOptions:{bottomMargin:32}}),h=new R.SHm({children:[l],centerX:(e.right+s.maxX)/2,top:r.top,spacing:$p.CONTROL_PANEL_VBOX_SPACING});if(h.top=e.top,this.addChild(h),n.showKeypad){o=new wv(wv.PositiveIntegerLayout,{accumulatorOptions:{maxDigits:3},keyboardListenerOptions:{global:!0}}),o.stringProperty.link(e=>{t.inputProperty.set(e)}),t.stateProperty.link((t,e)=>{t===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK?o.setClearOnNextKeyPress(!0):t===cm.AWAITING_USER_INPUT&&e!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK&&o.clear(),o.enabled=t===cm.AWAITING_USER_INPUT||t===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK,o.visible=!(t===cm.LEVEL_COMPLETED||t===cm.SHOWING_LEVEL_COMPLETED_DIALOG||(e===cm.LEVEL_COMPLETED||e===cm.SHOWING_LEVEL_COMPLETED_DIALOG)&&t===cm.SELECTING_LEVEL)});const e=new Zd(eb,{font:tb,baseColor:$v,maxWidth:a,listener:()=>{t.fillEquation()}}),i=new R.F3H({keys:["space","enter"],listenerFireTrigger:"up",global:!0,callback:()=>{""!==o.stringProperty.value&&(t.stateProperty.get()===cm.AWAITING_USER_INPUT?t.fillEquation():t.stateProperty.get()===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK&&(o.clear(),t.inputProperty.reset(),t.retryProblem()))}});o.addInputListener(i),h.addChild(o),h.addChild(e);const s=()=>{e.visible=t.stateProperty.get()===cm.AWAITING_USER_INPUT,e.enabled=t.inputProperty.get().length>0};t.stateProperty.link(s),t.inputProperty.link(e=>{t.stateProperty.get()===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK&&t.retryProblem(),s()})}this.addChild(new Ev(t.faceModel,{bottom:.92*s.maxY,left:.04*s.maxX}));const c=new Zd(ib,{font:tb,baseColor:$v,maxWidth:a,listener:()=>{o&&o.clear(),t.inputProperty.reset(),t.retryProblem()}});h.addChild(c),t.stateProperty.link(t=>{c.visible=t===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK}),h.addChild(new Dv(t.levelModels,t.levelNumberProperty,t.stateProperty,em.timerEnabledProperty,()=>{t.stateProperty.set(cm.LEVEL_COMPLETED),t.returnToLevelSelectScreen()},h,{minWidth:a,maxWidth:a}))}}Qp.register("WorkspaceNode",sb);const nb=sb;class rb extends or{constructor(t,e,i,s,n){super({layoutBounds:new D.Z(0,0,768,504)}),n=(0,bi.Z)({titleString:"",showKeypad:!0,levelSelectButtonColor:"white"},n);const r=new BA(t,n.titleString,e=>{t.setLevel(e)},this.layoutBounds,s,{centerX:this.layoutBounds.centerX,centerY:this.layoutBounds.centerY,buttonBaseColor:n.levelSelectButtonColor});this.addChild(r);const a=new nb(t,e,i,this.layoutBounds,{showKeypad:n.showKeypad,scoreboardTitle:n.titleString});a.left=this.layoutBounds.maxX,a.visible=!1,this.addChild(a);const o=new nA;e.animationOrigin=i.productInput.center;const l=new df({duration:.75,easing:of.CUBIC_IN_OUT,getValue:()=>r.x,setValue:t=>{r.x=t},to:this.layoutBounds.minX});l.beginEmitter.addListener(()=>{r.visible=!0,r.pickable=!1}),l.finishEmitter.addListener(()=>{r.pickable=!0});const h=new df({duration:.75,easing:of.CUBIC_IN_OUT,getValue:()=>r.x,setValue:t=>{r.x=t},to:this.layoutBounds.minX-r.width});h.beginEmitter.addListener(()=>{r.pickable=!1}),h.finishEmitter.addListener(()=>{r.visible=!1});const c=new df({duration:.75,easing:of.CUBIC_IN_OUT,getValue:()=>a.x,setValue:t=>{a.x=t},to:this.layoutBounds.minX});c.beginEmitter.addListener(()=>{a.visible=!0,a.pickable=!1}),c.finishEmitter.addListener(()=>{a.pickable=!0});const d=new df({duration:.75,easing:of.CUBIC_IN_OUT,getValue:()=>a.x,setValue:t=>{a.x=t},to:this.layoutBounds.maxX});d.beginEmitter.addListener(()=>{a.pickable=!1}),d.finishEmitter.addListener(()=>{a.visible=!1}),t.stateProperty.link((e,i)=>{if(e===cm.SELECTING_LEVEL&&i?(c.stop(),d.start(),h.stop(),l.start()):e!==cm.SELECTING_LEVEL&&i===cm.SELECTING_LEVEL&&(d.stop(),c.start(),l.stop(),h.start()),i!==cm.AWAITING_USER_INPUT&&i!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK||e!==cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK){if(i===cm.AWAITING_USER_INPUT&&e===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK)o.wrongAnswer();else if(i===cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK&&e===cm.SHOWING_LEVEL_COMPLETED_DIALOG){const e=t.activeLevelModel.currentScoreProperty.get();e===t.activeLevelModel.perfectScore?o.gameOverPerfectScore():0===e?o.gameOverZeroScore():o.gameOverImperfectScore()}}else o.correctAnswer()})}}Qp.register("ArithmeticView",rb);const ab=rb,ob=jp.unknownValueIndicatorStringProperty,lb=.7*new R.xvT("8",{font:$p.EQUATION_FONT_TEXT}).height,hb=(t,e)=>{t.centerX=e.width/2,t.centerY=e.height/2};class cb extends R.NBX{constructor(t,e){super(),this.unknownValueTextVisible=!1,this.unknownValueText=new R.xvT(ob,{font:$p.EQUATION_FONT_TEXT,maxWidth:e.width-10,visible:this.unknownValueTextVisible}),this.inputText=new R.xvT("",{font:$p.EQUATION_FONT_TEXT,maxWidth:e.width-10}),this.textCursor=new R.AeJ(0,2,1,lb,{fill:"black"}),this.cursorContainer=new R.NBX({children:[this.textCursor]}),this.inputSize=e,t.lazyLink(t=>{this.inputText.setString(isNaN(t)?"":t),this.inputText.visible=!isNaN(t),this.unknownValueText.visible=isNaN(t)&&this.unknownValueTextVisible,hb(this._box,e)}),q.Z.setInterval(()=>{this.textCursor.visible=!this.textCursor.visible},$p.CURSOR_BLINK_INTERVAL),this.background=new R.AeJ(0,0,e.width,e.height,5,5,{fill:"#dddddd"}),this.addChild(this.background),this._box=new R.BET({children:[this.unknownValueText,this.inputText,new R.NBX({children:[this.cursorContainer]})],centerX:this.background.centerX,centerY:this.background.centerY}),R.bGt.create(this,[this._box,this.background],(t,e)=>{t.centerX=e.centerX,t.centerY=e.centerY}),this.addChild(this._box),this.setFocus(!1)}clear(){this.inputText.visible=!1,hb(this._box,this.inputSize)}setFocus(t){this.cursorContainer.visible=t}setInteractiveAppearance(t){this.background.fill=t?"white":"#dddddd"}setPlaceholder(){this.unknownValueTextVisible=!0,this.unknownValueText.visible=!0,this.inputText.visible=!1,hb(this._box,this.inputSize)}}Qp.register("EquationInputNode",cb);const db=cb,ub=new $t(45),pb=new $t(50),mb=new L.Z(70,45),gb=new L.Z(80,45);class yb extends R.BET{constructor(t,e,i,s){s=(0,bi.Z)({spacing:20,resize:!1},s);const n=new db(t,mb),r=new db(e,mb),a=new db(i,gb),o=new R.xvT(kl.EQUAL_TO,{font:ub,fill:"#FFFF00"});s.children=[n,new R.xvT(kl.TIMES,{font:pb,fill:"#FFFF00"}),r,o,a],super(s),this.multiplicandInput=n,this.multiplierInput=r,this.productInput=a,this.equalsSign=o,this.setShowEqual(!0)}setShowEqual(t){this.equalsSign.string=t?kl.EQUAL_TO:kl.NOT_EQUAL_TO}}Qp.register("EquationNode",yb);const fb=yb;class Ab extends fb{constructor(t,e,i,s,n,r){super(e,i,s),n.lazyLink(t=>{const s=t?Number(t):"";"multiplicand"===r.get()?e.set(s):"multiplier"===r.get()&&i.set(s)});const a=()=>{t.value===cm.AWAITING_USER_INPUT?(this.multiplierInput.setFocus("multiplier"===r.value),this.multiplicandInput.setFocus("multiplicand"===r.value)):(this.multiplierInput.setFocus(!1),this.multiplicandInput.setFocus(!1))};r.link(t=>{"multiplier"===t?this.multiplierInput.clear():"multiplicand"===t&&this.multiplicandInput.clear(),this.multiplicandInput.setInteractiveAppearance("multiplicand"===t),this.multiplierInput.setInteractiveAppearance("multiplier"===t),a()}),t.link(t=>{this.setShowEqual(t!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK),a()})}}Qp.register("DivideEquationNode",Ab);const vb=Ab,bb=new $t(17),Vb=new $t(22),Pb=new $t(30),wb=new R.xvT("123456789",{font:bb}).bounds.height,Mb=new R.xvT("123456789",{font:Vb}).bounds.height,Sb=new R.xvT("123456789",{font:Pb}).bounds.height;class Tb extends R.AeJ{constructor(t,e){super(0,0,t.width,t.height,(0,bi.Z)({fill:"white",stroke:"white",lineWidth:2.5},t)),this._textOptions=(0,bi.Z)({font:Eb(this.bounds.height),fill:"white",centerY:this.bounds.height/2,initiallyVisible:!0},e),this._textNode=null,this._text="",this._textOptions.initiallyVisible&&xb(this)}setBackgroundFill(t){this.fill=t}setText(t){this._text=t,this._textNode&&(this._textNode.string=t,this._textNode.centerX=this.width/2)}setTextFill(t){xb(this),this._textNode.setFill(t)}showText(){xb(this),this._textNode.visible=!0}hideText(){this._textNode&&(this._textNode.visible=!1)}getTextString(){return this._text}isTextVisible(){return!!this._textNode&&this._textNode.visible}getTextHeight(){let t;switch(this._textOptions.font){case bb:t=wb;break;case Vb:t=Mb;break;case Pb:t=Sb}return t}}function Eb(t){let e;return e=t<27?bb:t<35?Vb:Pb,e}function xb(t){t._textNode||(t._textNode=new R.xvT(t._text,t._textOptions),t._textNode.centerX=t.bounds.width/2,t.addChild(t._textNode))}Qp.register("AbstractCell",Tb);const Cb=Tb;class Ib extends Cb{constructor(t,e){super(e=(0,bi.Z)({fill:"rgb(50,70,255)"},e),{initiallyVisible:!1}),this.setText(t)}setHover(){this.setBackgroundFill("rgb(238,253,77)")}setNormal(){this.setBackgroundFill("rgb(50,70,255)")}setSelected(){this.setBackgroundFill("rgb(77,0,153)")}}Qp.register("MultiplicationTableBodyCell",Ib);const qb=Ib;class kb extends Cb{constructor(t,e,i){super(e=(0,bi.Z)({fill:"rgb(220,60,33)"},e),i),this.setText(t)}setSelected(){this.setBackgroundFill("rgb(0,0,128)"),this.setTextFill("rgb(255,253,56)")}setNormal(){this.setBackgroundFill("rgb(220,60,33)"),this.setTextFill("white")}}Qp.register("MultiplicationTableHeaderCell",kb);const Db=kb,Lb=new L.Z(434,320),_b=new Ht.Z(370,380);class Ob extends R.NBX{constructor(t,e,i,s){super(),this.levelNumberProperty=t,this.viewForLevel=new Array(i.length),this.cells=new Array(i.length),i.forEach((t,e)=>{const i=t.tableSize,s={lineWidth:Math.max(Math.ceil(Lb.width/(i+1)/40),2),width:Lb.width/(i+1),height:Lb.height/(i+1)},n=new R.NBX({visible:!1});let r,a,o;this.cells[e]=new Array(i+1);let l=0,h=0;for(r=0;r<=i;r++){if(this.cells[e][r]=new Array(i+1),0===r)for(a=0;a<=i;a++)o=0===a?new Db(kl.TIMES,s,{font:new $t({size:O.Z.roundSymmetric(.85*s.height)})}):new Db(a.toString(),s),o.top=l,o.left=h,h+=s.width,n.addChild(o),this.cells[e][r][a]=o;else for(a=0;a<=i;a++)o=0===a?new Db(r.toString(),s):new qb((r*a).toString(),s),o.top=l,o.left=h,h+=s.width,n.addChild(o),this.cells[e][r][a]=o;l+=s.height,h=0}this.addChild(n),this.viewForLevel[e]=n}),t.link((t,e)=>{this.viewForLevel[t]&&(this.viewForLevel[t].visible=!0),this.viewForLevel[e]&&(this.viewForLevel[e].visible=!1)}),this.flyingProduct=new R.xvT("X",{font:$p.EQUATION_FONT_TEXT,fill:"white",visible:!1}),this.addChild(this.flyingProduct),this.flyingProductAnimation=null,e.link((e,n)=>{if(e===cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK||n===cm.SELECTING_LEVEL){const e=t.value,n=i[e];for(let i=1;i<=n.tableSize;i++)for(let e=1;e<=n.tableSize;e++){const r=this.cells[t.value][i][e];n.isCellUsed(i,e)?s&&!r.isTextVisible()?(()=>{const t=r;this.flyingProduct.string=t.getTextString(),this.flyingProduct.setScaleMagnitude(1);const e=this.globalToLocalPoint(t.parentToGlobalPoint(t.center));this.flyingProductAnimation=new df({duration:.8,targets:[{object:this.flyingProduct,attribute:"center",from:_b,to:e,easing:of.CUBIC_IN_OUT},{from:1,to:t.getTextHeight()/this.flyingProduct.height,setValue:t=>{this.flyingProduct.setScaleMagnitude(t)},easing:of.CUBIC_IN_OUT}]}),this.flyingProductAnimation.beginEmitter.addListener(()=>{this.flyingProduct.visible=!0}),this.flyingProductAnimation.finishEmitter.addListener(()=>{t.showText(),this.flyingProduct.visible=!1,this.flyingProductAnimation=null}),this.flyingProductAnimation.start()})():r.showText():r.hideText()}}})}setCellsToDefaultColor(t){this.cells[t].forEach(t=>{t.forEach(t=>{t.setNormal()})})}clearCells(t){this.setCellsToDefaultColor(t),this.cells[t].forEach((t,e)=>{e>0&&t.forEach((t,e)=>{e>0&&t.hideText()})})}refreshLevel(t){this.flyingProductAnimation&&(this.flyingProductAnimation.stop(),self.flyingProductAnimation=null,this.flyingProduct.visible=!1),this.clearCells(t)}whereIsCellCenter(t,e,i){const s=this.cells[t][i][e];let n=s,r=null;for(;null!==n;){if(n instanceof or){r=n;break}n=n.parents[0]}return r.globalToLocalPoint(s.parentToGlobalPoint(s.center))}}Qp.register("MultiplicationTableNode",Ob);const Zb=Ob;class Nb extends Zb{constructor(t){super(t.levelNumberProperty,t.stateProperty,t.levelModels,!0),this.problemModel=t.problemModel,this.levelNumberProperty=t.levelNumberProperty,t.stateProperty.lazyLink(e=>{if(e===cm.AWAITING_USER_INPUT)this.setCellsToDefaultColor(this.levelNumberProperty.value),"multiplier"===t.activeInputProperty.get()?this.cells[this.levelNumberProperty.value][this.problemModel.multiplicandProperty.get()][0].setSelected():this.cells[this.levelNumberProperty.value][0][this.problemModel.multiplierProperty.get()].setSelected();else if(e===cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK){this.cells[this.levelNumberProperty.value][this.problemModel.multiplicandProperty.get()][0].setSelected(),this.cells[this.levelNumberProperty.value][0][this.problemModel.multiplierProperty.get()].setSelected();for(let t=1;t<=this.problemModel.multiplicandProperty.get();t++)for(let e=1;e<=this.problemModel.multiplierProperty.get();e++)this.cells[this.levelNumberProperty.value][t][e].setSelected()}else e===cm.LEVEL_COMPLETED&&this.setCellsToDefaultColor(this.levelNumberProperty.value)})}refreshLevel(){super.refreshLevel(this.levelNumberProperty.value),this.problemModel.multiplicandProperty.get()?this.cells[this.levelNumberProperty.value][this.problemModel.multiplicandProperty.get()][0].setSelected():this.cells[this.levelNumberProperty.value][0][this.problemModel.multiplierProperty.get()].setSelected()}}Qp.register("DivideScreenTableNode",Nb);const Bb=Nb;class Rb extends ab{constructor(t){super(t,new Bb(t),new vb(t.stateProperty,t.problemModel.multiplicandProperty,t.problemModel.multiplierProperty,t.problemModel.productProperty,t.inputProperty,t.activeInputProperty),[nf.divideLevel1ImageProperty,nf.divideLevel2ImageProperty,nf.divideLevel3ImageProperty],{titleString:jp.divideStringProperty,levelSelectButtonColor:"#BC76A5"})}}Qp.register("DivideView",Rb);const Fb=Rb;class Hb extends bn{constructor(t){super(()=>new Vm(t.tandem.createTandem("model")),t=>new Fb(t),t=(0,bi.Z)({name:jp.divideStringProperty,backgroundColorProperty:new I.Z($p.BACKGROUND_COLOR),homeScreenIcon:new ln(new Mm,{maxIconWidthProportion:1,maxIconHeightProportion:1}),tandem:Y.Z.REQUIRED},t))}}Qp.register("DivideScreen",Hb);const zb=Hb;class Ub extends vm{constructor(t){super(t),this.handImageVisibleProperty=new S.Z(!0)}setUpUnansweredProblem(){const t=this.selectUnusedMultiplierPair();return!!t&&(this.problemModel.possiblePointsProperty.reset(),this.problemModel.multiplicandProperty.reset(),this.problemModel.multiplierProperty.reset(),this.problemModel.productProperty.set(t.multiplicand*t.multiplier),!0)}submitAnswer(){if(this.stateProperty.get()===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK){const t=this.problemModel.multiplicandProperty.get(),e=this.problemModel.multiplierProperty.get();this.retryProblem(),this.problemModel.multiplicandProperty.set(t),this.problemModel.multiplierProperty.set(e)}super.submitAnswer()}autoAnswer(){const t=Tt.enabled;Tt.enabled=!1;const e=this.activeLevelModel.tableSize,i=e*e,s=i-1,n=this.activeLevelModel;console.log("Automatically answering",s,"of",i,"questions."),_.times(s,t=>{let i=!1;for(let s=1;s<=e&&!i;s++)for(let t=1;t<=e&&!i;t++)s*t!==this.problemModel.productProperty.get()||n.isCellUsed(s,t)||(i=!0,n.markCellAsUsed(s,t));n.currentScoreProperty.value+=this.problemModel.possiblePointsProperty.get(),n.displayScoreProperty.set(this.activeLevelModel.currentScoreProperty.get()),this.stateProperty.set(cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK),this.nextProblem()}),Tt.enabled=t}reset(){super.reset(),this.handImageVisibleProperty.reset()}}Qp.register("FactorModel",Ub);const Yb=Ub,Wb=$p.SCREEN_ICON_SIZE,Gb=new $t(90),Kb=new $t({size:120,weight:"bold"}),Qb={stroke:"#FFF31E",lineWidth:15,lineCap:"round"};function Xb(t,e,i,s){const n=new R.xvT(t,{font:e}),r=new R.AeJ(0,0,n.width+2*i,n.height+2*s,20,20,{fill:"white"});return n.center=r.center,r.addChild(n),r}class jb extends R.AeJ{constructor(){super(0,0,Wb.width,Wb.height,{fill:$p.ICON_BACKGROUND_COLOR});const t=Xb("12",Gb,15,5);t.centerX=this.width/2,t.top=25;const e=Xb("?",Kb,20,5);e.centerX=.3*Wb.width,e.bottom=Wb.height-25;const i=Xb("?",Kb,20,5);i.centerX=.7*Wb.width,i.bottom=e.bottom,this.addChild(new R.x12(t.centerX,t.bottom,e.centerX,e.top,Qb)),this.addChild(new R.x12(t.centerX,t.bottom,i.centerX,i.top,Qb)),this.addChild(t),this.addChild(e),this.addChild(i)}}Qp.register("FactorScreenIconNode",jb);const Jb=jb;class $b extends fb{constructor(t,e,i,s){super(e,i,s),this.multiplicandInput.setInteractiveAppearance(!0),this.multiplierInput.setInteractiveAppearance(!0),t.link(t=>{this.setShowEqual(t!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK),t===cm.AWAITING_USER_INPUT&&(e.reset(),i.reset(),this.multiplicandInput.setPlaceholder(),this.multiplierInput.setPlaceholder())})}}Qp.register("FactorEquationNode",$b);const tV=$b,eV=new Image,iV=K.Z.createLock(eV);eV.onload=iV,eV.src="data:image/png;base64,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";const sV=eV,nV=new Image,rV=K.Z.createLock(nV);nV.onload=rV,nV.src="data:image/png;base64,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";const aV=nV;class oV{constructor(){this.mouseOverProperty=new I.Z(!1),this.touchedProperty=new I.Z(!1),this.enabledProperty=new I.Z(!0),this.interrupted=!1,this.pointerListener={up:t=>{t.pointer.listeners.includes(this.pointerListener)&&t.pointer.removeInputListener(this.pointerListener)},interrupt:()=>{this.interrupted=!0},cancel:t=>{t.pointer.listeners.includes(this.pointerListener)&&t.pointer.removeInputListener(this.pointerListener)}},this.mouseDownEmitter=new x.Z,this.mouseUpEmitter=new x.Z,this.touchUpEmitter=new x.Z}enter(t,e){"mouse"===t.pointer.type?this.mouseOverProperty.set(!0):"touch"===t.pointer.type&&this.touchedProperty.set(!0)}exit(t,e){"mouse"===t.pointer.type?this.mouseOverProperty.set(!1):"touch"===t.pointer.type&&this.touchedProperty.set(!1)}down(t,e){"mouse"===t.pointer.type&&this.mouseDownEmitter.emit(),t.pointer.addInputListener(this.pointerListener)}up(t,e){this.interrupted||("mouse"===t.pointer.type?this.mouseUpEmitter.emit():"touch"===t.pointer.type&&this.touchUpEmitter.emit()),this.interrupted=!1}}Qp.register("CellInteractionListener",oV);const lV=oV;class hV extends Zb{constructor(t){super(t.levelNumberProperty,t.stateProperty,t.levelModels,!1);const e=t.stateProperty,i=new R.Eep(sV,{pickable:!1});i.scale(this.width/sV.width*.25),i.centerX=.55*this.width,i.centerY=this.height/2,i.visibleProperty=t.handImageVisibleProperty,this.cellPointer=new R.Eep(aV,{pickable:!1}),this.addChild(this.cellPointer),this.cellListeners=[],this.activeCell=null,this.mouseDownCell=null,this.cells.forEach((s,n)=>{this.cellListeners[n]=[],s.forEach((s,r)=>{r&&s.forEach((s,a)=>{let o;if(a){o=new lV,s.addInputListener(o),s.cursor="pointer",this.cellListeners[n].push(o);const l=()=>{t.stateProperty.get()===cm.AWAITING_USER_INPUT&&(this.setCellsToDefaultColor(t.levelNumberProperty.get()),o.enabledProperty.get()?(this.setSelectedRect(t.levelNumberProperty.get(),r,a),s.setHover(),this.cellPointer.visible=!0,Math.abs(this.cellPointer.height-.7*s.height)>.01&&(this.cellPointer.setScaleMagnitude(1),this.cellPointer.setScaleMagnitude(.7*s.height/this.cellPointer.height)),this.cellPointer.centerX=s.centerX,this.cellPointer.centerY=s.centerY,this.activeCell=s):this.activeCell=null)};o.mouseOverProperty.link(l),o.touchedProperty.link(e=>{e&&(t.stateProperty.get()===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK&&t.retryProblem(),i.visibleProperty.set(!1),l())}),o.mouseDownEmitter.addListener(()=>{this.mouseDownCell=s,this.activeCell=s,i.visibleProperty.set(!1),l()});const h=()=>{t.problemModel.multiplicandProperty.set(r),t.problemModel.multiplierProperty.set(a),r*a===t.problemModel.productProperty.get()&&o.enabledProperty.set(!1),t.submitAnswer(),this.setSelectedRect(t.levelNumberProperty.get(),r,a)};o.mouseUpEmitter.addListener(()=>{!o.enabledProperty.get()||this.mouseDownCell!==s||e.value!==cm.AWAITING_USER_INPUT&&e.value!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK||h()}),o.touchUpEmitter.addListener(()=>{o.enabledProperty.get()&&(this.touchUpCell===s&&e.value===cm.AWAITING_USER_INPUT?h():this.touchUpCell=s)}),t.stateProperty.lazyLink(e=>{e!==cm.AWAITING_USER_INPUT||o.enabledProperty.get()||this.setCellsToDefaultColor(t.levelNumberProperty.get())})}})})}),this.addChild(i),t.stateProperty.link((e,i)=>{i===cm.SELECTING_LEVEL&&e===cm.AWAITING_USER_INPUT?(this.setCellsToDefaultColor(t.levelNumberProperty.get()),this.updateCellListenerEnabledStates(t.levelNumberProperty.get(),t.activeLevelModel)):e!==cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK&&e!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK||null===this.activeCell||this.activeCell.setSelected(),(e===cm.LEVEL_COMPLETED||i===cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK&&e===cm.AWAITING_USER_INPUT)&&this.setCellsToDefaultColor(t.levelNumberProperty.get()),e!==cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK&&e!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK||(this.cellPointer.visible=!1),this.pickable=e!==cm.LEVEL_COMPLETED})}enableAllCells(t){this.cellListeners[t].forEach(t=>{t.enabledProperty.set(!0)})}updateCellListenerEnabledStates(t,e){const i=e.tableSize;for(let s=1;s<=i;s++)for(let n=1;n<=i;n++)this.cellListeners[t][(s-1)*i+(n-1)].enabledProperty.set(!e.isCellUsed(s,n))}setSelectedRect(t,e,i){this.cells[t][0][i].setSelected(),this.cells[t][e][0].setSelected(),this.cells[t].forEach((t,s)=>{s&&s<=e&&t.forEach((t,e)=>{e&&e<=i&&t.setSelected()})})}setCellsToDefaultColor(t){this.cellPointer.visible=!1,super.setCellsToDefaultColor(t)}refreshLevel(t){super.refreshLevel(t),this.enableAllCells(t)}}Qp.register("FactorScreenTableNode",hV);const cV=hV;class dV extends ab{constructor(t){super(t,new cV(t),new tV(t.stateProperty,t.problemModel.multiplicandProperty,t.problemModel.multiplierProperty,t.problemModel.productProperty),[nf.factorLevel1ImageProperty,nf.factorLevel2ImageProperty,nf.factorLevel3ImageProperty],{showKeypad:!1,titleString:jp.factorStringProperty,levelSelectButtonColor:"#FFC266"})}}Qp.register("FactorView",dV);const uV=dV;class pV extends bn{constructor(t){super(()=>new Yb(t.tandem.createTandem("model")),t=>new uV(t),t=(0,bi.Z)({name:jp.factorStringProperty,homeScreenIcon:new ln(new Jb,{maxIconWidthProportion:1,maxIconHeightProportion:1}),backgroundColorProperty:new I.Z($p.BACKGROUND_COLOR),tandem:Y.Z.REQUIRED},t))}}Qp.register("FactorScreen",pV);const mV=pV;class gV extends vm{constructor(t){super(t,{fillEquation:()=>{this.problemModel.productProperty.set(Number(this.inputProperty.get())),this.submitAnswer()}})}setUpUnansweredProblem(){const t=this.selectUnusedMultiplierPair();return!!t&&(this.problemModel.multiplicandProperty.reset(),this.problemModel.multiplierProperty.reset(),this.problemModel.productProperty.reset(),this.problemModel.possiblePointsProperty.reset(),this.problemModel.multiplicandProperty.set(t.multiplicand),this.problemModel.multiplierProperty.set(t.multiplier),!0)}autoAnswer(){const t=Tt.enabled;Tt.enabled=!1;const e=this.activeLevelModel.tableSize*this.activeLevelModel.tableSize,i=e-1;console.log("Automatically answering",i,"of",e,"questions."),_.times(i,()=>{this.problemModel.productProperty.set(this.problemModel.multiplicandProperty.get()*this.problemModel.multiplierProperty.get()),this.activeLevelModel.currentScoreProperty.value+=this.problemModel.possiblePointsProperty.get(),this.activeLevelModel.displayScoreProperty.set(this.activeLevelModel.currentScoreProperty.get()),this.activeLevelModel.markCellAsUsed(this.problemModel.multiplicandProperty.get(),this.problemModel.multiplierProperty.get()),this.stateProperty.set(cm.DISPLAYING_CORRECT_ANSWER_FEEDBACK),this.nextProblem()}),Tt.enabled=t}}Qp.register("MultiplyModel",gV);const yV=gV,fV=$p.SCREEN_ICON_SIZE;class AV extends R.AeJ{constructor(){super(0,0,fV.width,fV.height,{fill:$p.ICON_BACKGROUND_COLOR});const t=.3*fV.width;this.addChild(new R.x12(0,0,t,t,{stroke:"#FFF31E",lineWidth:33,center:this.center})),this.addChild(new R.x12(t,0,0,t,{stroke:"#FFF31E",lineWidth:33,center:this.center}))}}Qp.register("MultiplyScreenIconNode",AV);const vV=AV;class bV extends fb{constructor(t,e,i,s){super(e,i,s),this.productInput.setInteractiveAppearance(!0),t.link((t,e)=>{t===cm.AWAITING_USER_INPUT&&e!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK&&this.productInput.clear(),this.productInput.setFocus(t===cm.AWAITING_USER_INPUT),this.setShowEqual(t!==cm.DISPLAYING_INCORRECT_ANSWER_FEEDBACK)})}}Qp.register("MultiplyEquationNode",bV);const VV=bV;class PV extends Zb{constructor(t,e,i,s){super(i,e,s,!0),this.problemModel=t,e.lazyLink(t=>{t===cm.AWAITING_USER_INPUT?this.setCellAppearanceForProblem(i.value):t===cm.LEVEL_COMPLETED&&this.setCellsToDefaultColor(i.value)})}refreshLevel(t){super.refreshLevel(t),this.setCellAppearanceForProblem(t)}setCellAppearanceForProblem(t){this.setCellsToDefaultColor(t),this.cells[t][0][this.problemModel.multiplierProperty.get()].setSelected(),this.cells[t][this.problemModel.multiplicandProperty.get()][0].setSelected(),this.cells[t].forEach((t,e)=>{e&&e<=this.problemModel.multiplicandProperty.get()&&t.forEach((t,e)=>{e&&e<=this.problemModel.multiplierProperty.get()&&t.setSelected()})})}}Qp.register("MultiplyScreenTableNode",PV);const wV=PV;class MV extends ab{constructor(t){super(t,new wV(t.problemModel,t.stateProperty,t.levelNumberProperty,t.levelModels),new VV(t.stateProperty,t.problemModel.multiplicandProperty,t.problemModel.multiplierProperty,t.inputProperty),[nf.multiplyLevel1ImageProperty,nf.multiplyLevel2ImageProperty,nf.multiplyLevel3ImageProperty],{titleString:jp.multiplyStringProperty,levelSelectButtonColor:"#D8F58A"})}}Qp.register("MultiplyView",MV);const SV=MV;class TV extends bn{constructor(t){super(()=>new yV(t.tandem.createTandem("model")),t=>new SV(t),t=(0,bi.Z)({name:jp.multiplyStringProperty,homeScreenIcon:new ln(new vV,{maxIconWidthProportion:1,maxIconHeightProportion:1}),backgroundColorProperty:new I.Z($p.BACKGROUND_COLOR),tandem:Y.Z.REQUIRED},t))}}Qp.register("MultiplyScreen",TV);const EV=TV,xV=jp.arithmetic.titleStringProperty,CV=Y.Z.ROOT,IV={credits:{leadDesign:"Michael Dubson, Amanda McGarry",softwareDevelopment:"John Blanco, Michael Dubson, Luisa Vargas",team:"Bryce Gruneich, Karina K. R. Hensberry, Trish Loeblein, Ariel Paul, Kathy Perkins, Beth Stade",qualityAssurance:"Steele Dalton, Jaron Droder, Bryce Griebenow, Elise Morgan, Oliver Orejola, Ben Roberts, Nancy Salpepi, Kathryn Woessner, Bryan Yoelin",thanks:"Thanks to Mobile Learner Labs for working with the PhET development team to convert this simulation to HTML5."}};Kp.launch(()=>{new Hp(xV,[new EV({tandem:CV.createTandem("multiplyScreen")}),new mV({tandem:CV.createTandem("factorScreen")}),new zb({tandem:CV.createTandem("divideScreen")})],IV).start()})})()})()};
OSZAR »