diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b995b5c..767b45f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -10,16 +10,16 @@ jobs: Check_linting_test_and_build: runs-on: ubuntu-latest env: - GITHUB_REGISTERY_PAT: ${{ secrets.GITHUB_TOKEN }} + GITHUB_REGISTRY_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: - node-version: 12 + node-version: 22 - name: Install dependencies run: npm ci - name: Run ESLint - run: npx eslint src + run: npx eslint - name: Run Mocha tests run: npx mocha - name: Check if CookieMonsterDev.js is built correctly diff --git a/.mocharc.json b/.mocharc.json index ea1cd1e..3b0fdf1 100644 --- a/.mocharc.json +++ b/.mocharc.json @@ -1,4 +1,3 @@ { - "recursive": true, - "require": ["esm"] + "recursive": true } diff --git a/.npmrc b/.npmrc index 363267a..6c21cc0 100644 --- a/.npmrc +++ b/.npmrc @@ -1,4 +1,4 @@ always-auth=true registry=https://registry.npmjs.org/ @cookiemonsterteam:registry=https://npm.pkg.github.com -//npm.pkg.github.com/:_authToken=${GITHUB_REGISTERY_PAT} +//npm.pkg.github.com/:_authToken=${GITHUB_REGISTRY_PAT} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 498de50..69badd6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,15 +3,10 @@ repos: rev: v4.0.0-alpha.8 hooks: - id: prettier - args: - - '--print-width=100' - - '--single-quote' - - '--trailing-comma=all' - exclude: &build 'CookieMonster(Dev)?.js(.map)?' - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: trailing-whitespace - exclude: *build + exclude: dist - id: end-of-file-fixer - exclude: *build + exclude: dist diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..1521c8b --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +dist diff --git a/README.md b/README.md index 9981fd3..c889690 100644 --- a/README.md +++ b/README.md @@ -68,11 +68,11 @@ All suggestions are welcome, even the smallest ones. Cookie Monster exposes some of the data it creates to the global scope. This data can be found in the `CookieMonsterData` object after loading Cookie Monster. -Currently we exposes relevant data for buildings and upgrades (PP, colour and bonus income). If you would like us to add any aditional data, please feel free to open an issue or create a PR doing so! +Currently we expose relevant data for buildings and upgrades (PP, colour and bonus income). If you would like us to add any additional data, please feel free to open an issue or create a PR doing so! ## Contributing -To contribute you can fork and clone the repository and run `npm install`. Note that you will need to authenticate to the GitHub Package Registery (see [this documentation](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#authenticating-to-github-packages)). After creating a Public Access Token you should export this variable to $GITHUB_REGISTERY_PAT as defined in `.npmrc`. +To contribute you can fork and clone the repository and run `npm install`. Note that you will need to authenticate to the GitHub Package Registry (see [this documentation](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#authenticating-to-github-packages)). After creating a Public Access Token you should export this variable to $GITHUB_REGISTRY_PAT as defined in `.npmrc`. Please also remember to run `npm run build-dev` after saving all your changes to build the final `CookieMonsterDev.js` file. diff --git a/dist/CookieMonster.js b/dist/CookieMonster.js index 756ac38..07549bc 100644 --- a/dist/CookieMonster.js +++ b/dist/CookieMonster.js @@ -1,3 +1,3 @@ /*! For license information please see CookieMonster.js.LICENSE.txt */ -(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,a,n,i=(n={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",n.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?n.node(o):e.document))throw new Error("Missing root node");for(var a=o.querySelectorAll(t),i=new RegExp("(^|\\s)("+n.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(n.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(a=e.document.createElement("input"),!(!a.setAttribute||(a.setAttribute("type","color"),"color"!=a.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(n.dataProp)?e[n.dataProp]:e[n.dataProp]={},o=arguments[2];return t[i=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(n.dataProp)?e[n.dataProp]:e[n.dataProp]={};var a=arguments[1];for(var i in a)a.hasOwnProperty(i)&&(t[i]=a[i]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(n.dataProp))return!0;for(var t=1;t=3&&(a=s[0].match(l))&&(n=s[1].match(l))&&(i=s[2].match(l)))return o.format="rgb",o.rgba=[parseFloat(a[1])||0,parseFloat(n[1])||0,parseFloat(i[1])||0,null],s.length>=4&&(r=s[3].match(l))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],a=0;al[a]&&-t[a]+e[a]+s[a]/2>l[a]/2&&e[a]+s[a]-d[a]>=0?e[a]+s[a]-d[a]:e[a],-t[i]+e[i]+s[i]+d[i]-m+m*r>l[i]?-t[i]+e[i]+s[i]/2>l[i]/2&&e[i]+s[i]-m-m*r>=0?e[i]+s[i]-m-m*r:e[i]+s[i]-m+m*r:e[i]+s[i]-m+m*r>=0?e[i]+s[i]-m+m*r:e[i]+s[i]-m-m*r];else var p=[e[a],e[i]+s[i]-m+m*r];var u=p[a],h=p[i],g=o.fixed?"fixed":"absolute",f=(p[0]+d[0]>e[0]||p[0]0?Math.ceil(s/o):0,n=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),i=e.paletteHeight?Math.min(e.paletteHeight,n):n),a&&(r=a*i+(a-1)*e.paletteSpacing),{cols:o,rows:a,cellW:n,cellH:i,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){return"v"===e.mode.charAt(1).toLowerCase()?"v":"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=n.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!i(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{i(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=n.strList(e),o=0;o127.5},this.hide=function(){m()&&(n.removeClass(a.targetElement,n.pub.activeClassName),n.picker.wrap.parentNode.removeChild(n.picker.wrap),delete n.picker.owner)},this.show=function(){s()},this.redraw=function(){m()&&s()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||n.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(n.setDataAttr(this.targetElement,"current-color",t),e&n.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&n.flags.leaveAlpha)&&this.alphaElement){var a=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(a)}e&n.flags.leavePreview||!this.previewElement||((n.isTextInput(this.previewElement)||n.isButton(this.previewElement)&&!n.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),m()&&(l(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(n.isTextInput(this.previewElement)||n.isButton(this.previewElement)&&!n.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var a=[];if(e){a.push({image:n.genColorPreviewGradient(e,t,o?o-n.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var i=n.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);a.push({image:"url('"+i.canvas.toDataURL()+"')",position:(t||"left")+" top",size:i.width+"px "+i.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else a.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},s=0;s=0;h-=1){var g=u[h];if(g)if(n.pub.presets.hasOwnProperty(g)){for(var p in n.pub.presets[g])if(n.pub.presets[g].hasOwnProperty(p))try{i(p,n.pub.presets[g][p])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",g)}var f=["preset"];for(var p in o)if(o.hasOwnProperty(p)&&-1===f.indexOf(p))try{i(p,o[p])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=n.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=n.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof n.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,n.addClass(this.targetElement,n.pub.className),n.instances.push(this),n.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),n.isButtonEmpty(this.targetElement))){n.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var k=n.getCompStyle(this.targetElement);(parseFloat(k["min-width"])||0)-1){var b=n.parseColorString(M);this._currentFormat=b?b.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(M),void 0!==y&&this.processAlphaInput(y),this.random&&this.randomize.apply(this,Array.isArray(this.random)?this.random:[])}},n.pub.className="jscolor",n.pub.activeClassName="jscolor-active",n.pub.looseJSON=!0,n.pub.presets={},n.pub.presets.default={},n.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},n.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},n.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},n.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},n.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},n.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},n.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},n.pub.sliderInnerSpace=3,n.pub.chessboardSize=8,n.pub.chessboardColor1="#666666",n.pub.chessboardColor2="#999999",n.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],n.pub.init=function(){if(!n.initialized)for(e.document.addEventListener("mousedown",n.onDocumentMouseDown,!1),e.document.addEventListener("keyup",n.onDocumentKeyUp,!1),e.addEventListener("resize",n.onWindowResize,!1),e.addEventListener("scroll",n.onWindowScroll,!1),n.pub.install(),n.initialized=!0;n.readyQueue.length;)n.readyQueue.shift()()},n.pub.install=function(e){var t=!0;try{n.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(n.pub.lookupClass)try{n.installBySelector("input."+n.pub.lookupClass+", button."+n.pub.lookupClass,e)}catch(e){}return t},n.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(n.initialized?e():n.readyQueue.push(e),!0)},n.pub.trigger=function(e){var t=function(){n.triggerGlobal(e)};n.initialized?t():n.pub.ready(t)},n.pub.hide=function(){n.picker&&n.picker.owner&&n.picker.owner.hide()},n.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),n.genColorPreviewCanvas(e).canvas.toDataURL()},n.pub.background=function(e){var t=[];t.push(n.genColorPreviewGradient(e));var o=n.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},n.pub.options={},n.pub.lookupClass="jscolor",n.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+n.docsRef),!1},n.register(),n.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=i),i}))}},t={};function o(a){var n=t[a];if(void 0!==n)return n.exports;var i=t[a]={exports:{}};return e[a].call(i.exports,i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";class e{constructor(e,t,o){this.defaultValue=e,this.type=t,this.group=o}}function t(e,t){Game.promptWrapL.className="framed",Game.promptL.innerHTML=`${e}
`,Object.keys(t).forEach((e=>{const o=document.createElement("a");o.id=`promptOption${e}`,o.className="option",o.onclick=function(){PlaySound("snd/tick.mp3"),t[e][1]()},o.textContent=t[e][0],Game.promptL.children[1].appendChild(o)})),Game.promptAnchorL.style.display="block",Game.darkenL.style.display="block",Game.promptL.focus(),Game.promptOn=1,Game.UpdatePrompt()}function a(e,t,o,n){(1===Game.mods.cookieMonsterFramework.saveData[e].settings[o]||n)&&3===t&&!1===window.cookieMonsterFrameworkData.isInitializing||1===t?(l("CMFlashScreen").style.backgroundColor=Game.mods.cookieMonsterFramework.saveData[e].settings[`Colour${o}`],l("CMFlashScreen").style.opacity="0.5",3===t?(l("CMFlashScreen").style.display="inline",setTimeout((()=>{a(e,2,o,!0)}),1e3/Game.fps)):setTimeout((()=>{a(e,0,o,!0)}),1e3/Game.fps)):2===t?(l("CMFlashScreen").style.opacity="1",setTimeout((()=>{a(e,1,o,!0)}),1e3/Game.fps)):0===t&&(l("CMFlashScreen").style.display="none")}function n(){Object.keys(Game.mods.cookieMonsterFramework.saveData).forEach((e=>{const t=JSON.stringify(Game.mods.cookieMonsterFramework.saveData[e]),o=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),a=new RegExp(`${e}.*(;|$)`),n=o.match(a);if(null!==n){const a=o.replace(n[0],`${e}:${t}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(a)}!END!`))}}))}function i(e,t){void 0===Game.mods.cookieMonsterFramework.saveData[e].headers[t]&&(Game.mods.cookieMonsterFramework.saveData[e].headers[t]=1),0===Game.mods.cookieMonsterFramework.saveData[e].headers[t]?Game.mods.cookieMonsterFramework.saveData[e].headers[t]=1:Game.mods.cookieMonsterFramework.saveData[e].headers[t]=0,n()}var r=o(877),s=o.n(r);function c(e,t,o,a,n){if((1===Game.mods.cookieMonsterFramework.saveData[e].settings[o]||n)&&!1===window.cookieMonsterFrameworkData.isInitializing){const o=new Audio(t);Game.mods.cookieMonsterFramework.saveData[e].settings.GeneralSound?o.volume=Game.mods.cookieMonsterFramework.saveData[e].settings[a]/100*(Game.volume/100):o.volume=Game.mods.cookieMonsterFramework.saveData[e].settings[a]/100,o.play()}}function d(e,t){null!==l(`slider${e}${t}`)&&(l(`slider${e}${t}right`).innerHTML=`${l(`slider${e}${t}`).value}%`,Game.mods.cookieMonsterFramework.saveData[e].settings[t]=Math.round(l(`slider${e}${t}`).value)),n()}function m(e,t){t.disconnect(),"log"===Game.onMenu?function(){const e=l("menu").children[1];if(e.insertBefore(function(){const e=document.createElement("div");e.className="subsection",e.id="cookieMonsterFrameworkMenuSection";const t=document.createElement("div");t.className="title",t.innerHTML="Cookie Monster Mod Family";const o=document.createElement("span");if(o.style.cursor="pointer",o.style.display="inline-block",o.style.height="14px",o.style.width="14px",o.style.borderRadius="7px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="13px",o.style.verticalAlign="middle",o.textContent=Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu?"-":"+",o.onclick=function(){i("cookieMonsterFramework","infoMenu"),Game.UpdateMenu()},t.appendChild(o),e.appendChild(t),Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu){const t=document.createElement("div");t.className="listing",t.innerHTML='Cookie Monster Team\noffers a suite of tools to enhance your game experience.
\nOriginally known from our work on the Cookie Monster add-on we are now expanding and working on new tools within the Cookie Monster Mod Family.
\nKeep an eye on our GitHub to see future work or use it to report bugs or feature requests!
\n',e.appendChild(t)}return e}(),e.children[1]),Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu){const e=Game.mods.cookieMonsterFramework.listeners.infoMenu;for(let t=0;t{void 0===e.settings||void 0===e.settings[o]?n[o]=t[o].defaultValue:n[o]=e.settings[o]})),a.settings=n;const i={};return Object.keys(o).forEach((t=>{void 0===e.headers||void 0===e.headers[t]?i[t]=o[t]:i[t]=e.headers[t]})),a.headers=i,Object.keys(e).forEach((t=>{"settings"!==t&&"headers"!==t&&(a[t]=e[t])})),void 0===a.favouriteSettings&&(a.favouriteSettings=[]),a}(r,o,a),n(),i(),Object.keys(Game.mods.cookieMonsterFramework.saveData[e].settings).forEach((e=>{void 0!==o[e].func&&o[e].func()})),Game.UpdateMenu()}function g(){}const f={};function k(e){h("cookieMonsterFramework",e,f,u,g)}const C={init:function(){window.cookieMonsterFrameworkData={isInitializing:!0},new MutationObserver(m).observe(document.getElementById("menu"),{attributes:!0,childList:!0,subtree:!0}),function(){const e=document.createElement("div");e.id="CMFlashScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",e.style.pointerEvents="none",l("wrapper").appendChild(e)}(),Game.registerHook("draw",p),void 0===Game.modSaveData.cookieMonsterFramework&&k("{}"),window.cookieMonsterFrameworkData.isInitializing=!1},load:k,save:function(){return JSON.stringify(Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework)},listeners:{infoMenu:[],optionsMenu:[]},saveData:{cookieMonsterFramework:{headers:{},settings:{}}}},M=function(){"undefined"==typeof cookieMonsterFrameworkData&&Game.registerMod("cookieMonsterFramework",C)},y=function(e){Game.mods.cookieMonsterFramework.saveData[e]={favouriteSettings:[],headers:{},settings:{}}},b={createInfoListing:function(e){const t=document.createElement("div");return t.className="listing",t.innerHTML=e,t},createOptionsListing:function(e,o,i,m,p){const u=document.createElement("div");if(u.className="listing",1===Game.mods.cookieMonsterFramework.saveData[e].settings.FavouriteSettings&&u.appendChild(function(e,t,o){const a=document.createElement("a");return o.includes(t)?(a.innerText="★",a.style.color="yellow"):a.innerText="☆",a.className="option",a.onclick=function(){!function(e,t){Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.includes(t)?Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings=Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.filter((e=>e!==t)):Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.push(t),n()}(e,t),n(),Game.UpdateMenu()},a.onmouseover=function(){Game.tooltip.draw(this,escape('
Click to set this setting as favourite and show it in \'favourite\' settings at the top of the Cookie Monster Settings
'))},a.onmouseout=function(){Game.tooltip.hide()},a.appendChild(document.createTextNode(" ")),a}(e,o,Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings)),"bool"===i[o].type){const t=document.createElement("a");i[o].toggle&&0===Game.mods.cookieMonsterFramework.saveData[e].settings[o]?t.className="option off":t.className="option",t.id=`${e}Options${o}`,t.onclick=function(){!function(e,t,o){Game.mods.cookieMonsterFramework.saveData[e].settings[t]+=1,Game.mods.cookieMonsterFramework.saveData[e].settings[t]===o[t].label.length?(Game.mods.cookieMonsterFramework.saveData[e].settings[t]=0,o[t].toggle&&(l(`${e}Options${t}`).className="option off")):l(`${e}Options${t}`).className="option",void 0!==o[t].func&&o[t].func(),n()}(e,o,i),Game.UpdateMenu()},t.textContent=i[o].label[Game.mods.cookieMonsterFramework.saveData[e].settings[o]],u.appendChild(t);const a=document.createElement("label");return a.textContent=i[o].desc,a.style.lineHeight="1.6",u.appendChild(a),u}if("vol"===i[o].type){const t=document.createElement("div");t.className="sliderBox";const a=document.createElement("div");a.style.float="left",a.innerHTML=i[o].desc,t.appendChild(a);const n=document.createElement("div");n.id=`slider${e}${o}right`,n.style.float="right",n.innerHTML=`${Game.mods.cookieMonsterFramework.saveData[e].settings[o]}%`,t.appendChild(n);const r=document.createElement("input");r.className="slider",r.id=`slider${e}${o}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],r.oninput=function(){d(e,o),Game.UpdateMenu()},r.onchange=function(){d(e,o),Game.UpdateMenu()},t.appendChild(r),u.appendChild(t);const s=document.createElement("a");return s.className="option",s.onclick=function(){c(e,Game.mods.cookieMonsterFramework.saveData[e].settings[o.replace("Volume","SoundURL")],o.replace("Volume","Sound"),o,!0)},s.textContent="Test sound",u.appendChild(s),u}if("url"===i[o].type){const a=document.createElement("span");a.className="option",a.textContent=`${i[o].label} `,a.style.lineHeight="1.6",u.appendChild(a);const r=document.createElement("input");r.id=`${e}Options${o}`,r.className="option",r.type="text",r.readOnly=!0,r.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],r.style.width="300px",u.appendChild(r),u.appendChild(document.createTextNode(" "));const s=document.createElement("input");s.id=`${e}Options${o}Prompt`,s.className="option",s.type="text",s.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o];const c=document.createElement("a");c.className="option",c.onclick=function(){t(s.outerHTML,[["Save",function(){Game.mods.cookieMonsterFramework.saveData[e].settings[o]=l(`${e}Options${o}Prompt`).value,n(),Game.ClosePrompt(),Game.UpdateMenu()}],["Cancel",function(){Game.ClosePrompt()}]])},c.textContent="Edit",u.appendChild(c);const d=document.createElement("label");return d.textContent=i[o].desc,d.style.lineHeight="1.6",u.appendChild(d),u}if("colour"===i[o].type){const t=document.createElement("span");t.className="option";const l=document.createElement("input");l.id=o,l.style.width="65px",l.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],t.appendChild(l),new r(l,{hash:!0,position:"right",onInput:function(){Game.mods.cookieMonsterFramework.saveData[e].settings[this.targetElement.id]=this.toHEXString(),m(),n(),Game.UpdateMenu()}});const c=document.createElement("label");if(c.textContent=i[o].desc,c.style.lineHeight="1.6",t.appendChild(c),o.includes("Flash")){const n=document.createElement("a");n.className="option",n.onclick=function(){a(e,3,o.replace("Colour",""),!0)},n.textContent="Test flash",t.appendChild(n)}return u.appendChild(t),s().init(),u}if("numscale"===i[o].type){const t=document.createElement("span");t.className="option",t.textContent=`${i[o].label} `,t.style.lineHeight="1.6",u.appendChild(t);const a=document.createElement("input");a.id=`${e}Options${o}`,a.className="option",a.type="number",a.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],a.min=i[o].min,a.max=i[o].max,a.oninput=function(){Game.mods.cookieMonsterFramework.saveData[e].settings[o]=this.value,n(),p(),Game.UpdateMenu()},u.appendChild(a),u.appendChild(document.createTextNode(" "));const r=document.createElement("label");return r.textContent=i[o].desc,r.style.lineHeight="1.6",u.appendChild(r),u}if("keycode"===i[o].type){const a=document.createElement("input");a.id=`${e}Options${o}Prompt`,a.className="option",a.type="text",a.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o].displayName;const r=document.createElement("a");r.className="option",r.id=`${e}Options${o}`,r.onclick=function(){t(a.outerHTML,[]),l(`${e}Options${o}Prompt`).addEventListener("keyup",(t=>{!function(e,t,o){const a={key:o.key,altKey:o.altKey,ctrlKey:o.ctrlKey,shiftKey:o.shiftKey,displayName:`${o.shiftKey?"Shift + ":""}${o.altKey?"Alt + ":""}${o.ctrlKey?"Ctrl + ":""}${o.key}`};Game.mods.cookieMonsterFramework.saveData[e].settings[t]=a,n()}(e,o,t),Game.ClosePrompt(),Game.UpdateMenu()}))},r.textContent=Game.mods.cookieMonsterFramework.saveData[e].settings[o].displayName,u.appendChild(r);const s=document.createElement("label");return s.textContent=i[o].desc,s.style.lineHeight="1.6",u.appendChild(s),u}return u},createOptionsSubHeader:function(e,t,o){const a=document.createElement("div");a.className="title",a.style.opacity="0.7",a.style.fontSize="17px",a.appendChild(document.createTextNode(`${o} `));const n=document.createElement("span");return n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=Game.mods.cookieMonsterFramework.saveData[e].headers[t]?"-":"+",n.onclick=function(){i(e,t),Game.UpdateMenu()},a.appendChild(n),a}},G=function(e,t,o){const a=document.createElement("div");a.className="subsection",a.id=`${e}MenuSection`;const n=document.createElement("div");n.className="title",n.style.fontSize="18px",n.innerHTML=t;const r=document.createElement("span");return r.style.cursor="pointer",r.style.display="inline-block",r.style.height="14px",r.style.width="14px",r.style.borderRadius="7px",r.style.textAlign="center",r.style.backgroundColor="#C0C0C0",r.style.color="black",r.style.fontSize="13px",r.style.verticalAlign="middle",r.textContent=Game.mods.cookieMonsterFramework.saveData[e].headers[o]?"-":"+",r.onclick=function(){i(e,o),Game.UpdateMenu()},n.appendChild(r),a.appendChild(n),a},v={createFlash:a,createNotification:function(e,t,o,a){1===Game.mods.cookieMonsterFramework.saveData[e].settings[t]&&"hidden"===document.visibilityState&&!1===window.cookieMonsterFrameworkData.isInitializing&&new Notification(o,{body:a,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})},cookieMonsterPrompt:t,playCMSound:c},w={loadMod:h,saveFramework:n},x=class extends e{constructor(e,t,o,a){super(e,t,o),this.desc=a}},T=class extends e{constructor(e,t,o,a,n,i,r){super(e,t,o),this.label=a,this.desc=n,this.min=i,this.max=r}},S=class extends e{constructor(e,t,o,a,n,i){super(e,t,o),this.label=a,this.desc=n,this.toggle=i}},F=class extends e{constructor(e,t,o,a,n,i,r){super(e,t,o),this.label=a,this.desc=n,this.toggle=i,void 0!==r&&(this.func=r)}},E=class extends e{constructor(e,t,o,a,n){super(e,t,o),this.label=a,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}};function B(){Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerButtons&&Game.elderWrath?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")}let P,N,O,D,L,A,W,j,$,U,H,R,I,z,V,_,X,Q,q,Y,K,J,Z,ee,te,oe,ae,ne,ie,re,se,le,ce,de,me,pe,ue=0,he=0,ge=0,fe=0,ke=0,Ce=0,Me=0,ye=0,be=0,Ge=0,ve=0,we=0,xe=0,Te=0,Se=0,Fe=1,Ee=1,Be=1,Pe=0,Ne=0,Oe=0,De=0,Le={},Ae={},We={},je={},$e=0,Ue=0,He=[0,null],Re=0,Ie=0,ze={},Ve={},_e={},Xe={},Qe={},qe=0,Ye=0,Ke=[],Je=0,Ze=0,et=[],tt=0,ot=0,at=[],nt=0,it=0,rt=[],st=0,lt=0,ct={},dt={},mt=0,pt=0,ut=0,ht=[],gt={},ft=0,kt={0:[0,0,0],1:[0,0,0],2:[0,0,0],3:[0,0,0],4:[0,0,0],5:[0,0,0],6:[0,0,0],7:[0,0,0],8:[0,0,0],9:[0,0,0],10:[0,0,0]},Ct=[],Mt=[],yt=[];function bt(e){let t=0;return Game.dragonAuras[ne].name!==e&&Game.dragonAuras[ie].name!==e||(t=1),("Reality Bending"===Game.dragonAuras[ne].name||"Reality Bending"===Game.dragonAuras[ie].name&&Game.dragonLevel>=Game.dragonAurasBN[e].id+4)&&(t+=.1),t}function Gt(){let e=.25;return e*=1+bt("Earth Shatterer"),e}function vt(e,t){return void 0===de[e]?void 0===t?1:t:de[e]}function wt(e){const t=Mt[e];return(!t||1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function xt(e){return Game.dragonAuras[ne].name===e||Game.dragonAuras[ie].name===e}function Tt(e){if(Game.hasGod){void 0===Ct.Temple.minigame&&(Ct.Temple.minigame=Game.Objects.Temple.minigame);const t=Ct.Temple.minigame.gods[e];if(re===t.id)return 1;if(se===t.id)return xt("Supreme Intellect")?1:2;if(le===t.id)return xt("Supreme Intellect")?2:3}return!1}function St(e,t){let o=t;if(wt("Season savings")&&(o*=.99),wt("Santa's dominion")&&(o*=.99),wt("Faberge egg")&&(o*=.99),wt("Divine discount")&&(o*=.99),wt("Fortune #100")&&(o*=.99),o*=1-.02*bt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&wt(e.fortune.name)&&(o*=.93),o*=vt("buildingCost"),Ct.Temple.minigameLoaded){const e=Tt("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function Ft(e,t,o,a,n,i){const r=void 0===i?0:i;let s=n,l=o,c=0;-1===n&&(s=l),n||(s=Game.buyBulk);for(let o=0;o0&&(c+=o,l-=1)}return c}const Et=["","","M","G","T","P","E","Z","Y"],Bt=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],Pt=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let Nt,Ot,Dt,Lt,At,Wt,jt,$t,Ut,Ht,Rt,It,zt,Vt,_t,Xt,Qt,qt=[],Yt=[],Kt=[],Jt={},Zt=Date.now(),eo=Date.now();function to(e,t,o){const a=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleDecimals+1;if(e===1/0)return"Infinity";if(void 0===e)return"0";if(0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale)return Jt.Beautify(e,t);if(Number.isFinite(e)){if(e<0)return`-${to(Math.abs(e))}`;let n="";if(0===e)return e.toString();if(e>.001&&e=.01&&e=.01&&e=.01&&e{l(`productPrice${Game.Objects[e].id}`).style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[`Colour${t[e].colour}`]})),l(`storeBulk${ut}`).style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(Le).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=to(Ft(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?(e=Object.keys(Le).map((e=>{const t={};return t.name=e,t.pp=Le[e].pp,t.colour=Le[e].colour,t})),e.sort(((e,t)=>ho.indexOf(e.colour)===ho.indexOf(t.colour)?e.pp-t.pp:ho.indexOf(e.colour)-ho.indexOf(t.colour)))):2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?(e=Object.keys(t).map((e=>{const o={};return o.name=e,o.pp=t[e].pp,o.colour=t[e].colour,o})),e.sort(((e,t)=>ho.indexOf(e.colour)===ho.indexOf(t.colour)?e.pp-t.pp:ho.indexOf(e.colour)-ho.indexOf(t.colour)))):3===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings&&(e=Object.keys(je).map((e=>{const t={};return t.name=e,t.id=Game.Objects[e].id,t.amountUntilNext=je[e].AmountNeeded,t.priceUntilNext=je[e].price,t})),e.sort(((e,t)=>e.id-t.id)),e.sort(((e,t)=>(101!==e.amountUntilNext?e.priceUntilNext:1/0)-(101!==t.amountUntilNext?t.priceUntilNext:1/0)))):(e=Object.keys(Le).map((e=>{const t={};return t.name=e,t.id=Game.Objects[e].id,t})),e.sort(((e,t)=>e.id-t.id)));for(let t=0;t{Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradesNeverCollapse||"products"===e.id?e.style.height="auto":"vaultUpgrades"===e.id?(e.style.height="",e.style.minHeight="0px"):"upgrades"===e.id?(e.style.height="",e.className.includes("hasMenu")?e.style.minHeight="82px":e.style.minHeight="60px"):(e.style.height="",e.style.minHeight="60px")}))}function $o(){if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour>0){let e=0,t=0,o=0,a=0,n=0,i=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;eho.indexOf(e.colour)===ho.indexOf(t.colour)?e.pp-t.pp:ho.indexOf(e.colour)-ho.indexOf(t.colour))):e.sort(((e,t)=>e.price-t.price));const t=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let o=0;o7776e5)return t?"Over 9000 days!":">9000d";l+=a>0?a+(t?1===a?" year":" years":"y")+", ":"",(l.length>0||n>0)&&(l+=n+(t?1===n?" day":" days":"d")+", "),(l.length>0||i>0)&&(l+=i+(t?1===i?" hour":" hours":"h")+", "),(l.length>0||r>0)&&(l+=r+(t?1===r?" minute":" minutes":"m")+", "),l+=s+(t?1===s?" second":" seconds":"s")}else if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat){if(o>315576e4)return"XX:XX:XX:XX:XX";l+=(a<10?"0":"")+a+":",l+=(n<10?"0":"")+n+":",l+=(i<10?"0":"")+i+":",l+=(r<10?"0":"")+r+":",l+=(s<10?"0":"")+s}else{if(o>7776e5)return t?"Over 9000 days!":">9000d";a>0?(l+=a+(t?1===a?" year":" years":"y")+", ",l+=n+(t?1===n?" day":" days":"d")):n>0?(l+=n+(t?1===n?" day":" days":"d")+", ",l+=i+(t?1===i?" hour":" hours":"h")):i>0?(l+=i+(t?1===i?" hour":" hours":"h")+", ",l+=r+(t?1===r?" minute":" minutes":"m")):r>0?(l+=r+(t?1===r?" minute":" minutes":"m")+", ",l+=s+(t?1===s?" second":" seconds":"s")):l+=s+(t?1===s?" second":" seconds":"s")}return l}function Ho(e){let t,o;return e<=0?(o=1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat?"00:00:00:00:00":"Done!",t=io):(o=Uo(e),t=e>300?lo:e>60?so:ro),{text:o,colour:t}}function Ro(){return Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CPSMode?X:0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Game.cookiesPs*(1-Game.cpsSucked):1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Game.cookiesPs*(Re+(1-.05*Ie)):null!==He[1]&&2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink&&1===Game.wrinklers[He[1]].type?Game.cookiesPs*(3*Re/Ie+(1-.05*Ie)):Game.cookiesPs*(Re/Ie+(1-.05*Ie))}function Io(){return 1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?$e:2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?He[0]:0}function zo(e,t,o){const a=document.createElement("div");a.id=e,a.style.height="12px",a.style.margin="0px 10px",a.style.position="relative";const n=document.createElement("div");n.style.width="100%",n.style.height="10px",n.style.margin="auto",n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.right="0px",n.style.bottom="0px";const i=document.createElement("span");i.style.display="inline-block",i.style.textAlign="right",i.style.fontSize="10px",i.style.width="108px",i.style.marginRight="5px",i.style.verticalAlign="text-top",i.textContent=t,n.appendChild(i);for(let e=0;e{let o,a=Game.buyBulk;1===Game.buyMode?Go=a:a=Go,1===a&&(a=Le),10===a&&(a=Ae),100===a&&(a=We),e+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[e].childNodes[1].textContent=Game.Objects[t].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[e].textContent=to(a[t].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[e].className=oo+a[t].colour,o=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPDisplayTime?Uo(Math.round(a[t].pp)):to(Math.round(a[t].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[e].textContent=o;const n=Ho((Game.Objects[t].bulkPrice-(Game.cookies+Io()))/Ro());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[e].className=oo+n.colour,"Done!"===n.text&&Game.cookies{if(!Game.Tiers[e.tieredUpgrades[o].tier].special&&wt(e.tieredUpgrades[o].name)){let a=2;1!==Game.ascensionMode&&wt(e.unshackleUpgrade)&&wt(Game.Tiers[e.tieredUpgrades[o].tier].unshackleUpgrade)&&(a+=1===e.id?.5:.1*(20-e.id)),t*=a}})),Object.keys(e.synergies).forEach((o=>{if(wt(e.synergies[o].name)){const a=e.synergies[o];a.buildingTie1.name===e.name?t*=1+.05*a.buildingTie2.amount:a.buildingTie2.name===e.name&&(t*=1+.001*a.buildingTie1.amount)}})),e.fortune&&wt(e.fortune.name)&&(t*=1.07),e.grandma&&wt(e.grandma.name)&&(t*=1+.01*Ct.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&wt(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){default:t*=1;break;case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06}return t}function aa(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;wt("Thousand fingers")&&(t+=.1),wt("Million fingers")&&(t*=5),wt("Billion fingers")&&(t*=10),wt("Trillion fingers")&&(t*=20),wt("Quadrillion fingers")&&(t*=20),wt("Quintillion fingers")&&(t*=20),wt("Sextillion fingers")&&(t*=20),wt("Septillion fingers")&&(t*=20),wt("Octillion fingers")&&(t*=20),wt("Nonillion fingers")&&(t*=20),wt("Decillion fingers")&&(t*=20),wt("Undecillion fingers")&&(t*=20),wt("Unshackled cursors")&&(t*=25);let o=1,a=0;return Object.keys(Ct).forEach((e=>{"Cursor"!==Ct[e].name&&(a+=Ct[e].amount)})),t*=a,o*=oa(e),o*=Game.magicCpS("Cursor"),o*=vt("cursorCps"),Game.ComputeCps(.1,wt("Reinforced index finger")+wt("Carpal tunnel prevention cream")+wt("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{wt(Game.GrandmaSynergies[e])&&(o*=2)})),wt("Bingo center/Research facility")&&(o*=4),wt("Ritual rolling pins")&&(o*=2),wt("Naughty list")&&(o*=2),wt("Elderwort biscuits")&&(o*=1.02),o*=vt("grandmaCps"),wt("Cat ladies"))for(let e=0;e{"Grandma"!==Ct[e].name&&(n+=Ct[e].amount)})),o*=1+.01*bt("Elder Battalion")*n,o*=Game.magicCpS(t.name),(t.baseCps+a)*o}:o.cps=function(e){let t=1;return t*=oa(e),t*=Game.magicCpS(e.name),e.baseCPS*t},o.baseCps=t.baseCps,o.name=t.name,o.tieredUpgrades=t.tieredUpgrades,o.synergies=t.synergies,o.fortune=t.fortune,o.grandma=t.grandma,o.baseCPS=t.baseCps,o.id=t.id,o.vanilla=t.vanilla,o.unshackleUpgrade=t.unshackleUpgrade,o}function na(e){const t=Game.Upgrades[e],o={};return o.power=t.power,"function"==typeof o.power&&("Sugar crystal cookies"===t.name?o.power=function(){let e=5;return Object.keys(Ct).forEach((t=>{Ct[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(wt("Starlove")&&(e=3),Game.hasGod){const t=Tt("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function ia(){Z=Game.UpgradesOwned,ee=Game.pledges,te=Game.AchievementsOwned,oe=Game.heavenlyPower,ae=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Ct[e];void 0===o&&(Ct[e]=aa(e),o=Ct[e],Vo(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&("Temple"===t.name&&(re=t.minigame.slot[0],se=t.minigame.slot[1],le=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Ct[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=Mt[e];void 0===o&&(Mt[e]=na(e),o=Mt[e]),o.bought=t.bought,Mt[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=yt[e];void 0===o&&(yt[e]=ta(e),o=yt[e]),o.won=t.won,yt[e]=o})),ea(),ne=ue,ie=he}function ra(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className="CMTextBlue",t.textContent=e,t}function sa(e){e.appendChild(ra("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(ra("Bonus Cookies per Click")),e.lastChild.style.display="none";const o=document.createElement("div");o.style.marginBottom="4px",o.style.color="white",o.style.display="none",o.id="CMTooltipCookiePerClick",e.appendChild(o),e.appendChild(ra("Payback Period"));const a=document.createElement("div");a.style.marginBottom="4px",a.id="CMTooltipPP",e.appendChild(a),e.appendChild(ra("Time Left"));const n=document.createElement("div");if(n.id="CMTooltipTime",e.appendChild(n),"b"===Bo){e.appendChild(ra("Production left till next achievement")),e.lastChild.id="CMTooltipProductionLeftHeader";const t=document.createElement("div");t.id="CMTooltipProductionLeft",e.appendChild(t)}if("b"===Bo){e.appendChild(ra("Buildings (price / PP) left till next achievement")),e.lastChild.id="CMTooltipNextAchievementHeader";const t=document.createElement("div");t.id="CMTooltipNextAchievement",e.appendChild(t)}}function la(e,t){let o="";return o=e.pp<=0||e.pp===1/0?mo:e.pp0&&(o=lo),o}function ca(){let e=1;return Object.keys(Game.buffs).forEach((t=>{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function da(e){yt[e]&&0===yt[e].won&&(yt[e].won=1,"shadow"!==Game.Achievements[e].pool&&(te+=1))}function ma(){me=0;let e=1;const t={};Object.keys(Game.Objects).forEach((e=>{if(Game.Objects[e].minigameLoaded&&Game.Objects[e].minigame.effs){const o=Game.Objects[e].minigame.effs;Object.keys(o).forEach((e=>{t[e]?t[e]*=o[e]:t[e]=o[e]}))}})),de=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(ae)*oe*function(){let e=0;if(wt("Heavenly chip secret")&&(e+=.05),wt("Heavenly cookie stand")&&(e+=.2),wt("Heavenly bakery")&&(e+=.25),wt("Heavenly confectionery")&&(e+=.25),wt("Heavenly key")&&(e+=.25),e*=1+.05*bt("Dragon God"),wt("Lucky digit")&&(e*=1.01),wt("Lucky number")&&(e*=1.01),wt("Lucky payout")&&(e*=1.01),Game.hasGod){const t=Tt("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=vt("cps"),wt("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];wt(o.name)&&("function"==typeof o.power?e*=1+.01*Mt[o.name].power(Mt[o.name]):e*=1+.01*o.power)})),wt("Specialized chocolate chips")&&(e*=1.01),wt("Designer cocoa beans")&&(e*=1.02),wt("Underworld ovens")&&(e*=1.03),wt("Exotic nuts")&&(e*=1.04),wt("Arcane sugar")&&(e*=1.05),wt("Increased merriness")&&(e*=1.15),wt("Improved jolliness")&&(e*=1.15),wt("A lump of coal")&&(e*=1.01),wt("An itchy sweater")&&(e*=1.01),wt("Santa's dominion")&&(e*=1.2),wt("Fortune #100")&&(e*=1.01),wt("Fortune #101")&&(e*=1.07),wt("Dragon scale")&&(e*=1.03);let o=1;if(Tt){let t=Tt("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=Tt("ages"),1===t?e*=1+.15*Math.sin(Zt/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(Zt/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(Zt/1e3/86400*Math.PI*2)),t=Tt("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=Tt("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=Tt("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}wt("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const a=te/25;let n=1;if(wt("Santa's milk and cookies")&&(n*=1.05),n*=1+.05*bt("Breath of Milk"),Tt){const e=Tt("mother");1===e?n*=1.1:2===e?n*=1.05:3===e&&(n*=1.03)}n*=vt("milk");let i=1;wt("Kitten helpers")&&(i*=1+.1*a*n),wt("Kitten workers")&&(i*=1+.125*a*n),wt("Kitten engineers")&&(i*=1+.15*a*n),wt("Kitten overseers")&&(i*=1+.175*a*n),wt("Kitten managers")&&(i*=1+.2*a*n),wt("Kitten accountants")&&(i*=1+.2*a*n),wt("Kitten specialists")&&(i*=1+.2*a*n),wt("Kitten experts")&&(i*=1+.2*a*n),wt("Kitten consultants")&&(i*=1+.2*a*n),wt("Kitten assistants to the regional manager")&&(i*=1+.175*a*n),wt("Kitten marketeers")&&(i*=1+.15*a*n),wt("Kitten analysts")&&(i*=1+.125*a*n),wt("Kitten executives")&&(i*=1+.115*a*n),wt("Kitten admins")&&(i*=1+.11*a*n),wt("Kitten strategists")&&(i*=1+.105*a*n),wt("Kitten angels")&&(i*=1+.1*a*n),wt("Fortune #103")&&(i*=1+.05*a*n),Object.keys(Ct).forEach((e=>{const t=Ct[e];let i=t.cps(t);1!==Game.ascensionMode&&(i*=(1+.01*t.level)*o),"Grandma"===t.name&&wt("Milkhelp® lactose intolerance relief tablets")&&(i*=1+.05*a*n),me+=t.amount*i})),wt('"egg"')&&(me+=9),e*=i;let r=1;if(wt("Chicken egg")&&(r*=1.01),wt("Duck egg")&&(r*=1.01),wt("Turkey egg")&&(r*=1.01),wt("Quail egg")&&(r*=1.01),wt("Robin egg")&&(r*=1.01),wt("Ostrich egg")&&(r*=1.01),wt("Cassowary egg")&&(r*=1.01),wt("Salmon roe")&&(r*=1.01),wt("Frogspawn")&&(r*=1.01),wt("Shark egg")&&(r*=1.01),wt("Turtle egg")&&(r*=1.01),wt("Ant larva")&&(r*=1.01),wt("Century egg")){let e=10*Math.floor((eo-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),Ne=1+.1*(1-(1-e/100)**3),r*=Ne}e*=r,wt("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+bt("Radiant Appetite");const s=me*e;Object.keys(Game.CpsAchievements).forEach((e=>{s>=Game.CpsAchievements[e].threshold&&da(Game.CpsAchievements[e].name)})),pe=s;const{n:l}=Game.shimmerTypes.golden,c=bt("Dragon's Fortune");for(let t=0;t{wt(e[o])&&(t+=.1)}))}e*=t}if(wt("Shimmering veil [off]")){let t=.5;wt("Reinforced membrane")&&(t+=.1),wt("Delicate touch")&&(t+=.05),wt("Steadfast murmur")&&(t+=.05),wt("Glittering edge")&&(t+=.05),e*=1+t}wt("Magic shenanigans")&&(e*=1e3),wt("Occult obstruction")&&(e*=0),me=Game.runModHookOnValue("cps",me),e*=ca(),me*=e}const pa=["Fortune #001","Fortune #002","Fortune #003","Fortune #004","Fortune #005","Fortune #006","Fortune #007","Fortune #008","Fortune #009","Fortune #010","Fortune #011","Fortune #012","Fortune #013","Fortune #014","Fortune #015","Fortune #016","Fortune #017","Fortune #018","Fortune #019","Fortune #020","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],ua=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],ha=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],ga=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],fa=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function ka(e){return yt[e]?yt[e].won:0}function Ca(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{wt(Game.GrandmaSynergies[t])&&(e+=1)})),!ka("Elder")&&e>=7&&da("Elder"),!ka("Veteran")&&e>=14&&da("Veteran");let t=0,o=1,a=1,n=1e5;Object.keys(Ct).forEach((e=>{t+=Ct[e].amount,n=Math.min(Ct[e].amount,n),ka("Mathematician")||Ct[e].amount=1&&da("One with everything"),1===o&&da("Mathematician"),1===a&&da("Base 10"),n>=100&&da("Centennial"),n>=150&&da("Centennial and a half"),n>=200&&da("Bicentennial"),n>=250&&da("Bicentennial and a half"),n>=300&&da("Tricentennial"),n>=350&&da("Tricentennial and a half"),n>=400&&da("Quadricentennial"),n>=450&&da("Quadricentennial and a half"),n>=500&&da("Quincentennial"),n>=550&&da("Quincentennial and a half"),n>=600&&da("Sexcentennial"),n>=650&&da("Sexcentennial and a half"),n>=700&&da("Septcentennial"),t>=100&&da("Builder"),t>=500&&da("Architect"),t>=1e3&&da("Engineer"),t>=2500&&da("Lord of Constructs"),t>=5e3&&da("Grand design"),t>=7500&&da("Ecumenopolis"),t>=1e4&&da("Myriad"),Z>=20&&da("Enhancer"),Z>=50&&da("Augmenter"),Z>=100&&da("Upgrader"),Z>=200&&da("Lord of Progress"),Z>=300&&da("The full picture"),Z>=400&&da("When there's nothing left to add"),Z>=500&&da("Kaizen"),Z>=600&&da("Beyond quality"),Z>=700&&da("Oft we mar what's well"),t>=4e3&&Z>=300&&da("Polymath"),t>=8e3&&Z>=400&&da("Renaissance baker"),Ct.Cursor.amount+Ct.Grandma.amount>=777&&da("The elder scrolls");let i=!0;Object.keys(ua).forEach((e=>{wt(ua[e])||(i=!1)})),i&&da("Spooky cookies");let r=!0;if(Object.keys(ha).forEach((e=>{wt(ha[e])||(r=!1)})),r&&da("Let it snow"),wt("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{wt(e[o].name)&&(t+=1)})),t>=e.length&&da("O Fortuna")}}function Ma(e,t){ia(),Ct[e].amount+=t;const o=Ct[e];"Cursor"===e?(o.amount>=1&&da("Click"),o.amount>=2&&da("Double-click"),o.amount>=50&&da("Mouse wheel"),o.amount>=100&&da("Of Mice and Men"),o.amount>=200&&da("The Digital"),o.amount>=300&&da("Extreme polydactyly"),o.amount>=400&&da("Dr. T"),o.amount>=500&&da("Thumbs, phalanges, metacarpals"),o.amount>=600&&da("With her finger and her thumb"),o.amount>=700&&da("Gotta hand it to you"),o.amount>=800&&da("The devil's workshop"),o.amount>=900&&da("All on deck"),o.amount>=1e3&&da("A round of applause")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&da(Game.Objects[o.name].tieredAchievs[e].name)}));const a=te;return ma(),Ca(),a!==te&&ma(),me-Game.cookiesPs}function ya(e,t,o){let a=e,n=0;for(;ae.plantsById[e.plot[Po[1]][Po[0]][0]-1].mature,o=e.plantsById[e.plot[Po[1]][Po[0]][0]-1].name;l("CMTooltipBorder").appendChild(ra("Reward (Current / Maximum)"));const a=document.createElement("div");a.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(a),"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${to(60*Game.cookiesPs*3)}`:"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${to(60*Game.cookiesPs*30)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${to(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${to(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===Bo?function(){const{minigame:e}=Game.Objects.Farm;if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipLump){l("CMTooltipBorder").appendChild(ra("Cookies gained from harvesting:"));let t=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let a=0;a<6;a++)for(let n=0;n<6;n++)if(e.plot[a][n][0]>=1){const i=e.plot[a][n],r=e.plantsById[i[0]-1],s=r.name;let l=!0;o&&r.immortal&&(l=!1),i[1]100+3*(n-1)&&s>0&&(s*=.9),r<5&&(r+=.5*(5-r)),r<5&&s<0&&(s*=.95),Math.max(r+s,1)}(o.val,o.d,e.getRestingVal(o.id),o.mode,Game.Objects.Bank.level);m.textContent="$"+to(p)+(p0&&e=1?l("CMTimerBarAutosaveBar").textContent=Math.ceil(e):l("CMTimerBarAutosaveBar").textContent="",l("CMTimerBarAutosaveTime").textContent=Math.ceil(e),a+=1}else l("CMTimerBarAutosave").style.display="none";0!==Game.shimmerTypes.golden.spawned||Game.Has("Golden switch [off]")?l("CMTimerBarGC").style.display="none":(l("CMTimerBarGC").style.display="",l("CMTimerBarGCMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay>=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",e=Math.max(0,(Game.shimmerTypes.golden.time-Game.shimmerTypes.golden.minTime)/(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime))**5,Yo*=1-e,l("CMTimerBarGCTime").textContent=`${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)} ${Jo()<.01?"<":""}${Jo().toLocaleString("en",{style:"percent"})}`,a+=1),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",function(e){Ko*=1-e}(Math.max(0,(Game.shimmerTypes.reindeer.time-Game.shimmerTypes.reindeer.minTime)/(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime))**5),l("CMTimerBarRenTime").textContent=`${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)} ${Zo()<.01?"<":""}${Zo().toLocaleString("en",{style:"percent"})}`,a+=1):l("CMTimerBarRen").style.display="none";const n={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((e=>{if(Game.buffs[e]){const t=zo(Game.buffs[e].name,Game.buffs[e].name,[{id:`${Game.buffs[e].name}Bar`}]);t.style.display="";let i="";i=void 0!==So[Game.buffs[e].name]?So[Game.buffs[e].name]:co,t.lastChild.children[1].className=ao+i,t.lastChild.children[1].style.color="black",2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay?t.lastChild.children[1].textContent=`${Math.round(Game.buffs[e].time/Game.buffs[e].maxTime*100)}%`:t.lastChild.children[1].textContent="",t.lastChild.children[1].style.width=`${Math.round(Game.buffs[e].time*(o-8*Math.ceil(Game.buffs[e].time/Game.fps).toString().length)/Game.buffs[e].maxTime)}px`,t.lastChild.children[2].textContent=Math.ceil(Game.buffs[e].time/Game.fps),a+=1,n[Game.buffs[e].name]=t}})),Object.keys(n).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(n[e])})),0!==a&&(l("CMTimerBar").style.height=12*a+2+"px"),Do!==a&&(Do=a,Qo())}var e}(),_o(),Ga(),function(){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink&&1===Co){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===yo[t]||void 0===yo[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="center",a.id="CMTooltipWrinkler",o.appendChild(a),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),Mo=t,yo[t]=1}}else yo[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[Mo],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[Mo].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Ct.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=to(e)}}(),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu(),B()}function wa(){P.addLatest(Game.computedMouseCps)}class xa{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){let t=e;t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length);let o=0;for(let e=this.queue.length-1;e>=0&&e>this.queue.length-1-t;e--)o+=this.queue[e];return 0===o?0:o/t}calcSum(e){let t=e;return t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length),0===t?0:this.queue.slice(-t).reduce(((e,t)=>e+t),0)}}function Ta(e){"Cache"in window.CookieMonsterData||(window.CookieMonsterData.Cache={}),Object.keys(e).forEach((t=>{const o=t.replace(/^Cache/,"");void 0===e[t]?window.CookieMonsterData.Cache[o]=void 0:window.CookieMonsterData.Cache[o]=JSON.parse(JSON.stringify(e[t]))}))}function Sa(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let t=Game.cookies+ft;Game.cpsSucked>0&&(t+=$e),st=Math.max(Game.cookiesEarned,t),t*=.05;const o=e-j,a=Math.max(0,Game.cookies-$)/o,n=Math.max(0,$e-U)/o,i=Math.max(0,He[0]-H)/o,r=Math.max(0,t-De)/o,s=(Game.cookieClicks-R)/o;for(let e=0;e{if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode&&1===t)e[o].colour=mo;else{e[o].colour=la(e[o],Fa(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,t));for(let t=0;t{const a=Fa(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,t);Game.cookiesPs?e[o].pp=Math.max(a-(Game.cookies+Io()),0)/Game.cookiesPs+a/e[o].bonus:e[o].pp=a/e[o].bonus,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode&&1===t||ht.push([e[o].pp,t,a])}))}function Pa(){!function(){pt=1/0,ht=[],void 0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop=0),Ba(Le,1),Ba(Ae,10),Ba(We,100),ht.sort(((e,t)=>e[0]-t[0]));let e=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop;if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPOnlyConsiderBuyable)for(;ht[e][2]>Game.cookies&&(e+=1,ht.length!==e+1););pt=ht[e][0],ut=ht[e][1],Ea(Le,1),Ea(Ae,10),Ea(We,100),Ta({CacheMinPP:pt,CacheMinPPBulk:ut,CachePPArray:ht})}(),Object.keys(ze).forEach((e=>{Game.cookiesPs?ze[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+Io()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/ze[e].bonus:ze[e].pp=Game.Upgrades[e].getPrice()/ze[e].bonus,Number.isNaN(ze[e].pp)&&(ze[e].pp=1/0),ze[e].colour=la(ze[e],Game.Upgrades[e].getPrice())})),window.CookieMonsterData.Objects1=JSON.parse(JSON.stringify(Le)),window.CookieMonsterData.Objects10=JSON.parse(JSON.stringify(Ae)),window.CookieMonsterData.Objects100=JSON.parse(JSON.stringify(We)),window.CookieMonsterData.Upgrades=[],Object.entries(ze).forEach((e=>{window.CookieMonsterData.Upgrades[e[0]]=JSON.parse(JSON.stringify(e[1]))}))}function Na(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){ia(),"Shimmering veil [on]"===Mt[e].name?Mt["Shimmering veil [off]"].bought=0:"Golden switch [on]"===Mt[e].name?Mt["Golden switch [off]"].bought=0:Mt[e].bought=(Mt[e].bought+1)%2,Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Z+=1),"Elder Pledge"===e?(ee+=1,ee>0&&da("Elder nap"),ee>=5&&da("Elder slumber")):"Elder Covenant"===e?da("Elder calm"):"Prism heart biscuits"===e?da("Lovely cookies"):"Heavenly key"===e&&da("Wholesome");const t=te;ma(),Ca(),t!==te&&ma();const o=function(){let e=0;wt("Thousand fingers")&&(e+=.1),wt("Million fingers")&&(e*=5),wt("Billion fingers")&&(e*=10),wt("Trillion fingers")&&(e*=20),wt("Quadrillion fingers")&&(e*=20),wt("Quintillion fingers")&&(e*=20),wt("Sextillion fingers")&&(e*=20),wt("Septillion fingers")&&(e*=20),wt("Octillion fingers")&&(e*=20),wt("Nonillion fingers")&&(e*=20),wt("Decillion fingers")&&(e*=20),wt("Undecillion fingers")&&(e*=20),wt("Unshackled cursors")&&(e*=25);let t=0;Object.keys(Ct).forEach((e=>{t+=Ct[e].amount})),t-=Ct.Cursor.amount,e*=t,wt("Plastic mouse")&&(e+=.01*me),wt("Iron mouse")&&(e+=.01*me),wt("Titanium mouse")&&(e+=.01*me),wt("Adamantium mouse")&&(e+=.01*me),wt("Unobtainium mouse")&&(e+=.01*me),wt("Eludium mouse")&&(e+=.01*me),wt("Wishalloy mouse")&&(e+=.01*me),wt("Fantasteel mouse")&&(e+=.01*me),wt("Nevercrack mouse")&&(e+=.01*me),wt("Armythril mouse")&&(e+=.01*me),wt("Technobsidian mouse")&&(e+=.01*me),wt("Plasmarble mouse")&&(e+=.01*me),wt("Miraculite mouse")&&(e+=.01*me),wt("Aetherice mouse")&&(e+=.01*me),wt("Omniplast mouse")&&(e+=.01*me),wt("Fortune #104")&&(e+=.01*me);let o=1;if(wt("Santa's helpers")&&(o*=1.1),wt("Cookie egg")&&(o*=1.1),wt("Halo gloves")&&(o*=1.1),wt("Dragon claw")&&(o*=1.03),wt("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,wt("Luminous gloves")?20:10)),o*=vt("click"),Ct.Temple.minigameLoaded&&Tt){const e=Tt("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}Object.keys(Game.buffs).forEach((e=>{void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick)})),o*=1+.05*bt("Dragon Cursor");let a=o*Game.ComputeCps(1,wt("Reinforced index finger")+wt("Carpal tunnel prevention cream")+wt("Ambidextrous"),e);return a=Game.runModHookOnValue("cookiesPerClick",a),Game.hasBuff("Cursed finger")&&(a=Game.buffs["Cursed finger"].power),a}()-Game.computedMouseCps;return o?[me-Game.cookiesPs,o]:[me-Game.cookiesPs]}return[]}function Oa(e){const t={};return Object.keys(Game.Objects).forEach((o=>{t[o]={},t[o].bonus=Ma(o,e),1!==e&&(Y=1)})),t}function Da(){Object.keys(Game.Objects).forEach((e=>{Le[e].price=Fa(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),Ae[e].price=Fa(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),We[e].price=Fa(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100),je[e].price=Fa(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,je[e].AmountNeeded)})),Ta({CacheObjectsNextAchievement:je})}function La(){Le=Oa(1),Ae=Oa(10),We=Oa(100),function(){ze={};for(let e=0;e0?e/=t:e=0,Ke=Aa(7,e,Ee),qe=2*Ke[1]/Ee,Ye=Ke[2]/60/60/6/Fe,et=Aa(6,e,Be),Je=2*et[1]/Be,Ze=et[2]/60/60/6/Fe,at=Aa(7,7*e,Ee),tt=2*at[1]/Ee,ot=at[2]/60/60/6/Fe,rt=Aa(6,7*e,Be),nt=2*rt[1]/Be,it=rt[2]/60/60/6/Fe,Ta({CacheChainMaxReward:Ke,CacheChainRequired:qe,CacheChainRequiredNext:Ye,CacheChainWrathMaxReward:et,CacheChainWrathRequired:Je,CacheChainWrathRequiredNext:Ze,CacheChainFrenzyMaxReward:at,CacheChainFrenzyRequired:tt,CacheChainFrenzyRequiredNext:ot,CacheChainFrenzyWrathMaxReward:rt,CacheChainFrenzyWrathRequired:nt,CacheChainFrenzyWrathRequiredNext:it})}function ja(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),a=e-Q,n=Math.max(0,o-q)/a;for(let e=0;e{e.push(Game.Upgrades[t])})),e.sort((function(e,t){return e.order>t.order?1:e.order{const o=e[t];if(0===o.bought){let e="";e+=function(e){let t="crate upgrade missing";"prestige"===e.pool&&(t+=" heavenly");let o=0;Game.prefs.crates||(o=1),o&&(t+=" noFrame");let{icon:a}=e;e.iconFunction&&(a=e.iconFunction());const n=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?Xe+=e:"cookie"===o.pool?Qe+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(_e+=e)}}))}function Ua(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),Oe=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(Oe*=2)}Ta({CacheSeaSpec:Oe})}function Ha(){ke=900*Se/.15,ke*=Fe;const e=ca();e>0?ke/=e:ke=0,Ce=Ee*(.15*ke)+13,Me=Be*(.15*ke)+13,ye=7*ke,be=Ee*(.15*ye)+13,Ge=Be*(.15*ye)+13,ve=2*ke,we=.15*ve,xe=0;let t=0,o=0;Object.keys(Game.Objects).forEach((e=>{Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&(o+=1)})),Object.keys(Game.Objects).forEach((e=>{(Game.Objects[e].amountxe&&(xe=2*Game.Objects[e].price,Te=e)})),Ta({CacheLucky:ke,CacheLuckyReward:Ce,CacheLuckyWrathReward:Me,CacheLuckyFrenzy:ye,CacheLuckyRewardFrenzy:be,CacheLuckyWrathRewardFrenzy:Ge,CacheConjure:ve,CacheConjureReward:we,CacheEdifice:xe,CacheEdificeBuilding:Te})}function Ra(){let e=1,t=1,o=1;wt("Green yeast digestives")&&(o*=1.01),wt("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),Ee=o*e,Be=o*t,Fe=1,0===Game.shimmerTypes.golden.n&&(Fe*=1+1.23*Game.auraMult("Dragon's Fortune")),Ta({CacheGoldenCookiesMult:Ee,CacheWrathCookiesMult:Be,CacheDragonsFortuneMultAdjustment:Fe})}function Ia(e){const t={};Object.keys(Game.Objects).forEach((o=>{if(0!==Object.keys(je).length&&je[o].TotalNeeded>Game.Objects[o].amount&&!e)t[o]={AmountNeeded:je[o].TotalNeeded-Game.Objects[o].amount,TotalNeeded:je[o].TotalNeeded,price:Fa(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,je[o].TotalNeeded-Game.Objects[o].amount)};else{const e=function(e){const t=Game.AchievementsOwned;let o=100,a=100;for(;o>-1;)if(Ma(e,o),te>t)a=o,o-=10;else{if(100===o)return 101;for(o+=1;o<=a;){if(Ma(e,o),te>t)return o;o+=1}}return 101}(o);t[o]={AmountNeeded:e,TotalNeeded:Game.Objects[o].amount+e,price:Fa(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,e)}}})),je=t,Ta({CacheObjectsNextAchievement:je})}function za(){$e=0,Ue=0,He=[0,null];for(let e=0;eHe[0]&&(He=[t,e]))}Ta({CacheWrinklersTotal:$e,CacheWrinklersNormal:Ue,CacheWrinklersFattest:He})}function Va(){ea(),za(),Ha(),Ra(),Wa(),$a(),Ua(),N=new xa(xo[xo.length-1]),O=new xa(xo[xo.length-1]),D=new xa(xo[xo.length-1]),L=new xa(xo[xo.length-1]),A=new xa(To[To.length-1]),W=new xa(5),P=new xa(20*To[To.length-1]),ja(),Ia(),Sa(),La(),Da(),Pa()}function _a(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Xa(e,t){if("b"===e){if(l("tooltip").innerHTML=Game.Objects[t].tooltip(),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAmor){const e=Fa(t,Game.Objects[t].basePrice,0,Game.Objects[t].free,Game.Objects[t].amount),o=e-Game.Objects[t].totalCookies;o>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${to(o)} ${1===Math.floor(o)?"cookie":"cookies"} left to amortize (${Ho((e-Game.Objects[t].totalCookies)/(Game.Objects[t].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(to(Game.Objects[t].bulkPrice)).join(to((Game.Objects[t],Game.Objects[t].basePrice,Game.Objects[t].amount,Game.Objects[t].free,Game.buyBulk,1))))}else if("u"===e){if(!Game.UpgradesInStore[t])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[t],"store")}else"s"===e?l("tooltip").innerHTML=Game.lumpTooltip():"g"===e?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(t)():"p"===e?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(t[0],t[1])():"ha"===e?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"sm"===e?l("tooltip").innerHTML=Game.Objects.Bank.minigame.goodTooltip(t)():"wb"===e?l("tooltip").innerHTML="":"pag"===e?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(t)():"pas"===e&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(t[0])());if("b"===e&&1===Game.buyMode||"u"===e||"s"===e||"g"===e||"p"===e&&!Game.keys[16]||"ha"===e||"sm"===e||"wb"===e||"pag"===e||"pas"===e&&-1!==t[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return Bo=e,Po=t,Ga(),l("tooltip").innerHTML}function Qa(){1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Favicon&&It>0?ct.wrath?l("CMFavicon").href="https://CookieMonsterTeam.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://CookieMonsterTeam.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}function qa(){Ct=[],Object.keys(Game.Objects).forEach((e=>{Ct[e]=aa(e)})),Mt=[],Object.keys(Game.Upgrades).forEach((e=>{Mt[e]=na(e)})),yt=[],Object.keys(Game.Achievements).forEach((e=>{yt[e]=ta(e)})),ia()}function Ya(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(Yt[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("g",`${e}`)),"this"),Game.tooltip.wobble()})}))}function Ka(){if(!jt&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:e}=Game.Objects["Wizard tower"];At=e.draw,Game.Objects["Wizard tower"].minigame.draw=function(){At(),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GrimoireBar&&e.magic{if(t=a,Game.Objects[t].amount{ce=!0})),Scale:new F(2,"bool","Notation",["Game's setting scale","Metric","Short scale","Short scale (Abbreviated)","Scientific notation","Engineering notation"],"Change how long numbers are formatted",!1,(()=>{an()})),ScaleDecimals:new F(2,"bool","Notation",["1 decimals","2 decimals","3 decimals"],'Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game\'s Setting Scale"',!1,(()=>{an()})),ScaleSeparator:new F(0,"bool","Notation",[". for decimals (standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(()=>{an()})),ScaleCutoff:new T(999999,"numscale","Notation","Notation cut-off point: ","The number from which Cookie Monster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),TimeFormat:new S(0,"bool","Notation",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX","Time XXx, XXx"],"Change the time format",!1),DetailedTime:new F(1,"bool","Notation",["Detailed time OFF","Detailed time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DetailedTime?Game.sayTime=bo:Game.sayTime=Jt.sayTime})),PPDisplayTime:new S(0,"bool","Notation",["PP as value (standard)","PP as time unit"],"Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.",!1),BuildColour:new F(1,"bool","Colours",["Building colours OFF","Building colours ON"],"Colour code buildings",!0,(()=>{Wo()})),PPOnlyConsiderBuyable:new S(0,"bool","Colours",["Don't ignore non-buyable","Ignore non-buyable"],"Makes Cookie Monster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),PPExcludeTop:new S(0,"bool","Colours",["Don't ignore any","Ignore 1st best","Ignore 1st and 2nd best","Ignore 1st, 2nd and 3rd best"],"Makes Cookie Monster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPRigidelMode:new S(0,"bool","Colours",["Rigidel mode OFF","Rigidel mode ON"],'Makes Cookie Monster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',!0),PPSecondsLowerLimit:new T(0,"numscale","Colours","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),ColourBlue:new x("#4bb8f0","colour","Colours","Standard colour is blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels"),ColourGreen:new x("#00ff00","colour","Colours","Standard colour is green. Used to show best PP building, for Blood Frenzy bar, and for various labels"),ColourYellow:new x("#ffff00","colour","Colours","Standard colour is yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels"),ColourOrange:new x("#ff7f00","colour","Colours","Standard colour is orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels"),ColourRed:new x("#ff0000","colour","Colours","Standard colour is Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels"),ColourPurple:new x("#ff00ff","colour","Colours","Standard colour is purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels"),ColourGray:new x("#b3b3b3","colour","Colours","Standard colour is gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar"),ColourPink:new x("#ff1493","colour","Colours","Standard colour is pink. Used for Dragonflight bar"),ColourBrown:new x("#8b4513","colour","Colours","Standard colour is brown. Used for Dragon Harvest bar"),BotBar:new F(1,"bool","BarsDisplay",["Bottom bar OFF","Bottom bar ON"],"Building information",!0,(()=>{nn()})),TimerBar:new F(1,"bool","BarsDisplay",["Timer bar OFF","Timer bar ON"],"Bar with timers for golden cookie, season popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(()=>{qo()})),TimerBarPos:new F(0,"bool","BarsDisplay",["Timer bar position (top left)","Timer bar position (bottom)"],"Placement of the timer bar",!1,(()=>{0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),Qo()})),TimerBarOverlay:new S(2,"bool","BarsDisplay",["Timer bar overlay OFF","Timer bar overlay only seconds","Timer bar overlay full"],"Overlay on timers displaying seconds and/or percentage left",!0),AutosaveTimerBar:new S(0,"bool","BarsDisplay",["Autosave timer bar OFF","Autosave timer bar ON"],"Show a timer counting down till next autosave in the timer bar",!0),UpBarColour:new F(1,"bool","BarsDisplay",["Upgrade colours/bar OFF","Upgrade colours with bar ON","Upgrade colours without bar ON"],"Colour code upgrades and optionally add a counter bar",!1,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour?(l("CMUpgradeBar").style.display="",$o()):2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour?(l("CMUpgradeBar").style.display="none",$o()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),UpgradeBarFixedPos:new F(1,"bool","BarsDisplay",["Upgrade bar fixed position OFF","Upgrade bar fixed position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),SortBuildings:new F(0,"bool","BarsDisplay",["Sort buildings: default","Sort buildings: PP of x1 purchase","Sort buildings: PP of selected bulk mode","Sort buildings: price until next achievement"],"Sort the display of buildings in default order, by PP, or until next achievement",!1,(()=>{Wo()})),SortUpgrades:new F(0,"bool","BarsDisplay",["Sort upgrades: default","Sort upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(()=>{$o()})),UpgradesNeverCollapse:new F(0,"bool","BarsDisplay",["Upgrades always expanded OFF","Upgrades always expanded ON"],"Toggle to make the upgrades sections always expanded to the size needed to display all upgrades",!0,(()=>{jo()})),DragonAuraInfo:new S(1,"bool","BarsDisplay",["Extra dragon aura info OFF","Extra dragon aura info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),GrimoireBar:new S(1,"bool","BarsDisplay",["Grimoire magic meter timer OFF","Grimoire magic meter timer ON"],"A timer overlay showing how long till the Grimoire magic meter is full",!0),GCTimer:new F(1,"bool","BarsDisplay",["Golden cookie timer OFF","Golden cookie timer ON"],"A timer on the golden cookie when it has been spawned",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer?Object.keys(Lo).forEach((e=>{Lo[e].style.display="block",Lo[e].style.left=gt[e].l.style.left,Lo[e].style.top=gt[e].l.style.top})):Object.keys(Lo).forEach((e=>Lo[e].style.display="none"))})),Favicon:new F(1,"bool","BarsDisplay",["Favicon OFF","Favicon ON"],"Update favicon with golden/wrath cookie",!0,(()=>{Qa()})),WrinklerButtons:new F(1,"bool","BarsDisplay",["Extra wrinkler buttons OFF","Extra wrinkler buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(()=>{B()})),HideSectionsButtons:new F(0,"bool","BarsDisplay",["Hide buildings/upgrades button OFF","Hide buildings/upgrades button ON"],"Show buttons for hiding and showing the buildings and upgrades sections in the right column",!0,(()=>{Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),TooltipBuildUpgrade:new S(1,"bool","Tooltip",["Building/upgrade tooltip information OFF","Building/upgrade tooltip information ON"],"Extra information in building/upgrade tooltips",!0),TooltipAmor:new S(0,"bool","Tooltip",["Buildings tooltip amortization information OFF","Buildings tooltip amortization information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new S(1,"bool","Tooltip",["Tooltip lucky warning OFF","Tooltip lucky warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new S(1,"bool","Tooltip",["Tooltip lucky frenzy warning OFF","Tooltip lucky frenzy warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new S(1,"bool","Tooltip",["Tooltip conjure warning OFF","Tooltip conjure warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new S(1,"bool","Tooltip",["Tooltip conjure frenzy warning OFF","Tooltip conjure frenzy warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new S(1,"bool","Tooltip",["Tooltip edifice warning OFF","Tooltip edifice warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new T(0,"numscale","Tooltip","Tooltip warning at x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnBon:new S(1,"bool","Tooltip",["Calculate tooltip warning with bonus CPS OFF","Calculate tooltip warning with bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),ToolWarnPos:new F(1,"bool","Tooltip",["Tooltip warning position (left)","Tooltip warning position (bottom)"],"Placement of the warning boxes",!1,(()=>{ba()})),TooltipGrim:new S(1,"bool","Tooltip",["Grimoire tooltip information OFF","Grimoire tooltip information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new S(1,"bool","Tooltip",["Wrinkler tooltip OFF","Wrinkler tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new S(1,"bool","Tooltip",["Sugar lump tooltip OFF","Sugar lump tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new S(1,"bool","Tooltip",["Garden plots tooltip OFF","Garden plots tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipStocks:new S(1,"bool","Tooltip",["Stock market tooltips OFF","Stock market tooltips ON"],"Shows additional info in the stock market tooltips.",!0),TooltipPantheon:new S(1,"bool","Tooltip",["Pantheon tooltip OFF","Pantheon tooltip ON"],"Shows additional info in the pantheon tooltip",!0),TooltipAscendButton:new S(1,"bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new S(1,"bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new S(1,"bool","Statistics",["Missing upgrades OFF","Missing upgrades ON"],"Shows missing upgrades in statistics menu",!0),MissingAchievements:new S(0,"bool","Statistics",["Missing Achievements OFF","Missing Normal Achievements ON"],"Shows missing normal achievements in statistics menu.",!0),UpStats:new S(1,"bool","Statistics",["Statistics update rate (default)","Statistics update rate (1s)"],"Default rate is once every 5 seconds",!1),HeavenlyChipsTarget:new T(1,"numscale","Statistics","Heavenly chips target: ",'Use this to set a heavenly chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new S(1,"bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many golden cookies you have missed",!0),Title:new S(1,"bool","NotificationGeneral",["Title OFF","Title ON","Title pinned tab highlight"],'Update title with colden cookie/season popup timers; pinned tab highlight only changes the title when a golden cookie/season popup spawns; "!" means that golden cookie/reindeer can spawn',!0),GeneralSound:new S(1,"bool","NotificationGeneral",["Consider game volume setting OFF","Consider game volume setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new F(0,"bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when golden cookie spawns",!0,(()=>{on(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCNotification)})),GCFlash:new S(1,"bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on golden cookie",!0),ColourGCFlash:new x("#ffffff","colour","NotificationGC","The colour of the GC flash, standard colour is white"),GCSound:new S(1,"bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on golden cookie",!0),GCVolume:new E(100,"vol","NotificationGC",[],"Volume"),GCSoundURL:new S("https://freesound.org/data/previews/66/66717_931655-lq.mp3","url","NotificationGC","Sound URL:","URL of the sound to be played when a golden cookie spawns"),FortuneNotification:new F(0,"bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when fortune cookie is on the ticker",!0,(()=>{on(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneNotification)})),FortuneFlash:new S(1,"bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on fortune cookie spawn",!0),ColourFortuneFlash:new x("#ffffff","colour","NotificationFC","The colour of the fortune flash, standard colour is white"),FortuneSound:new S(1,"bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on fortune cookie spawn",!0),FortuneVolume:new E(100,"vol","NotificationFC",[],"Volume"),FortuneSoundURL:new S("https://freesound.org/data/previews/174/174027_3242494-lq.mp3","url","NotificationFC","Sound URL:","URL of the sound to be played when the ticker has a fortune cookie"),SeaNotification:new F(0,"bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on season popup",!0,(()=>{on(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaNotification)})),SeaFlash:new S(1,"bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on season popup",!0),ColourSeaFlash:new x("#ffffff","colour","NotificationSea","The colour of the season popup flash, standard colour is white"),SeaSound:new S(1,"bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on season popup",!0),SeaVolume:new E(100,"vol","NotificationSea",[],"Volume"),SeaSoundURL:new S("https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3","url","NotificationSea","Sound URL:","URL of the sound to be played when on season popup spawns"),GardFlash:new S(1,"bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on garden tick",!0),ColourGardFlash:new x("#ffffff","colour","NotificationGard","The colour of the garden flash, standard colour is white"),GardSound:new S(1,"bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on garden tick",!0),GardVolume:new E(100,"vol","NotificationGard",[],"Volume"),GardSoundURL:new S("https://freesound.org/data/previews/103/103046_861714-lq.mp3","url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new F(0,"bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(()=>{on(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MagicNotification)})),MagicFlash:new S(1,"bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),ColourMagicFlash:new x("#ffffff","colour","NotificationMagi","The colour of the magic flash, standard colour is white"),MagicSound:new S(1,"bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new E(100,"vol","NotificationMagi",[],"Volume"),MagicSoundURL:new S("https://freesound.org/data/previews/221/221683_1015240-lq.mp3","url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new F(0,"bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a wrinkler appears",!0,(()=>{on(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerNotification)})),WrinklerFlash:new S(1,"bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a wrinkler appears",!0),ColourWrinklerFlash:new x("#ffffff","colour","NotificationWrink","The colour of the wrinkler flash, standard colour is white"),WrinklerSound:new S(1,"bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a wrinkler appears",!0),WrinklerVolume:new E(100,"vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new S("https://freesound.org/data/previews/124/124186_8043-lq.mp3","url","NotificationWrink","Sound URL:","URL of the sound to be played when a wrinkler appears"),WrinklerMaxNotification:new F(0,"bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of wrinklers has appeared",!0,(()=>{on(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification)})),WrinklerMaxFlash:new S(1,"bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),ColourWrinklerMaxFlash:new x("#ffffff","colour","NotificationWrinkMax","The colour of the maximum wrinkler flash, standard colour is white"),WrinklerMaxSound:new S(1,"bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of wrinklers has appeared",!0),WrinklerMaxVolume:new E(100,"vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new S("https://freesound.org/data/previews/152/152743_15663-lq.mp3","url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of wrinklers has appeared"),BulkBuyBlock:new S(1,"bool","Miscellaneous",["Block bulk buying OFF","Block bulk buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0),FavouriteSettings:new F(1,"bool","Miscellaneous",["Favourite settings section OFF","Favourite settings section ON","Favourite settings section ON (Locked)"],"Show stars before each setting which allows selecting it for a 'favourites' section at the top of the Cookie Monster settings. Setting this to Locked removes the stars but shows the 'favourites' section",!0,(()=>{Game.UpdateMenu()}))};function sn(){let e="";for(let t=0;t{if("Favourite"===t){if(0!==Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.favouriteSettings.length&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings>0&&(e.appendChild(b.createOptionsSubHeader("cookieMonsterMod",t,en[t])),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]))for(let t=0;t{const o=b.createOptionsSubHeader("cookieMonsterMod",t,tn[t]);o.style.fontSize="15px",o.style.opacity="0.5",e.appendChild(o),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]&&Object.keys(rn).forEach((o=>{rn[o].group===t&&e.appendChild(b.createOptionsListing("cookieMonsterMod",o,rn,sn,an))}))})):Object.keys(rn).forEach((o=>{rn[o].group===t&&e.appendChild(b.createOptionsListing("cookieMonsterMod",o,rn,sn,an))})))})),e}function cn(e){return String(e).split(String(7)).length-1}function dn(e,t){const o=10*t;let a=7*t-e%o+e%t;return a<0&&(a+=o),a}function mn(e,t){const o=document.createElement("div");o.className="title",o.style.padding="0px 16px",o.style.opacity="0.7",o.style.fontSize="17px",o.style.fontFamily='"Kavoon", Georgia, serif',o.appendChild(document.createTextNode(`${e} `));const a=document.createElement("span");return a.style.cursor="pointer",a.style.display="inline-block",a.style.height="14px",a.style.width="14px",a.style.borderRadius="7px",a.style.textAlign="center",a.style.backgroundColor="#C0C0C0",a.style.color="black",a.style.fontSize="13px",a.style.verticalAlign="middle",a.textContent=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]?"-":"+",a.onclick=function(){!function(e){Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]+=1,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]>1&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]=0),w.saveFramework()}(t),Game.UpdateMenu()},o.appendChild(a),o}function pn(e,t,o,a){const n=document.createElement("div");n.className="listing";const i=document.createElement("b");if(i.textContent=t,n.appendChild(i),"withTooltip"===e){n.className="listing",n.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(fo[a].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",n.appendChild(e)}return n.appendChild(document.createTextNode(": ")),n.appendChild(o),n}function un(e,t,o,a){const n=document.createElement("div");n.className="listing";const i=document.createElement("b");return i.textContent=t,!0===a&&(i.style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen),n.appendChild(i),n.appendChild(document.createTextNode(": ")),n.appendChild(o),n}function hn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const a=document.createElement("div"),n=document.createElement("div");n.style.minWidth="140px",n.style.marginBottom="4px";const i=document.createElement("div");return i.className="name",i.style.marginBottom="4px",i.style.textAlign="center",i.textContent="Missing",n.appendChild(i),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),n.appendChild(o)})),a.appendChild(n),o.onmouseover=function(){Game.tooltip.draw(this,escape(a.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function gn(e){const t=document.createElement("div");if(t.className="subsection",t.appendChild(e),t.appendChild(mn("Lucky Cookies","Lucky")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Lucky&&t.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+Io(){Game.HasUnlocked(fa[e])||c.push(fa[e])})),0!==c.length&&e.appendChild(pn("basic","Rare plant drops left to unlock",hn(c))),e}())),t.appendChild(mn("Prestige","Prestige")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Prestige&&t.appendChild(function(){const e=document.createElement("div");e.className="CMStatsPrestigeSection";const t=Math.floor(Game.HowMuchPrestige(st+Game.cookiesReset+$e+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")?De:0)));e.appendChild(pn("withTooltip","Prestige level (cur / max)",document.createTextNode(`${to(Game.prestige)} / ${to(t)}`),"PrestMaxTooltipPlaceholder"));const o=Math.max(0,Game.HowManyCookiesReset(t+1)-(st+Game.cookiesReset+$e+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")&&De?De:0))),a=document.createDocumentFragment();a.appendChild(document.createTextNode(to(o)));const n=document.createElement("small");n.textContent=` (${Uo(o/lt,1)})`,a.appendChild(n),e.appendChild(pn("withTooltip","Cookies to next level",a,"NextPrestTooltipPlaceholder")),e.appendChild(pn("withTooltip","Heavenly chips (cur / max)",document.createTextNode(`${to(Game.heavenlyChips)} / ${to(t-Game.prestige+Game.heavenlyChips)}`),"HeavenChipMaxTooltipPlaceholder")),e.appendChild(pn("basic","Heavenly chips per second (last 5 seconds)",document.createTextNode(to(Pe,2))));const i=Number(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HeavenlyChipsTarget);if(!Number.isNaN(i)){const t=i-Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned));t>0&&(e.appendChild(pn("basic","Heavenly chips to target set in settings (cur)",document.createTextNode(to(t)))),e.appendChild(pn("basic","Time till target (cur, current 5 second average)",document.createTextNode(Uo(t/Pe)))))}const r=function(e){let t=Game.cookiesPs;ia(),0===Mt["Heavenly key"].bought&&(Mt["Heavenly chip secret"].bought=1,Mt["Heavenly cookie stand"].bought=1,Mt["Heavenly bakery"].bought=1,Mt["Heavenly confectionery"].bought=1,Mt["Heavenly key"].bought=1,ma(),t=me,ia()),st>=1e6&&da("Sacrifice"),st>=1e9&&da("Oblivion"),st>=1e12&&da("From scratch"),st>=1e15&&da("Nihilism"),st>=1e18&&da("Dematerialize"),st>=1e21&&da("Nil zero zilch"),st>=1e24&&da("Transcendence"),st>=1e27&&da("Obliterate"),st>=1e30&&da("Negative void"),st>=1e33&&da("To crumbs, you say?"),st>=1e36&&da("You get nothing"),st>=1e39&&da("Humble rebeginnings"),st>=1e42&&da("The end of the world"),st>=1e45&&da("Oh, you're back"),st>=1e48&&da("Lazarus"),st>=1e51&&da("Smurf account"),st>=1e54&&da("If at first you don't succeed"),Mt["Heavenly chip secret"].bought=1,Mt["Heavenly cookie stand"].bought=1,Mt["Heavenly bakery"].bought=1,Mt["Heavenly confectionery"].bought=1,Mt["Heavenly key"].bought=1,ae=e;const o=te;ma(),Ca(),o!==te&&ma();const a=me-t;return ae=Game.prestige,a}(t),s=document.createDocumentFragment();s.appendChild(document.createTextNode(to(r)));const l=Math.round(r/Game.cookiesPs*1e4);if(Number.isFinite(l)&&0!==l){const e=document.createElement("small");e.textContent=` (${l/100}% of income)`,s.appendChild(e)}e.appendChild(pn("withTooltip","Reset bonus income",s,"ResetTooltipPlaceholder"));const c=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),m=d-c,{luckyDigit:p,luckyNumber:u,luckyPayout:h}=function(e){const t={};let o=cn(e);const a=String(e).length;if(o>=1&&(t.luckyDigit=e,o>=2&&(t.luckyNumber=e,o>=4)))return t.luckyPayout=e,t;let n;if(n=a>=16?Math.ceil(e/10**(a-15)):e,o=cn(n),void 0===t.luckyDigit&&(o<1&&(n+=dn(n,1),o=cn(n)),t.luckyDigit=n,a>=16&&(t.luckyDigit*=10**Number(a-15))),void 0===t.luckyNumber){for(;o<2;){let e=dn(n,1);0===e&&(e=dn(n,10)),n+=e,o=cn(n)}t.luckyNumber=n,a>=16&&(t.luckyNumber*=10**Number(a-15))}let i=1;for(;o<4;){const e=dn(n,i);0===e?i*=10:(n+=e,o=cn(n))}return t.luckyPayout=n,a>=16&&(t.luckyPayout*=10**Number(a-15)),t}(d);if(!Game.Has("Lucky digit")){const t=p-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${p.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(pn("basic",'Next "Lucky Digit" (total / reset)',a))}if(!Game.Has("Lucky number")){const t=u-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${u.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(pn("basic",'Next "Lucky Number" (total / reset)',a))}if(!Game.Has("Lucky payout")){const t=h-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${h.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(pn("basic",'Next "Lucky Payout" (total / reset)',a))}return e}()),Game.cpsSucked>0&&(t.appendChild(mn("Wrinklers","Wrink")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${to($e)} / ${to(Ue)} `));const o=document.createElement("a");o.textContent="Pop All Normal",o.className="option",o.onclick=function(){_a()},e.appendChild(o),t.appendChild(pn("basic","Rewards of Popping (All/Normal)",e));const a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${to(He[0])} `));const n=document.createElement("a");n.textContent="Pop Single Fattest",n.className="option",n.onclick=function(){null!==He[1]&&(Game.wrinklers[He[1]].hp=0)},a.appendChild(n),t.appendChild(pn("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==He[1]?He[1]:"None"})`,a))}if(t.appendChild(function(){const e=document.createElement("div");e.className="CMStatsSeasonSection";let t=!1;const o=[];Object.keys(ua).forEach((e=>{Game.Has(ua[e])||(o.push(ua[e]),t=!0)}));const a=[];Object.keys(ha).forEach((e=>{Game.Has(ha[e])||(a.push(ha[e]),t=!0)}));const n=[];Object.keys(ga).forEach((e=>{Game.Has(ga[e])||(n.push(ga[e]),t=!0)}));const i=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(i.push(Game.eggDrops[e]),t=!0)}));const r=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(r.push(Game.rareEggDrops[e]),t=!0)}));const s=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),l=Game.Has("Century egg");if(("christmas"===Game.season||t||s||l)&&(e.appendChild(mn("Season Specials","Sea")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Sea)){if(0!==o.length){e.appendChild(un(0,"Halloween cookies left to buy",hn(o),"halloween"===Game.season));let t=.95;if(Game.HasAchiev("Spooky cookies")&&(t=.8),Game.Has("Starterror")&&(t*=.9),t*=1/Game.dropRateMult(),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const a=o.length/7;e.appendChild(un(0,"Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${to((1-t)*a*100)}% / ${to((1-.9*t)*a*100)}%`),"halloween"===Game.season))}if(0!==a.length){e.appendChild(un(0,"Christmas cookies left to buy",hn(a),"christmas"===Game.season));let t=.8;if(Game.HasAchiev("Let it snow")&&(t=.6),t*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(t*=.95),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=a.length/7;e.appendChild(un(0,"Chance of receiving a cookie from reindeer",document.createTextNode(`${to((1-t)*o*100)}%`),"christmas"===Game.season))}0!==n.length&&e.appendChild(un(0,"Valentine cookies left to buy",hn(n),"valentines"===Game.season));const t=function(e){let t=e*(1/Game.dropRateMult());if(Game.HasAchiev("Hide & seek champion")&&(t*=.7),Game.Has("Omelette")&&(t*=.9),Game.Has("Starspawn")&&(t*=.9),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=1-t,a=Game.eggDrops.length-i.length,n=Game.rareEggDrops.length-r.length,s=.9*o*(1-a/Game.eggDrops.length),l=.1*o*(1-n/Game.rareEggDrops.length),c=.9*o*(a/Game.eggDrops.length)+.1*o*(n/Game.rareEggDrops.length);return[s+.9*c*(1-a/Game.eggDrops.length),l+.1*c*(1-n/Game.rareEggDrops.length)]};0!==i.length&&(e.appendChild(un(0,"Normal easter eggs left to unlock",hn(i),"easter"===Game.season)),e.appendChild(un(0,"Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${to(100*t(.98)[0])}% / ${to(100*t(.9)[0])}%`),"easter"===Game.season))),0!==r.length&&(e.appendChild(un(0,"Rare easter eggs left to unlock",hn(r),"easter"===Game.season)),e.appendChild(un(0,"Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${to(100*t(.98)[1])}% / ${to(100*t(.9)[1])}%`),"easter"===Game.season))),"christmas"===Game.season&&e.appendChild(un(0,"Reindeer reward",document.createTextNode(to(Oe)),!0)),s&&e.appendChild(pn("withTooltip","Chocolate egg cookies",document.createTextNode(to(De)),"ChoEggTooltipPlaceholder")),l&&e.appendChild(pn("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(Ne-1))/100+"%")))}return e}()),t.appendChild(mn("Achievements","Achievs")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Achievs&&Object.keys(Game.Objects).forEach((e=>{const o=je[e];t.appendChild(pn("basic",e,o.AmountNeeded<101?document.createTextNode(`Next achievement in ${o.AmountNeeded}, price: ${to(o.price)}`):document.createTextNode("No new achievement for next 100 buildings")))})),t.appendChild(mn("Miscellaneous","Misc")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Misc){if(t.appendChild(pn("basic",`Average cookies per second (past ${xo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]<60?`${xo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]} seconds`:xo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]/60+(3===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(to(Ro(),3)))),t.appendChild(pn("basic",`Average cookie clicks per second (past ${To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]}${0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist?" second":" seconds"})`,document.createTextNode(to(Ve,1)))),t.appendChild(pn("basic",`Cookies from clicking (past ${To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]}${0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist?" second":" seconds"})`,document.createTextNode(to(P.calcSum(Ve*To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]))))),Game.Has("Fortune cookies")){const e=[];Object.keys(pa).forEach((t=>{Game.Has(pa[t])||e.push(pa[t])})),0!==e.length&&t.appendChild(pn("basic","Fortune Upgrades Left to Buy",hn(e)))}if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ShowMissedGC&&t.appendChild(pn("basic","Missed golden cookies",document.createTextNode(to(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),t.appendChild(pn("basic","Time till autosave",e))}}l("menu").insertBefore(t,l("menu").childNodes[2]),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&Xe){const t=Xe.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(a),e.appendChild(o);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=Xe,e.appendChild(n)}else if("Upgrades"===e.children[0].innerHTML){if(_e){const t=_e.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(a),e.insertBefore(o,e.childNodes[3]);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=_e,e.insertBefore(n,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Qe){const t=Qe.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(a),e.appendChild(o);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=Qe,e.appendChild(n)}}})),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements&&function(){let e;Object.values(document.querySelectorAll("div.title")).forEach((t=>{t.textContent.includes("Achievements")&&(e=t.parentElement.querySelectorAll("div.listing.crateBox")[0])})),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements&&Object.values(e.children).forEach((e=>{if(!e.className.includes("enabled")){const t=e.onclick.toString().split(/\[(.*)\]/gi)[1],{icon:o}=Game.AchievementsById[t];e.style.backgroundPosition=`${48*-o[0]}px ${48*-o[1]}px`,e.onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>function(e){const t=[];"shadow"===e.pool?t.push("Shadow Achievement","#9700cf"):t.push("Achievement",0),t.push("Locked",0);let o=0;(Game.Has("Neuromancy")||Game.sesame&&"debug"===e.pool)&&(o=1),o&&0===e.won?t.push("Click to win!","#00c462"):o&&e.won>0&&t.push("Click to lose!","#00c462");let{icon:a}=e;e.iconFunction&&(a=e.iconFunction());let{desc:n}=e;e.descFunc&&(n=e.descFunc("stats"));let i="";for(let e=0;e[${t[e]}]`);return i=i.substring(1),`
\n
\n
${e.name}
\n ${i}
${n}
\n ${Game.sesame?`
Id : ${e.id} | Order : ${Math.floor(e.order)}${e.tier?` | Tier : ${e.tier}`:""}
`:""}`}(Game.AchievementsById[t])),"top"),Game.tooltip.wobble())}}}))}()}function fn(e){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar&&0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos){const t=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=t,e(),Game.mouseY+=t}else e()}function kn(){Jt.Beautify=Beautify,Beautify=to,Jt.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){Jt.CalculateGains(),ce=1,Zt=Date.now(),eo=Date.now()},Jt.tooltip={},Jt.tooltip.draw=Game.tooltip.draw,Jt.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){Jt.tooltip.drawMod(e,t,o)},Jt.tooltip.update=Game.tooltip.update,Jt.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){Jt.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let e=0;1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnLucky&&1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(e=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-e-46)}px`}}()},Jt.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){fn(Jt.UpdateWrinklers)},Jt.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){fn(Jt.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(e=>{fn((()=>Game.ClickCookie(e,0)))}),!1),Jt.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){Jt.RebuildUpgrades(),Kt=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(Kt[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("u",`${e}`)),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},Jt.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(e){(!Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BulkBuyBlock||Game.ObjectsById[e].bulkPrice<=Game.cookies||-1===Game.buyMode)&&Jt.ClickProduct(e)},Jt.DescribeDragonAura=Game.DescribeDragonAura,Game.DescribeDragonAura=function(e){Jt.DescribeDragonAura(e),function(e){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DragonAuraInfo){const[t,o]=function(e){ia(),l("promptContent").children[0].innerHTML.includes("secondary")?ie=e:ne=e;let t=0;if(ne!==ue||ie!==he)for(let e=Game.ObjectsById.length-1;e>-1;--e)if(Game.ObjectsById[e].amount>0){const o=Ct[Game.ObjectsById[e].name].name;Ct[o].amount-=1,J-=1,t=Ct[o].basePrice*Game.priceIncrease**Math.max(0,Ct[o].amount-1-Ct[o].free),t=Game.modifyBuildingPrice(Ct[o],t),t=Math.ceil(t);break}const o=te;return ma(),Ca(),o!==te&&ma(),[me-Game.cookiesPs,t]}(e),a=Uo(o/(t+Game.cookiesPs));let n;n=0===Game.cookiesPs?to(1/0):to(t/Game.cookiesPs*100),l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const i=document.createElement("div");i.style.minWidth="200px",i.style.textAlign="center",i.textContent=`Picking this aura will change CPS by ${to(t)} (${n}% of current CPS).`,l("dragonAuraInfo").appendChild(i);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${a} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(e)},Jt.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){Jt.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${fe}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},Jt.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==s().picker&&void 0!==s().picker.owner||(Jt.UpdateMenu(),function(){const e=document.createElement("div");e.className="title","stats"===Game.onMenu?Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Stats&&(e.textContent="Cookie Monster Statistics",gn(e)):"prefs"===Game.onMenu&&l("menu").childNodes[2].insertBefore(ln(),l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}())},Jt.sayTime=Game.sayTime,bo=function(e,t){return Number.isNaN(e)||e<=0?Jt.sayTime(e,t):Uo(e/Game.fps,1)},Jt.Logic=Game.Logic,Game.Logic=function(){Jt.Logic();let e="Cookie Clicker";"fools"===Game.season&&(e="Cookie Baker"),Ao=`${Game.OnAscend?"Ascending! ":""}${to(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${e}`,function(){if(Game.OnAscend||0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title)document.title=Ao;else if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title){let e,t,o,a=!1,n=!1;e=ct?ct.wrath?`[W${Math.ceil(ct.life/Game.fps)}]`:`[G${Math.ceil(ct.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,Ht&&(a=!0,t="[F]"),"christmas"===Game.season&&(n=!0,o=Ut?`[R${Math.ceil(dt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let i=Ao;"["===i.charAt(0)&&(i=i.substring(i.lastIndexOf("]")+1)),document.title=`${e+(a?t:"")+(n?o:"")} ${i}`}else if(2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title){let e="",t=!1;ct&&(t=!0,ct.wrath?e+=`[W${Math.ceil(ct.life/Game.fps)}]`:e+=`[G${Math.ceil(ct.life/Game.fps)}]`),Ht&&(t=!0,e+="[F]"),"christmas"===Game.season&&Ut&&(e+=`[R${Math.ceil(dt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const e=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),t=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let o=`You've been on this run for ${""===t?"not very long":t}.
\n
`;Game.prestige>0&&(o+=`Your prestige level is currently ${to(Game.prestige)}.
(CpS +${to(Game.prestige)}%)\n
`),o+=q<1?"Ascending now would grant you no prestige.":q<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${to(q)} prestige levels (+${to(q)}% CpS)
and ${to(q)} heavenly chips to spend.`,o+=`
\n You need ${to(e)} more cookies for the next level.
\n ${Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAscendButton?`
It takes ${mt} to reach the next level and you were making ${to(Pe,2)} chips on average in the last 5 seconds.
`:""}`,l("ascendTooltip").innerHTML=o}()}}function Cn(){window.CookieMonsterData={},Game.mods.cookieMonsterFramework.listeners.optionsMenu.push(ln),qa(),Ha(),Va(),Nt=Object.keys(Game.mods).length,Qt=document.createElement("style"),Qt.type="text/css",Qt.id="CMCSS",document.head.appendChild(Qt),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColor="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),a=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=oo+t,o.textContent=e,o},n=o.appendChild(document.createElement("tr"));n.style.fontWeight="bold",n.appendChild(a("CM 2.052.10",ro)),o.appendChild(document.createElement("tr")).appendChild(a("Bonus Income",no)),o.appendChild(document.createElement("tr")).appendChild(a("Payback Period",no)),o.appendChild(document.createElement("tr")).appendChild(a("Time Left",no)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{Vo(e)}))}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColor="black";const t=zo("CMTimerBarAutosave","Autosave",[{id:"CMTimerBarAutosaveBar",colour:co}]);e.appendChild(t);const o=zo("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",colour:mo},{id:"CMTimerBarGCBar",colour:co}]);e.appendChild(o);const a=zo("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",colour:mo},{id:"CMTimerBarRenBar",colour:so}]);e.appendChild(a);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColor="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const a=document.createElement("span");return a.className=ao+e,a.style.display="inline-block",a.style.height="10px",a.style.width="10px",a.style.marginRight="4px",o.appendChild(a),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(no,"Better than the best PP of a building option")),e.appendChild(o(io,"Same as the best PP building option")),e.appendChild(o(ro,"Within the top 10 of PP for buildings")),e.appendChild(o(so,"Within the top 20 of PP for buildings")),e.appendChild(o(lo,"Within the top 30 of PP for buildings")),e.appendChild(o(co,"Outside of the top 30 of PP for buildings")),e.appendChild(o(mo,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=oo+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",no)),e.appendChild(o("CMUpgradeBarGreen",io)),e.appendChild(o("CMUpgradeBarYellow",ro)),e.appendChild(o("CMUpgradeBarOrange",so)),e.appendChild(o("CMUpgradeBarRed",lo)),e.appendChild(o("CMUpgradeBarPurple",co)),e.appendChild(o("CMUpgradeBarGray",mo)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMSectionHidButtons",e.style.textAlign="center";const t=document.createElement("a");t.className="option",t.onclick=function(){"flex"===l("upgrades").style.display?(l("upgrades").style.display="none",l("toggleUpgrades").style.display="none",l("techUpgrades").style.display="none",l("vaultUpgrades").style.display="none"):(l("upgrades").style.display="flex",0!==l("toggleUpgrades").children.length&&(l("toggleUpgrades").style.display="block"),0!==l("techUpgrades").children.length&&(l("techUpgrades").style.display="block"),0!==l("vaultUpgrades").children.length&&(l("vaultUpgrades").style.display="block"))},t.textContent="Hide/Show Upgrades",e.appendChild(t);const o=document.createElement("a");o.className="option",o.onclick=function(){"grid"===l("products").style.display?l("products").style.display="none":l("products").style.display="grid"},o.textContent="Hide/Show Buildings",e.appendChild(o),l("store").insertBefore(e,l("store").childNodes[2])}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}(),Object.keys(go).forEach((e=>{!function(e,t,o){const a=document.createElement("div");a.id=e;const n=document.createElement("div");n.style.minWidth=o,n.style.marginBottom="4px";const i=document.createElement("div");i.style.textAlign="left",i.textContent=t,n.appendChild(i),a.appendChild(n),fo[e]=a}(go[e][0],go[e][1],go[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){_a()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("wb","PopAllNormal")),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==He[1]&&(Game.wrinklers[He[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("wb","PopFattest")),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",Object.keys(l("rows").children).forEach((e=>{const t=l("rows").children[e].children[1],o=document.createElement("div");o.id=`productLock${Number(e)+1}`,o.className="productButton",o.innerHTML="Lock",o.onclick=function(){!function(e){"Lock"===l(`productLock${e}`).innerHTML?(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.push(e.toString()),l(`row${e}`).style.pointerEvents="none",l(`row${e}`).style.opacity="0.4",l(`productLock${e}`).innerHTML="Unlock",l(`productLock${e}`).style.pointerEvents="auto"):(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.includes(e.toString())&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.filter((t=>t!==e.toString()))),l(`productLock${e}`).innerHTML="Lock",l(`row${e}`).style.pointerEvents="auto",l(`row${e}`).style.opacity="1")}(Number(e)+1)},t.appendChild(o)})),Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(qt[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("b",`${e}`)),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(Ot=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("s","Lump")),"this"),Game.tooltip.wobble()}),$t=Game.LoadMinigames,Game.LoadMinigames=function(){$t(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("ha","HarvestAllButton")),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("p",[`${t[0]}`,`${t[2]}`])),"this"),Game.tooltip.wobble()}}))),Ya(),function(){if(Game.Objects.Bank.minigameLoaded)for(let e=0;eXa("sm",e)),"this"),Game.tooltip.wobble()}}(),function(){if(Game.Objects.Temple.minigameLoaded){for(let e=0;e<11;e+=1)l(`templeGod${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("pag",e)),"this"),Game.tooltip.wobble()};for(let e=0;e<3;e+=1)l(`templeSlot${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Xa("pas",[e,Game.Objects.Temple.minigame.slot[e]])),"this"),Game.tooltip.wobble()}}}(),Ja()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){Co=1},l("backgroundLeftCanvas").onmouseout=function(){Co=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{yo[e]=0}))},kn(),Ja(),Game.CalculateGains(),ko=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.052.10 loaded!"):Game.Notify("Cookie Monster version 2.052.10 loaded!","","",1,1),Game.Win("Third-party")}function Mn(e,t){if(!Game.Objects.Temple.minigameLoaded)return 0;ia();const{minigame:o}=Game.Objects.Temple,a=o.godsById[e].slot;"0"===a?re=o.slot[t]:"1"===a?se=o.slot[t]:"2"===a&&(le=o.slot[t]),0===t?re=e:1===t?se=e:2===t&&(le=e);const n=te;return ma(),Ca(),n!==te&&ma(),me-Game.cookiesPs}function yn(){if(Oo!==Game.OnAscend&&(Oo=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar&&(l("CMBotBar").style.display="none"),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar&&(l("CMTimerBar").style.display="none")):(nn(),qo()),Xo()),!Game.OnAscend&&0===Game.AscendTimer){Nt!==Object.keys(Game.mods).length&&(qa(),Va(),Nt=Object.keys(Game.mods).length),ce&&(Ia(!0),La(),Game.Has("Golden switch [off]")?(ia(),Mt["Golden switch [off]"].bought=0,ma(),Se=me):Se=Game.cookiesPs,Ta({CacheNoGoldSwitchCookiesPS:Se}),Ra(),Ha(),$a(),Wa(),Za(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)kt[e][t]=Mn(e,t);Ta({CacheGods:kt})}(),Ua(),function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const t=Game.Objects.Bank.minigame.goods;let o=0;Object.keys(t).forEach((e=>{const a=t[e];o+=a.stock*a.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;ia();let t=2;5!==ne&&18!==ne||(t-=1),5!==ie&&18!==ie||(t-=1),ne=5,ie=18;for(let e=0;e{Ct[t].amount>0&&(e=t)})),Ct[e].amount-=1,J-=1}return Object.keys(Ct).forEach((t=>{const o=Ct[t];e+=Ft(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),ft=e,Ta({CacheSellForChoEgg:ft})}(),ce=0);const e=Game.auraMult("Fierce Hoarder")>0;!K&&e?(K=!0,Y=1):K&&!e&&(K=!1,Y=1),Y&&(Da(),Y=0),function(){za(),Pa(),Ia(!1),function(){Re=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Ct.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}Ie=e,Re=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t,Ta({CacheCurrWrinklerCount:Ie,CacheCurrWrinklerCPSMult:Re})}(),Sa(),ja();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);mt=Uo(e/Ro())}(),Ht!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(Ht=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,Ht&&(v.createFlash("cookieMonsterMod",3,"FortuneFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),v.createNotification("cookieMonsterMod","FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),Ut!==Game.shimmerTypes.reindeer.spawned&&(Ut=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(dt=Game.shimmers[e])})),v.createFlash("cookieMonsterMod",3,"SeaFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaSoundURL,"SeaSound","SeaVolume",!1),v.createNotification("cookieMonsterMod","SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!"),Ko=1),Game.Objects.Farm.minigameLoaded&&Rt!==Game.Objects.Farm.minigame.nextStep&&(0!==Rt&&Rt0){let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)})),e>Xt?(Xt=e,e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxFlash?v.createFlash("cookieMonsterMod",3,"WrinklerMaxFlash",!1):v.createFlash("cookieMonsterMod",3,"WrinklerFlash",!1),e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSound?v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification?v.createNotification("cookieMonsterMod","WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):v.createNotification("cookieMonsterMod","WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):Xt=e}}()}_t=0,gt={},Object.keys(Game.shimmers).forEach((e=>{gt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(ct=Game.shimmers[e],_t+=1)})),Object.keys(Lo).forEach((e=>{void 0===gt[e]&&(Lo[e].parentNode.removeChild(Lo[e]),delete Lo[e])})),It!==Game.shimmerTypes.golden.n?(It=Game.shimmerTypes.golden.n,It&&(zt<_t&&(v.createFlash("cookieMonsterMod",3,"GCFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCSoundURL,"GCSound","GCVolume",!1),v.createNotification("cookieMonsterMod","GCNotification","Golden Cookie Spawned","A Golden Cookie has spawned. Click it now!"),Yo=1),Object.keys(Game.shimmers).forEach((e=>{void 0===Lo[Game.shimmers[e].id]&&function(e){const t=document.createElement("div");t.id=`GCTimer${e.id}`,t.style.width="96px",t.style.height="96px",t.style.position="absolute",t.style.zIndex="10000000001",t.style.textAlign="center",t.style.lineHeight="96px",t.style.fontFamily='"Kavoon", Georgia, serif',t.style.fontSize="35px",t.style.cursor="pointer",t.style.display="block",t.style.pointerEvents="none",0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer&&(t.style.display="none"),t.style.left=e.l.style.left,t.style.top=e.l.style.top,t.onclick=function(){e.pop()},t.onmouseover=function(){e.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",e.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},t.onmouseout=function(){e.l.style.filter="",e.l.style.webkitFilter=""},Lo[e.id]=t,l("shimmers").appendChild(t)}(Game.shimmers[e])}))),Qa(),zt=_t,0===_t&&(ct=0)):1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer&&It&&Object.keys(Lo).forEach((e=>{Lo[e].style.opacity=gt[e].l.style.opacity,Lo[e].style.transform=gt[e].l.style.transform,Lo[e].textContent=Math.ceil(gt[e].life/Game.fps)}))}const bn={Favourite:1,Calculation:1,Notation:1,Colours:1,BarsDisplay:1,Tooltip:1,Statistics:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Achievs:1,Misc:1,infoMenu:1,optionsMenu:1};function Gn(e){qa(),w.loadMod("cookieMonsterMod",e,rn,bn,yn),void 0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames=[]),sn();for(let e=0;e{var e={75:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,a,n,i=(n={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&("loading"!==e.document.readyState?n.pub.init():e.document.addEventListener("DOMContentLoaded",n.pub.init,!1))},installBySelector:function(t,o){if(!(o=o?n.node(o):e.document))throw new Error("Missing root node");for(var a=o.querySelectorAll(t),i=new RegExp("(^|\\s)("+n.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(n.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(a=e.document.createElement("input"),!(!a.setAttribute||(a.setAttribute("type","color"),"color"!=a.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(n.dataProp)?e[n.dataProp]:e[n.dataProp]={},o=arguments[2];return t[i=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(n.dataProp)?e[n.dataProp]:e[n.dataProp]={};var a=arguments[1];for(var i in a)a.hasOwnProperty(i)&&(t[i]=a[i]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(n.dataProp))return!0;for(var t=1;t=3&&(a=s[0].match(l))&&(n=s[1].match(l))&&(i=s[2].match(l)))return o.format="rgb",o.rgba=[parseFloat(a[1])||0,parseFloat(n[1])||0,parseFloat(i[1])||0,null],s.length>=4&&(r=s[3].match(l))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}\b|#[0-9A-F]{6}([0-9A-F]{2})?\b|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],a=0;ac[i]&&-a[i]+o[i]+l[i]/2>c[i]/2&&o[i]+l[i]-m[i]>=0?o[i]+l[i]-m[i]:o[i],-a[r]+o[r]+l[r]+m[r]-p+p*s>c[r]?-a[r]+o[r]+l[r]/2>c[r]/2&&o[r]+l[r]-p-p*s>=0?o[r]+l[r]-p-p*s:o[r]+l[r]-p+p*s:o[r]+l[r]-p+p*s>=0?o[r]+l[r]-p+p*s:o[r]+l[r]-p-p*s];else var u=[o[i],o[r]+l[r]-p+p*s];var h=u[i],g=u[r],f=t.fixed?"fixed":"absolute",k=(u[0]+m[0]>o[0]||u[0]0?Math.ceil(s/o):0,n=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),i=e.paletteHeight?Math.min(e.paletteHeight,n):n),a&&(r=a*i+(a-1)*e.paletteSpacing),{cols:o,rows:a,cellW:n,cellH:i,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){return"v"===e.mode.charAt(1).toLowerCase()?"v":"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=n.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!i(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{i(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=n.strList(e),o=0;o127.5},this.hide=function(){d()&&(n.removeClass(a.targetElement,n.pub.activeClassName),n.picker.wrap.parentNode.removeChild(n.picker.wrap),delete n.picker.owner)},this.show=function(){r()},this.redraw=function(){d()&&r()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||n.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(n.setDataAttr(this.targetElement,"current-color",t),e&n.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&n.flags.leaveAlpha)&&this.alphaElement){var a=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(a)}e&n.flags.leavePreview||!this.previewElement||((n.isTextInput(this.previewElement)||n.isButton(this.previewElement)&&!n.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),d()&&(s(),l(),c())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(n.isTextInput(this.previewElement)||n.isButton(this.previewElement)&&!n.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var a=[];if(e){a.push({image:n.genColorPreviewGradient(e,t,o?o-n.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var i=n.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);a.push({image:"url('"+i.canvas.toDataURL()+"')",position:(t||"left")+" top",size:i.width+"px "+i.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else a.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},s=0;s=0;u-=1){var h=p[u];if(h)if(n.pub.presets.hasOwnProperty(h)){for(var m in n.pub.presets[h])if(n.pub.presets[h].hasOwnProperty(m))try{i(m,n.pub.presets[h][m])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",h)}var g=["preset"];for(var m in o)if(o.hasOwnProperty(m)&&-1===g.indexOf(m))try{i(m,o[m])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=n.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=n.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof n.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,n.addClass(this.targetElement,n.pub.className),n.instances.push(this),n.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),n.isButtonEmpty(this.targetElement))){n.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var f=n.getCompStyle(this.targetElement);(parseFloat(f["min-width"])||0)-1){var y=n.parseColorString(C);this._currentFormat=y?y.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(C),void 0!==M&&this.processAlphaInput(M),this.random&&this.randomize.apply(this,Array.isArray(this.random)?this.random:[])}},n.pub.className="jscolor",n.pub.activeClassName="jscolor-active",n.pub.looseJSON=!0,n.pub.presets={},n.pub.presets.default={},n.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},n.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},n.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},n.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},n.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},n.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},n.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},n.pub.sliderInnerSpace=3,n.pub.chessboardSize=8,n.pub.chessboardColor1="#666666",n.pub.chessboardColor2="#999999",n.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],n.pub.init=function(){if(!n.initialized)for(e.document.addEventListener("mousedown",n.onDocumentMouseDown,!1),e.document.addEventListener("keyup",n.onDocumentKeyUp,!1),e.addEventListener("resize",n.onWindowResize,!1),e.addEventListener("scroll",n.onWindowScroll,!1),n.appendDefaultCss(),n.pub.install(),n.initialized=!0;n.readyQueue.length;)n.readyQueue.shift()()},n.pub.install=function(e){var t=!0;try{n.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(n.pub.lookupClass)try{n.installBySelector("input."+n.pub.lookupClass+", button."+n.pub.lookupClass,e)}catch(e){}return t},n.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(n.initialized?e():n.readyQueue.push(e),!0)},n.pub.trigger=function(e){var t=function(){n.triggerGlobal(e)};n.initialized?t():n.pub.ready(t)},n.pub.hide=function(){n.picker&&n.picker.owner&&n.picker.owner.hide()},n.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),n.genColorPreviewCanvas(e).canvas.toDataURL()},n.pub.background=function(e){var t=[];t.push(n.genColorPreviewGradient(e));var o=n.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},n.pub.options={},n.pub.lookupClass="jscolor",n.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+n.docsRef),!1},n.register(),n.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=i),i}))}},t={};function o(a){var n=t[a];if(void 0!==n)return n.exports;var i=t[a]={exports:{}};return e[a].call(i.exports,i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";class e{constructor(e,t,o){this.defaultValue=e,this.type=t,this.group=o}}function t(e,t){Game.promptWrapL.className="framed",Game.promptL.innerHTML=`${e}
`,Object.keys(t).forEach((e=>{const o=document.createElement("a");o.id=`promptOption${e}`,o.className="option",o.onclick=function(){PlaySound("snd/tick.mp3"),t[e][1]()},o.textContent=t[e][0],Game.promptL.children[1].appendChild(o)})),Game.promptAnchorL.style.display="block",Game.darkenL.style.display="block",Game.promptL.focus(),Game.promptOn=1,Game.UpdatePrompt()}function a(e,t,o,n){(1===Game.mods.cookieMonsterFramework.saveData[e].settings[o]||n)&&3===t&&!1===window.cookieMonsterFrameworkData.isInitializing||1===t?(l("CMFlashScreen").style.backgroundColor=Game.mods.cookieMonsterFramework.saveData[e].settings[`Colour${o}`],l("CMFlashScreen").style.opacity="0.5",3===t?(l("CMFlashScreen").style.display="inline",setTimeout((()=>{a(e,2,o,!0)}),1e3/Game.fps)):setTimeout((()=>{a(e,0,o,!0)}),1e3/Game.fps)):2===t?(l("CMFlashScreen").style.opacity="1",setTimeout((()=>{a(e,1,o,!0)}),1e3/Game.fps)):0===t&&(l("CMFlashScreen").style.display="none")}function n(){Object.keys(Game.mods.cookieMonsterFramework.saveData).forEach((e=>{const t=JSON.stringify(Game.mods.cookieMonsterFramework.saveData[e]),o=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),a=new RegExp(`${e}.*(;|$)`),n=o.match(a);if(null!==n){const a=o.replace(n[0],`${e}:${t}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(a)}!END!`))}}))}function i(e,t){void 0===Game.mods.cookieMonsterFramework.saveData[e].headers[t]&&(Game.mods.cookieMonsterFramework.saveData[e].headers[t]=1),0===Game.mods.cookieMonsterFramework.saveData[e].headers[t]?Game.mods.cookieMonsterFramework.saveData[e].headers[t]=1:Game.mods.cookieMonsterFramework.saveData[e].headers[t]=0,n()}var r=o(75),s=o.n(r);function c(e,t,o,a,n){if((1===Game.mods.cookieMonsterFramework.saveData[e].settings[o]||n)&&!1===window.cookieMonsterFrameworkData.isInitializing){const o=new Audio(t);Game.mods.cookieMonsterFramework.saveData[e].settings.GeneralSound?o.volume=Game.mods.cookieMonsterFramework.saveData[e].settings[a]/100*(Game.volume/100):o.volume=Game.mods.cookieMonsterFramework.saveData[e].settings[a]/100,o.play()}}function d(e,t){null!==l(`slider${e}${t}`)&&(l(`slider${e}${t}right`).innerHTML=`${l(`slider${e}${t}`).value}%`,Game.mods.cookieMonsterFramework.saveData[e].settings[t]=Math.round(l(`slider${e}${t}`).value)),n()}function m(e,t){t.disconnect(),"log"===Game.onMenu?function(){const e=l("menu").children[1];if(e.insertBefore(function(){const e=document.createElement("div");e.className="subsection",e.id="cookieMonsterFrameworkMenuSection";const t=document.createElement("div");t.className="title",t.innerHTML="Cookie Monster Mod Family";const o=document.createElement("span");if(o.style.cursor="pointer",o.style.display="inline-block",o.style.height="14px",o.style.width="14px",o.style.borderRadius="7px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="13px",o.style.verticalAlign="middle",o.textContent=Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu?"-":"+",o.onclick=function(){i("cookieMonsterFramework","infoMenu"),Game.UpdateMenu()},t.appendChild(o),e.appendChild(t),Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu){const t=document.createElement("div");t.className="listing",t.innerHTML='Cookie Monster Team\noffers a suite of tools to enhance your game experience.
\nOriginally known from our work on the Cookie Monster add-on we are now expanding and working on new tools within the Cookie Monster Mod Family.
\nKeep an eye on our GitHub to see future work or use it to report bugs or feature requests!
\n',e.appendChild(t)}return e}(),e.children[1]),Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu){const e=Game.mods.cookieMonsterFramework.listeners.infoMenu;for(let t=0;t{void 0===e.settings||void 0===e.settings[o]?n[o]=t[o].defaultValue:n[o]=e.settings[o]})),a.settings=n;const i={};return Object.keys(o).forEach((t=>{void 0===e.headers||void 0===e.headers[t]?i[t]=o[t]:i[t]=e.headers[t]})),a.headers=i,Object.keys(e).forEach((t=>{"settings"!==t&&"headers"!==t&&(a[t]=e[t])})),void 0===a.favouriteSettings&&(a.favouriteSettings=[]),a}(r,o,a),n(),i(),Object.keys(Game.mods.cookieMonsterFramework.saveData[e].settings).forEach((e=>{void 0!==o[e].func&&o[e].func()})),Game.UpdateMenu()}function g(){}const f={};function k(e){h("cookieMonsterFramework",e,f,u,g)}const C={init:function(){window.cookieMonsterFrameworkData={isInitializing:!0},new MutationObserver(m).observe(document.getElementById("menu"),{attributes:!0,childList:!0,subtree:!0}),function(){const e=document.createElement("div");e.id="CMFlashScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",e.style.pointerEvents="none",l("wrapper").appendChild(e)}(),Game.registerHook("draw",p),void 0===Game.modSaveData.cookieMonsterFramework&&k("{}"),window.cookieMonsterFrameworkData.isInitializing=!1},load:k,save:function(){return JSON.stringify(Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework)},listeners:{infoMenu:[],optionsMenu:[]},saveData:{cookieMonsterFramework:{headers:{},settings:{}}}},M=function(){"undefined"==typeof cookieMonsterFrameworkData&&Game.registerMod("cookieMonsterFramework",C)},y=function(e){Game.mods.cookieMonsterFramework.saveData[e]={favouriteSettings:[],headers:{},settings:{}}},b={createInfoListing:function(e){const t=document.createElement("div");return t.className="listing",t.innerHTML=e,t},createOptionsListing:function(e,o,i,m,p){const u=document.createElement("div");if(u.className="listing",1===Game.mods.cookieMonsterFramework.saveData[e].settings.FavouriteSettings&&u.appendChild(function(e,t,o){const a=document.createElement("a");return o.includes(t)?(a.innerText="★",a.style.color="yellow"):a.innerText="☆",a.className="option",a.onclick=function(){!function(e,t){Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.includes(t)?Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings=Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.filter((e=>e!==t)):Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.push(t),n()}(e,t),n(),Game.UpdateMenu()},a.onmouseover=function(){Game.tooltip.draw(this,escape('
Click to set this setting as favourite and show it in \'favourite\' settings at the top of the Cookie Monster Settings
'))},a.onmouseout=function(){Game.tooltip.hide()},a.appendChild(document.createTextNode(" ")),a}(e,o,Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings)),"bool"===i[o].type){const t=document.createElement("a");i[o].toggle&&0===Game.mods.cookieMonsterFramework.saveData[e].settings[o]?t.className="option off":t.className="option",t.id=`${e}Options${o}`,t.onclick=function(){!function(e,t,o){Game.mods.cookieMonsterFramework.saveData[e].settings[t]+=1,Game.mods.cookieMonsterFramework.saveData[e].settings[t]===o[t].label.length?(Game.mods.cookieMonsterFramework.saveData[e].settings[t]=0,o[t].toggle&&(l(`${e}Options${t}`).className="option off")):l(`${e}Options${t}`).className="option",void 0!==o[t].func&&o[t].func(),n()}(e,o,i),Game.UpdateMenu()},t.textContent=i[o].label[Game.mods.cookieMonsterFramework.saveData[e].settings[o]],u.appendChild(t);const a=document.createElement("label");return a.textContent=i[o].desc,a.style.lineHeight="1.6",u.appendChild(a),u}if("vol"===i[o].type){const t=document.createElement("div");t.className="sliderBox";const a=document.createElement("div");a.style.float="left",a.innerHTML=i[o].desc,t.appendChild(a);const n=document.createElement("div");n.id=`slider${e}${o}right`,n.style.float="right",n.innerHTML=`${Game.mods.cookieMonsterFramework.saveData[e].settings[o]}%`,t.appendChild(n);const r=document.createElement("input");r.className="slider",r.id=`slider${e}${o}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],r.oninput=function(){d(e,o),Game.UpdateMenu()},r.onchange=function(){d(e,o),Game.UpdateMenu()},t.appendChild(r),u.appendChild(t);const s=document.createElement("a");return s.className="option",s.onclick=function(){c(e,Game.mods.cookieMonsterFramework.saveData[e].settings[o.replace("Volume","SoundURL")],o.replace("Volume","Sound"),o,!0)},s.textContent="Test sound",u.appendChild(s),u}if("url"===i[o].type){const a=document.createElement("span");a.className="option",a.textContent=`${i[o].label} `,a.style.lineHeight="1.6",u.appendChild(a);const r=document.createElement("input");r.id=`${e}Options${o}`,r.className="option",r.type="text",r.readOnly=!0,r.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],r.style.width="300px",u.appendChild(r),u.appendChild(document.createTextNode(" "));const s=document.createElement("input");s.id=`${e}Options${o}Prompt`,s.className="option",s.type="text",s.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o];const c=document.createElement("a");c.className="option",c.onclick=function(){t(s.outerHTML,[["Save",function(){Game.mods.cookieMonsterFramework.saveData[e].settings[o]=l(`${e}Options${o}Prompt`).value,n(),Game.ClosePrompt(),Game.UpdateMenu()}],["Cancel",function(){Game.ClosePrompt()}]])},c.textContent="Edit",u.appendChild(c);const d=document.createElement("label");return d.textContent=i[o].desc,d.style.lineHeight="1.6",u.appendChild(d),u}if("colour"===i[o].type){const t=document.createElement("span");t.className="option";const l=document.createElement("input");l.id=o,l.style.width="65px",l.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],t.appendChild(l),new r(l,{hash:!0,position:"right",onInput:function(){Game.mods.cookieMonsterFramework.saveData[e].settings[this.targetElement.id]=this.toHEXString(),m(),n(),Game.UpdateMenu()}});const c=document.createElement("label");if(c.textContent=i[o].desc,c.style.lineHeight="1.6",t.appendChild(c),o.includes("Flash")){const n=document.createElement("a");n.className="option",n.onclick=function(){a(e,3,o.replace("Colour",""),!0)},n.textContent="Test flash",t.appendChild(n)}return u.appendChild(t),s().init(),u}if("numscale"===i[o].type){const t=document.createElement("span");t.className="option",t.textContent=`${i[o].label} `,t.style.lineHeight="1.6",u.appendChild(t);const a=document.createElement("input");a.id=`${e}Options${o}`,a.className="option",a.type="number",a.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],a.min=i[o].min,a.max=i[o].max,a.oninput=function(){Game.mods.cookieMonsterFramework.saveData[e].settings[o]=this.value,n(),p(),Game.UpdateMenu()},u.appendChild(a),u.appendChild(document.createTextNode(" "));const r=document.createElement("label");return r.textContent=i[o].desc,r.style.lineHeight="1.6",u.appendChild(r),u}if("keycode"===i[o].type){const a=document.createElement("input");a.id=`${e}Options${o}Prompt`,a.className="option",a.type="text",a.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o].displayName;const r=document.createElement("a");r.className="option",r.id=`${e}Options${o}`,r.onclick=function(){t(a.outerHTML,[]),l(`${e}Options${o}Prompt`).addEventListener("keyup",(t=>{!function(e,t,o){const a={key:o.key,altKey:o.altKey,ctrlKey:o.ctrlKey,shiftKey:o.shiftKey,displayName:`${o.shiftKey?"Shift + ":""}${o.altKey?"Alt + ":""}${o.ctrlKey?"Ctrl + ":""}${o.key}`};Game.mods.cookieMonsterFramework.saveData[e].settings[t]=a,n()}(e,o,t),Game.ClosePrompt(),Game.UpdateMenu()}))},r.textContent=Game.mods.cookieMonsterFramework.saveData[e].settings[o].displayName,u.appendChild(r);const s=document.createElement("label");return s.textContent=i[o].desc,s.style.lineHeight="1.6",u.appendChild(s),u}return u},createOptionsSubHeader:function(e,t,o){const a=document.createElement("div");a.className="title",a.style.opacity="0.7",a.style.fontSize="17px",a.appendChild(document.createTextNode(`${o} `));const n=document.createElement("span");return n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=Game.mods.cookieMonsterFramework.saveData[e].headers[t]?"-":"+",n.onclick=function(){i(e,t),Game.UpdateMenu()},a.appendChild(n),a}},G=function(e,t,o){const a=document.createElement("div");a.className="subsection",a.id=`${e}MenuSection`;const n=document.createElement("div");n.className="title",n.style.fontSize="18px",n.innerHTML=t;const r=document.createElement("span");return r.style.cursor="pointer",r.style.display="inline-block",r.style.height="14px",r.style.width="14px",r.style.borderRadius="7px",r.style.textAlign="center",r.style.backgroundColor="#C0C0C0",r.style.color="black",r.style.fontSize="13px",r.style.verticalAlign="middle",r.textContent=Game.mods.cookieMonsterFramework.saveData[e].headers[o]?"-":"+",r.onclick=function(){i(e,o),Game.UpdateMenu()},n.appendChild(r),a.appendChild(n),a},v={createFlash:a,createNotification:function(e,t,o,a){1===Game.mods.cookieMonsterFramework.saveData[e].settings[t]&&"hidden"===document.visibilityState&&!1===window.cookieMonsterFrameworkData.isInitializing&&new Notification(o,{body:a,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})},cookieMonsterPrompt:t,playCMSound:c},w={loadMod:h,saveFramework:n},x=class extends e{constructor(e,t,o,a){super(e,t,o),this.desc=a}},T=class extends e{constructor(e,t,o,a,n,i,r){super(e,t,o),this.label=a,this.desc=n,this.min=i,this.max=r}},S=class extends e{constructor(e,t,o,a,n,i){super(e,t,o),this.label=a,this.desc=n,this.toggle=i}},F=class extends e{constructor(e,t,o,a,n,i,r){super(e,t,o),this.label=a,this.desc=n,this.toggle=i,void 0!==r&&(this.func=r)}},E=class extends e{constructor(e,t,o,a,n){super(e,t,o),this.label=a,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}},B="2.053",P="10";function N(){Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerButtons&&Game.elderWrath?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")}let O,D,L,A,j,W,$,U,H,R,I,z,V,_,X,Q,q,Y,K,J,Z,ee,te,oe,ae,ne,ie,re,se,le,ce,de,me,pe,ue,he,ge=0,fe=0,ke=0,Ce=0,Me=0,ye=0,be=0,Ge=0,ve=0,we=0,xe=0,Te=0,Se=0,Fe=0,Ee=0,Be=1,Pe=1,Ne=1,Oe=0,De=0,Le=0,Ae=0,je={},We={},$e={},Ue={},He=0,Re=0,Ie=[0,null],ze=0,Ve=0,_e={},Xe={},Qe={},qe={},Ye={},Ke=0,Je=0,Ze=[],et=0,tt=0,ot=[],at=0,nt=0,it=[],rt=0,st=0,lt=[],ct=0,dt=0,mt={},pt={},ut=0,ht=0,gt=0,ft=[],kt={},Ct=0,Mt={0:[0,0,0],1:[0,0,0],2:[0,0,0],3:[0,0,0],4:[0,0,0],5:[0,0,0],6:[0,0,0],7:[0,0,0],8:[0,0,0],9:[0,0,0],10:[0,0,0]},yt=[],bt=[],Gt=[];function vt(e){let t=0;return Game.dragonAuras[re].name!==e&&Game.dragonAuras[se].name!==e||(t=1),("Reality Bending"===Game.dragonAuras[re].name||"Reality Bending"===Game.dragonAuras[se].name&&Game.dragonLevel>=Game.dragonAurasBN[e].id+4)&&(t+=.1),t}function wt(){let e=.25;return e*=1+vt("Earth Shatterer"),e}function xt(e,t){return void 0===pe[e]?void 0===t?1:t:pe[e]}function Tt(e){const t=bt[e];return(!t||1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function St(e){return Game.dragonAuras[re].name===e||Game.dragonAuras[se].name===e}function Ft(e){if(Game.hasGod){void 0===yt.Temple.minigame&&(yt.Temple.minigame=Game.Objects.Temple.minigame);const t=yt.Temple.minigame.gods[e];if(le===t.id)return 1;if(ce===t.id)return St("Supreme Intellect")?1:2;if(de===t.id)return St("Supreme Intellect")?2:3}return!1}function Et(e,t){let o=t;if(Tt("Season savings")&&(o*=.99),Tt("Santa's dominion")&&(o*=.99),Tt("Faberge egg")&&(o*=.99),Tt("Divine discount")&&(o*=.99),Tt("Fortune #100")&&(o*=.99),o*=1-.02*vt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&Tt(e.fortune.name)&&(o*=.93),o*=xt("buildingCost"),yt.Temple.minigameLoaded){const e=Ft("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function Bt(e,t,o,a,n,i){const r=void 0===i?0:i;let s=n,l=o,c=0;-1===n&&(s=l),n||(s=Game.buyBulk);for(let o=0;o0&&(c+=o,l-=1)}return c}const Pt=["","","M","G","T","P","E","Z","Y"],Nt=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],Ot=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let Dt,Lt,At,jt,Wt,$t,Ut,Ht,Rt,It,zt,Vt,_t,Xt,Qt,qt,Yt,Kt=[],Jt=[],Zt=[],eo={},to=Date.now(),oo=Date.now();function ao(e,t,o){const a=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleDecimals+1;if(e===1/0)return"Infinity";if(void 0===e)return"0";if(0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale)return eo.Beautify(e,t);if(Number.isFinite(e)){if(e<0)return`-${ao(Math.abs(e))}`;let n="";if(0===e)return e.toString();if(e>.001&&e=.01&&e=.01&&e=.01&&e{l(`productPrice${Game.Objects[e].id}`).style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[`Colour${t[e].colour}`]})),l(`storeBulk${gt}`).style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(je).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=ao(Bt(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?(e=Object.keys(je).map((e=>{const t={};return t.name=e,t.pp=je[e].pp,t.colour=je[e].colour,t})),e.sort(((e,t)=>ko.indexOf(e.colour)===ko.indexOf(t.colour)?e.pp-t.pp:ko.indexOf(e.colour)-ko.indexOf(t.colour)))):2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?(e=Object.keys(t).map((e=>{const o={};return o.name=e,o.pp=t[e].pp,o.colour=t[e].colour,o})),e.sort(((e,t)=>ko.indexOf(e.colour)===ko.indexOf(t.colour)?e.pp-t.pp:ko.indexOf(e.colour)-ko.indexOf(t.colour)))):3===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings&&(e=Object.keys(Ue).map((e=>{const t={};return t.name=e,t.id=Game.Objects[e].id,t.amountUntilNext=Ue[e].AmountNeeded,t.priceUntilNext=Ue[e].price,t})),e.sort(((e,t)=>e.id-t.id)),e.sort(((e,t)=>(101!==e.amountUntilNext?e.priceUntilNext:1/0)-(101!==t.amountUntilNext?t.priceUntilNext:1/0)))):(e=Object.keys(je).map((e=>{const t={};return t.name=e,t.id=Game.Objects[e].id,t})),e.sort(((e,t)=>e.id-t.id)));for(let t=0;t{Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradesNeverCollapse||"products"===e.id?e.style.height="auto":"vaultUpgrades"===e.id?(e.style.height="",e.style.minHeight="0px"):"upgrades"===e.id?(e.style.height="",e.className.includes("hasMenu")?e.style.minHeight="82px":e.style.minHeight="60px"):(e.style.height="",e.style.minHeight="60px")}))}function Ro(){if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour>0){let e=0,t=0,o=0,a=0,n=0,i=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;eko.indexOf(e.colour)===ko.indexOf(t.colour)?e.pp-t.pp:ko.indexOf(e.colour)-ko.indexOf(t.colour))):e.sort(((e,t)=>e.price-t.price));const t=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let o=0;o7776e5)return t?"Over 9000 days!":">9000d";l+=a>0?a+(t?1===a?" year":" years":"y")+", ":"",(l.length>0||n>0)&&(l+=n+(t?1===n?" day":" days":"d")+", "),(l.length>0||i>0)&&(l+=i+(t?1===i?" hour":" hours":"h")+", "),(l.length>0||r>0)&&(l+=r+(t?1===r?" minute":" minutes":"m")+", "),l+=s+(t?1===s?" second":" seconds":"s")}else if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat){if(o>315576e4)return"XX:XX:XX:XX:XX";l+=(a<10?"0":"")+a+":",l+=(n<10?"0":"")+n+":",l+=(i<10?"0":"")+i+":",l+=(r<10?"0":"")+r+":",l+=(s<10?"0":"")+s}else{if(o>7776e5)return t?"Over 9000 days!":">9000d";a>0?(l+=a+(t?1===a?" year":" years":"y")+", ",l+=n+(t?1===n?" day":" days":"d")):n>0?(l+=n+(t?1===n?" day":" days":"d")+", ",l+=i+(t?1===i?" hour":" hours":"h")):i>0?(l+=i+(t?1===i?" hour":" hours":"h")+", ",l+=r+(t?1===r?" minute":" minutes":"m")):r>0?(l+=r+(t?1===r?" minute":" minutes":"m")+", ",l+=s+(t?1===s?" second":" seconds":"s")):l+=s+(t?1===s?" second":" seconds":"s")}return l}function zo(e){let t,o;return e<=0?(o=1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat?"00:00:00:00:00":"Done!",t=lo):(o=Io(e),t=e>300?po:e>60?mo:co),{text:o,colour:t}}function Vo(){return Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CPSMode?q:0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Game.cookiesPs*(1-Game.cpsSucked):1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Game.cookiesPs*(ze+(1-.05*Ve)):null!==Ie[1]&&2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink&&1===Game.wrinklers[Ie[1]].type?Game.cookiesPs*(3*ze/Ve+(1-.05*Ve)):Game.cookiesPs*(ze/Ve+(1-.05*Ve))}function _o(){return 1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?He:2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Ie[0]:0}function Xo(e,t,o){const a=document.createElement("div");a.id=e,a.style.height="12px",a.style.margin="0px 10px",a.style.position="relative";const n=document.createElement("div");n.style.width="100%",n.style.height="10px",n.style.margin="auto",n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.right="0px",n.style.bottom="0px";const i=document.createElement("span");i.style.display="inline-block",i.style.textAlign="right",i.style.fontSize="10px",i.style.width="108px",i.style.marginRight="5px",i.style.verticalAlign="text-top",i.textContent=t,n.appendChild(i);for(let e=0;e{let o,a=Game.buyBulk;1===Game.buyMode?xo=a:a=xo,1===a&&(a=je),10===a&&(a=We),100===a&&(a=$e),e+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[e].childNodes[1].textContent=Game.Objects[t].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[e].textContent=ao(a[t].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[e].className=no+a[t].colour,o=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPDisplayTime?Io(Math.round(a[t].pp)):ao(Math.round(a[t].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[e].textContent=o;const n=zo((Game.Objects[t].bulkPrice-(Game.cookies+_o()))/Vo());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[e].className=no+n.colour,"Done!"===n.text&&Game.cookies{if(!Game.Tiers[e.tieredUpgrades[o].tier].special&&Tt(e.tieredUpgrades[o].name)){let a=2;1!==Game.ascensionMode&&Tt(e.unshackleUpgrade)&&Tt(Game.Tiers[e.tieredUpgrades[o].tier].unshackleUpgrade)&&(a+=1===e.id?.5:.1*(20-e.id)),t*=a}})),Object.keys(e.synergies).forEach((o=>{if(Tt(e.synergies[o].name)){const a=e.synergies[o];a.buildingTie1.name===e.name?t*=1+.05*a.buildingTie2.amount:a.buildingTie2.name===e.name&&(t*=1+.001*a.buildingTie1.amount)}})),e.fortune&&Tt(e.fortune.name)&&(t*=1.07),e.grandma&&Tt(e.grandma.name)&&(t*=1+.01*yt.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&Tt(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06;break;default:t*=1}return t}function ra(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;Tt("Thousand fingers")&&(t+=.1),Tt("Million fingers")&&(t*=5),Tt("Billion fingers")&&(t*=10),Tt("Trillion fingers")&&(t*=20),Tt("Quadrillion fingers")&&(t*=20),Tt("Quintillion fingers")&&(t*=20),Tt("Sextillion fingers")&&(t*=20),Tt("Septillion fingers")&&(t*=20),Tt("Octillion fingers")&&(t*=20),Tt("Nonillion fingers")&&(t*=20),Tt("Decillion fingers")&&(t*=20),Tt("Undecillion fingers")&&(t*=20),Tt("Unshackled cursors")&&(t*=25);let o=1,a=0;return Object.keys(yt).forEach((e=>{"Cursor"!==yt[e].name&&(a+=yt[e].amount)})),t*=a,o*=ia(e),o*=Game.magicCpS("Cursor"),o*=xt("cursorCps"),Game.ComputeCps(.1,Tt("Reinforced index finger")+Tt("Carpal tunnel prevention cream")+Tt("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{Tt(Game.GrandmaSynergies[e])&&(o*=2)})),Tt("Bingo center/Research facility")&&(o*=4),Tt("Ritual rolling pins")&&(o*=2),Tt("Naughty list")&&(o*=2),Tt("Elderwort biscuits")&&(o*=1.02),o*=xt("grandmaCps"),Tt("Cat ladies"))for(let e=0;e{"Grandma"!==yt[e].name&&(n+=yt[e].amount)})),o*=1+.01*vt("Elder Battalion")*n,o*=Game.magicCpS(t.name),(t.baseCps+a)*o}:o.cps=function(e){let t=1;return t*=ia(e),t*=Game.magicCpS(e.name),e.baseCPS*t},o.baseCps=t.baseCps,o.name=t.name,o.tieredUpgrades=t.tieredUpgrades,o.synergies=t.synergies,o.fortune=t.fortune,o.grandma=t.grandma,o.baseCPS=t.baseCps,o.id=t.id,o.vanilla=t.vanilla,o.unshackleUpgrade=t.unshackleUpgrade,o}function sa(e){const t=Game.Upgrades[e],o={};return o.power=t.power,"function"==typeof o.power&&("Sugar crystal cookies"===t.name?o.power=function(){let e=5;return Object.keys(yt).forEach((t=>{yt[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(Tt("Starlove")&&(e=3),Game.hasGod){const t=Ft("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function la(){te=Game.UpgradesOwned,oe=Game.pledges,ae=Game.AchievementsOwned,ne=Game.heavenlyPower,ie=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=yt[e];void 0===o&&(yt[e]=ra(e),o=yt[e],Qo(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&("Temple"===t.name&&(le=t.minigame.slot[0],ce=t.minigame.slot[1],de=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),yt[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=bt[e];void 0===o&&(bt[e]=sa(e),o=bt[e]),o.bought=t.bought,bt[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=Gt[e];void 0===o&&(Gt[e]=na(e),o=Gt[e]),o.won=t.won,Gt[e]=o})),aa(),re=ge,se=fe}function ca(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className=no+so,t.textContent=e,t}function da(e){e.appendChild(ca("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(ca("Bonus Cookies per Click")),e.lastChild.style.display="none";const o=document.createElement("div");o.style.marginBottom="4px",o.style.color="white",o.style.display="none",o.id="CMTooltipCookiePerClick",e.appendChild(o),e.appendChild(ca("Payback Period"));const a=document.createElement("div");a.style.marginBottom="4px",a.id="CMTooltipPP",e.appendChild(a),e.appendChild(ca("Time Left"));const n=document.createElement("div");if(n.id="CMTooltipTime",e.appendChild(n),"b"===Oo){e.appendChild(ca("Production left till next achievement")),e.lastChild.id="CMTooltipProductionLeftHeader";const t=document.createElement("div");t.id="CMTooltipProductionLeft",e.appendChild(t)}if("b"===Oo){e.appendChild(ca("Buildings (price / PP) left till next achievement")),e.lastChild.id="CMTooltipNextAchievementHeader";const t=document.createElement("div");t.id="CMTooltipNextAchievement",e.appendChild(t)}}function ma(e,t){let o="";return o=e.pp<=0||e.pp===1/0?ho:e.pp0&&(o=po),o}function pa(){let e=1;return Object.keys(Game.buffs).forEach((t=>{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function ua(e){Gt[e]&&0===Gt[e].won&&(Gt[e].won=1,"shadow"!==Game.Achievements[e].pool&&(ae+=1))}function ha(){ue=0;let e=1;const t={};Object.keys(Game.Objects).forEach((e=>{if(Game.Objects[e].minigameLoaded&&Game.Objects[e].minigame.effs){const o=Game.Objects[e].minigame.effs;Object.keys(o).forEach((e=>{t[e]?t[e]*=o[e]:t[e]=o[e]}))}})),pe=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(ie)*ne*function(){let e=0;if(Tt("Heavenly chip secret")&&(e+=.05),Tt("Heavenly cookie stand")&&(e+=.2),Tt("Heavenly bakery")&&(e+=.25),Tt("Heavenly confectionery")&&(e+=.25),Tt("Heavenly key")&&(e+=.25),e*=1+.05*vt("Dragon God"),Tt("Lucky digit")&&(e*=1.01),Tt("Lucky number")&&(e*=1.01),Tt("Lucky payout")&&(e*=1.01),Game.hasGod){const t=Ft("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=xt("cps"),Tt("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];Tt(o.name)&&("function"==typeof o.power?e*=1+.01*bt[o.name].power(bt[o.name]):e*=1+.01*o.power)})),Tt("Specialized chocolate chips")&&(e*=1.01),Tt("Designer cocoa beans")&&(e*=1.02),Tt("Underworld ovens")&&(e*=1.03),Tt("Exotic nuts")&&(e*=1.04),Tt("Arcane sugar")&&(e*=1.05),Tt("Increased merriness")&&(e*=1.15),Tt("Improved jolliness")&&(e*=1.15),Tt("A lump of coal")&&(e*=1.01),Tt("An itchy sweater")&&(e*=1.01),Tt("Santa's dominion")&&(e*=1.2),Tt("Fortune #100")&&(e*=1.01),Tt("Fortune #101")&&(e*=1.07),Tt("Dragon scale")&&(e*=1.03);let o=1;if(Ft){let t=Ft("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=Ft("ages"),1===t?e*=1+.15*Math.sin(to/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(to/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(to/1e3/86400*Math.PI*2)),t=Ft("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=Ft("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=Ft("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}Tt("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const a=ae/25;let n=1;if(Tt("Santa's milk and cookies")&&(n*=1.05),n*=1+.05*vt("Breath of Milk"),Ft){const e=Ft("mother");1===e?n*=1.1:2===e?n*=1.05:3===e&&(n*=1.03)}n*=xt("milk");let i=1;Tt("Kitten helpers")&&(i*=1+.1*a*n),Tt("Kitten workers")&&(i*=1+.125*a*n),Tt("Kitten engineers")&&(i*=1+.15*a*n),Tt("Kitten overseers")&&(i*=1+.175*a*n),Tt("Kitten managers")&&(i*=1+.2*a*n),Tt("Kitten accountants")&&(i*=1+.2*a*n),Tt("Kitten specialists")&&(i*=1+.2*a*n),Tt("Kitten experts")&&(i*=1+.2*a*n),Tt("Kitten consultants")&&(i*=1+.2*a*n),Tt("Kitten assistants to the regional manager")&&(i*=1+.175*a*n),Tt("Kitten marketeers")&&(i*=1+.15*a*n),Tt("Kitten analysts")&&(i*=1+.125*a*n),Tt("Kitten executives")&&(i*=1+.115*a*n),Tt("Kitten admins")&&(i*=1+.11*a*n),Tt("Kitten strategists")&&(i*=1+.105*a*n),Tt("Kitten angels")&&(i*=1+.1*a*n),Tt("Fortune #103")&&(i*=1+.05*a*n),Object.keys(yt).forEach((e=>{const t=yt[e];let i=t.cps(t);1!==Game.ascensionMode&&(i*=(1+.01*t.level)*o),"Grandma"===t.name&&Tt("Milkhelp® lactose intolerance relief tablets")&&(i*=1+.05*a*n),ue+=t.amount*i})),Tt('"egg"')&&(ue+=9),e*=i;let r=1;if(Tt("Chicken egg")&&(r*=1.01),Tt("Duck egg")&&(r*=1.01),Tt("Turkey egg")&&(r*=1.01),Tt("Quail egg")&&(r*=1.01),Tt("Robin egg")&&(r*=1.01),Tt("Ostrich egg")&&(r*=1.01),Tt("Cassowary egg")&&(r*=1.01),Tt("Salmon roe")&&(r*=1.01),Tt("Frogspawn")&&(r*=1.01),Tt("Shark egg")&&(r*=1.01),Tt("Turtle egg")&&(r*=1.01),Tt("Ant larva")&&(r*=1.01),Tt("Century egg")){let e=10*Math.floor((oo-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),De=1+.1*(1-(1-e/100)**3),r*=De}e*=r,Tt("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+vt("Radiant Appetite");const s=ue*e;Object.keys(Game.CpsAchievements).forEach((e=>{s>=Game.CpsAchievements[e].threshold&&ua(Game.CpsAchievements[e].name)})),he=s;const{n:l}=Game.shimmerTypes.golden,c=vt("Dragon's Fortune");for(let t=0;t{Tt(e[o])&&(t+=.1)}))}e*=t}if(Tt("Shimmering veil [off]")){let t=.5;Tt("Reinforced membrane")&&(t+=.1),Tt("Delicate touch")&&(t+=.05),Tt("Steadfast murmur")&&(t+=.05),Tt("Glittering edge")&&(t+=.05),e*=1+t}Tt("Magic shenanigans")&&(e*=1e3),Tt("Occult obstruction")&&(e*=0),ue=Game.runModHookOnValue("cps",ue),e*=pa(),ue*=e}const ga=["Fortune #001","Fortune #002","Fortune #003","Fortune #004","Fortune #005","Fortune #006","Fortune #007","Fortune #008","Fortune #009","Fortune #010","Fortune #011","Fortune #012","Fortune #013","Fortune #014","Fortune #015","Fortune #016","Fortune #017","Fortune #018","Fortune #019","Fortune #020","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],fa=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],ka=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],Ca=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],Ma=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function ya(e){return Gt[e]?Gt[e].won:0}function ba(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{Tt(Game.GrandmaSynergies[t])&&(e+=1)})),!ya("Elder")&&e>=7&&ua("Elder"),!ya("Veteran")&&e>=14&&ua("Veteran");let t=0,o=1,a=1,n=1e5;Object.keys(yt).forEach((e=>{t+=yt[e].amount,n=Math.min(yt[e].amount,n),ya("Mathematician")||yt[e].amount=1&&ua("One with everything"),1===o&&ua("Mathematician"),1===a&&ua("Base 10"),n>=100&&ua("Centennial"),n>=150&&ua("Centennial and a half"),n>=200&&ua("Bicentennial"),n>=250&&ua("Bicentennial and a half"),n>=300&&ua("Tricentennial"),n>=350&&ua("Tricentennial and a half"),n>=400&&ua("Quadricentennial"),n>=450&&ua("Quadricentennial and a half"),n>=500&&ua("Quincentennial"),n>=550&&ua("Quincentennial and a half"),n>=600&&ua("Sexcentennial"),n>=650&&ua("Sexcentennial and a half"),n>=700&&ua("Septcentennial"),t>=100&&ua("Builder"),t>=500&&ua("Architect"),t>=1e3&&ua("Engineer"),t>=2500&&ua("Lord of Constructs"),t>=5e3&&ua("Grand design"),t>=7500&&ua("Ecumenopolis"),t>=1e4&&ua("Myriad"),te>=20&&ua("Enhancer"),te>=50&&ua("Augmenter"),te>=100&&ua("Upgrader"),te>=200&&ua("Lord of Progress"),te>=300&&ua("The full picture"),te>=400&&ua("When there's nothing left to add"),te>=500&&ua("Kaizen"),te>=600&&ua("Beyond quality"),te>=700&&ua("Oft we mar what's well"),t>=4e3&&te>=300&&ua("Polymath"),t>=8e3&&te>=400&&ua("Renaissance baker"),yt.Cursor.amount+yt.Grandma.amount>=777&&ua("The elder scrolls");let i=!0;Object.keys(fa).forEach((e=>{Tt(fa[e])||(i=!1)})),i&&ua("Spooky cookies");let r=!0;if(Object.keys(ka).forEach((e=>{Tt(ka[e])||(r=!1)})),r&&ua("Let it snow"),Tt("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{Tt(e[o].name)&&(t+=1)})),t>=e.length&&ua("O Fortuna")}}function Ga(e,t){la(),yt[e].amount+=t;const o=yt[e];"Cursor"===e?(o.amount>=1&&ua("Click"),o.amount>=2&&ua("Double-click"),o.amount>=50&&ua("Mouse wheel"),o.amount>=100&&ua("Of Mice and Men"),o.amount>=200&&ua("The Digital"),o.amount>=300&&ua("Extreme polydactyly"),o.amount>=400&&ua("Dr. T"),o.amount>=500&&ua("Thumbs, phalanges, metacarpals"),o.amount>=600&&ua("With her finger and her thumb"),o.amount>=700&&ua("Gotta hand it to you"),o.amount>=800&&ua("The devil's workshop"),o.amount>=900&&ua("All on deck"),o.amount>=1e3&&ua("A round of applause")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&ua(Game.Objects[o.name].tieredAchievs[e].name)}));const a=ae;return ha(),ba(),a!==ae&&ha(),ue-Game.cookiesPs}function va(e,t,o){let a=e,n=0;for(;ae.plantsById[e.plot[Do[1]][Do[0]][0]-1].mature,o=e.plantsById[e.plot[Do[1]][Do[0]][0]-1].name;l("CMTooltipBorder").appendChild(ca("Reward (Current / Maximum)"));const a=document.createElement("div");a.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(a),"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${t?ao(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${ao(60*Game.cookiesPs*3)}`:"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${t?ao(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${ao(60*Game.cookiesPs*30)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${t?ao(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${ao(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${t?ao(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${ao(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===Oo?function(){const{minigame:e}=Game.Objects.Farm;if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipLump){l("CMTooltipBorder").appendChild(ca("Cookies gained from harvesting:"));let t=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let a=0;a<6;a++)for(let n=0;n<6;n++)if(e.plot[a][n][0]>=1){const i=e.plot[a][n],r=e.plantsById[i[0]-1],s=r.name;let l=!0;o&&r.immortal&&(l=!1),i[1]100+3*(n-1)&&r>0&&(r*=.9),i<5&&(i+=.5*(5-i)),i<5&&r<0&&(r*=.95),Math.max(i+r,1)}(o.val,o.d,e.getRestingVal(o.id),o.mode,Game.Objects.Bank.level);m.textContent="$"+ao(p)+(p0&&e=1?l("CMTimerBarAutosaveBar").textContent=Math.ceil(e):l("CMTimerBarAutosaveBar").textContent="",l("CMTimerBarAutosaveTime").textContent=Math.ceil(e),a+=1}else l("CMTimerBarAutosave").style.display="none";0!==Game.shimmerTypes.golden.spawned||Game.Has("Golden switch [off]")?l("CMTimerBarGC").style.display="none":(l("CMTimerBarGC").style.display="",l("CMTimerBarGCMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay>=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",e=Math.max(0,(Game.shimmerTypes.golden.time-Game.shimmerTypes.golden.minTime)/(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime))**5,Zo*=1-e,l("CMTimerBarGCTime").textContent=`${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)} ${ta()<.01?"<":""}${ta().toLocaleString("en",{style:"percent"})}`,a+=1),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",function(e){ea*=1-e}(Math.max(0,(Game.shimmerTypes.reindeer.time-Game.shimmerTypes.reindeer.minTime)/(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime))**5),l("CMTimerBarRenTime").textContent=`${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)} ${oa()<.01?"<":""}${oa().toLocaleString("en",{style:"percent"})}`,a+=1):l("CMTimerBarRen").style.display="none";const n={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((e=>{if(Game.buffs[e]){const t=Xo(Game.buffs[e].name,Game.buffs[e].name,[{id:`${Game.buffs[e].name}Bar`}]);t.style.display="";let i="";i=void 0!==Bo[Game.buffs[e].name]?Bo[Game.buffs[e].name]:uo,t.lastChild.children[1].className=io+i,t.lastChild.children[1].style.color="black",2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay?t.lastChild.children[1].textContent=`${Math.round(Game.buffs[e].time/Game.buffs[e].maxTime*100)}%`:t.lastChild.children[1].textContent="",t.lastChild.children[1].style.width=`${Math.round(Game.buffs[e].time*(o-8*Math.ceil(Game.buffs[e].time/Game.fps).toString().length)/Game.buffs[e].maxTime)}px`,t.lastChild.children[2].textContent=Math.ceil(Game.buffs[e].time/Game.fps),a+=1,n[Game.buffs[e].name]=t}})),Object.keys(n).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(n[e])})),0!==a&&(l("CMTimerBar").style.height=12*a+2+"px"),jo!==a&&(jo=a,Ko())}var e}(),qo(),xa(),function(){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink&&1===bo){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===vo[t]||void 0===vo[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="center",a.id="CMTooltipWrinkler",o.appendChild(a),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),Go=t,vo[t]=1}}else vo[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[Go],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[Go].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),yt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=ao(e)}}(),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu(),N()}function Sa(){O.addLatest(Game.computedMouseCps)}class Fa{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){let t=e;t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length);let o=0;for(let e=this.queue.length-1;e>=0&&e>this.queue.length-1-t;e--)o+=this.queue[e];return 0===o?0:o/t}calcSum(e){let t=e;return t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length),0===t?0:this.queue.slice(-t).reduce(((e,t)=>e+t),0)}}function Ea(e){"Cache"in window.CookieMonsterData||(window.CookieMonsterData.Cache={}),Object.keys(e).forEach((t=>{const o=t.replace(/^Cache/,"");void 0===e[t]?window.CookieMonsterData.Cache[o]=void 0:window.CookieMonsterData.Cache[o]=JSON.parse(JSON.stringify(e[t]))}))}function Ba(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let t=Game.cookies+Ct;Game.cpsSucked>0&&(t+=He),ct=Math.max(Game.cookiesEarned,t),t*=.05;const o=e-U,a=Math.max(0,Game.cookies-H)/o,n=Math.max(0,He-R)/o,i=Math.max(0,Ie[0]-I)/o,r=Math.max(0,t-Ae)/o,s=(Game.cookieClicks-z)/o;for(let e=0;e{if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode&&1===t)e[o].colour=ho;else{e[o].colour=ma(e[o],Pa(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,t));for(let t=0;t{const a=Pa(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,t);Game.cookiesPs?e[o].pp=Math.max(a-(Game.cookies+_o()),0)/Game.cookiesPs+a/e[o].bonus:e[o].pp=a/e[o].bonus,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode&&1===t||ft.push([e[o].pp,t,a])}))}function Da(){!function(){ht=1/0,ft=[],void 0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop=0),Oa(je,1),Oa(We,10),Oa($e,100),ft.sort(((e,t)=>e[0]-t[0]));let e=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop;if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPOnlyConsiderBuyable)for(;ft[e][2]>Game.cookies&&(e+=1,ft.length!==e+1););ht=ft[e][0],gt=ft[e][1],Na(je,1),Na(We,10),Na($e,100),Ea({CacheMinPP:ht,CacheMinPPBulk:gt,CachePPArray:ft})}(),Object.keys(_e).forEach((e=>{Game.cookiesPs?_e[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+_o()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/_e[e].bonus:_e[e].pp=Game.Upgrades[e].getPrice()/_e[e].bonus,Number.isNaN(_e[e].pp)&&(_e[e].pp=1/0),_e[e].colour=ma(_e[e],Game.Upgrades[e].getPrice())})),window.CookieMonsterData.Objects1=JSON.parse(JSON.stringify(je)),window.CookieMonsterData.Objects10=JSON.parse(JSON.stringify(We)),window.CookieMonsterData.Objects100=JSON.parse(JSON.stringify($e)),window.CookieMonsterData.Upgrades=[],Object.entries(_e).forEach((e=>{window.CookieMonsterData.Upgrades[e[0]]=JSON.parse(JSON.stringify(e[1]))}))}function La(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){la(),"Shimmering veil [on]"===bt[e].name?bt["Shimmering veil [off]"].bought=0:"Golden switch [on]"===bt[e].name?bt["Golden switch [off]"].bought=0:bt[e].bought=(bt[e].bought+1)%2,Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(te+=1),"Elder Pledge"===e?(oe+=1,oe>0&&ua("Elder nap"),oe>=5&&ua("Elder slumber")):"Elder Covenant"===e?ua("Elder calm"):"Prism heart biscuits"===e?ua("Lovely cookies"):"Heavenly key"===e&&ua("Wholesome");const t=ae;ha(),ba(),t!==ae&&ha();const o=function(){let e=0;Tt("Thousand fingers")&&(e+=.1),Tt("Million fingers")&&(e*=5),Tt("Billion fingers")&&(e*=10),Tt("Trillion fingers")&&(e*=20),Tt("Quadrillion fingers")&&(e*=20),Tt("Quintillion fingers")&&(e*=20),Tt("Sextillion fingers")&&(e*=20),Tt("Septillion fingers")&&(e*=20),Tt("Octillion fingers")&&(e*=20),Tt("Nonillion fingers")&&(e*=20),Tt("Decillion fingers")&&(e*=20),Tt("Undecillion fingers")&&(e*=20),Tt("Unshackled cursors")&&(e*=25);let t=0;Object.keys(yt).forEach((e=>{t+=yt[e].amount})),t-=yt.Cursor.amount,e*=t,Tt("Plastic mouse")&&(e+=.01*ue),Tt("Iron mouse")&&(e+=.01*ue),Tt("Titanium mouse")&&(e+=.01*ue),Tt("Adamantium mouse")&&(e+=.01*ue),Tt("Unobtainium mouse")&&(e+=.01*ue),Tt("Eludium mouse")&&(e+=.01*ue),Tt("Wishalloy mouse")&&(e+=.01*ue),Tt("Fantasteel mouse")&&(e+=.01*ue),Tt("Nevercrack mouse")&&(e+=.01*ue),Tt("Armythril mouse")&&(e+=.01*ue),Tt("Technobsidian mouse")&&(e+=.01*ue),Tt("Plasmarble mouse")&&(e+=.01*ue),Tt("Miraculite mouse")&&(e+=.01*ue),Tt("Aetherice mouse")&&(e+=.01*ue),Tt("Omniplast mouse")&&(e+=.01*ue),Tt("Fortune #104")&&(e+=.01*ue);let o=1;if(Tt("Santa's helpers")&&(o*=1.1),Tt("Cookie egg")&&(o*=1.1),Tt("Halo gloves")&&(o*=1.1),Tt("Dragon claw")&&(o*=1.03),Tt("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,Tt("Luminous gloves")?20:10)),o*=xt("click"),yt.Temple.minigameLoaded&&Ft){const e=Ft("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}Object.keys(Game.buffs).forEach((e=>{void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick)})),o*=1+.05*vt("Dragon Cursor");let a=o*Game.ComputeCps(1,Tt("Reinforced index finger")+Tt("Carpal tunnel prevention cream")+Tt("Ambidextrous"),e);return a=Game.runModHookOnValue("cookiesPerClick",a),Game.hasBuff("Cursed finger")&&(a=Game.buffs["Cursed finger"].power),a}()-Game.computedMouseCps;return o?[ue-Game.cookiesPs,o]:[ue-Game.cookiesPs]}return[]}function Aa(e){const t={};return Object.keys(Game.Objects).forEach((o=>{t[o]={},t[o].bonus=Ga(o,e),1!==e&&(J=1)})),t}function ja(){Object.keys(Game.Objects).forEach((e=>{je[e].price=Pa(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),We[e].price=Pa(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),$e[e].price=Pa(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100),Ue[e].price=Pa(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,Ue[e].AmountNeeded)})),Ea({CacheObjectsNextAchievement:Ue})}function Wa(){je=Aa(1),We=Aa(10),$e=Aa(100),function(){_e={};for(let e=0;e0?e/=t:e=0,Ze=$a(7,e,Pe),Ke=2*Ze[1]/Pe,Je=Ze[2]/60/60/6/Be,ot=$a(6,e,Ne),et=2*ot[1]/Ne,tt=ot[2]/60/60/6/Be,it=$a(7,7*e,Pe),at=2*it[1]/Pe,nt=it[2]/60/60/6/Be,lt=$a(6,7*e,Ne),rt=2*lt[1]/Ne,st=lt[2]/60/60/6/Be,Ea({CacheChainMaxReward:Ze,CacheChainRequired:Ke,CacheChainRequiredNext:Je,CacheChainWrathMaxReward:ot,CacheChainWrathRequired:et,CacheChainWrathRequiredNext:tt,CacheChainFrenzyMaxReward:it,CacheChainFrenzyRequired:at,CacheChainFrenzyRequiredNext:nt,CacheChainFrenzyWrathMaxReward:lt,CacheChainFrenzyWrathRequired:rt,CacheChainFrenzyWrathRequiredNext:st})}function Ha(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),a=e-Y,n=Math.max(0,o-K)/a;for(let e=0;e{e.push(Game.Upgrades[t])})),e.sort((function(e,t){return e.order>t.order?1:e.order{const o=e[t];if(0===o.bought){let e="";e+=function(e){let t="crate upgrade missing";"prestige"===e.pool&&(t+=" heavenly");let o=0;Game.prefs.crates||(o=1),o&&(t+=" noFrame");let{icon:a}=e;e.iconFunction&&(a=e.iconFunction());const n=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?qe+=e:"cookie"===o.pool?Ye+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(Qe+=e)}}))}function Ia(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),Le=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(Le*=2)}Ea({CacheSeaSpec:Le})}function za(){Me=900*Ee/.15,Me*=Be;const e=pa();e>0?Me/=e:Me=0,ye=Pe*(.15*Me)+13,be=Ne*(.15*Me)+13,Ge=7*Me,ve=Pe*(.15*Ge)+13,we=Ne*(.15*Ge)+13,xe=2*Me,Te=.15*xe,Se=0;let t=0,o=0;Object.keys(Game.Objects).forEach((e=>{Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&(o+=1)})),Object.keys(Game.Objects).forEach((e=>{(Game.Objects[e].amountSe&&(Se=2*Game.Objects[e].price,Fe=e)})),Ea({CacheLucky:Me,CacheLuckyReward:ye,CacheLuckyWrathReward:be,CacheLuckyFrenzy:Ge,CacheLuckyRewardFrenzy:ve,CacheLuckyWrathRewardFrenzy:we,CacheConjure:xe,CacheConjureReward:Te,CacheEdifice:Se,CacheEdificeBuilding:Fe})}function Va(){let e=1,t=1,o=1;Tt("Green yeast digestives")&&(o*=1.01),Tt("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),Pe=o*e,Ne=o*t,Be=1,0===Game.shimmerTypes.golden.n&&(Be*=1+1.23*Game.auraMult("Dragon's Fortune")),Ea({CacheGoldenCookiesMult:Pe,CacheWrathCookiesMult:Ne,CacheDragonsFortuneMultAdjustment:Be})}function _a(e){const t={};Object.keys(Game.Objects).forEach((o=>{if(0!==Object.keys(Ue).length&&Ue[o].TotalNeeded>Game.Objects[o].amount&&!e)t[o]={AmountNeeded:Ue[o].TotalNeeded-Game.Objects[o].amount,TotalNeeded:Ue[o].TotalNeeded,price:Pa(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Ue[o].TotalNeeded-Game.Objects[o].amount)};else{const e=function(e){const t=Game.AchievementsOwned;let o=100,a=100;for(;o>-1;)if(Ga(e,o),ae>t)a=o,o-=10;else{if(100===o)return 101;for(o+=1;o<=a;){if(Ga(e,o),ae>t)return o;o+=1}}return 101}(o);t[o]={AmountNeeded:e,TotalNeeded:Game.Objects[o].amount+e,price:Pa(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,e)}}})),Ue=t,Ea({CacheObjectsNextAchievement:Ue})}function Xa(){He=0,Re=0,Ie=[0,null];for(let e=0;eIe[0]&&(Ie=[t,e]))}Ea({CacheWrinklersTotal:He,CacheWrinklersNormal:Re,CacheWrinklersFattest:Ie})}function Qa(){aa(),Xa(),za(),Va(),Ua(),Ra(),Ia(),D=new Fa(Fo[Fo.length-1]),L=new Fa(Fo[Fo.length-1]),A=new Fa(Fo[Fo.length-1]),j=new Fa(Fo[Fo.length-1]),W=new Fa(Eo[Eo.length-1]),$=new Fa(5),O=new Fa(20*Eo[Eo.length-1]),Ha(),_a(),Ba(),Wa(),ja(),Da()}function qa(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Ya(e,t){if("b"===e){if(l("tooltip").innerHTML=Game.Objects[t].tooltip(),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAmor){const e=Pa(t,Game.Objects[t].basePrice,0,Game.Objects[t].free,Game.Objects[t].amount),o=e-Game.Objects[t].totalCookies;o>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${ao(o)} ${1===Math.floor(o)?"cookie":"cookies"} left to amortize (${zo((e-Game.Objects[t].totalCookies)/(Game.Objects[t].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(ao(Game.Objects[t].bulkPrice)).join(ao((Game.Objects[t],Game.Objects[t].basePrice,Game.Objects[t].amount,Game.Objects[t].free,Game.buyBulk,1))))}else if("u"===e){if(!Game.UpgradesInStore[t])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[t],"store")}else"s"===e?l("tooltip").innerHTML=Game.lumpTooltip():"g"===e?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(t)():"p"===e?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(t[0],t[1])():"ha"===e?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"sm"===e?l("tooltip").innerHTML=Game.Objects.Bank.minigame.goodTooltip(t)():"wb"===e?l("tooltip").innerHTML="":"pag"===e?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(t)():"pas"===e&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(t[0])());if("b"===e&&1===Game.buyMode||"u"===e||"s"===e||"g"===e||"p"===e&&!Game.keys[16]||"ha"===e||"sm"===e||"wb"===e||"pag"===e||"pas"===e&&-1!==t[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return Oo=e,Do=t,xa(),l("tooltip").innerHTML}function Ka(){1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Favicon&&Vt>0?mt.wrath?l("CMFavicon").href="https://CookieMonsterTeam.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://CookieMonsterTeam.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}function Ja(){yt=[],Object.keys(Game.Objects).forEach((e=>{yt[e]=ra(e)})),bt=[],Object.keys(Game.Upgrades).forEach((e=>{bt[e]=sa(e)})),Gt=[],Object.keys(Game.Achievements).forEach((e=>{Gt[e]=na(e)})),la()}function Za(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(Jt[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("g",`${e}`)),"this"),Game.tooltip.wobble()})}))}function en(){if(!Ut&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:e}=Game.Objects["Wizard tower"];Wt=e.draw,Game.Objects["Wizard tower"].minigame.draw=function(){Wt(),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GrimoireBar&&e.magic{if(t=a,Game.Objects[t].amount{me=!0})),Scale:new F(2,"bool","Notation",["Game's setting scale","Metric","Short scale","Short scale (Abbreviated)","Scientific notation","Engineering notation"],"Change how long numbers are formatted",!1,(()=>{sn()})),ScaleDecimals:new F(2,"bool","Notation",["1 decimals","2 decimals","3 decimals"],'Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game\'s Setting Scale"',!1,(()=>{sn()})),ScaleSeparator:new F(0,"bool","Notation",[". for decimals (standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(()=>{sn()})),ScaleCutoff:new T(999999,"numscale","Notation","Notation cut-off point: ","The number from which Cookie Monster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),TimeFormat:new S(0,"bool","Notation",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX","Time XXx, XXx"],"Change the time format",!1),DetailedTime:new F(1,"bool","Notation",["Detailed time OFF","Detailed time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DetailedTime?Game.sayTime=wo:Game.sayTime=eo.sayTime})),PPDisplayTime:new S(0,"bool","Notation",["PP as value (standard)","PP as time unit"],"Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.",!1),BuildColour:new F(1,"bool","Colours",["Building colours OFF","Building colours ON"],"Colour code buildings",!0,(()=>{Uo()})),PPOnlyConsiderBuyable:new S(0,"bool","Colours",["Don't ignore non-buyable","Ignore non-buyable"],"Makes Cookie Monster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),PPExcludeTop:new S(0,"bool","Colours",["Don't ignore any","Ignore 1st best","Ignore 1st and 2nd best","Ignore 1st, 2nd and 3rd best"],"Makes Cookie Monster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPRigidelMode:new S(0,"bool","Colours",["Rigidel mode OFF","Rigidel mode ON"],'Makes Cookie Monster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',!0),PPSecondsLowerLimit:new T(0,"numscale","Colours","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),ColourBlue:new x("#4bb8f0","colour","Colours","Standard colour is blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels"),ColourGreen:new x("#00ff00","colour","Colours","Standard colour is green. Used to show best PP building, for Blood Frenzy bar, and for various labels"),ColourYellow:new x("#ffff00","colour","Colours","Standard colour is yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels"),ColourOrange:new x("#ff7f00","colour","Colours","Standard colour is orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels"),ColourRed:new x("#ff0000","colour","Colours","Standard colour is Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels"),ColourPurple:new x("#ff00ff","colour","Colours","Standard colour is purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels"),ColourGray:new x("#b3b3b3","colour","Colours","Standard colour is gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar"),ColourPink:new x("#ff1493","colour","Colours","Standard colour is pink. Used for Dragonflight bar"),ColourBrown:new x("#8b4513","colour","Colours","Standard colour is brown. Used for Dragon Harvest bar"),BotBar:new F(1,"bool","BarsDisplay",["Bottom bar OFF","Bottom bar ON"],"Building information",!0,(()=>{ln()})),TimerBar:new F(1,"bool","BarsDisplay",["Timer bar OFF","Timer bar ON"],"Bar with timers for golden cookie, season popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(()=>{Jo()})),TimerBarPos:new F(0,"bool","BarsDisplay",["Timer bar position (top left)","Timer bar position (bottom)"],"Placement of the timer bar",!1,(()=>{0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),Ko()})),TimerBarOverlay:new S(2,"bool","BarsDisplay",["Timer bar overlay OFF","Timer bar overlay only seconds","Timer bar overlay full"],"Overlay on timers displaying seconds and/or percentage left",!0),AutosaveTimerBar:new S(0,"bool","BarsDisplay",["Autosave timer bar OFF","Autosave timer bar ON"],"Show a timer counting down till next autosave in the timer bar",!0),UpBarColour:new F(1,"bool","BarsDisplay",["Upgrade colours/bar OFF","Upgrade colours with bar ON","Upgrade colours without bar ON"],"Colour code upgrades and optionally add a counter bar",!1,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour?(l("CMUpgradeBar").style.display="",Ro()):2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour?(l("CMUpgradeBar").style.display="none",Ro()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),UpgradeBarFixedPos:new F(1,"bool","BarsDisplay",["Upgrade bar fixed position OFF","Upgrade bar fixed position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),SortBuildings:new F(0,"bool","BarsDisplay",["Sort buildings: default","Sort buildings: PP of x1 purchase","Sort buildings: PP of selected bulk mode","Sort buildings: price until next achievement"],"Sort the display of buildings in default order, by PP, or until next achievement",!1,(()=>{Uo()})),SortUpgrades:new F(0,"bool","BarsDisplay",["Sort upgrades: default","Sort upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(()=>{Ro()})),UpgradesNeverCollapse:new F(0,"bool","BarsDisplay",["Upgrades always expanded OFF","Upgrades always expanded ON"],"Toggle to make the upgrades sections always expanded to the size needed to display all upgrades",!0,(()=>{Ho()})),DragonAuraInfo:new S(1,"bool","BarsDisplay",["Extra dragon aura info OFF","Extra dragon aura info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),GrimoireBar:new S(1,"bool","BarsDisplay",["Grimoire magic meter timer OFF","Grimoire magic meter timer ON"],"A timer overlay showing how long till the Grimoire magic meter is full",!0),GCTimer:new F(1,"bool","BarsDisplay",["Golden cookie timer OFF","Golden cookie timer ON"],"A timer on the golden cookie when it has been spawned",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer?Object.keys(Wo).forEach((e=>{Wo[e].style.display="block",Wo[e].style.left=kt[e].l.style.left,Wo[e].style.top=kt[e].l.style.top})):Object.keys(Wo).forEach((e=>Wo[e].style.display="none"))})),Favicon:new F(1,"bool","BarsDisplay",["Favicon OFF","Favicon ON"],"Update favicon with golden/wrath cookie",!0,(()=>{Ka()})),WrinklerButtons:new F(1,"bool","BarsDisplay",["Extra wrinkler buttons OFF","Extra wrinkler buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(()=>{N()})),HideSectionsButtons:new F(0,"bool","BarsDisplay",["Hide buildings/upgrades button OFF","Hide buildings/upgrades button ON"],"Show buttons for hiding and showing the buildings and upgrades sections in the right column",!0,(()=>{Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),TooltipBuildUpgrade:new S(1,"bool","Tooltip",["Building/upgrade tooltip information OFF","Building/upgrade tooltip information ON"],"Extra information in building/upgrade tooltips",!0),TooltipAmor:new S(0,"bool","Tooltip",["Buildings tooltip amortization information OFF","Buildings tooltip amortization information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new S(1,"bool","Tooltip",["Tooltip lucky warning OFF","Tooltip lucky warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new S(1,"bool","Tooltip",["Tooltip lucky frenzy warning OFF","Tooltip lucky frenzy warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new S(1,"bool","Tooltip",["Tooltip conjure warning OFF","Tooltip conjure warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new S(1,"bool","Tooltip",["Tooltip conjure frenzy warning OFF","Tooltip conjure frenzy warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new S(1,"bool","Tooltip",["Tooltip edifice warning OFF","Tooltip edifice warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new T(0,"numscale","Tooltip","Tooltip warning at x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnBon:new S(1,"bool","Tooltip",["Calculate tooltip warning with bonus CPS OFF","Calculate tooltip warning with bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),ToolWarnPos:new F(1,"bool","Tooltip",["Tooltip warning position (left)","Tooltip warning position (bottom)"],"Placement of the warning boxes",!1,(()=>{wa()})),TooltipGrim:new S(1,"bool","Tooltip",["Grimoire tooltip information OFF","Grimoire tooltip information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new S(1,"bool","Tooltip",["Wrinkler tooltip OFF","Wrinkler tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new S(1,"bool","Tooltip",["Sugar lump tooltip OFF","Sugar lump tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new S(1,"bool","Tooltip",["Garden plots tooltip OFF","Garden plots tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipStocks:new S(1,"bool","Tooltip",["Stock market tooltips OFF","Stock market tooltips ON"],"Shows additional info in the stock market tooltips.",!0),TooltipPantheon:new S(1,"bool","Tooltip",["Pantheon tooltip OFF","Pantheon tooltip ON"],"Shows additional info in the pantheon tooltip",!0),TooltipAscendButton:new S(1,"bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new S(1,"bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new S(1,"bool","Statistics",["Missing upgrades OFF","Missing upgrades ON"],"Shows missing upgrades in statistics menu",!0),MissingAchievements:new S(0,"bool","Statistics",["Missing Achievements OFF","Missing Normal Achievements ON"],"Shows missing normal achievements in statistics menu.",!0),UpStats:new S(1,"bool","Statistics",["Statistics update rate (default)","Statistics update rate (1s)"],"Default rate is once every 5 seconds",!1),HeavenlyChipsTarget:new T(1,"numscale","Statistics","Heavenly chips target: ",'Use this to set a heavenly chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new S(1,"bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many golden cookies you have missed",!0),Title:new S(1,"bool","NotificationGeneral",["Title OFF","Title ON","Title pinned tab highlight"],'Update title with colden cookie/season popup timers; pinned tab highlight only changes the title when a golden cookie/season popup spawns; "!" means that golden cookie/reindeer can spawn',!0),GeneralSound:new S(1,"bool","NotificationGeneral",["Consider game volume setting OFF","Consider game volume setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new F(0,"bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when golden cookie spawns",!0,(()=>{rn(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCNotification)})),GCFlash:new S(1,"bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on golden cookie",!0),ColourGCFlash:new x("#ffffff","colour","NotificationGC","The colour of the GC flash, standard colour is white"),GCSound:new S(1,"bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on golden cookie",!0),GCVolume:new E(100,"vol","NotificationGC",[],"Volume"),GCSoundURL:new S("https://freesound.org/data/previews/66/66717_931655-lq.mp3","url","NotificationGC","Sound URL:","URL of the sound to be played when a golden cookie spawns"),FortuneNotification:new F(0,"bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when fortune cookie is on the ticker",!0,(()=>{rn(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneNotification)})),FortuneFlash:new S(1,"bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on fortune cookie spawn",!0),ColourFortuneFlash:new x("#ffffff","colour","NotificationFC","The colour of the fortune flash, standard colour is white"),FortuneSound:new S(1,"bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on fortune cookie spawn",!0),FortuneVolume:new E(100,"vol","NotificationFC",[],"Volume"),FortuneSoundURL:new S("https://freesound.org/data/previews/174/174027_3242494-lq.mp3","url","NotificationFC","Sound URL:","URL of the sound to be played when the ticker has a fortune cookie"),SeaNotification:new F(0,"bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on season popup",!0,(()=>{rn(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaNotification)})),SeaFlash:new S(1,"bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on season popup",!0),ColourSeaFlash:new x("#ffffff","colour","NotificationSea","The colour of the season popup flash, standard colour is white"),SeaSound:new S(1,"bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on season popup",!0),SeaVolume:new E(100,"vol","NotificationSea",[],"Volume"),SeaSoundURL:new S("https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3","url","NotificationSea","Sound URL:","URL of the sound to be played when on season popup spawns"),GardFlash:new S(1,"bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on garden tick",!0),ColourGardFlash:new x("#ffffff","colour","NotificationGard","The colour of the garden flash, standard colour is white"),GardSound:new S(1,"bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on garden tick",!0),GardVolume:new E(100,"vol","NotificationGard",[],"Volume"),GardSoundURL:new S("https://freesound.org/data/previews/103/103046_861714-lq.mp3","url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new F(0,"bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(()=>{rn(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MagicNotification)})),MagicFlash:new S(1,"bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),ColourMagicFlash:new x("#ffffff","colour","NotificationMagi","The colour of the magic flash, standard colour is white"),MagicSound:new S(1,"bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new E(100,"vol","NotificationMagi",[],"Volume"),MagicSoundURL:new S("https://freesound.org/data/previews/221/221683_1015240-lq.mp3","url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new F(0,"bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a wrinkler appears",!0,(()=>{rn(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerNotification)})),WrinklerFlash:new S(1,"bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a wrinkler appears",!0),ColourWrinklerFlash:new x("#ffffff","colour","NotificationWrink","The colour of the wrinkler flash, standard colour is white"),WrinklerSound:new S(1,"bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a wrinkler appears",!0),WrinklerVolume:new E(100,"vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new S("https://freesound.org/data/previews/124/124186_8043-lq.mp3","url","NotificationWrink","Sound URL:","URL of the sound to be played when a wrinkler appears"),WrinklerMaxNotification:new F(0,"bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of wrinklers has appeared",!0,(()=>{rn(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification)})),WrinklerMaxFlash:new S(1,"bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),ColourWrinklerMaxFlash:new x("#ffffff","colour","NotificationWrinkMax","The colour of the maximum wrinkler flash, standard colour is white"),WrinklerMaxSound:new S(1,"bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of wrinklers has appeared",!0),WrinklerMaxVolume:new E(100,"vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new S("https://freesound.org/data/previews/152/152743_15663-lq.mp3","url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of wrinklers has appeared"),BulkBuyBlock:new S(1,"bool","Miscellaneous",["Block bulk buying OFF","Block bulk buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0),FavouriteSettings:new F(1,"bool","Miscellaneous",["Favourite settings section OFF","Favourite settings section ON","Favourite settings section ON (Locked)"],"Show stars before each setting which allows selecting it for a 'favourites' section at the top of the Cookie Monster settings. Setting this to Locked removes the stars but shows the 'favourites' section",!0,(()=>{Game.UpdateMenu()}))};function dn(){let e="";for(let t=0;t{if("Favourite"===t){if(0!==Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.favouriteSettings.length&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings>0&&(e.appendChild(b.createOptionsSubHeader("cookieMonsterMod",t,an[t])),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]))for(let t=0;t{const o=b.createOptionsSubHeader("cookieMonsterMod",t,nn[t]);o.style.fontSize="15px",o.style.opacity="0.5",e.appendChild(o),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]&&Object.keys(cn).forEach((o=>{cn[o].group===t&&e.appendChild(b.createOptionsListing("cookieMonsterMod",o,cn,dn,sn))}))})):Object.keys(cn).forEach((o=>{cn[o].group===t&&e.appendChild(b.createOptionsListing("cookieMonsterMod",o,cn,dn,sn))})))})),e}function pn(e){return String(e).split(String(7)).length-1}function un(e,t){const o=10*t;let a=7*t-e%o+e%t;return a<0&&(a+=o),a}function hn(e,t){const o=document.createElement("div");o.className="title",o.style.padding="0px 16px",o.style.opacity="0.7",o.style.fontSize="17px",o.style.fontFamily='"Kavoon", Georgia, serif',o.appendChild(document.createTextNode(`${e} `));const a=document.createElement("span");return a.style.cursor="pointer",a.style.display="inline-block",a.style.height="14px",a.style.width="14px",a.style.borderRadius="7px",a.style.textAlign="center",a.style.backgroundColor="#C0C0C0",a.style.color="black",a.style.fontSize="13px",a.style.verticalAlign="middle",a.textContent=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]?"-":"+",a.onclick=function(){!function(e){Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]+=1,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]>1&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]=0),w.saveFramework()}(t),Game.UpdateMenu()},o.appendChild(a),o}function gn(e,t,o,a){const n=document.createElement("div");n.className="listing";const i=document.createElement("b");if(i.textContent=t,n.appendChild(i),"withTooltip"===e){n.className="listing",n.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(Mo[a].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",n.appendChild(e)}return n.appendChild(document.createTextNode(": ")),n.appendChild(o),n}function fn(e,t,o,a){const n=document.createElement("div");n.className="listing";const i=document.createElement("b");return i.textContent=t,!0===a&&(i.style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen),n.appendChild(i),n.appendChild(document.createTextNode(": ")),n.appendChild(o),n}function kn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const a=document.createElement("div"),n=document.createElement("div");n.style.minWidth="140px",n.style.marginBottom="4px";const i=document.createElement("div");return i.className="name",i.style.marginBottom="4px",i.style.textAlign="center",i.textContent="Missing",n.appendChild(i),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),n.appendChild(o)})),a.appendChild(n),o.onmouseover=function(){Game.tooltip.draw(this,escape(a.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Cn(e){const t=document.createElement("div");if(t.className="subsection",t.appendChild(e),t.appendChild(hn("Lucky Cookies","Lucky")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Lucky&&t.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+_o(){Game.HasUnlocked(Ma[e])||c.push(Ma[e])})),0!==c.length&&e.appendChild(gn("basic","Rare plant drops left to unlock",kn(c))),e}())),t.appendChild(hn("Prestige","Prestige")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Prestige&&t.appendChild(function(){const e=document.createElement("div");e.className="CMStatsPrestigeSection";const t=Math.floor(Game.HowMuchPrestige(ct+Game.cookiesReset+He+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")?Ae:0)));e.appendChild(gn("withTooltip","Prestige level (cur / max)",document.createTextNode(`${ao(Game.prestige)} / ${ao(t)}`),"PrestMaxTooltipPlaceholder"));const o=Math.max(0,Game.HowManyCookiesReset(t+1)-(ct+Game.cookiesReset+He+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")&&Ae?Ae:0))),a=document.createDocumentFragment();a.appendChild(document.createTextNode(ao(o)));const n=document.createElement("small");n.textContent=` (${Io(o/dt,1)})`,a.appendChild(n),e.appendChild(gn("withTooltip","Cookies to next level",a,"NextPrestTooltipPlaceholder")),e.appendChild(gn("withTooltip","Heavenly chips (cur / max)",document.createTextNode(`${ao(Game.heavenlyChips)} / ${ao(t-Game.prestige+Game.heavenlyChips)}`),"HeavenChipMaxTooltipPlaceholder")),e.appendChild(gn("basic","Heavenly chips per second (last 5 seconds)",document.createTextNode(ao(Oe,2))));const i=Number(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HeavenlyChipsTarget);if(!Number.isNaN(i)){const t=i-Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned));t>0&&(e.appendChild(gn("basic","Heavenly chips to target set in settings (cur)",document.createTextNode(ao(t)))),e.appendChild(gn("basic","Time till target (cur, current 5 second average)",document.createTextNode(Io(t/Oe)))))}const r=function(e){let t=Game.cookiesPs;la(),0===bt["Heavenly key"].bought&&(bt["Heavenly chip secret"].bought=1,bt["Heavenly cookie stand"].bought=1,bt["Heavenly bakery"].bought=1,bt["Heavenly confectionery"].bought=1,bt["Heavenly key"].bought=1,ha(),t=ue,la()),ct>=1e6&&ua("Sacrifice"),ct>=1e9&&ua("Oblivion"),ct>=1e12&&ua("From scratch"),ct>=1e15&&ua("Nihilism"),ct>=1e18&&ua("Dematerialize"),ct>=1e21&&ua("Nil zero zilch"),ct>=1e24&&ua("Transcendence"),ct>=1e27&&ua("Obliterate"),ct>=1e30&&ua("Negative void"),ct>=1e33&&ua("To crumbs, you say?"),ct>=1e36&&ua("You get nothing"),ct>=1e39&&ua("Humble rebeginnings"),ct>=1e42&&ua("The end of the world"),ct>=1e45&&ua("Oh, you're back"),ct>=1e48&&ua("Lazarus"),ct>=1e51&&ua("Smurf account"),ct>=1e54&&ua("If at first you don't succeed"),bt["Heavenly chip secret"].bought=1,bt["Heavenly cookie stand"].bought=1,bt["Heavenly bakery"].bought=1,bt["Heavenly confectionery"].bought=1,bt["Heavenly key"].bought=1,ie=e;const o=ae;ha(),ba(),o!==ae&&ha();const a=ue-t;return ie=Game.prestige,a}(t),s=document.createDocumentFragment();s.appendChild(document.createTextNode(ao(r)));const l=Math.round(r/Game.cookiesPs*1e4);if(Number.isFinite(l)&&0!==l){const e=document.createElement("small");e.textContent=` (${l/100}% of income)`,s.appendChild(e)}e.appendChild(gn("withTooltip","Reset bonus income",s,"ResetTooltipPlaceholder"));const c=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),m=d-c,{luckyDigit:p,luckyNumber:u,luckyPayout:h}=function(e){const t={};let o=pn(e);const a=String(e).length;if(o>=1&&(t.luckyDigit=e,o>=2&&(t.luckyNumber=e,o>=4)))return t.luckyPayout=e,t;let n;if(n=a>=16?Math.ceil(e/10**(a-15)):e,o=pn(n),void 0===t.luckyDigit&&(o<1&&(n+=un(n,1),o=pn(n)),t.luckyDigit=n,a>=16&&(t.luckyDigit*=10**Number(a-15))),void 0===t.luckyNumber){for(;o<2;){let e=un(n,1);0===e&&(e=un(n,10)),n+=e,o=pn(n)}t.luckyNumber=n,a>=16&&(t.luckyNumber*=10**Number(a-15))}let i=1;for(;o<4;){const e=un(n,i);0===e?i*=10:(n+=e,o=pn(n))}return t.luckyPayout=n,a>=16&&(t.luckyPayout*=10**Number(a-15)),t}(d);if(!Game.Has("Lucky digit")){const t=p-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${p.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(gn("basic",'Next "Lucky Digit" (total / reset)',a))}if(!Game.Has("Lucky number")){const t=u-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${u.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(gn("basic",'Next "Lucky Number" (total / reset)',a))}if(!Game.Has("Lucky payout")){const t=h-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${h.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(gn("basic",'Next "Lucky Payout" (total / reset)',a))}return e}()),Game.cpsSucked>0&&(t.appendChild(hn("Wrinklers","Wrink")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${ao(He)} / ${ao(Re)} `));const o=document.createElement("a");o.textContent="Pop All Normal",o.className="option",o.onclick=function(){qa()},e.appendChild(o),t.appendChild(gn("basic","Rewards of Popping (All/Normal)",e));const a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${ao(Ie[0])} `));const n=document.createElement("a");n.textContent="Pop Single Fattest",n.className="option",n.onclick=function(){null!==Ie[1]&&(Game.wrinklers[Ie[1]].hp=0)},a.appendChild(n),t.appendChild(gn("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==Ie[1]?Ie[1]:"None"})`,a))}if(t.appendChild(function(){const e=document.createElement("div");e.className="CMStatsSeasonSection";let t=!1;const o=[];Object.keys(fa).forEach((e=>{Game.Has(fa[e])||(o.push(fa[e]),t=!0)}));const a=[];Object.keys(ka).forEach((e=>{Game.Has(ka[e])||(a.push(ka[e]),t=!0)}));const n=[];Object.keys(Ca).forEach((e=>{Game.Has(Ca[e])||(n.push(Ca[e]),t=!0)}));const i=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(i.push(Game.eggDrops[e]),t=!0)}));const r=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(r.push(Game.rareEggDrops[e]),t=!0)}));const s=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),l=Game.Has("Century egg");if(("christmas"===Game.season||t||s||l)&&(e.appendChild(hn("Season Specials","Sea")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Sea)){if(0!==o.length){e.appendChild(fn(0,"Halloween cookies left to buy",kn(o),"halloween"===Game.season));let t=.95;if(Game.HasAchiev("Spooky cookies")&&(t=.8),Game.Has("Starterror")&&(t*=.9),t*=1/Game.dropRateMult(),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const a=o.length/7;e.appendChild(fn(0,"Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${ao((1-t)*a*100)}% / ${ao((1-.9*t)*a*100)}%`),"halloween"===Game.season))}if(0!==a.length){e.appendChild(fn(0,"Christmas cookies left to buy",kn(a),"christmas"===Game.season));let t=.8;if(Game.HasAchiev("Let it snow")&&(t=.6),t*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(t*=.95),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=a.length/7;e.appendChild(fn(0,"Chance of receiving a cookie from reindeer",document.createTextNode(`${ao((1-t)*o*100)}%`),"christmas"===Game.season))}0!==n.length&&e.appendChild(fn(0,"Valentine cookies left to buy",kn(n),"valentines"===Game.season));const t=function(e){let t=e*(1/Game.dropRateMult());if(Game.HasAchiev("Hide & seek champion")&&(t*=.7),Game.Has("Omelette")&&(t*=.9),Game.Has("Starspawn")&&(t*=.9),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=1-t,a=Game.eggDrops.length-i.length,n=Game.rareEggDrops.length-r.length,s=.9*o*(1-a/Game.eggDrops.length),l=.1*o*(1-n/Game.rareEggDrops.length),c=.9*o*(a/Game.eggDrops.length)+.1*o*(n/Game.rareEggDrops.length);return[s+.9*c*(1-a/Game.eggDrops.length),l+.1*c*(1-n/Game.rareEggDrops.length)]};0!==i.length&&(e.appendChild(fn(0,"Normal easter eggs left to unlock",kn(i),"easter"===Game.season)),e.appendChild(fn(0,"Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${ao(100*t(.98)[0])}% / ${ao(100*t(.9)[0])}%`),"easter"===Game.season))),0!==r.length&&(e.appendChild(fn(0,"Rare easter eggs left to unlock",kn(r),"easter"===Game.season)),e.appendChild(fn(0,"Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${ao(100*t(.98)[1])}% / ${ao(100*t(.9)[1])}%`),"easter"===Game.season))),"christmas"===Game.season&&e.appendChild(fn(0,"Reindeer reward",document.createTextNode(ao(Le)),!0)),s&&e.appendChild(gn("withTooltip","Chocolate egg cookies",document.createTextNode(ao(Ae)),"ChoEggTooltipPlaceholder")),l&&e.appendChild(gn("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(De-1))/100+"%")))}return e}()),t.appendChild(hn("Achievements","Achievs")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Achievs&&Object.keys(Game.Objects).forEach((e=>{const o=Ue[e];t.appendChild(gn("basic",e,o.AmountNeeded<101?document.createTextNode(`Next achievement in ${o.AmountNeeded}, price: ${ao(o.price)}`):document.createTextNode("No new achievement for next 100 buildings")))})),t.appendChild(hn("Miscellaneous","Misc")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Misc){if(t.appendChild(gn("basic",`Average cookies per second (past ${Fo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]<60?`${Fo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]} seconds`:Fo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]/60+(3===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(ao(Vo(),3)))),t.appendChild(gn("basic",`Average cookie clicks per second (past ${Eo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]}${0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist?" second":" seconds"})`,document.createTextNode(ao(Xe,1)))),t.appendChild(gn("basic",`Cookies from clicking (past ${Eo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]}${0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist?" second":" seconds"})`,document.createTextNode(ao(O.calcSum(Xe*Eo[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]))))),Game.Has("Fortune cookies")){const e=[];Object.keys(ga).forEach((t=>{Game.Has(ga[t])||e.push(ga[t])})),0!==e.length&&t.appendChild(gn("basic","Fortune Upgrades Left to Buy",kn(e)))}if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ShowMissedGC&&t.appendChild(gn("basic","Missed golden cookies",document.createTextNode(ao(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),t.appendChild(gn("basic","Time till autosave",e))}}l("menu").insertBefore(t,l("menu").childNodes[2]),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&qe){const t=qe.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(a),e.appendChild(o);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=qe,e.appendChild(n)}else if("Upgrades"===e.children[0].innerHTML){if(Qe){const t=Qe.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(a),e.insertBefore(o,e.childNodes[3]);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=Qe,e.insertBefore(n,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Ye){const t=Ye.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(a),e.appendChild(o);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=Ye,e.appendChild(n)}}})),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements&&function(){let e;Object.values(document.querySelectorAll("div.title")).forEach((t=>{t.textContent.includes("Achievements")&&(e=t.parentElement.querySelectorAll("div.listing.crateBox")[0])})),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements&&Object.values(e.children).forEach((e=>{if(!e.className.includes("enabled")){const t=e.onclick.toString().split(/\[(.*)\]/gi)[1],{icon:o}=Game.AchievementsById[t];e.style.backgroundPosition=`${48*-o[0]}px ${48*-o[1]}px`,e.onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>function(e){const t=[];"shadow"===e.pool?t.push("Shadow Achievement","#9700cf"):t.push("Achievement",0),t.push("Locked",0);let o=0;(Game.Has("Neuromancy")||Game.sesame&&"debug"===e.pool)&&(o=1),o&&0===e.won?t.push("Click to win!","#00c462"):o&&e.won>0&&t.push("Click to lose!","#00c462");let{icon:a}=e;e.iconFunction&&(a=e.iconFunction());let{desc:n}=e;e.descFunc&&(n=e.descFunc("stats"));let i="";for(let e=0;e[${t[e]}]`);return i=i.substring(1),`
\n
\n
${e.name}
\n ${i}
${n}
\n ${Game.sesame?`
Id : ${e.id} | Order : ${Math.floor(e.order)}${e.tier?` | Tier : ${e.tier}`:""}
`:""}`}(Game.AchievementsById[t])),"top"),Game.tooltip.wobble())}}}))}()}function Mn(e){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar&&0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos){const t=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=t,e(),Game.mouseY+=t}else e()}function yn(){eo.Beautify=Beautify,Beautify=ao,eo.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){eo.CalculateGains(),me=1,to=Date.now(),oo=Date.now()},eo.tooltip={},eo.tooltip.draw=Game.tooltip.draw,eo.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){eo.tooltip.drawMod(e,t,o)},eo.tooltip.update=Game.tooltip.update,eo.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){eo.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let e=0;1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnLucky&&1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(e=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-e-46)}px`}}()},eo.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){Mn(eo.UpdateWrinklers)},eo.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){Mn(eo.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(e=>{Mn((()=>Game.ClickCookie(e,0)))}),!1),eo.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){eo.RebuildUpgrades(),Zt=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(Zt[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("u",`${e}`)),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},eo.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(e){(!Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BulkBuyBlock||Game.ObjectsById[e].bulkPrice<=Game.cookies||-1===Game.buyMode)&&eo.ClickProduct(e)},eo.DescribeDragonAura=Game.DescribeDragonAura,Game.DescribeDragonAura=function(e){eo.DescribeDragonAura(e),function(e){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DragonAuraInfo){const[t,o]=function(e){la(),l("promptContent").children[0].innerHTML.includes("secondary")?se=e:re=e;let t=0;if(re!==ge||se!==fe)for(let e=Game.ObjectsById.length-1;e>-1;--e)if(Game.ObjectsById[e].amount>0){const o=yt[Game.ObjectsById[e].name].name;yt[o].amount-=1,ee-=1,t=yt[o].basePrice*Game.priceIncrease**Math.max(0,yt[o].amount-1-yt[o].free),t=Game.modifyBuildingPrice(yt[o],t),t=Math.ceil(t);break}const o=ae;return ha(),ba(),o!==ae&&ha(),[ue-Game.cookiesPs,t]}(e),a=Io(o/(t+Game.cookiesPs));let n;n=0===Game.cookiesPs?ao(1/0):ao(t/Game.cookiesPs*100),l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const i=document.createElement("div");i.style.minWidth="200px",i.style.textAlign="center",i.textContent=`Picking this aura will change CPS by ${ao(t)} (${n}% of current CPS).`,l("dragonAuraInfo").appendChild(i);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${a} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(e)},eo.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){eo.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${Ce}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},eo.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==r.picker&&void 0!==r.picker.owner||(eo.UpdateMenu(),function(){const e=document.createElement("div");e.className="title","stats"===Game.onMenu?Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Stats&&(e.textContent="Cookie Monster Statistics",Cn(e)):"prefs"===Game.onMenu&&l("menu").childNodes[2].insertBefore(mn(),l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}())},eo.sayTime=Game.sayTime,wo=function(e,t){return Number.isNaN(e)||e<=0?eo.sayTime(e,t):Io(e/Game.fps,1)},eo.Logic=Game.Logic,Game.Logic=function(){eo.Logic();let e="Cookie Clicker";"fools"===Game.season&&(e="Cookie Baker"),$o=`${Game.OnAscend?"Ascending! ":""}${ao(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${e}`,function(){if(Game.OnAscend||0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title)document.title=$o;else if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title){let e,t,o,a=!1,n=!1;e=mt?mt.wrath?`[W${Math.ceil(mt.life/Game.fps)}]`:`[G${Math.ceil(mt.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,It&&(a=!0,t="[F]"),"christmas"===Game.season&&(n=!0,o=Rt?`[R${Math.ceil(pt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let i=$o;"["===i.charAt(0)&&(i=i.substring(i.lastIndexOf("]")+1)),document.title=`${e+(a?t:"")+(n?o:"")} ${i}`}else if(2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title){let e="",t=!1;mt&&(t=!0,mt.wrath?e+=`[W${Math.ceil(mt.life/Game.fps)}]`:e+=`[G${Math.ceil(mt.life/Game.fps)}]`),It&&(t=!0,e+="[F]"),"christmas"===Game.season&&Rt&&(e+=`[R${Math.ceil(pt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const e=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),t=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let o=`You've been on this run for ${""===t?"not very long":t}.
\n
`;Game.prestige>0&&(o+=`Your prestige level is currently ${ao(Game.prestige)}.
(CpS +${ao(Game.prestige)}%)\n
`),o+=K<1?"Ascending now would grant you no prestige.":K<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${ao(K)} prestige levels (+${ao(K)}% CpS)
and ${ao(K)} heavenly chips to spend.`,o+=`
\n You need ${ao(e)} more cookies for the next level.
\n ${Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAscendButton?`
It takes ${ut} to reach the next level and you were making ${ao(Oe,2)} chips on average in the last 5 seconds.
`:""}`,l("ascendTooltip").innerHTML=o}()}}function bn(){window.CookieMonsterData={},Game.mods.cookieMonsterFramework.listeners.optionsMenu.push(mn),Ja(),za(),Qa(),Dt=Object.keys(Game.mods).length,Yt=document.createElement("style"),Yt.type="text/css",Yt.id="CMCSS",document.head.appendChild(Yt),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColor="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),a=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=no+t,o.textContent=e,o},n=o.appendChild(document.createElement("tr"));n.style.fontWeight="bold",n.appendChild(a(`CM ${B}.${P}`,co)),o.appendChild(document.createElement("tr")).appendChild(a("Bonus Income",so)),o.appendChild(document.createElement("tr")).appendChild(a("Payback Period",so)),o.appendChild(document.createElement("tr")).appendChild(a("Time Left",so)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{Qo(e)}))}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColor="black";const t=Xo("CMTimerBarAutosave","Autosave",[{id:"CMTimerBarAutosaveBar",colour:uo}]);e.appendChild(t);const o=Xo("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",colour:ho},{id:"CMTimerBarGCBar",colour:uo}]);e.appendChild(o);const a=Xo("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",colour:ho},{id:"CMTimerBarRenBar",colour:mo}]);e.appendChild(a);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColor="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const a=document.createElement("span");return a.className=io+e,a.style.display="inline-block",a.style.height="10px",a.style.width="10px",a.style.marginRight="4px",o.appendChild(a),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(so,"Better than the best PP of a building option")),e.appendChild(o(lo,"Same as the best PP building option")),e.appendChild(o(co,"Within the top 10 of PP for buildings")),e.appendChild(o(mo,"Within the top 20 of PP for buildings")),e.appendChild(o(po,"Within the top 30 of PP for buildings")),e.appendChild(o(uo,"Outside of the top 30 of PP for buildings")),e.appendChild(o(ho,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=no+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",so)),e.appendChild(o("CMUpgradeBarGreen",lo)),e.appendChild(o("CMUpgradeBarYellow",co)),e.appendChild(o("CMUpgradeBarOrange",mo)),e.appendChild(o("CMUpgradeBarRed",po)),e.appendChild(o("CMUpgradeBarPurple",uo)),e.appendChild(o("CMUpgradeBarGray",ho)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMSectionHidButtons",e.style.textAlign="center";const t=document.createElement("a");t.className="option",t.onclick=function(){"flex"===l("upgrades").style.display?(l("upgrades").style.display="none",l("toggleUpgrades").style.display="none",l("techUpgrades").style.display="none",l("vaultUpgrades").style.display="none"):(l("upgrades").style.display="flex",0!==l("toggleUpgrades").children.length&&(l("toggleUpgrades").style.display="block"),0!==l("techUpgrades").children.length&&(l("techUpgrades").style.display="block"),0!==l("vaultUpgrades").children.length&&(l("vaultUpgrades").style.display="block"))},t.textContent="Hide/Show Upgrades",e.appendChild(t);const o=document.createElement("a");o.className="option",o.onclick=function(){"grid"===l("products").style.display?l("products").style.display="none":l("products").style.display="grid"},o.textContent="Hide/Show Buildings",e.appendChild(o),l("store").insertBefore(e,l("store").childNodes[2])}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}(),Object.keys(Co).forEach((e=>{!function(e,t,o){const a=document.createElement("div");a.id=e;const n=document.createElement("div");n.style.minWidth=o,n.style.marginBottom="4px";const i=document.createElement("div");i.style.textAlign="left",i.textContent=t,n.appendChild(i),a.appendChild(n),Mo[e]=a}(Co[e][0],Co[e][1],Co[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){qa()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("wb","PopAllNormal")),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==Ie[1]&&(Game.wrinklers[Ie[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("wb","PopFattest")),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",Object.keys(l("rows").children).forEach((e=>{const t=l("rows").children[e].children[1],o=document.createElement("div");o.id=`productLock${Number(e)+1}`,o.className="productButton",o.innerHTML="Lock",o.onclick=function(){!function(e){"Lock"===l(`productLock${e}`).innerHTML?(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.push(e.toString()),l(`row${e}`).style.pointerEvents="none",l(`row${e}`).style.opacity="0.4",l(`productLock${e}`).innerHTML="Unlock",l(`productLock${e}`).style.pointerEvents="auto"):(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.includes(e.toString())&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.filter((t=>t!==e.toString()))),l(`productLock${e}`).innerHTML="Lock",l(`row${e}`).style.pointerEvents="auto",l(`row${e}`).style.opacity="1")}(Number(e)+1)},t.appendChild(o)})),Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(Kt[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("b",`${e}`)),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(Lt=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("s","Lump")),"this"),Game.tooltip.wobble()}),Ht=Game.LoadMinigames,Game.LoadMinigames=function(){Ht(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("ha","HarvestAllButton")),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("p",[`${t[0]}`,`${t[2]}`])),"this"),Game.tooltip.wobble()}}))),Za(),function(){if(Game.Objects.Bank.minigameLoaded)for(let e=0;eYa("sm",e)),"this"),Game.tooltip.wobble()}}(),function(){if(Game.Objects.Temple.minigameLoaded){for(let e=0;e<11;e+=1)l(`templeGod${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("pag",e)),"this"),Game.tooltip.wobble()};for(let e=0;e<3;e+=1)l(`templeSlot${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Ya("pas",[e,Game.Objects.Temple.minigame.slot[e]])),"this"),Game.tooltip.wobble()}}}(),tn()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){bo=1},l("backgroundLeftCanvas").onmouseout=function(){bo=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{vo[e]=0}))},yn(),tn(),Game.CalculateGains(),yo=Game.OnAscend,Game.prefs.popups?Game.Popup(`Cookie Monster version ${B}.${P} loaded!`):Game.Notify(`Cookie Monster version ${B}.${P} loaded!`,"","",1,1),Game.Win("Third-party")}function Gn(e,t){if(!Game.Objects.Temple.minigameLoaded)return 0;la();const{minigame:o}=Game.Objects.Temple,a=o.godsById[e].slot;"0"===a?le=o.slot[t]:"1"===a?ce=o.slot[t]:"2"===a&&(de=o.slot[t]),0===t?le=e:1===t?ce=e:2===t&&(de=e);const n=ae;return ha(),ba(),n!==ae&&ha(),ue-Game.cookiesPs}function vn(){if(Ao!==Game.OnAscend&&(Ao=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar&&(l("CMBotBar").style.display="none"),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar&&(l("CMTimerBar").style.display="none")):(ln(),Jo()),Yo()),!Game.OnAscend&&0===Game.AscendTimer){Dt!==Object.keys(Game.mods).length&&(Ja(),Qa(),Dt=Object.keys(Game.mods).length),me&&(_a(!0),Wa(),Game.Has("Golden switch [off]")?(la(),bt["Golden switch [off]"].bought=0,ha(),Ee=ue):Ee=Game.cookiesPs,Ea({CacheNoGoldSwitchCookiesPS:Ee}),Va(),za(),Ra(),Ua(),on(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)Mt[e][t]=Gn(e,t);Ea({CacheGods:Mt})}(),Ia(),function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const t=Game.Objects.Bank.minigame.goods;let o=0;Object.keys(t).forEach((e=>{const a=t[e];o+=a.stock*a.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;la();let t=2;5!==re&&18!==re||(t-=1),5!==se&&18!==se||(t-=1),re=5,se=18;for(let e=0;e{yt[t].amount>0&&(e=t)})),yt[e].amount-=1,ee-=1}return Object.keys(yt).forEach((t=>{const o=yt[t];e+=Bt(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),Ct=e,Ea({CacheSellForChoEgg:Ct})}(),me=0);const e=Game.auraMult("Fierce Hoarder")>0;!Z&&e?(Z=!0,J=1):Z&&!e&&(Z=!1,J=1),J&&(ja(),J=0),function(){Xa(),Da(),_a(!1),function(){ze=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(yt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}Ve=e,ze=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t,Ea({CacheCurrWrinklerCount:Ve,CacheCurrWrinklerCPSMult:ze})}(),Ba(),Ha();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);ut=Io(e/Vo())}(),It!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(It=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,It&&(v.createFlash("cookieMonsterMod",3,"FortuneFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),v.createNotification("cookieMonsterMod","FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),Rt!==Game.shimmerTypes.reindeer.spawned&&(Rt=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(pt=Game.shimmers[e])})),v.createFlash("cookieMonsterMod",3,"SeaFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaSoundURL,"SeaSound","SeaVolume",!1),v.createNotification("cookieMonsterMod","SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!"),ea=1),Game.Objects.Farm.minigameLoaded&&zt!==Game.Objects.Farm.minigame.nextStep&&(0!==zt&&zt0){let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)})),e>qt?(qt=e,e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxFlash?v.createFlash("cookieMonsterMod",3,"WrinklerMaxFlash",!1):v.createFlash("cookieMonsterMod",3,"WrinklerFlash",!1),e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSound?v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification?v.createNotification("cookieMonsterMod","WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):v.createNotification("cookieMonsterMod","WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):qt=e}}()}Qt=0,kt={},Object.keys(Game.shimmers).forEach((e=>{kt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(mt=Game.shimmers[e],Qt+=1)})),Object.keys(Wo).forEach((e=>{void 0===kt[e]&&(Wo[e].parentNode.removeChild(Wo[e]),delete Wo[e])})),Vt!==Game.shimmerTypes.golden.n?(Vt=Game.shimmerTypes.golden.n,Vt&&(_t{void 0===Wo[Game.shimmers[e].id]&&function(e){const t=document.createElement("div");t.id=`GCTimer${e.id}`,t.style.width="96px",t.style.height="96px",t.style.position="absolute",t.style.zIndex="10000000001",t.style.textAlign="center",t.style.lineHeight="96px",t.style.fontFamily='"Kavoon", Georgia, serif',t.style.fontSize="35px",t.style.cursor="pointer",t.style.display="block",t.style.pointerEvents="none",0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer&&(t.style.display="none"),t.style.left=e.l.style.left,t.style.top=e.l.style.top,t.onclick=function(){e.pop()},t.onmouseover=function(){e.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",e.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},t.onmouseout=function(){e.l.style.filter="",e.l.style.webkitFilter=""},Wo[e.id]=t,l("shimmers").appendChild(t)}(Game.shimmers[e])}))),Ka(),_t=Qt,0===Qt&&(mt=0)):1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer&&Vt&&Object.keys(Wo).forEach((e=>{Wo[e].style.opacity=kt[e].l.style.opacity,Wo[e].style.transform=kt[e].l.style.transform,Wo[e].textContent=Math.ceil(kt[e].life/Game.fps)}))}const wn={Favourite:1,Calculation:1,Notation:1,Colours:1,BarsDisplay:1,Tooltip:1,Statistics:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Achievs:1,Misc:1,infoMenu:1,optionsMenu:1};function xn(e){Ja(),w.loadMod("cookieMonsterMod",e,cn,wn,vn),void 0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames=[]),dn();for(let e=0;e{Game.registerMod("CookieMonster",Tn),window.cookieMonsterFrameworkData.isInitializing=!1}),2e3):(Game.registerMod("CookieMonster",Tn),window.cookieMonsterFrameworkData.isInitializing=!1)})()})(); //# sourceMappingURL=https://cookiemonsterteam.github.io/CookieMonster/dist/CookieMonster.js.map \ No newline at end of file diff --git a/dist/CookieMonster.js.map b/dist/CookieMonster.js.map index f916def..6c758f9 100644 --- a/dist/CookieMonster.js.map +++ b/dist/CookieMonster.js.map @@ -1 +1 @@ -{"version":3,"file":"CookieMonster.js","mappings":"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AQtuB,KAAKgE,MAAMsqB,EAAQnB,GACvBiC,EAAiB,IACnBC,GAAQf,EACRc,GAAkB,EAEtB,CACA,OAAOC,CACT,CClCO,MAAMK,GAAS,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAGhDC,GAAa,CACxB,GACA,GACA,IACA,IACA,KACA,QACA,QACA,OACA,OACA,MACA,MACA,MACA,QACA,SACA,SACA,cACA,UACA,SACA,YACA,UACA,WACA,SACA,WACA,YACA,YACA,kBAIWC,GAAwB,CACnC,GACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,OC3IK,IAAIC,GAEAC,GAGAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAGAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GCjBAC,GDFAC,GAAqB,GAErBC,GAAwB,GACxBC,GAAuB,GAOvBC,GAAkB,CAAC,EAanBC,GAAyBC,KAAKC,MAI9BC,GAAyBF,KAAKC,MEhB1B,SAAS,GAASE,EAAKC,EAAQ1T,GAC5C,MAAM2T,EACJ3U,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASwT,cAAgB,EACtF,GAAIH,IAAQI,IACV,MAAO,WAET,QAAmB,IAARJ,EACT,MAAO,IAET,GAAkF,IAA9EzU,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS0T,MACtE,OAAOV,GAAgBW,SAASN,EAAKC,GAEvC,GAAIM,OAAOC,SAASR,GAAM,CACxB,GAAIA,EAAM,EACR,MAAO,IAAI,GAAStxB,KAAKuN,IAAI+jB,MAE/B,IAAIS,EAAS,GACb,GAAY,IAART,EACF,OAAOA,EAAIpxB,WAEb,GACEoxB,EAAM,MACNA,EAAMzU,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS+T,YAK1E,OAFED,EADElV,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgU,eAC7DX,EAAIY,eAAe,MAChBZ,EAAIY,eAAe,MAC1BH,EAET,GACiF,IAA9ElV,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS0T,QAClE9T,GACQ,IAAXA,EAGAkU,EAAST,EAAIa,cAAcX,GAAUtxB,WAAW7B,QAAQ,IAAK,SACxD,CACL,MAAM+zB,EAAcd,EAAIa,gBAAgBjyB,WAClCmyB,EAAwBryB,KAAKgE,MAAMouB,EAAYxX,MAAMwX,EAAYt3B,QAAQ,KAAO,GAAK,GAC3Fi3B,GAAUT,EAAMO,OAAO,KAA6B,EAAxBQ,IAA8BC,QAAQd,GAGe,IAA9E3U,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS0T,QAClE9T,GACQ,IAAXA,EAGIyT,GAAO,KAAQA,EAAMO,OAAO,KAAqB,EAAhBnC,GAAO73B,QAC1Ck6B,GAAU,IAAIrC,GAAO2C,KAChBN,EAAS,GAAST,EAAK,EAAG,GAE8C,IAA9EzU,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS0T,QAClE9T,GACQ,IAAXA,EAGIyT,GAAO,KAAQA,EAAMO,OAAO,KAAyB,EAApBlC,GAAW93B,QAC9Ck6B,GAAU,IAAIpC,GAAW0C,KACpBN,EAAS,GAAST,EAAK,EAAG,GAE8C,IAA9EzU,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS0T,QAClE9T,GACQ,IAAXA,EAGIyT,GAAO,KAAQA,EAAMO,OAAO,KAAoC,EAA/BjC,GAAsB/3B,QACzDk6B,GAAU,IAAInC,GAAsByC,KAC/BN,EAAS,GAAST,EAAK,EAAG,IAE8C,IAA9EzU,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS0T,QAClE9T,GACQ,IAAXA,KAGAkU,GAAU,IAA4B,EAAxBM,EAElB,CAQA,MAPe,KAAXN,IAEFt5B,QAAQ85B,IAAI,2DAA2DjB,KACvES,EAASd,GAAgBW,SAASN,EAAKC,IAErC1U,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgU,iBACtEF,EAASA,EAAO1zB,QAAQ,IAAK,MACxB0zB,CACT,CAEA,OADAt5B,QAAQ85B,IAAI,2DAA2DjB,KAChEL,GAAgBW,SAASN,EAAKC,EACvC,CD5FO,MAAMiB,GAAgB,SAChBC,GAAgB,SAMhBC,GAAa,OACbC,GAAc,QACdC,GAAe,SACfC,GAAe,SACfC,GAAY,MACZC,GAAe,SACfC,GAAa,OACbC,GAAa,OACbC,GAAc,QACdC,GAAkB,CAC7BT,GACAC,GACAC,GACAC,GACAC,GACAC,GACAE,GACAC,GACAF,IAUWI,GAAc,CACzB,CAAC,6BAA8B,oCAAqC,SACpE,CACE,2CACA,6EACA,SAEF,CACE,6BACA,qPACA,SAEF,CACE,8BACA,kEACA,SAEF,CACE,kCACA,2PACA,SAEF,CACE,0BACA,gLACA,SAEF,CACE,2BACA,uOACA,SAEF,CAAC,4BAA6B,2CAA4C,SAC1E,CACE,8BACA,uHACA,UAGSC,GAAwB,CAAC,EAM/B,IAUIC,GAVAC,GAAsB,EACtBC,IAAmB,EAOnBC,GAA4B,GAG5BC,GAAY,WAAa,EAKzBC,GAAmB,EACnBC,GAAsB,EACtBC,GAA4B,EAMhC,MAAMC,GAAc,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,MAC9CC,GAAa,CAAC,EAAG,EAAG,GAAI,GAAI,IAK5BC,GAAc,CACzBC,OAAQrB,GACR,iBAAkBM,GAClB,eAAgBP,GAChBuB,KAAMpB,GACN,eAAgBJ,GAChByB,aAAclB,IAMT,IAOImB,GACAC,GACAC,GACAC,GACAC,GAEAC,GACAC,GAdAC,GAAW,CAAC,EAKZC,GAAQ,GEnHJ,SAASC,KACtB,IAkDIC,EAlDA73B,EAAS4f,KAAKyS,QACG,IAAjBzS,KAAKkY,QACPnB,GAAsB32B,EAEtBA,EAAS22B,GAEI,IAAX32B,EAAcA,EAASotB,GACP,KAAXptB,EAAeA,EAASqtB,GACb,MAAXrtB,IAAgBA,EAASstB,IAGlC7hB,EAAE,cAAchJ,MAAMs1B,eAAe,SACrCtsB,EAAE,eAAehJ,MAAMs1B,eAAe,SACtCtsB,EAAE,gBAAgBhJ,MAAMs1B,eAAe,SAElB,IAAjBnY,KAAKkY,QACiF,IAApFlY,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgX,aACtE75B,OAAO6C,KAAKhB,GAAQ+f,SAASplB,IAC3B8Q,EAAE,eAAemU,KAAKoR,QAAQr2B,GAAGqlB,MAAMvd,MAAMyF,MAC3C0X,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SACzD,SAAShhB,EAAOrF,GAAGs9B,SACpB,IAELxsB,EAAE,YAAY2jB,MAAkB3sB,MAAMyF,MACpC0X,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS0U,aAEtEv3B,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,IACjC8Q,EAAE,eAAemU,KAAKoR,QAAQr2B,GAAGqlB,MAAMvd,MAAMs1B,eAAe,QAAQ,KAG7C,IAAlBnY,KAAKkY,SACd35B,OAAO6C,KAAKosB,IAAerN,SAASplB,IAClC,MAAMykB,EAAIQ,KAAKoR,QAAQr2B,GACvB8Q,EAAE,eAAe2T,EAAEY,MAAMvd,MAAMyF,MAAQ,GASvCuD,EAAE,eAAe2T,EAAEY,MAAM1I,UAAY,GACnCqa,GAAavS,EAAGA,EAAEyS,UAAWzS,EAAE2S,OAAQ3S,EAAE0S,KAAMlS,KAAKyS,QAAS,GAC9D,IAQc,IAAjBzS,KAAKkY,SACJlY,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkX,cAWiB,IAAtFtY,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkX,eAEpEL,EAAM15B,OAAO6C,KAAKosB,IAAetuB,KAAKq5B,IACpC,MAAM/Y,EAAI,CAAC,EAIX,OAHAA,EAAElgB,KAAOi5B,EACT/Y,EAAEzT,GAAKyhB,GAAc+K,GAAGxsB,GACxByT,EAAE6Y,OAAS7K,GAAc+K,GAAGF,OACrB7Y,CAAC,IAGVyY,EAAIO,MAAK,CAAC/0B,EAAGP,IACXozB,GAAgBr4B,QAAQwF,EAAE40B,UAAY/B,GAAgBr4B,QAAQiF,EAAEm1B,QAC5D50B,EAAEsI,GAAK7I,EAAE6I,GACTuqB,GAAgBr4B,QAAQwF,EAAE40B,QAAU/B,GAAgBr4B,QAAQiF,EAAEm1B,WAGkB,IAAtFrY,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkX,eAEpEL,EAAM15B,OAAO6C,KAAKhB,GAAQlB,KAAKq5B,IAC7B,MAAM/Y,EAAI,CAAC,EAIX,OAHAA,EAAElgB,KAAOi5B,EACT/Y,EAAEzT,GAAK3L,EAAOm4B,GAAGxsB,GACjByT,EAAE6Y,OAASj4B,EAAOm4B,GAAGF,OACd7Y,CAAC,IAGVyY,EAAIO,MAAK,CAAC/0B,EAAGP,IACXozB,GAAgBr4B,QAAQwF,EAAE40B,UAAY/B,GAAgBr4B,QAAQiF,EAAEm1B,QAC5D50B,EAAEsI,GAAK7I,EAAE6I,GACTuqB,GAAgBr4B,QAAQwF,EAAE40B,QAAU/B,GAAgBr4B,QAAQiF,EAAEm1B,WAGkB,IAAtFrY,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkX,gBAEpEL,EAAM15B,OAAO6C,KAAKusB,IAA6BzuB,KAAKq5B,IAClD,MAAM/Y,EAAI,CAAC,EAKX,OAJAA,EAAElgB,KAAOi5B,EACT/Y,EAAEY,GAAKJ,KAAKoR,QAAQmH,GAAGnY,GACvBZ,EAAEiZ,gBAAkB9K,GAA4B4K,GAAGG,aACnDlZ,EAAEmZ,eAAiBhL,GAA4B4K,GAAG9G,MAC3CjS,CAAC,IAGVyY,EAAIO,MAAK,CAAC/0B,EAAGP,IAAMO,EAAE2c,GAAKld,EAAEkd,KAI5B6X,EAAIO,MACF,CAAC/0B,EAAGP,KACqB,MAAtBO,EAAEg1B,gBAA0Bh1B,EAAEk1B,eAAiB9D,MACzB,MAAtB3xB,EAAEu1B,gBAA0Bv1B,EAAEy1B,eAAiB9D,SA3DpDoD,EAAM15B,OAAO6C,KAAKosB,IAAetuB,KAAKq5B,IACpC,MAAM/Y,EAAI,CAAC,EAGX,OAFAA,EAAElgB,KAAOi5B,EACT/Y,EAAEY,GAAKJ,KAAKoR,QAAQmH,GAAGnY,GAChBZ,CAAC,IAGVyY,EAAIO,MAAK,CAAC/0B,EAAGP,IAAMO,EAAE2c,GAAKld,EAAEkd,MA0D9B,IAAK,IAAIxb,EAAI,EAAGA,EAAIqzB,EAAIj9B,OAAQ4J,IAC9Bob,KAAKoR,QAAQ6G,EAAIrzB,GAAGtF,MAAMuM,EAAEhJ,MAAM+1B,QAAU,GAAGh0B,EAAI,KAAKA,EAAI,GAEhE,CC3Ie,SAASi0B,KACtBt6B,OAAOu6B,OAAOz/B,SAAS0/B,uBAAuB,iBAAiB5Y,SAAS6Y,IAEpEhZ,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6X,uBACrD,aAAfD,EAAQ5Y,GAER4Y,EAAQn2B,MAAMiG,OAAS,OACC,kBAAfkwB,EAAQ5Y,IACjB4Y,EAAQn2B,MAAMiG,OAAS,GACvBkwB,EAAQn2B,MAAMq2B,UAAY,OACF,aAAfF,EAAQ5Y,IACjB4Y,EAAQn2B,MAAMiG,OAAS,GACnBkwB,EAAQx9B,UAAUmrB,SAAS,WAC7BqS,EAAQn2B,MAAMq2B,UAAY,OAE1BF,EAAQn2B,MAAMq2B,UAAY,SAG5BF,EAAQn2B,MAAMiG,OAAS,GACvBkwB,EAAQn2B,MAAMq2B,UAAY,OAC5B,GAEJ,CCRe,SAASC,KAEtB,GAAInZ,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgY,YAAc,EAAG,CACvF,IAAIC,EAAO,EACPC,EAAQ,EACRC,EAAS,EACTC,EAAS,EACTC,EAAM,EACNC,EAAS,EACTC,EAAO,EAEXp7B,OAAO6C,KAAK4e,KAAK4Z,iBAAiBzZ,SAASplB,IACzC,MAAM8+B,EAAK7Z,KAAK4Z,gBAAgB7+B,GAChC,IAAI++B,GAAc,EAClB,IAAK,IAAIC,EAAI,EAAGA,EAAIluB,EAAE,UAAU9Q,KAAKi/B,WAAWh/B,OAAQ++B,GAAK,EAC3D,IAAyE,IAArEluB,EAAE,UAAU9Q,KAAKi/B,WAAWD,GAAGv+B,UAAUyC,QAAQ23B,IAAuB,CAC1E/pB,EAAE,UAAU9Q,KAAKi/B,WAAWD,GAAGv+B,UAAYo6B,GAAgB3H,GAAc4L,EAAGv6B,MAAM+4B,OAClFyB,GAAc,EACd,KACF,CAEF,IAAKA,EAAa,CAChB,MAAMvT,EAAMltB,SAAS4D,cAAc,OACnCspB,EAAI1jB,MAAMgG,MAAQ,OAClB0d,EAAI1jB,MAAMiG,OAAS,OACnByd,EAAI/qB,UAAYo6B,GAAgB3H,GAAc4L,EAAGv6B,MAAM+4B,OACvDxsB,EAAE,UAAU9Q,KAAK+a,YAAYyQ,EAC/B,CACI0H,GAAc4L,EAAGv6B,MAAM+4B,SAAWxC,GAAYwD,GAAQ,EACjDpL,GAAc4L,EAAGv6B,MAAM+4B,SAAWvC,GAAawD,GAAS,EACxDrL,GAAc4L,EAAGv6B,MAAM+4B,SAAWtC,GAAcwD,GAAU,EAC1DtL,GAAc4L,EAAGv6B,MAAM+4B,SAAWrC,GAAcwD,GAAU,EAC1DvL,GAAc4L,EAAGv6B,MAAM+4B,SAAWpC,GAAWwD,GAAO,EACpDxL,GAAc4L,EAAGv6B,MAAM+4B,SAAWnC,GAAcwD,GAAU,EAC1DzL,GAAc4L,EAAGv6B,MAAM+4B,SAAWlC,KAAYwD,GAAQ,EAAC,IAGlE9tB,EAAE,oBAAoBzN,YAAci7B,EACpCxtB,EAAE,qBAAqBzN,YAAck7B,EACrCztB,EAAE,sBAAsBzN,YAAcm7B,EACtC1tB,EAAE,sBAAsBzN,YAAco7B,EACtC3tB,EAAE,mBAAmBzN,YAAcq7B,EACnC5tB,EAAE,sBAAsBzN,YAAcs7B,EACtC7tB,EAAE,oBAAoBzN,YAAcu7B,CACtC,CAEA,MAAM1B,EAAM,GAGZ,IAAK,IAAIrzB,EAAI,EAAGA,EAAIob,KAAK4Z,gBAAgB5+B,OAAQ4J,GAAK,EAAG,CACvD,MAAM4a,EAAI,CAAC,EACXA,EAAElgB,KAAO0gB,KAAK4Z,gBAAgBh1B,GAAGtF,KACjCkgB,EAAEiS,MAAQzR,KAAK4Z,gBAAgBh1B,GAAGqtB,UAClCzS,EAAEzT,GAAKkiB,GAAczO,EAAElgB,MAAMyM,GAC7ByT,EAAE6Y,OAASpK,GAAczO,EAAElgB,MAAM+4B,OACjCJ,EAAIp7B,KAAK2iB,EACX,CAEIQ,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6Y,aAEtEhC,EAAIO,MAAK,CAAC/0B,EAAGP,IACXozB,GAAgBr4B,QAAQwF,EAAE40B,UAAY/B,GAAgBr4B,QAAQiF,EAAEm1B,QAC5D50B,EAAEsI,GAAK7I,EAAE6I,GACTuqB,GAAgBr4B,QAAQwF,EAAE40B,QAAU/B,GAAgBr4B,QAAQiF,EAAEm1B,UAGpEJ,EAAIO,MAAK,CAAC/0B,EAAGP,IAAMO,EAAEguB,MAAQvuB,EAAEuuB,QAGjC,MAAMyI,EAAc,SAAUC,EAAMC,GAClC,OAAOD,EAAKE,WAAWn+B,GAAMA,EAAEoD,OAAS86B,EAAQ96B,MAClD,EACA,IAAK,IAAIsF,EAAI,EAAGA,EAAIob,KAAK4Z,gBAAgB5+B,OAAQ4J,GAAK,EACpDiH,EAAE,UAAUjH,KAAK/B,MAAMy3B,MAAQJ,EAAYjC,EAAKjY,KAAK4Z,gBAAgBh1B,IAAM,CAE/E,CCxFe,SAAS21B,GAAWC,EAAMC,GAEvC,IAAIC,EAAgBF,EACpB,GAAIA,IAAS3F,IAAU,OAAO2F,EAC9B,GAAIA,EAAO,EAAG,MAAO,uBACrBE,EAAgBv3B,KAAKiL,KAAKosB,GAC1B,MAAM31B,EAAI1B,KAAKgE,MAAMuzB,EAAgB,SAC/Brb,EAAIlc,KAAKgE,MAAOuzB,EAAgB,QAAY,OAC5C3zB,EAAI5D,KAAKgE,MAAQuzB,EAAgB,QAAY,MAAS,MACtDx/B,EAAIiI,KAAKgE,MAASuzB,EAAgB,QAAY,MAAS,KAAQ,IAC/DzzB,EAAI9D,KAAKgE,MAASuzB,EAAgB,QAAY,MAAS,KAAQ,IACrE,IAAIv+B,EAAM,GAEV,GAAuF,IAAnF6jB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASuZ,WAAkB,CACxF,GAAID,EAAgB,OAAW,OAAOD,EAAa,kBAAoB,SACvEt+B,GAAO0I,EAAI,EAAOA,GAAK41B,EAAoB,IAAN51B,EAAU,QAAU,SAAY,KAAtD,KAAiE,IAC5E1I,EAAInB,OAAS,GAAKqkB,EAAI,KACxBljB,GAAUkjB,GAAKob,EAAoB,IAANpb,EAAU,OAAS,QAAW,KAApD,OACLljB,EAAInB,OAAS,GAAK+L,EAAI,KACxB5K,GAAU4K,GAAK0zB,EAAoB,IAAN1zB,EAAU,QAAU,SAAY,KAAtD,OACL5K,EAAInB,OAAS,GAAKE,EAAI,KACxBiB,GAAUjB,GAAKu/B,EAAoB,IAANv/B,EAAU,UAAY,WAAc,KAA1D,MACTiB,GAAO8K,GAAKwzB,EAAoB,IAANxzB,EAAU,UAAY,WAAc,IAChE,MAAO,GAAuF,IAAnF+Y,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASuZ,WAAkB,CAC/F,GAAID,EAAgB,SAAY,MAAO,iBACvCv+B,IAAW0I,EAAI,GAAK,IAAM,IAAMA,EAAzB,IACP1I,IAAWkjB,EAAI,GAAK,IAAM,IAAMA,EAAzB,IACPljB,IAAW4K,EAAI,GAAK,IAAM,IAAMA,EAAzB,IACP5K,IAAWjB,EAAI,GAAK,IAAM,IAAMA,EAAzB,IACPiB,IAAQ8K,EAAI,GAAK,IAAM,IAAMA,CAC/B,KAAO,CAEL,GAAIyzB,EAAgB,OAAW,OAAOD,EAAa,kBAAoB,SACnE51B,EAAI,GACN1I,GAAU0I,GAAK41B,EAAoB,IAAN51B,EAAU,QAAU,SAAY,KAAtD,KACP1I,GAAUkjB,GAAKob,EAAoB,IAANpb,EAAU,OAAS,QAAW,MAClDA,EAAI,GACbljB,GAAUkjB,GAAKob,EAAoB,IAANpb,EAAU,OAAS,QAAW,KAApD,KACPljB,GAAU4K,GAAK0zB,EAAoB,IAAN1zB,EAAU,QAAU,SAAY,MACpDA,EAAI,GACb5K,GAAU4K,GAAK0zB,EAAoB,IAAN1zB,EAAU,QAAU,SAAY,KAAtD,KACP5K,GAAUjB,GAAKu/B,EAAoB,IAANv/B,EAAU,UAAY,WAAc,MACxDA,EAAI,GACbiB,GAAUjB,GAAKu/B,EAAoB,IAANv/B,EAAU,UAAY,WAAc,KAA1D,KACPiB,GAAO8K,GAAKwzB,EAAoB,IAANxzB,EAAU,UAAY,WAAc,MAE9D9K,GAAO8K,GAAKwzB,EAAoB,IAANxzB,EAAU,UAAY,WAAc,IAElE,CACA,OAAO9K,CACT,CChDe,SAASy+B,GAAcJ,GACpC,IAAInC,EACAxP,EAYJ,OAXI2R,GAAQ,GAER3R,EADqF,IAAnF7I,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASuZ,WAC/D,iBACG,QACZtC,EAASvC,KAETjN,EAAO0R,GAAWC,GACFnC,EAAZmC,EAAO,IAAcvE,GAChBuE,EAAO,GAAaxE,GACfD,IAET,CAAElN,OAAMwP,SACjB,CCZe,SAASwC,KACtB,OAAI7a,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS0Z,QAC/DhQ,EAE6E,IAAlF9K,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,UAC/D/a,KAAKgb,WAAa,EAAIhb,KAAKib,WAEkD,IAAlFjb,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,UAC/D/a,KAAKgb,WAAajN,IAA4B,EAA6B,IAAzBC,KAE1B,OAA7BF,GAAsB,IAE4D,IAAlF9N,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,WAClB,IAAlD/a,KAAKkb,UAAUpN,GAAsB,IAAI1yB,KAGvC4kB,KAAKgb,WACwB,EAA3BjN,GAAgCC,IAC/B,EAA6B,IAAzBA,KAIXhO,KAAKgb,WACJjN,GAA2BC,IAA0B,EAA6B,IAAzBA,IAE9D,CC7Be,SAASmN,KACtB,OAAsF,IAAlFnb,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,UAC/DnN,GAE6E,IAAlF5N,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,UAC/DjN,GAAsB,GAExB,CACT,CCLO,SAASsN,GAAYhb,EAAI9gB,EAAM+7B,GACpC,MAAMC,EAAWjiC,SAAS4D,cAAc,OACxCq+B,EAASlb,GAAKA,EACdkb,EAASz4B,MAAMiG,OAAS,OACxBwyB,EAASz4B,MAAM04B,OAAS,WACxBD,EAASz4B,MAAM8H,SAAW,WAE1B,MAAM4b,EAAMltB,SAAS4D,cAAc,OACnCspB,EAAI1jB,MAAMgG,MAAQ,OAClB0d,EAAI1jB,MAAMiG,OAAS,OACnByd,EAAI1jB,MAAM04B,OAAS,OACnBhV,EAAI1jB,MAAM8H,SAAW,WACrB4b,EAAI1jB,MAAMmC,KAAO,MACjBuhB,EAAI1jB,MAAMoC,IAAM,MAChBshB,EAAI1jB,MAAM2a,MAAQ,MAClB+I,EAAI1jB,MAAMwV,OAAS,MAEnB,MAAMjd,EAAO/B,SAAS4D,cAAc,QACpC7B,EAAKyH,MAAM2U,QAAU,eACrBpc,EAAKyH,MAAM6V,UAAY,QACvBtd,EAAKyH,MAAMihB,SAAW,OACtB1oB,EAAKyH,MAAMgG,MAAQ,QACnBzN,EAAKyH,MAAM24B,YAAc,MACzBpgC,EAAKyH,MAAMkhB,cAAgB,WAC3B3oB,EAAKgD,YAAckB,EACnBinB,EAAIzQ,YAAY1a,GAEhB,IAAK,IAAIL,EAAI,EAAGA,EAAIsgC,EAAKrgC,OAAQD,IAAK,CACpC,MAAM0gC,EAAYpiC,SAAS4D,cAAc,QACzCw+B,EAAUrb,GAAKib,EAAKtgC,GAAGqlB,GACvBqb,EAAU54B,MAAM2U,QAAU,eAC1BikB,EAAU54B,MAAMiG,OAAS,OACzB2yB,EAAU54B,MAAMkhB,cAAgB,WAChC0X,EAAU54B,MAAM6V,UAAY,SACxB2iB,EAAKrgC,OAAS,IAAMD,IACtB0gC,EAAU54B,MAAM64B,qBAAuB,OACvCD,EAAU54B,MAAM84B,wBAA0B,aAEd,IAAnBN,EAAKtgC,GAAGs9B,SACjBoD,EAAUjgC,UAAYo6B,GAAgByF,EAAKtgC,GAAGs9B,QAEhD9R,EAAIzQ,YAAY2lB,EAClB,CAEA,MAAMG,EAAQviC,SAAS4D,cAAc,QAQrC,OAPA2+B,EAAMxb,GAAK,GAAGA,QACdwb,EAAM/4B,MAAMg5B,WAAa,MACzBD,EAAM/4B,MAAMkhB,cAAgB,WAC5BwC,EAAIzQ,YAAY8lB,GAEhBN,EAASxlB,YAAYyQ,GAEd+U,CACT,CAMO,SAASQ,GAA2BC,GACzC,GAAsB,OAAlBlwB,EAAE,YAAsB,CAC1B,MAAMzQ,EAAOyQ,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GACtDgC,EAAQnwB,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GACvDjuB,EAAKF,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GACpDQ,EAAO3uB,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GAEtDj/B,EAAIghC,EACJE,EAAS7gC,EAAK0a,YAAYzc,SAAS4D,cAAc,OACvDg/B,EAAOnmB,YACLzc,SAASwf,eAAe,IAAuB,IAApB9d,EAAEkD,QAAQ,KAAclD,EAAEmhC,UAAU,EAAGnhC,EAAEkD,QAAQ,MAAQlD,QAGzEkhC,EAAOnmB,YAAYzc,SAAS4D,cAAc,SAClDzB,UAAYm6B,aAEjBsG,EAAOnmB,YAAYzc,SAASwf,eAAe,MAC3Czd,EAAK+gC,UAAUt5B,MAAMu5B,YAAc,MACnCJ,EAAMlmB,YAAYzc,SAAS4D,cAAc,OACzC++B,EAAMG,UAAUt5B,MAAMu5B,YAAc,MACpCrwB,EAAG+J,YAAYzc,SAAS4D,cAAc,OACtC8O,EAAGowB,UAAUt5B,MAAMu5B,YAAc,MACjC5B,EAAK1kB,YAAYzc,SAAS4D,cAAc,OACxCu9B,EAAK2B,UAAUt5B,MAAMu5B,YAAc,KACrC,CACF,CChCO,SAASC,KACd,GACiF,IAA/Erc,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkb,QACpE9O,IACiB,IAAjBxN,KAAKkY,QACL,CACA,IAAIqE,EAAQ,EACZh+B,OAAO6C,KAAKosB,IAAerN,SAASplB,IAClC,IAmBIyhC,EAnBAp8B,EAAS4f,KAAKyS,QACG,IAAjBzS,KAAKkY,QACPpB,GAAmB12B,EAEnBA,EAAS02B,GAEI,IAAX12B,IAAcA,EAASotB,IACZ,KAAXptB,IAAeA,EAASqtB,IACb,MAAXrtB,IAAgBA,EAASstB,IAC7B6O,GAAS,EACT1wB,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GAAGA,WAChDuC,GACAvC,WAAW,GAAG57B,YAAc4hB,KAAKoR,QAAQr2B,GAAGo3B,OAC9CtmB,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GAAGA,WAAWuC,GAAOn+B,YAAc,GAChFgC,EAAOrF,GAAGihC,MACV,GAEFnwB,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GAAGA,WAAWuC,GAAO/gC,UAClEm6B,GAAgBv1B,EAAOrF,GAAGs9B,OAG1BmE,EADExc,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASqb,cAC3DlC,GAAWp3B,KAAKC,MAAMhD,EAAOrF,GAAGgR,KAC7B,GAAS5I,KAAKC,MAAMhD,EAAOrF,GAAGgR,IAAK,GACnDF,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GAAGA,WAAWuC,GAAOn+B,YAAco+B,EAClF,MAAME,EAAa9B,IAChB5a,KAAKoR,QAAQr2B,GAAG4hC,WAAa3c,KAAK4c,QAAUzB,OAAyBN,MAExEhvB,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GAAGA,WAAWuC,GAAO/gC,UAClEm6B,GAAgB+G,EAAWrE,OACL,UAApBqE,EAAW7T,MAAoB7I,KAAK4c,QAAU5c,KAAKoR,QAAQr2B,GAAG4hC,UAChE9wB,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GAAGA,WAAWuC,GAAOn+B,YAClE,GAAGs+B,EAAW7T,oBAEhBhd,EAAE,YAAYjO,WAAWA,WAAWo8B,WAAW,GAAGA,WAAWuC,GAAOn+B,YAClEs+B,EAAW7T,IAAI,GAEvB,CACF,CCtGe,SAASgU,KACtB7c,KAAK8c,WAAWp0B,OAAOG,MAAQmX,KAAK8c,WAAWp0B,OAAO2Q,WAAWhU,YACjE2a,KAAK8c,WAAWp0B,OAAOI,OAASkX,KAAK8c,WAAWp0B,OAAO2Q,WAAW/T,aAClE0a,KAAK+c,eAAer0B,OAAOG,MAAQmX,KAAK+c,eAAer0B,OAAO2Q,WAAWhU,YACzE2a,KAAK+c,eAAer0B,OAAOI,OAASkX,KAAK+c,eAAer0B,OAAO2Q,WAAW/T,aAC1E0a,KAAKgd,gBACP,CCJO,SAASC,KAEmE,IAA/Ejd,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkb,QACa,IAAjFtc,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS8b,UACgB,IAApFld,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS+b,aAEpEtxB,EAAE,YAAYhJ,MAAMwV,OAASxM,EAAE,cAAchJ,MAAMiG,OACnD+C,EAAE,QAAQhJ,MAAMwV,OAAS,GAAG2c,OAAOnpB,EAAE,cAAchJ,MAAMiG,OAAOtH,QAAQ,KAAM,KAAO,QACG,IAA/Ewe,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkb,QAC7EzwB,EAAE,YAAYhJ,MAAMwV,OAAS,MAC7BxM,EAAE,QAAQhJ,MAAMwV,OAAS,QAEwD,IAAjF2H,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS8b,UACgB,IAApFld,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS+b,YAEpEtxB,EAAE,QAAQhJ,MAAMwV,OAASxM,EAAE,cAAchJ,MAAMiG,OAG/C+C,EAAE,QAAQhJ,MAAMwV,OAAS,MAIwD,IAAjF2H,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS8b,UACgB,IAApFld,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS+b,YAEpEtxB,EAAE,eAAehJ,MAAMoC,IAAM4G,EAAE,cAAchJ,MAAMiG,OAEnD+C,EAAE,eAAehJ,MAAMoC,IAAM,GAG/B43B,IACF,CAKO,SAASO,KACuE,IAAjFpd,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS8b,SACtErxB,EAAE,cAAchJ,MAAM2U,QAAU,GAC7B3L,EAAE,cAAchJ,MAAM2U,QAAU,OACrCylB,IACF,CC7CA,IAAII,GAAc,EACdC,GAAkB,EAoCf,SAASC,KACd,OAAO,EAAIF,EACb,CAKO,SAASG,KACd,OAAO,EAAIF,EACb,CC5Ce,SAASG,KACtBvR,GAAkBlM,KAAK0d,WACvBvR,GAAmBnM,KAAK2d,WAC1B,CCHe,SAASC,GAAgBC,GACtC,MAAMhE,EAAK7Z,KAAK8d,aAAaD,GACvBE,EAAM,CAAC,EAEb,OADAA,EAAIz+B,KAAOu6B,EAAGv6B,KACPy+B,CACT,CCJe,SAASC,GAAoBnE,GAC1C,IAAIoE,EAAO,EAwBX,GAvBA1/B,OAAO6C,KAAKy4B,EAAGqE,gBAAgB/d,SAASplB,IACtC,IAAKilB,KAAKme,MAAMtE,EAAGqE,eAAenjC,GAAG81B,MAAMuN,SAAW3N,GAAOoJ,EAAGqE,eAAenjC,GAAGuE,MAAO,CACvF,IAAI++B,EAAW,EAGU,IAAvBre,KAAK2Q,eACLF,GAAOoJ,EAAGyE,mBACV7N,GAAOzQ,KAAKme,MAAMtE,EAAGqE,eAAenjC,GAAG81B,MAAMyN,oBAE7CD,GAAsB,IAAVxE,EAAGzZ,GAAW,GAAqB,IAAd,GAAKyZ,EAAGzZ,KAC3C6d,GAAQI,CACV,KAEF9/B,OAAO6C,KAAKy4B,EAAG0E,WAAWpe,SAASplB,IACjC,GAAI01B,GAAOoJ,EAAG0E,UAAUxjC,GAAGuE,MAAO,CAChC,MAAMk/B,EAAM3E,EAAG0E,UAAUxjC,GACrByjC,EAAIC,aAAan/B,OAASu6B,EAAGv6B,KAAM2+B,GAAQ,EAAI,IAAOO,EAAIE,aAAavM,OAClEqM,EAAIE,aAAap/B,OAASu6B,EAAGv6B,OAAM2+B,GAAQ,EAAI,KAAQO,EAAIC,aAAatM,OACnF,KAEE0H,EAAGjI,SAAWnB,GAAOoJ,EAAGjI,QAAQtyB,QAAO2+B,GAAQ,MAC/CpE,EAAG8E,SAAWlO,GAAOoJ,EAAG8E,QAAQr/B,QAClC2+B,GAAQ,EAAgC,IAA5BpO,GAAW+O,QAAQzM,QAAiB,GAAK0H,EAAGzZ,GAAK,KACnB,iBAAjCyZ,EAAGqE,eAAeW,YACR,IAAfhF,EAAGiF,SAAiBrO,GAAOoJ,EAAGqE,eAAeW,WAAWv/B,MAC1D,OAAQ0gB,KAAK6J,YACX,QACEoU,GAAQ,EACR,MACF,KAAK,EACHA,GAAQ,KACR,MACF,KAAK,EACHA,GAAQ,KACR,MACF,KAAK,EACHA,GAAQ,KAKhB,OAAOA,CACT,CCrCe,SAASc,GAAoBhD,GAC1C,MAAMlC,EAAK7Z,KAAKoR,QAAQ2K,GAClBgC,EAAM,CAAC,EA8Fb,MA7FgB,WAAZlE,EAAGv6B,KACLy+B,EAAIiB,IAAM,SAAUtO,GAClB,IAAI3uB,EAAM,EACN0uB,GAAO,sBAAqB1uB,GAAO,IACnC0uB,GAAO,qBAAoB1uB,GAAO,GAClC0uB,GAAO,qBAAoB1uB,GAAO,IAClC0uB,GAAO,sBAAqB1uB,GAAO,IACnC0uB,GAAO,yBAAwB1uB,GAAO,IACtC0uB,GAAO,yBAAwB1uB,GAAO,IACtC0uB,GAAO,wBAAuB1uB,GAAO,IACrC0uB,GAAO,wBAAuB1uB,GAAO,IACrC0uB,GAAO,uBAAsB1uB,GAAO,IACpC0uB,GAAO,uBAAsB1uB,GAAO,IACpC0uB,GAAO,uBAAsB1uB,GAAO,IACpC0uB,GAAO,yBAAwB1uB,GAAO,IACtC0uB,GAAO,wBAAuB1uB,GAAO,IACzC,IAAIk8B,EAAO,EACPxJ,EAAM,EAQV,OAPAl2B,OAAO6C,KAAKyuB,IAAY1P,SAASplB,IACJ,WAAvB80B,GAAW90B,GAAGuE,OAAmBm1B,GAAO5E,GAAW90B,GAAGo3B,OAAM,IAElEpwB,GAAO0yB,EACPwJ,GAAQD,GAAoBtN,GAC5BuN,GAAQje,KAAKif,SAAS,UACtBhB,GAAQ1N,GAAO,aAEbvQ,KAAKkf,WACH,GACAzO,GAAO,2BACLA,GAAO,kCACPA,GAAO,gBACT1uB,GACEk8B,CAER,EACqB,YAAZpE,EAAGv6B,KACZy+B,EAAIiB,IAAM,SAAUtO,GAClB,IAAIuN,EAAO,EAYX,GAXA1/B,OAAO6C,KAAK4e,KAAKmf,kBAAkBhf,SAASplB,IACtC01B,GAAOzQ,KAAKmf,iBAAiBpkC,MAAKkjC,GAAQ,EAAC,IAE7CxN,GAAO,oCAAmCwN,GAAQ,GAClDxN,GAAO,yBAAwBwN,GAAQ,GACvCxN,GAAO,kBAAiBwN,GAAQ,GAEhCxN,GAAO,wBAAuBwN,GAAQ,MAE1CA,GAAQ1N,GAAO,cAEXE,GAAO,cACT,IAAK,IAAI11B,EAAI,EAAGA,EAAIilB,KAAKof,eAAeC,OAAOrkC,OAAQD,IACjD01B,GAAOzQ,KAAKof,eAAeC,OAAOtkC,GAAGuE,QAAO2+B,GAAQ,MAI5DA,GAAQD,GAAoBtN,GAE5B,IAAI3uB,EAAM,EACN0uB,GAAO,cAAa1uB,GAAmC,IAA5B8tB,GAAW+O,QAAQzM,QAC9C1B,GAAO,yBAAwB1uB,GAAmC,IAA5B8tB,GAAW+O,QAAQzM,QACzD1B,GAAO,gBAAe1uB,GAAkC,IAA3B8tB,GAAWyP,OAAOnN,QAEnD,IAAIsC,EAAM,EASV,OARAl2B,OAAO6C,KAAKyuB,IAAY1P,SAASplB,IACJ,YAAvB80B,GAAW90B,GAAGuE,OAAoBm1B,GAAO5E,GAAW90B,GAAGo3B,OAAM,IAGnE8L,GAAQ,EAAqC,IAAjCjO,GAAY,mBAA4ByE,EAEpDwJ,GAAQje,KAAKif,SAASpF,EAAGv6B,OAEjBu6B,EAAG0F,QAAUx9B,GAAOk8B,CAC9B,EAEAF,EAAIiB,IAAM,SAAUtO,GAClB,IAAIuN,EAAO,EAGX,OAFAA,GAAQD,GAAoBtN,GAC5BuN,GAAQje,KAAKif,SAASvO,EAAGpxB,MAClBoxB,EAAG8O,QAAUvB,CACtB,EAIFF,EAAIwB,QAAU1F,EAAG0F,QACjBxB,EAAIz+B,KAAOu6B,EAAGv6B,KACdy+B,EAAIG,eAAiBrE,EAAGqE,eACxBH,EAAIQ,UAAY1E,EAAG0E,UACnBR,EAAInM,QAAUiI,EAAGjI,QACjBmM,EAAIY,QAAU9E,EAAG8E,QACjBZ,EAAIyB,QAAU3F,EAAG0F,QACjBxB,EAAI3d,GAAKyZ,EAAGzZ,GACZ2d,EAAIe,QAAUjF,EAAGiF,QACjBf,EAAIO,iBAAmBzE,EAAGyE,iBACnBP,CACT,CCrGe,SAAS0B,GAAYC,GAClC,MAAM7F,EAAK7Z,KAAK2f,SAASD,GACnB3B,EAAM,CAAC,EA4Bb,OA1BAA,EAAI6B,MAAQ/F,EAAG+F,MACU,mBAAd7B,EAAI6B,QACG,0BAAZ/F,EAAGv6B,KACLy+B,EAAI6B,MAAQ,WACV,IAAI5hC,EAAI,EAIR,OAHAO,OAAO6C,KAAKyuB,IAAY1P,SAASplB,IAC3B80B,GAAW90B,GAAG8kC,OAAS,KAAI7hC,GAAK,EAAC,IAEhCA,CACT,EAEA+/B,EAAI6B,MAAQ,WACV,IAAIE,EAAM,EAEV,GADIrP,GAAO,cAAaqP,EAAM,GAC1B9f,KAAKiR,OAAQ,CACf,MAAMa,EAASd,GAAU,WACV,IAAXc,EAAcgO,GAAO,IACL,IAAXhO,EAAcgO,GAAO,IACV,IAAXhO,IAAcgO,GAAO,IAChC,CACA,OAAOA,CACT,GAGJ/B,EAAInN,KAAOiJ,EAAGjJ,KACdmN,EAAIz+B,KAAOu6B,EAAGv6B,KACPy+B,CACT,CCde,SAASgC,KAEtB3U,EAAmBpL,KAAKggB,cACxB3U,GAAarL,KAAKigB,QAClB3U,GAAuBtL,KAAKkgB,kBAC5B3U,GAAmBvL,KAAKmgB,cACxB3U,GAAcxL,KAAKogB,SAGnB7hC,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,IACjC,MAAM8+B,EAAK7Z,KAAKoR,QAAQr2B,GACxB,IAAIgjC,EAAMlO,GAAW90B,QACTI,IAAR4iC,IAEFlO,GAAW90B,GAAKgkC,GAAoBhkC,GACpCgjC,EAAMlO,GAAW90B,GACjB+gC,GAA2B/gC,IAE7BgjC,EAAI5L,OAAS0H,EAAG1H,OAChB4L,EAAI8B,MAAQhG,EAAGgG,MACf9B,EAAIsC,aAAexG,EAAGwG,aACtBtC,EAAI9L,UAAY4H,EAAG5H,UACnB8L,EAAI7L,KAAO2H,EAAG3H,KACV2H,EAAGhI,iBACW,WAAZgI,EAAGv6B,OACLqsB,GAAUkO,EAAG1I,SAASmP,KAAK,GAC3B1U,GAAUiO,EAAG1I,SAASmP,KAAK,GAC3BzU,GAAUgO,EAAG1I,SAASmP,KAAK,IAE7BvC,EAAIlM,eAAiBgI,EAAGhI,eACxBkM,EAAI5M,SAAW0I,EAAG1I,UAEpBtB,GAAW90B,GAAKgjC,CAAG,IAIrBx/B,OAAO6C,KAAK4e,KAAK2f,UAAUxf,SAASplB,IAClC,MAAM8+B,EAAK7Z,KAAK2f,SAAS5kC,GACzB,IAAIgjC,EAAMjO,GAAY/0B,QACVI,IAAR4iC,IACFjO,GAAY/0B,GAAK0kC,GAAY1kC,GAC7BgjC,EAAMjO,GAAY/0B,IAEpBgjC,EAAIjN,OAAS+I,EAAG/I,OAChBhB,GAAY/0B,GAAKgjC,CAAG,IAItBx/B,OAAO6C,KAAK4e,KAAK8d,cAAc3d,SAASplB,IACtC,MAAM8+B,EAAK7Z,KAAK8d,aAAa/iC,GAC7B,IAAIgjC,EAAMhO,GAAgBh1B,QACdI,IAAR4iC,IACFhO,GAAgBh1B,GAAK6iC,GAAgB7iC,GACrCgjC,EAAMhO,GAAgBh1B,IAExBgjC,EAAIwC,IAAM1G,EAAG0G,IACbxQ,GAAgBh1B,GAAKgjC,CAAG,IAI1BN,KACAhS,GAAgBS,GAChBR,GAAiBS,EACnB,CCxDO,SAASqU,GAAoB3X,GAClC,MAAMtC,EAAMltB,SAAS4D,cAAc,OAKnC,OAJAspB,EAAI1jB,MAAM49B,WAAa,OACvBla,EAAInG,GAAK,GAAGyI,SACZtC,EAAI/qB,UAAYm6B,aAChBpP,EAAInoB,YAAcyqB,EACXtC,CACT,CA4GO,SAASma,GAAgCzZ,GAC9CA,EAAQnR,YAAY0qB,GAAoB,iBACxC,MAAMG,EAAStnC,SAAS4D,cAAc,OACtC0jC,EAAO99B,MAAM+9B,aAAe,MAC5BD,EAAO99B,MAAMyF,MAAQ,QACrBq4B,EAAOvgB,GAAK,kBACZ6G,EAAQnR,YAAY6qB,GAEpB1Z,EAAQnR,YAAY0qB,GAAoB,4BACxCvZ,EAAQkV,UAAUt5B,MAAM2U,QAAU,OAClC,MAAMqpB,EAAQxnC,SAAS4D,cAAc,OACrC4jC,EAAMh+B,MAAM+9B,aAAe,MAC3BC,EAAMh+B,MAAMyF,MAAQ,QACpBu4B,EAAMh+B,MAAM2U,QAAU,OACtBqpB,EAAMzgB,GAAK,0BACX6G,EAAQnR,YAAY+qB,GAEpB5Z,EAAQnR,YAAY0qB,GAAoB,mBACxC,MAAMz0B,EAAK1S,SAAS4D,cAAc,OAClC8O,EAAGlJ,MAAM+9B,aAAe,MACxB70B,EAAGqU,GAAK,cACR6G,EAAQnR,YAAY/J,GAEpBkb,EAAQnR,YAAY0qB,GAAoB,cACxC,MAAMhG,EAAOnhC,SAAS4D,cAAc,OAIpC,GAHAu9B,EAAKpa,GAAK,gBACV6G,EAAQnR,YAAY0kB,GAEA,MAAhB/C,GAAqB,CACvBxQ,EAAQnR,YAAY0qB,GAAoB,0CACxCvZ,EAAQkV,UAAU/b,GAAK,gCACvB,MAAM0gB,EAAaznC,SAAS4D,cAAc,OAC1C6jC,EAAW1gB,GAAK,0BAChB6G,EAAQnR,YAAYgrB,EACtB,CACA,GAAoB,MAAhBrJ,GAAqB,CACvBxQ,EAAQnR,YAAY0qB,GAAoB,sDACxCvZ,EAAQkV,UAAU/b,GAAK,iCACvB,MAAM0gB,EAAaznC,SAAS4D,cAAc,OAC1C6jC,EAAW1gB,GAAK,2BAChB6G,EAAQnR,YAAYgrB,EACtB,CACF,CC3Ke,SAASC,GAAWlH,EAAIpI,GACrC,IAAI4G,EAAS,GA4Bb,OA1BsCA,EAAlCwB,EAAG9tB,IAAM,GAAK8tB,EAAG9tB,KAAO8oB,IAAmBsB,GACtC0D,EAAG9tB,GAAKwjB,GAAqBsG,GAC7BgE,EAAG9tB,KAAOwjB,GAAqBuG,GAC/B+D,EAAG9tB,GAAK0jB,GAAa,IAAI,GAAasG,GACtC8D,EAAG9tB,GAAK0jB,GAAa,IAAI,GAAauG,GACtC6D,EAAG9tB,GAAK0jB,GAAa,IAAI,GAAawG,GACjCC,GAMN,IAFNlB,OACEhV,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS4f,sBAIpEvP,EAAQoJ,KACR7F,OACEhV,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS4f,uBAGtE3I,EAASxC,IAGT7V,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6f,uBAClExP,EAAQzR,KAAK4c,QAAU,IAAGvE,EAASpC,IAElCoC,CACT,CC7Ce,SAAS6I,KACtB,IAAIjD,EAAO,EAIX,OAHA1/B,OAAO6C,KAAK4e,KAAKmhB,OAAOhhB,SAASplB,SACM,IAA1BilB,KAAKmhB,MAAMpmC,GAAGqmC,UAAyBnD,GAAQje,KAAKmhB,MAAMpmC,GAAGqmC,QAAO,IAE1EnD,CACT,CCFe,SAASoD,GAAOpR,GACzBF,GAAgBE,IACgB,IAA9BF,GAAgBE,GAAMsQ,MACxBxQ,GAAgBE,GAAMsQ,IAAM,EACS,WAAjCvgB,KAAK8d,aAAa7N,GAAMW,OAAmBtF,IAAwB,GAG7E,CCWe,SAASgW,KACtBtV,GAAe,EACf,IAAIiS,EAAO,EAEX,MAAMsD,EAAO,CAAC,EACdhjC,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,IACjC,GAAIilB,KAAKoR,QAAQr2B,GAAG82B,gBAAkB7R,KAAKoR,QAAQr2B,GAAGo2B,SAASoQ,KAAM,CACnE,MAAMC,EAASxhB,KAAKoR,QAAQr2B,GAAGo2B,SAASoQ,KACxChjC,OAAO6C,KAAKogC,GAAQrhB,SAASshB,IACvBF,EAAKE,GAAKF,EAAKE,IAAOD,EAAOC,GAC5BF,EAAKE,GAAMD,EAAOC,EAAG,GAE9B,KAEF1V,GAAUwV,EAEiB,IAAvBvhB,KAAK2Q,gBACPsN,GAAkC,IAA1Bj2B,WAAWwjB,IAAsBD,GCpC9B,WACb,IAAImW,EAAe,EAWnB,GAVIjR,GAAO,0BAAyBiR,GAAgB,KAChDjR,GAAO,2BAA0BiR,GAAgB,IACjDjR,GAAO,qBAAoBiR,GAAgB,KAC3CjR,GAAO,4BAA2BiR,GAAgB,KAClDjR,GAAO,kBAAiBiR,GAAgB,KAE5CA,GAAgB,EAAgC,IAA5B1R,GAAY,cAC5BS,GAAO,iBAAgBiR,GAAgB,MACvCjR,GAAO,kBAAiBiR,GAAgB,MACxCjR,GAAO,kBAAiBiR,GAAgB,MACxC1hB,KAAKiR,OAAQ,CACf,MAAMa,EAASd,GAAU,YACV,IAAXc,EAAc4P,GAAgB,GACd,IAAX5P,EAAc4P,GAAgB,GACnB,IAAX5P,IAAc4P,GAAgB,GACzC,CACA,OAAOA,CACT,CDiBgEC,IAE9D1D,GAAQ1N,GAAO,OAEXE,GAAO,YAAqC,IAAvBzQ,KAAK2Q,gBAAqBsN,GAAQ,EAAI,IAAOje,KAAK4hB,SAE3ErjC,OAAO6C,KAAK4e,KAAK6hB,gBAAgB1hB,SAASplB,IACxC,MAAM8+B,EAAK7Z,KAAK6hB,eAAe9mC,GAC3B01B,GAAOoJ,EAAGv6B,QAIY,mBAAbu6B,EAAG+F,MACZ3B,GAAQ,EAAuD,IAAnDnO,GAAY+J,EAAGv6B,MAAMsgC,MAAM9P,GAAY+J,EAAGv6B,OACjD2+B,GAAQ,EAAe,IAAXpE,EAAG+F,MACxB,IAGEnP,GAAO,iCAAgCwN,GAAQ,MAC/CxN,GAAO,0BAAyBwN,GAAQ,MACxCxN,GAAO,sBAAqBwN,GAAQ,MACpCxN,GAAO,iBAAgBwN,GAAQ,MAC/BxN,GAAO,kBAAiBwN,GAAQ,MAEhCxN,GAAO,yBAAwBwN,GAAQ,MACvCxN,GAAO,wBAAuBwN,GAAQ,MACtCxN,GAAO,oBAAmBwN,GAAQ,MAClCxN,GAAO,sBAAqBwN,GAAQ,MACpCxN,GAAO,sBAAqBwN,GAAQ,KAEpCxN,GAAO,kBAAiBwN,GAAQ,MAChCxN,GAAO,kBAAiBwN,GAAQ,MAEhCxN,GAAO,kBAAiBwN,GAAQ,MAGpC,IAAI6D,EAAY,EAChB,GAAI9Q,GAAW,CACb,IAAIc,EAASd,GAAU,cACR,IAAXc,EAAcmM,GAAQ,KACN,IAAXnM,EAAcmM,GAAQ,IACX,IAAXnM,IAAcmM,GAAQ,MAE/BnM,EAASd,GAAU,QACJ,IAAXc,EACFmM,GAAQ,EAAI,IAAO96B,KAAK4+B,IAAK1N,GAAyB,IAAO,MAAiBlxB,KAAKuT,GAAK,GACtE,IAAXob,EACPmM,GAAQ,EAAI,IAAO96B,KAAK4+B,IAAK1N,GAAyB,IAAO,MAAkBlxB,KAAKuT,GAAK,GACvE,IAAXob,IACPmM,GAAQ,EAAI,IAAO96B,KAAK4+B,IAAK1N,GAAyB,IAAO,MAAkBlxB,KAAKuT,GAAK,IAE3Fob,EAASd,GAAU,aACJ,IAAXc,EAAcgQ,GAAa,IACX,IAAXhQ,EAAcgQ,GAAa,IAChB,IAAXhQ,IAAcgQ,GAAa,KAEpChQ,EAASd,GAAU,YACJ,IAAXc,EAAcgQ,GAAa,IACX,IAAXhQ,EAAcgQ,GAAa,KAChB,IAAXhQ,IAAcgQ,GAAa,MAEpChQ,EAASd,GAAU,SACJ,IAAXc,EAAcgQ,GAAa,IACX,IAAXhQ,EAAcgQ,GAAa,IAChB,IAAXhQ,IAAcgQ,GAAa,IACtC,CAEIrR,GAAO,oBAAmBwN,GAAQ,EAA4B,KAAvBje,KAAKgiB,WAAa,IAE7D,MAAMC,EAAe3W,GAAuB,GAC5C,IAAI4W,EAAW,EAIf,GAHIzR,GAAO,8BAA6ByR,GAAY,MAEpDA,GAAY,EAAoC,IAAhClS,GAAY,kBACxBgB,GAAW,CACb,MAAMc,EAASd,GAAU,UACV,IAAXc,EAAcoQ,GAAY,IACV,IAAXpQ,EAAcoQ,GAAY,KACf,IAAXpQ,IAAcoQ,GAAY,KACrC,CACAA,GAAY3R,GAAO,QAEnB,IAAI4R,EAAU,EAEV1R,GAAO,oBAAmB0R,GAAW,EAAmB,GAAfF,EAAqBC,GAC9DzR,GAAO,oBAAmB0R,GAAW,EAAmB,KAAfF,EAAuBC,GAChEzR,GAAO,sBAAqB0R,GAAW,EAAmB,IAAfF,EAAsBC,GACjEzR,GAAO,sBAAqB0R,GAAW,EAAmB,KAAfF,EAAuBC,GAClEzR,GAAO,qBAAoB0R,GAAW,EAAmB,GAAfF,EAAqBC,GAC/DzR,GAAO,wBAAuB0R,GAAW,EAAmB,GAAfF,EAAqBC,GAClEzR,GAAO,wBAAuB0R,GAAW,EAAmB,GAAfF,EAAqBC,GAClEzR,GAAO,oBAAmB0R,GAAW,EAAmB,GAAfF,EAAqBC,GAC9DzR,GAAO,wBAAuB0R,GAAW,EAAmB,GAAfF,EAAqBC,GAClEzR,GAAO,+CACT0R,GAAW,EAAmB,KAAfF,EAAuBC,GACpCzR,GAAO,uBAAsB0R,GAAW,EAAmB,IAAfF,EAAsBC,GAClEzR,GAAO,qBAAoB0R,GAAW,EAAmB,KAAfF,EAAuBC,GACjEzR,GAAO,uBAAsB0R,GAAW,EAAmB,KAAfF,EAAuBC,GACnEzR,GAAO,mBAAkB0R,GAAW,EAAmB,IAAfF,EAAsBC,GAC9DzR,GAAO,wBAAuB0R,GAAW,EAAmB,KAAfF,EAAuBC,GACpEzR,GAAO,mBAAkB0R,GAAW,EAAmB,GAAfF,EAAqBC,GAC7DzR,GAAO,kBAAiB0R,GAAW,EAAmB,IAAfF,EAAsBC,GAEjE3jC,OAAO6C,KAAKyuB,IAAY1P,SAASplB,IAC/B,MAAM8+B,EAAKhK,GAAW90B,GACtB,IAAIqnC,EAAYvI,EAAGmF,IAAInF,GACI,IAAvB7Z,KAAK2Q,gBAAqByR,IAAc,EAAe,IAAXvI,EAAGgG,OAAgBiC,GACnD,YAAZjI,EAAGv6B,MAAsBmxB,GAAO,sDAClC2R,GAAa,EAAI,IAAOH,EAAeC,GACzClW,IAAgB6N,EAAG1H,OAASiQ,CAAS,IAGnC3R,GAAO,WAAUzE,IAAgB,GAErCiS,GAAQkE,EAER,IAAIE,EAAU,EAad,GAZI5R,GAAO,iBAAgB4R,GAAW,MAClC5R,GAAO,cAAa4R,GAAW,MAC/B5R,GAAO,gBAAe4R,GAAW,MACjC5R,GAAO,eAAc4R,GAAW,MAChC5R,GAAO,eAAc4R,GAAW,MAChC5R,GAAO,iBAAgB4R,GAAW,MAClC5R,GAAO,mBAAkB4R,GAAW,MACpC5R,GAAO,gBAAe4R,GAAW,MACjC5R,GAAO,eAAc4R,GAAW,MAChC5R,GAAO,eAAc4R,GAAW,MAChC5R,GAAO,gBAAe4R,GAAW,MACjC5R,GAAO,eAAc4R,GAAW,MAChC5R,GAAO,eAAgB,CAEzB,IAAI6R,EACmE,GAApEn/B,KAAKgE,OAAOqtB,GAAyBxU,KAAKuiB,WAAa,IAAO,IAAY,GAAK,GAAK,GACvFD,EAAMn/B,KAAKyD,IAAI07B,EAAK,KAEpBjV,GAAe,EAAiC,IAA5B,GAAK,EAAIiV,EAAM,MAAQ,GAC3CD,GAAWhV,EACb,CACA4Q,GAAQoE,EAEJ5R,GAAO,kBAAiBwN,GAAQ,EAAgC,IAA5B96B,KAAKyD,IAAI,IAAKoZ,KAAKwiB,QAG3DvE,GAAQ,EAAIjO,GAAY,oBAExB,MAAMyS,EAAezW,GAAeiS,EACpC1/B,OAAO6C,KAAK4e,KAAK0iB,iBAAiBviB,SAASplB,IACrC0nC,GAAgBziB,KAAK0iB,gBAAgB3nC,GAAG4nC,WAAWtB,GAAOrhB,KAAK0iB,gBAAgB3nC,GAAGuE,KAAK,IAG7F2sB,GAAkBwW,EAElB,MAAM,EAAEzkC,GAAMgiB,KAAK4iB,aAAaC,OAC1BC,EAAW9S,GAAY,oBAC7B,IAAK,IAAIj1B,EAAI,EAAGA,EAAIiD,EAAGjD,IACrBkjC,GAAQ,EAAe,KAAX6E,EAGd,MAAMxjC,EAAO0gB,KAAK+iB,WAAW1nC,cAM7B,GALa,WAATiE,EAAmB2+B,GAAQ,IACb,WAAT3+B,IAAmB2+B,GAAQ,KAEhCxN,GAAO,oBAAmBwN,GAAQ,KAElCxN,GAAO,uBAAwB,CACjC,IAAIuS,EAAmB,IACvB,GAAIvS,GAAO,iBAAkB,CAC3B,MAAMwS,EAAWjjB,KAAKkjB,qBACtB3kC,OAAO6C,KAAK6hC,GAAU9iB,SAASplB,IACzB01B,GAAOwS,EAASloC,MAAKioC,GAAoB,GAAG,GAEpD,CACA/E,GAAQ+E,CACV,CACA,GAAIvS,GAAO,yBAA0B,CACnC,IAAI0S,EAAW,GACX1S,GAAO,yBAAwB0S,GAAY,IAC3C1S,GAAO,oBAAmB0S,GAAY,KACtC1S,GAAO,sBAAqB0S,GAAY,KACxC1S,GAAO,qBAAoB0S,GAAY,KAC3ClF,GAAQ,EAAIkF,CACd,CAEI1S,GAAO,uBAAsBwN,GAAQ,KACrCxN,GAAO,wBAAuBwN,GAAQ,GAE1CjS,GAAehM,KAAKojB,kBAAkB,MAAOpX,IAE7CiS,GAAQiD,KAERlV,IAAgBiS,CAGlB,CEzOO,MAAMoF,GAAW,CACtB,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,gBAIWC,GAAe,CAC1B,gBACA,gBACA,cACA,gBACA,kBACA,kBACA,kBAIWC,GAAgB,CAC3B,0BACA,qBACA,mBACA,iBACA,sBACA,gBACA,oBAIWC,GAAa,CACxB,sBACA,wBACA,sBACA,yBACA,wBACA,yBACA,wBAIWC,GAAa,CACxB,qBACA,oBACA,oBACA,yBACA,cACA,WACA,eCnEa,SAASC,GAAazT,GACnC,OAAOF,GAAgBE,GAAQF,GAAgBE,GAAMsQ,IAAM,CAC7D,CCIe,SAASoD,KACtB,IAAIC,EAAW,EACfrlC,OAAO6C,KAAK4e,KAAKmf,kBAAkBhf,SAASplB,IACtC01B,GAAOzQ,KAAKmf,iBAAiBpkC,MAAK6oC,GAAY,EAAC,KAEhDF,GAAa,UAAYE,GAAY,GAAGvC,GAAO,UAC/CqC,GAAa,YAAcE,GAAY,IAAIvC,GAAO,WAEvD,IAAIwC,EAAiB,EACjBC,EAAgB,EAChBC,EAAS,EACTC,EAAY,IAChBzlC,OAAO6C,KAAKyuB,IAAY1P,SAASplB,IAC/B8oC,GAAkBhU,GAAW90B,GAAGo3B,OAChC6R,EAAY7gC,KAAKyD,IAAIipB,GAAW90B,GAAGo3B,OAAQ6R,GACtCN,GAAa,kBAEd7T,GAAW90B,GAAGo3B,OACdhvB,KAAKyD,IAAI,IAAK,IAAMoZ,KAAKikB,YAAYjpC,OAASglB,KAAKoR,QAAQr2B,GAAGqlB,GAAK,MAEnE0jB,EAAgB,GAEfJ,GAAa,YACZ7T,GAAW90B,GAAGo3B,OAA0D,IAAhDnS,KAAKikB,YAAYjpC,OAASglB,KAAKoR,QAAQr2B,GAAGqlB,MAAU2jB,EAAS,EAC3F,IAEEC,GAAa,GAAG3C,GAAO,uBACL,IAAlByC,GAAqBzC,GAAO,iBACjB,IAAX0C,GAAc1C,GAAO,WACrB2C,GAAa,KAAK3C,GAAO,cACzB2C,GAAa,KAAK3C,GAAO,yBACzB2C,GAAa,KAAK3C,GAAO,gBACzB2C,GAAa,KAAK3C,GAAO,2BACzB2C,GAAa,KAAK3C,GAAO,iBACzB2C,GAAa,KAAK3C,GAAO,4BACzB2C,GAAa,KAAK3C,GAAO,oBACzB2C,GAAa,KAAK3C,GAAO,+BACzB2C,GAAa,KAAK3C,GAAO,kBACzB2C,GAAa,KAAK3C,GAAO,6BACzB2C,GAAa,KAAK3C,GAAO,iBACzB2C,GAAa,KAAK3C,GAAO,4BACzB2C,GAAa,KAAK3C,GAAO,kBAEzBwC,GAAkB,KAAKxC,GAAO,WAC9BwC,GAAkB,KAAKxC,GAAO,aAC9BwC,GAAkB,KAAMxC,GAAO,YAC/BwC,GAAkB,MAAMxC,GAAO,sBAC/BwC,GAAkB,KAAMxC,GAAO,gBAC/BwC,GAAkB,MAAMxC,GAAO,gBAC/BwC,GAAkB,KAAOxC,GAAO,UAEhCjW,GAAoB,IAAIiW,GAAO,YAC/BjW,GAAoB,IAAIiW,GAAO,aAC/BjW,GAAoB,KAAKiW,GAAO,YAChCjW,GAAoB,KAAKiW,GAAO,oBAChCjW,GAAoB,KAAKiW,GAAO,oBAChCjW,GAAoB,KAAKiW,GAAO,oCAChCjW,GAAoB,KAAKiW,GAAO,UAChCjW,GAAoB,KAAKiW,GAAO,kBAChCjW,GAAoB,KAAKiW,GAAO,0BAEhCwC,GAAkB,KAAQzY,GAAoB,KAAKiW,GAAO,YAC1DwC,GAAkB,KAAQzY,GAAoB,KAAKiW,GAAO,qBAE1DxR,GAAWqU,OAAO/R,OAAStC,GAAW+O,QAAQzM,QAAU,KAAKkP,GAAO,qBAExE,IAAI8C,GAAkB,EACtB5lC,OAAO6C,KAAKkiC,IAAcnjB,SAASplB,IAC5B01B,GAAO6S,GAAavoC,MAAKopC,GAAkB,EAAK,IAEnDA,GAAiB9C,GAAO,kBAE5B,IAAI+C,GAAmB,EAMvB,GALA7lC,OAAO6C,KAAKmiC,IAAepjB,SAASplB,IAC7B01B,GAAO8S,GAAcxoC,MAAKqpC,GAAmB,EAAK,IAErDA,GAAkB/C,GAAO,eAEzB5Q,GAAO,mBAAoB,CAC7B,MAAM4T,EAAOrkB,KAAKme,MAAMvM,QAAQqR,SAChC,IAAIqB,EAAW,EACf/lC,OAAO6C,KAAKijC,GAAMlkB,SAASplB,IACrB01B,GAAO4T,EAAKtpC,GAAGuE,QAAOglC,GAAY,EAAC,IAErCA,GAAYD,EAAKrpC,QAAQqmC,GAAO,YACtC,CACF,CCpFe,SAASkD,GAAwB/S,EAAUW,GACxD4N,KACAlQ,GAAW2B,GAAUW,QAAUA,EAC/B,MAAM0H,EAAKhK,GAAW2B,GAEL,WAAbA,GACEqI,EAAG1H,QAAU,GAAGkP,GAAO,SACvBxH,EAAG1H,QAAU,GAAGkP,GAAO,gBACvBxH,EAAG1H,QAAU,IAAIkP,GAAO,eACxBxH,EAAG1H,QAAU,KAAKkP,GAAO,mBACzBxH,EAAG1H,QAAU,KAAKkP,GAAO,eACzBxH,EAAG1H,QAAU,KAAKkP,GAAO,uBACzBxH,EAAG1H,QAAU,KAAKkP,GAAO,SACzBxH,EAAG1H,QAAU,KAAKkP,GAAO,kCACzBxH,EAAG1H,QAAU,KAAKkP,GAAO,iCACzBxH,EAAG1H,QAAU,KAAKkP,GAAO,wBACzBxH,EAAG1H,QAAU,KAAKkP,GAAO,wBACzBxH,EAAG1H,QAAU,KAAKkP,GAAO,eACzBxH,EAAG1H,QAAU,KAAMkP,GAAO,wBAE9B9iC,OAAO6C,KAAK4e,KAAKoR,QAAQyI,EAAGv6B,MAAMklC,eAAerkB,SAAS4Z,IACpDF,EAAG1H,QAAUnS,KAAKme,MAAMne,KAAKoR,QAAQyI,EAAGv6B,MAAMklC,cAAczK,GAAGlJ,MAAM4T,cACvEpD,GAAOrhB,KAAKoR,QAAQyI,EAAGv6B,MAAMklC,cAAczK,GAAGz6B,KAChD,IAIJ,MAAMolC,EAAwBpZ,GAU9B,OARAgW,KAEAqC,KAEIe,IAA0BpZ,IAC5BgW,KAGKtV,GAAehM,KAAKgb,SAC7B,CC5Ce,SAAS2J,GAA4BC,EAAcC,EAAUC,GAC1E,IAAIC,EAAQH,EACRrI,EAAQ,EACZ,KAAOwI,EAAQD,GACbC,GAAqE,KAA5D5hC,KAAK2D,IAAI,MAAQi+B,EAAQ5hC,KAAK2D,IAAI+9B,EAAU,OAAS,IAC9DtI,GAAS,EAEX,OAAOA,EAAQvc,KAAKwB,GACtB,CCVe,SAASwjB,KACkB,OAApCn5B,EAAE,gCACoF,IAApFmU,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6jB,aACtEp5B,EAAE,8BAA8BhJ,MAAMoC,IAAM,OAC5C4G,EAAE,8BAA8BhJ,MAAM04B,OAAS,WAC/C1vB,EAAE,8BAA8BhJ,MAAMqK,QAAU,YAEhDrB,EAAE,8BAA8BhJ,MAAM2a,MAAQ,OAC9C3R,EAAE,8BAA8BhJ,MAAM04B,OAAS,MAC/C1vB,EAAE,8BAA8BhJ,MAAMqK,QAAU,WAGtD,CCAe,SAASg4B,KAEtB,GADAnF,KACyC,SAArCl0B,EAAE,iBAAiBhJ,MAAM2U,SAAsB3L,EAAE,iBAAkB,CACrEA,EAAE,iBAAiB6L,UAAY,GAC/B,MAAMytB,EZJH,WACLt5B,EAAE,WAAWjO,WAAWiF,MAAMuiC,cAAgB,MAC9C,MAAMD,EAAa9rC,SAAS4D,cAAc,OAM1C,OALAkoC,EAAWtiC,MAAMgU,OAAS,YAC1BsuB,EAAWtiC,MAAMqK,QAAU,MAC3Bi4B,EAAWtiC,MAAM04B,OAAS,WAC1B4J,EAAW/kB,GAAK,kBAChB+kB,EAAW3pC,UAAYm6B,aAChBwP,CACT,CYLuB,GACnBt5B,EAAE,iBAAiBiK,YAAYqvB,GAEX,MAAhB1N,GCGO,WACb,IAAIr3B,EAaJ,GAZqB,IAAjB4f,KAAKkY,QACPlB,GAA4B52B,EAE5BA,EAAS42B,GAEU,IAAjBhX,KAAKyS,QAAeryB,EAASotB,GACP,KAAjBxN,KAAKyS,QAAgBryB,EAASqtB,GACb,MAAjBzN,KAAKyS,UAAiBryB,EAASstB,IAExC6J,GAAevX,KAAKoR,QAAQsG,IAAaiF,UACzCnF,GAAqBp3B,EAAOs3B,IAAasE,MAGqD,IAA5Fhc,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASikB,qBACnD,IAAjBrlB,KAAKkY,QACL,CAIA,GAFA,GADmBrsB,EAAE,oBAKjB,IADFmU,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASikB,qBAEnD,IAAjBrlB,KAAKkY,QACL,CACArsB,EAAE,mBAAmBzN,YAAc,GAASo5B,GAAoB,GAChE,MAAM8N,EAAWniC,KAAKC,MAAOo0B,GAAqBxX,KAAKgb,UAAa,KAChEhG,OAAOC,SAASqQ,IAA0B,IAAbA,EAC/Bz5B,EAAE,mBAAmBzN,aAAe,KAAKknC,EAAW,kBAEpDz5B,EAAE,mBAAmBzN,aAAe,OAClC4hB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgU,eAChE,IACA,oBAGRvpB,EAAE,mBAAmBrQ,UAAYm6B,GAAgBv1B,EAAOs3B,IAAaW,OACjErY,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASqb,cACtE5wB,EAAE,eAAezN,YAAcm8B,GAAWn6B,EAAOs3B,IAAa3rB,IAC3DF,EAAE,eAAezN,YAAc,GAASgC,EAAOs3B,IAAa3rB,GAAI,GACrEF,EAAE,eAAerQ,UAAYm6B,GAAgBv1B,EAAOs3B,IAAaW,OACjE,MAAMqE,EAAa9B,IAChBrD,IAAgBvX,KAAK4c,QAAUzB,OAAyBN,MAE3DhvB,EAAE,iBAAiBzN,YAAcs+B,EAAW7T,KACpB,UAApB6T,EAAW7T,MAAoB7I,KAAK4c,QAAUx8B,EAAOs3B,IAAajG,MACpE5lB,EAAE,iBAAiBzN,YAAc,GAAGs+B,EAAW7T,oBAC1Chd,EAAE,iBAAiBzN,YAAcs+B,EAAW7T,KACnDhd,EAAE,iBAAiBrQ,UAAYm6B,GAAgB+G,EAAWrE,MAC5D,CAGAxsB,EAAE,iCAAiChJ,MAAM2U,QAAU,OACnD3L,EAAE,iBAAiBhJ,MAAM+9B,aAAe,MAGxC,IAAK,MAAM7lC,KAAKwD,OAAO6C,KAAK4e,KAAKoR,QAAQsG,IAAa6N,mBACpD,IAAKvlB,KAAKwlB,UAAUxlB,KAAKoR,QAAQsG,IAAa6N,kBAAkBxqC,GAAG0qC,OAAOnmC,MAAO,CAC/E,MAAMomC,EAAuB1lB,KAAKoR,QAAQsG,IAAa6N,kBAAkBxqC,GACzE8Q,EAAE,iBAAiBhJ,MAAM+9B,aAAe,MACxC/0B,EAAE,iCAAiChJ,MAAM2U,QAAU,GACnD3L,EAAE,2BAA2BrQ,UAAY,kBAAkBk8B,KAC3D7rB,EAAE,2BAA2BzN,YAAc,GACzCsnC,EAAqB5F,IAAMjQ,GAAW6H,IAAa2I,aACnD,IAEFx0B,EAAE,2BAA2BhJ,MAAMyF,MAAQ,QAC3C,KACF,CAGF,MAAMq9B,EAAkBhY,GAA4B+J,IACpD,GAAIiO,EAAgBjN,aAAe,IAAK,CAItC,IAAIkN,EAHJ/5B,EAAE,2BAA2BhJ,MAAM+9B,aAAe,MAClD/0B,EAAE,kCAAkChJ,MAAM2U,QAAU,GAIlDouB,EADE5lB,KAAKgb,UAEL73B,KAAK2D,IAAI6+B,EAAgBlU,OAASzR,KAAK4c,QAAUzB,MAAuB,GACtEnb,KAAKgb,UACP2K,EAAgBlU,MACd8S,GAAwB7M,GAAaiO,EAAgBjN,cAGvDiN,EAAgBlU,MAChB8S,GAAwB7M,GAAaiO,EAAgBjN,cAEzD7sB,EAAE,4BAA4BzN,YAAc,GAAG,GAC7CunC,EAAgBjN,mBACX,GAASiN,EAAgBlU,YAChC5lB,EAAE,4BAA4BhJ,MAAMyF,MAAQ,QAC5C,MAAMu9B,EAASxsC,SAAS4D,cAAc,QAClC+iB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASqb,cACtEoJ,EAAOznC,YAAcm8B,GAAWqL,GAC7BC,EAAOznC,YAAc,GAASwnC,GACnCC,EAAOrqC,UAAYm6B,GAAgBoL,GAAW,CAAEh1B,GAAI65B,GAAcD,EAAgBlU,OAClF5lB,EAAE,4BAA4BiK,YAAY+vB,EAC5C,MACEh6B,EAAE,kCAAkChJ,MAAM2U,QAAU,OACpD3L,EAAE,2BAA2BhJ,MAAM+9B,aAAe,KAEtD,MAAO/0B,EAAE,iBAAiBhJ,MAAM2U,QAAU,MAC5C,CD1GMsuB,GACyB,MAAhBrO,GEPA,WAQb,GANA,GADmB5rB,EAAE,oBAGrB2rB,GAAqBvJ,GAAcjO,KAAK4Z,gBAAgBlC,IAAap4B,MAAM08B,MAC3EzE,GAAevX,KAAK2f,SAAS3f,KAAK4Z,gBAAgBlC,IAAap4B,MAAMymC,WACrEpO,GAAoB1J,GAAcjO,KAAK4Z,gBAAgBlC,IAAap4B,MAAM0mC,WAGoB,IAA5FhmB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASikB,oBACpE,CACAx5B,EAAE,mBAAmBzN,YAAc,GAASo5B,GAAoB,GAChE,MAAM8N,EAAWniC,KAAKC,MAAOo0B,GAAqBxX,KAAKgb,UAAa,KAE3B,MAArCnvB,EAAE,mBAAmBzN,aACvByN,EAAE,qBAAqBhJ,MAAM2U,QAAU,OACvC3L,EAAE,mBAAmBhJ,MAAM2U,QAAU,OACrC3L,EAAE,uBAAuBhJ,MAAM2U,QAAU,OACzC3L,EAAE,eAAehJ,MAAM2U,QAAU,SAE7Bwd,OAAOC,SAASqQ,IAA0B,IAAbA,EAC/Bz5B,EAAE,mBAAmBzN,aAAe,KAAKknC,EAAW,kBAEpDz5B,EAAE,mBAAmBzN,aAAe,OAClC4hB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgU,eAChE,IACA,oBAGRvpB,EAAE,mBAAmBrQ,UACnBm6B,GAAgB1H,GAAcjO,KAAK4Z,gBAAgBlC,IAAap4B,MAAM+4B,QAItEV,KACF9rB,EAAE,2BAA2BzN,YAAc,GAASu5B,IACpD9rB,EAAE,2BAA2BhJ,MAAM2U,QAAU,QAC7C3L,EAAE,2BAA2Bo6B,gBAAgBpjC,MAAM2U,QAAU,UAG1DggB,IAAsBG,IACzB9rB,EAAE,eAAezN,YAAc,GAAG,GAASm5B,GAAeI,aAC1D9rB,EAAE,eAAehJ,MAAMyF,MAAQ,QAC/BuD,EAAE,uBAAuBhJ,MAAM2U,QAAU,QACzC3L,EAAE,eAAehJ,MAAM2U,QAAU,UAE7BwI,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASqb,cACtE5wB,EAAE,eAAezN,YAAcm8B,GAC7BtM,GAAcjO,KAAK4Z,gBAAgBlC,IAAap4B,MAAMyM,IAGxDF,EAAE,eAAezN,YAAc,GAC7B6vB,GAAcjO,KAAK4Z,gBAAgBlC,IAAap4B,MAAMyM,GACtD,GAEJF,EAAE,eAAerQ,UACfm6B,GAAgB1H,GAAcjO,KAAK4Z,gBAAgBlC,IAAap4B,MAAM+4B,QAE1E,MAAMqE,EAAa9B,IAChBrD,IAAgBvX,KAAK4c,QAAUzB,OAAyBN,MAY3D,GAVAhvB,EAAE,iBAAiBzN,YAAcs+B,EAAW7T,KAEtB,UAApB6T,EAAW7T,MACX7I,KAAK4c,QAAU5c,KAAK4Z,gBAAgBlC,IAAaqO,WAEjDl6B,EAAE,iBAAiBzN,YAAc,GAAGs+B,EAAW7T,oBAC1Chd,EAAE,iBAAiBzN,YAAcs+B,EAAW7T,KACnDhd,EAAE,iBAAiBrQ,UAAYm6B,GAAgB+G,EAAWrE,OAGX,kBAA3CrY,KAAK4Z,gBAAgBlC,IAAap4B,KAA0B,CAC9DuM,EAAE,mBAAmBswB,UAAUt5B,MAAM+9B,aAAe,MACpD/0B,EAAE,mBAAmBiK,YACnB,GAA2B,yCAE7B,MAAMowB,EAAY7sC,SAAS4D,cAAc,OACzCipC,EAAUrjC,MAAMyF,MAAQ,QACxB49B,EAAU9nC,YAAc,GAAG,GAAwB,IAAf4hB,KAAK4c,cAAqB,GAASrP,MACvE1hB,EAAE,mBAAmBiK,YAAYowB,EACnC,CACF,MAAOr6B,EAAE,iBAAiBhJ,MAAM2U,QAAU,MAC5C,CF1EM2uB,GACyB,MAAhB1O,GGrBA,WACb,GAAwF,IAApFzX,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASglB,YAAmB,CACzF,MAAMjB,EAAat5B,EAAE,mBAErBs5B,EAAWrvB,YAAY,GAA2B,uBAElD,MAAMuwB,EAAWhtC,SAAS4D,cAAc,OACxCopC,EAASjmB,GAAK,gBACd+kB,EAAWrvB,YAAYuwB,GACvB,MAAMC,ECAK,KADuBlrC,EDCD4kB,KAAKumB,iBCC/B,CAAE1d,KAAM,SAAUwP,OAAQlC,IAEtB,IAAT/6B,EACK,CAAEytB,KAAM,aAAcwP,OAAQvC,IAE1B,IAAT16B,EACK,CAAEytB,KAAM,SAAUwP,OAAQtC,IAEtB,IAAT36B,EACK,CAAEytB,KAAM,QAASwP,OAAQrC,IAErB,IAAT56B,EACK,CAAEytB,KAAM,cAAewP,OAAQnC,IAEjC,CAAErN,KAAM,qBAAsBwP,OAAQpC,IDd3CoQ,EAASjoC,YAAckoC,EAAWzd,KAClCwd,EAAS7qC,UAAYm6B,GAAgB2Q,EAAWjO,MAClD,MAAOxsB,EAAE,iBAAiBhJ,MAAM2U,QAAU,OCJ7B,IAAuBpc,CDKtC,CHSMorC,GACyB,MAAhB/O,GKpBA,WACb,MAAM,SAAEtG,GAAanR,KAAKoR,QAAQ,gBAC5BqV,EAAYtV,EAASuV,aAAavV,EAASwV,WAAWjP,KAE5D,GACsF,IAApF1X,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASwlB,aACpEH,GAAatV,EAAS0V,OACtB,CACA,MAAM1B,EAAat5B,EAAE,mBAGrBs5B,EAAWrvB,YAAY,GAA2B,cAClD,MAAM0kB,EAAOnhC,SAAS4D,cAAc,OACpCu9B,EAAKpa,GAAK,gBACV+kB,EAAWrvB,YAAY0kB,GACvB,MAAMkC,EAAa9B,GACjB+J,GAA4BxT,EAAS4T,MAAO5T,EAAS0V,OAAQJ,IAM/D,GAJAjM,EAAKp8B,YAAcs+B,EAAW7T,KAC9B2R,EAAKh/B,UAAYm6B,GAAgB+G,EAAWrE,OAGxCoO,GAAatV,EAAS4T,MAAO,CAC/BI,EAAWrvB,YAAY,GAA2B,iBAClD,MAAMgxB,EAAUztC,SAAS4D,cAAc,OACvC6pC,EAAQ1mB,GAAK,mBACb+kB,EAAWrvB,YAAYgxB,GACvB,MAAMC,EAAgBnM,GACpB+J,GACExhC,KAAK2D,IAAI,EAAGqqB,EAAS4T,MAAQ0B,GAC7BtV,EAAS0V,OACT1V,EAAS4T,QAGb+B,EAAQ1oC,YAAc2oC,EAAcle,KACpCie,EAAQtrC,UAAYm6B,GAAgBoR,EAAc1O,MACpD,CAGA,GAAoB,MAAhBX,GAAqB,CACvByN,EAAWrvB,YAAY,GAA2B,8BAClD,MAAMkxB,EAAU3tC,SAAS4D,cAAc,OACvC+pC,EAAQ5mB,GAAK,IACb+kB,EAAWrvB,YAAYkxB,GACvB,MAAMC,EAAS5tC,SAAS4D,cAAc,QACtCgqC,EAAOpkC,MAAMyF,MAAQ,UACrB2+B,EAAO7oC,YAAc,GACnB+E,KAAK2D,IAAI3D,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,IAAK,GAClE,GAEFgM,EAAQlxB,YAAYmxB,GACpB,MAAMC,EAAY7tC,SAAS4D,cAAc,QACzCiqC,EAAU9oC,YAAc,MACxB4oC,EAAQlxB,YAAYoxB,GACpB,MAAMC,EAAO9tC,SAAS4D,cAAc,QACpCkqC,EAAKtkC,MAAMyF,MAAQ,MACnB6+B,EAAK/oC,YAAc,GACjB+E,KAAKyD,IAAIoZ,KAAK4c,QAASz5B,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,IAAM,IACjF,GAEFgM,EAAQlxB,YAAYqxB,EACtB,CAEAt7B,EAAE,iBAAiBiK,YAAYqvB,EACjC,MAAOt5B,EAAE,iBAAiBhJ,MAAM2U,QAAU,MAC5C,CL5CM4vB,GACyB,MAAhB3P,GMxBA,WACb,MAAM,SAAEtG,GAAanR,KAAKoR,QAAQiW,KAClC,GACErnB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkmB,cACf,IAArDnW,EAASoW,KAAK7P,GAAY,IAAIA,GAAY,IAAI,GAC9C,CACA,MAAM8P,EACJrW,EAASoW,KAAK7P,GAAY,IAAIA,GAAY,IAAI,GAC9CvG,EAASsW,WAAWtW,EAASoW,KAAK7P,GAAY,IAAIA,GAAY,IAAI,GAAK,GAAG8P,OACtEE,EACJvW,EAASsW,WAAWtW,EAASoW,KAAK7P,GAAY,IAAIA,GAAY,IAAI,GAAK,GAAGp4B,KAC5EuM,EAAE,mBAAmBiK,YAAY,GAA2B,+BAC5D,MAAMmxB,EAAS5tC,SAAS4D,cAAc,OACtCgqC,EAAO7mB,GAAK,uBACZvU,EAAE,mBAAmBiK,YAAYmxB,GACf,cAAdS,GAA2C,oBAAdA,EAC/B77B,EAAE,wBAAwBzN,YAAc,GACtCopC,EAAS,GAASrkC,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,IAAM,SACxE,GAA0B,GAAjBhb,KAAKgb,UAAiB,KACd,cAAd0M,EACT77B,EAAE,wBAAwBzN,YAAc,GACtCopC,EAAS,GAASrkC,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,KAAO,SACzE,GAA0B,GAAjBhb,KAAKgb,UAAiB,MACd,cAAd0M,EACT77B,EAAE,wBAAwBzN,YAAc,GACtCopC,EAAS,GAASrkC,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,KAAO,SACzE,GAA0B,GAAjBhb,KAAKgb,UAAiB,MACd,cAAd0M,EACT77B,EAAE,wBAAwBzN,YAAc,GACtCopC,EAAS,GAASrkC,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,MAAQ,SAC1E,GAA0B,GAAjBhb,KAAKgb,UAAiB,OAChCnvB,EAAE,iBAAiBhJ,MAAM2U,QAAU,MAC5C,MAAO3L,EAAE,iBAAiBhJ,MAAM2U,QAAU,MAC5C,CNRMmwB,GACyB,OAAhBlQ,GO1BA,WACb,MAAM,SAAEtG,GAAanR,KAAKoR,QAAQiW,KAClC,GAAIrnB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASglB,YAAa,CACnFv6B,EAAE,mBAAmBiK,YAAY,GAA2B,oCAC5D,IAAI8xB,EAAY,EACZC,EAAS,EACT7nB,KAAK5e,KAAK,KAAO4e,KAAK5e,KAAK,MAAKymC,EAAS,GAC7C,IAAK,IAAIhjC,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAK,IAAID,EAAI,EAAGA,EAAI,EAAGA,IACrB,GAAIusB,EAASoW,KAAK1iC,GAAGD,GAAG,IAAM,EAAG,CAC/B,MAAMkjC,EAAO3W,EAASoW,KAAK1iC,GAAGD,GACxBi1B,EAAK1I,EAASsW,WAAWK,EAAK,GAAK,GACnCJ,EAAY7N,EAAGv6B,KAErB,IAAIi9B,GAAQ,EACRsL,GAAUhO,EAAGkO,WAAUxL,GAAQ,GAC/BuL,EAAK,GAAKjO,EAAGmO,aAAYzL,GAAQ,GACjCA,GAAuB,cAAdmL,EACXE,GAAazkC,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,IACvDuB,GAAuB,cAAdmL,GAA4C,oBAAdA,EACjDE,GAAazkC,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,GACxDuB,GAAuB,cAAdmL,EAClBE,GAAazkC,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,IACxDuB,GAAuB,cAAdmL,IAClBE,GAAazkC,KAAKyD,IAAmB,IAAfoZ,KAAK4c,QAAiC,GAAjB5c,KAAKgb,UAAiB,KAErE,CAGJnvB,EAAE,mBAAmBiK,YAAYzc,SAASwf,eAAe,GAAS+uB,IACpE,MAAO/7B,EAAE,iBAAiBhJ,MAAM2U,QAAU,MAC5C,CPJMywB,GACyB,OAAhBxQ,GQlBA,WACb,MAAM,SAAEtG,GAAanR,KAAKoR,QAAQ8W,KAClC,GAAIloB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS+mB,cAAe,CACrF,MAAMhD,EAAat5B,EAAE,mBACfu8B,EAAQjX,EAASkX,UAAU3Q,IAGjCyN,EAAWrvB,YAAY,GAA2B,iBAClD,MAAMwyB,EAAYjvC,SAAS4D,cAAc,OACzCqrC,EAAUloB,GAAK,gBACf+kB,EAAWrvB,YAAYwyB,GACvB,MAAMC,EAAYH,EAAM15B,KAClB85B,EAAQ,CAAC,SAAU,YAAa,YAAa,YAAa,YAAa,WAC7EF,EAAUlqC,YAAcoqC,EAAMD,GAC9B,MAAME,EAAU,CAACtS,GAAYJ,GAAcC,GAAcF,GAAaG,GAAWC,IACjFoS,EAAU9sC,UAAYm6B,GAAgB8S,EAAQF,GAG9CpD,EAAWrvB,YAAY,GAA2B,UAClD,MAAM4yB,EAAQrvC,SAAS4D,cAAc,OACrCyrC,EAAMtoB,GAAK,iBACX+kB,EAAWrvB,YAAY4yB,GACvBA,EAAMtqC,YAAc,GAASgqC,EAAM/oB,GACnC,MAAMspB,EAAcP,EAAM/oB,EAAI,EAAI4W,GAAYH,GAC9C4S,EAAMltC,UAAYm6B,GAAgBgT,EAGlCxD,EAAWrvB,YAAY,GAA2B,kBAClD,MAAM8yB,EAAevvC,SAAS4D,cAAc,OAC5C2rC,EAAaxoB,GAAK,wBAClB+kB,EAAWrvB,YAAY8yB,GACvBA,EAAaxqC,YAAc,IAAI,GAAS+yB,EAAS0X,cAAcT,EAAMhoB,OACrEwoB,EAAa/lC,MAAMyF,MAAQ,QAG3B68B,EAAWrvB,YAAY,GAA2B,wBAClD,MAAMgzB,EAAoBzvC,SAAS4D,cAAc,OACjD6rC,EAAkB1oB,GAAK,yBACvB+kB,EAAWrvB,YAAYgzB,GACvB,MAAMC,EC/CK,SACbC,EACAC,EACAL,EACAl6B,EACAw6B,EACAC,GAEA,IAAIhrC,EAAQ6qC,EACRN,EAAQO,EAEZ,OADAP,GAAS,IAAO,ID2CZ1oB,KAAK8iB,SAAS,qBC1CVp0B,GACN,KAAK,EACHg6B,GAAS,IACT,MACF,KAAK,EACHA,GAAS,IACTA,GAAS,IACT,MACF,KAAK,EACHA,GAAS,IACTA,GAAS,IACT,MACF,KAAK,EACHA,GAAS,IACTvqC,GAAS,IACT,MACF,KAAK,EACHuqC,GAAS,IACTvqC,GAAS,IAWb,OANAA,GAAkC,KAAxByqC,EAAezqC,GACZ,IAATuQ,IAAYvQ,GAAS,MACZ,IAATuQ,IAAYvQ,GAAS,IACrBA,EAAQ,IAAwB,GAAjB+qC,EAAY,IAAUR,EAAQ,IAAGA,GAAS,IACzDvqC,EAAQ,IAAGA,GAAuB,IAAb,EAAIA,IACzBA,EAAQ,GAAKuqC,EAAQ,IAAGA,GAAS,KAC9BvlC,KAAK2D,IAAI3I,EAAQuqC,EAAO,EACjC,CDM0BU,CACpBhB,EAAM7qC,IACN6qC,EAAM/oB,EACN8R,EAAS0X,cAAcT,EAAMhoB,IAC7BgoB,EAAM15B,KACNsR,KAAKoR,QAAQ8W,KAAKrI,OAGpBiJ,EAAkB1qC,YAAc,IAAI,GAAS2qC,IAAkBA,EAAgBX,EAAM7qC,IAAM,IAAW,KACtG,MAAM8rC,EAA0BN,EAAgBX,EAAM7qC,IAAM04B,GAAYH,GACxEgT,EAAkBttC,UAAYm6B,GAAgB0T,EAE9Cx9B,EAAE,iBAAiBiK,YAAYqvB,EACjC,MAAOt5B,EAAE,iBAAiBhJ,MAAM2U,QAAU,MAC5C,CRlCM8xB,GACyB,OAAhB7R,GU7BA,WACb5rB,EAAE,WAAW6L,UAAY,GACzB7L,EAAE,WAAWiK,YAAY,GAA2B,YAEpD,MAAMyzB,EAAiBlwC,SAAS4D,cAAc,OAC9CssC,EAAenpB,GAAK,mBACA,iBAAhBsX,GACF6R,EAAenrC,YAAc,GAASyvB,IACb,eAAhB6J,KACT6R,EAAenrC,YAAc,GAAS0vB,GAAsB,KAG9DjiB,EAAE,WAAWiK,YAAYyzB,EAC3B,CViBMC,IACyB,QAAhB/R,IAA0C,QAAhBA,KAA6C,IAApBC,GAAY,KW9B/D,WACb,GAA4F,IAAxF1X,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASqoB,gBAAuB,CAC7F,MAAMtE,EAAat5B,EAAE,mBACrB,IAAI69B,EACuBA,EAAP,QAAhBjS,GAA+BC,GAAY,GAClCA,GAGbyN,EAAWrvB,YAAY,GAA2B,0BAClD,MAAM6zB,EAAOtwC,SAAS4D,cAAc,OAEpC,GADA0sC,EAAKvpB,GAAK,6BACkB,IAAxBwP,GAAU8Z,GAAO,GAAU,CAC7BC,EAAKvrC,YAAc,GAASwxB,GAAU8Z,GAAO,IAC7C,MAAMpE,EAAWniC,KAAKC,MAAOwsB,GAAU8Z,GAAO,GAAK1pB,KAAKgb,UAAa,KACjEhG,OAAOC,SAASqQ,IAA0B,IAAbA,EAC/BqE,EAAKvrC,aAAe,KAAKknC,EAAW,kBAEpCqE,EAAKvrC,aAAe,OAClB4hB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgU,eAChE,IACA,mBAGV,MAAOuU,EAAKvrC,YAAc,mBAC1B+mC,EAAWrvB,YAAY6zB,GAEvBxE,EAAWrvB,YAAY,GAA2B,0BAClD,MAAM8zB,EAAOvwC,SAAS4D,cAAc,OAEpC,GADA2sC,EAAKxpB,GAAK,6BACkB,IAAxBwP,GAAU8Z,GAAO,GAAU,CAC7BE,EAAKxrC,YAAc,GAASwxB,GAAU8Z,GAAO,IAC7C,MAAMpE,EAAWniC,KAAKC,MAAOwsB,GAAU8Z,GAAO,GAAK1pB,KAAKgb,UAAa,KACjEhG,OAAOC,SAASqQ,IAA0B,IAAbA,EAC/BsE,EAAKxrC,aAAe,KAAKknC,EAAW,kBAEpCsE,EAAKxrC,aAAe,OAClB4hB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgU,eAChE,IACA,mBAGV,MAAOwU,EAAKxrC,YAAc,mBAC1B+mC,EAAWrvB,YAAY8zB,GAEvBzE,EAAWrvB,YAAY,GAA2B,0BAClD,MAAM+zB,EAAOxwC,SAAS4D,cAAc,OAEpC,GADA4sC,EAAKzpB,GAAK,6BACkB,IAAxBwP,GAAU8Z,GAAO,GAAU,CAC7BG,EAAKzrC,YAAc,GAASwxB,GAAU8Z,GAAO,IAC7C,MAAMpE,EAAWniC,KAAKC,MAAOwsB,GAAU8Z,GAAO,GAAK1pB,KAAKgb,UAAa,KACjEhG,OAAOC,SAASqQ,IAA0B,IAAbA,EAC/BuE,EAAKzrC,aAAe,KAAKknC,EAAW,kBAEpCuE,EAAKzrC,aAAe,OAClB4hB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgU,eAChE,IACA,mBAGV,MAAOyU,EAAKzrC,YAAc,mBAC1B+mC,EAAWrvB,YAAY+zB,GAEvBh+B,EAAE,iBAAiBiK,YAAYqvB,EACjC,MAAOt5B,EAAE,iBAAiBhJ,MAAM2U,QAAU,MAC5C,CXjCMsyB,GY5BS,WACb,GAAoB,MAAhBrS,IAAuC,MAAhBA,GAAqB,CACgB,OAA1Dp+B,SAASkrB,eAAe,gCAC1B1Y,EAAE,iBAAiBiK,YxB+BlB,WACL,MAAMi0B,EAAc1wC,SAAS4D,cAAc,OAC3C8sC,EAAYlnC,MAAM8H,SAAW,WAC7Bo/B,EAAYlnC,MAAM2U,QAAU,QAC5BuyB,EAAYlnC,MAAMmC,KAAO,OACzB+kC,EAAYlnC,MAAMwV,OAAS,OAC3B0xB,EAAY3pB,GAAK,6BAEjB,MAAM4pB,EAAS,SAAUC,EAAO5R,EAAQ6R,EAAgBC,EAAeC,GACrE,MAAMn2B,EAAM5a,SAAS4D,cAAc,OACnCgX,EAAImM,GAAK6pB,EACTh2B,EAAIpR,MAAM2U,QAAU,OACpBvD,EAAIpR,MAAMwnC,WAAa,wBACvBp2B,EAAIzY,UpBlDuB,WoBkDO68B,EAClCpkB,EAAIpR,MAAMqK,QAAU,MACpB+G,EAAIpR,MAAMqB,WAAa,8BACvB,MAAMomC,EAAWjxC,SAAS4D,cAAc,OACxCgX,EAAI6B,YAAYw0B,GAChB,MAAMC,EAAYlxC,SAAS4D,cAAc,QACzCstC,EAAU/uC,UAAYm6B,GAAgB0C,EACtCkS,EAAU1nC,MAAM49B,WAAa,OAC7B8J,EAAUnsC,YAAc8rC,EACxBI,EAASx0B,YAAYy0B,GACrBD,EAASx0B,YAAYzc,SAASwf,eAAesxB,IAC7C,MAAMK,EAAanxC,SAAS4D,cAAc,OAC1CgX,EAAI6B,YAAY00B,GAChB,MAAMC,EAAcpxC,SAAS4D,cAAc,QAI3C,OAHAwtC,EAAYrqB,GAAKgqB,EACjBI,EAAW10B,YAAYzc,SAASwf,eAAe,cAC/C2xB,EAAW10B,YAAY20B,GAChBx2B,CACT,EA8DA,OA5DA81B,EAAYj0B,YACVk0B,EACE,yBACA/T,GACA,YACA,uFACA,+BAGJ8T,EAAYnsC,WAAWiF,MAAM+9B,aAAe,MAC5CmJ,EAAYj0B,YACVk0B,EACE,+BACAjU,GACA,YACA,gGACA,qCAGJgU,EAAY5N,UAAUt5B,MAAM+9B,aAAe,MAC3CmJ,EAAYj0B,YACVk0B,EACE,2BACA9T,GACA,YACA,oGACA,iCAGJ6T,EAAY5N,UAAUt5B,MAAM+9B,aAAe,MAC3CmJ,EAAYj0B,YACVk0B,EACE,iCACA9T,GACA,YACA,6GACA,uCAGJ6T,EAAY5N,UAAUt5B,MAAM+9B,aAAe,MAC3CmJ,EAAYj0B,YACVk0B,EACE,2BACA9T,GACA,YACA,qJACA,iCAGJ6T,EAAY5N,UAAUt5B,MAAM+9B,aAAe,MAC3CmJ,EAAYj0B,YACVk0B,EACE,wBACA/T,GACA,YACA,2EAA2EjW,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASspB,8BAC/I,8BAIGX,CACT,CwB7HqC,IAC/B/E,MAGsF,IAApFhlB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6jB,YACtEp5B,EAAE,8BAA8BhJ,MAAM2a,MAAQ,MAC3C3R,EAAE,8BAA8BhJ,MAAMoC,IAAM,GAAG4G,EAAE,WAAWvG,iBAEjEuG,EAAE,8BAA8BhJ,MAAMgG,MAAWgD,EAAE,WAAWxG,YAAc,EAA9B,KAE9C,MAAM8sB,EAASnS,KAAK4c,QAAUzB,KAAuB5D,GAC/CoT,EAAkB3qB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAChFwpB,YACCpT,GACA,EACJ,IAAIqT,EAAave,GACjB,GAAwF,IAApFtM,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASwpB,YAAmB,CACzF,IAAIE,EAActT,GAClBsT,GAAe5J,KACf2J,GAA6B,GAAdC,EAAmB,GAAM,GAC1C,CAWA,GAT0F,IAAtF9qB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2pB,eAClE5Y,EAAS0Y,IAA+B,MAAhBpT,IAAwC,IAAjBzX,KAAKkY,UACtDrsB,EAAE,0BAA0BhJ,MAAM2U,QAAU,GAC5C3L,EAAE,8BAA8BzN,YAAc,GAAG,GAC/CysC,EAAa1Y,OACToI,IAAYsQ,EAAa1Y,IAAW0I,KAAW8P,QAElD9+B,EAAE,0BAA0BhJ,MAAM2U,QAAU,OAG2C,IAA5FwI,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS4pB,oBACpE,CACA,MAAMC,EAAgC,EAAbJ,EACrB1Y,EAAS8Y,IAAqC,MAAhBxT,IAAwC,IAAjBzX,KAAKkY,UAC5DrsB,EAAE,gCAAgChJ,MAAM2U,QAAU,GAClD3L,EAAE,oCAAoCzN,YAAc,GAAG,GACrD6sC,EAAmB9Y,OACfoI,IAAY0Q,EAAmB9Y,IAAW0I,KAAW8P,QACtD9+B,EAAE,gCAAgChJ,MAAM2U,QAAU,MAC3D,MAAO3L,EAAE,gCAAgChJ,MAAM2U,QAAU,OAEzD,GAA4F,IAAxFwI,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS8pB,gBAAuB,CAC7F,MAAMC,EAA4B,EAAbN,EACjB1Y,EAASgZ,IAAiC,MAAhB1T,IAAwC,IAAjBzX,KAAKkY,UACxDrsB,EAAE,4BAA4BhJ,MAAM2U,QAAU,GAC9C3L,EAAE,gCAAgCzN,YAAc,GAAG,GACjD+sC,EAAehZ,OACXoI,IAAY4Q,EAAehZ,IAAW0I,KAAW8P,QAClD9+B,EAAE,4BAA4BhJ,MAAM2U,QAAU,MACvD,MAAO3L,EAAE,4BAA4BhJ,MAAM2U,QAAU,OAErD,GAEE,IADAwI,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASgqB,sBAEpE,CACA,MAAMC,EAAkC,EAAbR,EAAiB,EACxC1Y,EAASkZ,IAAuC,MAAhB5T,IAAwC,IAAjBzX,KAAKkY,UAC9DrsB,EAAE,kCAAkChJ,MAAM2U,QAAU,GACpD3L,EAAE,sCAAsCzN,YAAc,GAAG,GACvDitC,EAAqBlZ,OACjBoI,IAAY8Q,EAAqBlZ,IAAW0I,KAAW8P,QACxD9+B,EAAE,kCAAkChJ,MAAM2U,QAAU,MAC7D,MAAO3L,EAAE,kCAAkChJ,MAAM2U,QAAU,OAG+B,IAAxFwI,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkqB,iBACpEtrB,KAAKoR,QAAQ,gBAAgBS,gBAEzB/E,IAAgBqF,EAASrF,KAAiC,MAAhB2K,IAAwC,IAAjBzX,KAAKkY,UACxErsB,EAAE,4BAA4BhJ,MAAM2U,QAAU,GAC9C3L,EAAE,gCAAgCzN,YAAc,GAAG,GACjD0uB,GAAeqF,OACXoI,IAAYzN,GAAeqF,IAAW0I,KAAW8P,QAEpD9+B,EAAE,4BAA4BhJ,MAAM2U,QAAU,OAEjDwI,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASspB,aAAe,GAEnFvY,EACEnS,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASspB,aAClE7P,OACa,MAAhBpD,IAAwC,IAAjBzX,KAAKkY,UAE7BrsB,EAAE,yBAAyBhJ,MAAM2U,QAAU,GAE3C3L,EAAE,yBAAyB0U,SAAS,GAAGniB,YACrC,2EAA2E4hB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASspB,8BACjJ7+B,EAAE,6BAA6BzN,YAAc,GAAG,GAC9C4hB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASspB,aAClE7P,KACA1I,OACEoI,IACHva,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASspB,aACnE7P,KACA1I,IACC0I,KAAW8P,QAGb9+B,EAAE,yBAAyBhJ,MAAM2U,QAAU,MACpD,MAA+C,OAApC3L,EAAE,+BACXA,EAAE,8BAA8B3J,QAEpC,CZ7EIqpC,EACF,MAAkC,OAAvB1/B,EAAE,kBAE6B,OAApCA,EAAE,+BACJA,EAAE,8BAA8B3J,QAGtC,CapCe,SAASspC,KAEtB,GACExrB,KAAKyrB,MAAMC,UACX1rB,KAAK2rB,MAAQ,IAAO,GACJ,UAAhB3rB,KAAKwD,QACLxD,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASwqB,MACpE,CACA,MAAMhQ,EAAQviC,SAASkrB,eAAe,wBAClCqX,IACFA,EAAMhV,UAAY5G,KAAK6rB,QAAmB,GAAX7rB,KAAKwB,IAAYxB,KAAK8rB,GAAgB,GAAX9rB,KAAKwB,KAAY,GAE/E,CAGAwW,KACAmB,KACAN,KC8BK,WACL,GAAqF,IAAjF7Y,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS8b,SAAgB,CAEtF,MAAM6O,EAAiBlgC,EAAE,cAAcxG,YAAc,IAE/C2mC,EAAiBngC,EAAE,cAAcxG,YAAc,IACrD,IAAI4mC,EAAiB,EAErB,GACEjsB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS8qB,kBACpElsB,KAAKyrB,MAAMC,SACX,CACA,MAAMS,GACQ,GAAXnsB,KAAKwB,KAAYxB,KAAKosB,SAAW,EAAIpsB,KAAK8rB,GAAgB,GAAX9rB,KAAKwB,OAAcxB,KAAKwB,IAC1E3V,EAAE,sBAAsBhJ,MAAM2U,QAAU,GACxC3L,EAAE,yBAAyBhJ,MAAMgG,MAAQ,GAAG1F,KAAKC,MAC9C+oC,GACEH,EAAqE,EAApD7oC,KAAKiL,KAAK+9B,GAAsB9oC,WAAWrI,QAC7D,QAGFglB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASirB,iBAAmB,EAEvFxgC,EAAE,yBAAyBzN,YAAc+E,KAAKiL,KAAK+9B,GAC9CtgC,EAAE,yBAAyBzN,YAAc,GAChDyN,EAAE,0BAA0BzN,YAAc+E,KAAKiL,KAAK+9B,GACpDF,GAAkB,CACpB,MAAOpgC,EAAE,sBAAsBhJ,MAAM2U,QAAU,OAGN,IAArCwI,KAAK4iB,aAAaC,OAAOyJ,SAAkBtsB,KAAKusB,IAAI,uBAgDjD1gC,EAAE,gBAAgBhJ,MAAM2U,QAAU,QA/CvC3L,EAAE,gBAAgBhJ,MAAM2U,QAAU,GAClC3L,EAAE,sBAAsBhJ,MAAMgG,MAAQ,GAAG1F,KAAKC,MAC3CD,KAAK2D,IAAI,EAAGkZ,KAAK4iB,aAAaC,OAAO2J,QAAUxsB,KAAK4iB,aAAaC,OAAOrI,MACvEuR,EACA/rB,KAAK4iB,aAAaC,OAAO4J,aAEzBzsB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASirB,iBAAmB,EACzFxgC,EAAE,sBAAsBzN,YAAc+E,KAAKiL,MACxC4R,KAAK4iB,aAAaC,OAAO2J,QAAUxsB,KAAK4iB,aAAaC,OAAOrI,MAAQxa,KAAKwB,KAEzE3V,EAAE,sBAAsBzN,YAAc,GACvC4hB,KAAK4iB,aAAaC,OAAO2J,UAAYxsB,KAAK4iB,aAAaC,OAAO4J,SAChE5gC,EAAE,sBAAsBhJ,MAAM64B,qBAAuB,OACrD7vB,EAAE,sBAAsBhJ,MAAM84B,wBAA0B,SAExD9vB,EAAE,sBAAsBhJ,MAAM64B,qBAAuB,GACrD7vB,EAAE,sBAAsBhJ,MAAM84B,wBAA0B,IAE1D9vB,EAAE,mBAAmBhJ,MAAMgG,MAAQ,GAAG1F,KAAKC,MACxCD,KAAKyD,IACJoZ,KAAK4iB,aAAaC,OAAO4J,QAAUzsB,KAAK4iB,aAAaC,OAAO2J,QAC5DxsB,KAAK4iB,aAAaC,OAAO4J,QAAUzsB,KAAK4iB,aAAaC,OAAOrI,MAE5DuR,EACA/rB,KAAK4iB,aAAaC,OAAO4J,aAEzBzsB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASirB,iBAAmB,EACzFxgC,EAAE,mBAAmBzN,YAAc+E,KAAKiL,KACtCjL,KAAKyD,IACHoZ,KAAK4iB,aAAaC,OAAO4J,QAAUzsB,KAAK4iB,aAAaC,OAAO2J,QAC5DxsB,KAAK4iB,aAAaC,OAAO4J,QAAUzsB,KAAK4iB,aAAaC,OAAOrI,MAC1Dxa,KAAKwB,KAER3V,EAAE,mBAAmBzN,YAAc,GjCpGZsuC,EiCsG1BvpC,KAAK2D,IACH,GACCkZ,KAAK4iB,aAAaC,OAAOrI,KAAOxa,KAAK4iB,aAAaC,OAAO2J,UACvDxsB,KAAK4iB,aAAaC,OAAO4J,QAAUzsB,KAAK4iB,aAAaC,OAAO2J,WAC5D,EjCzGXnP,IAAe,EAAIqP,EiC2Gf7gC,EAAE,oBAAoBzN,YAAc,GAAG+E,KAAKiL,MACzC4R,KAAK4iB,aAAaC,OAAO4J,QAAUzsB,KAAK4iB,aAAaC,OAAOrI,MAAQxa,KAAKwB,QACvE+b,KAAmB,IAAO,IAAM,KAAKA,KAAiBlI,eAAe,KAAM,CAC9ExyB,MAAO,cAETopC,GAAkB,GAIA,cAAhBjsB,KAAK2sB,QAAiE,IAAvC3sB,KAAK4iB,aAAagK,SAASN,SAC5DzgC,EAAE,iBAAiBhJ,MAAM2U,QAAU,GACnC3L,EAAE,uBAAuBhJ,MAAMgG,MAAQ,GAAG1F,KAAKC,MAC5CD,KAAK2D,IAAI,EAAGkZ,KAAK4iB,aAAagK,SAASJ,QAAUxsB,KAAK4iB,aAAagK,SAASpS,MAC3EuR,EACA/rB,KAAK4iB,aAAagK,SAASH,aAE3BzsB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASirB,iBAAmB,EACzFxgC,EAAE,uBAAuBzN,YAAc+E,KAAKiL,MACzC4R,KAAK4iB,aAAagK,SAASJ,QAAUxsB,KAAK4iB,aAAagK,SAASpS,MAAQxa,KAAKwB,KAE7E3V,EAAE,uBAAuBzN,YAAc,GAC5CyN,EAAE,oBAAoBhJ,MAAMgG,MAAQ,GAAG1F,KAAKC,MACzCD,KAAKyD,IACJoZ,KAAK4iB,aAAagK,SAASH,QAAUzsB,KAAK4iB,aAAagK,SAASJ,QAChExsB,KAAK4iB,aAAagK,SAASH,QAAUzsB,KAAK4iB,aAAagK,SAASpS,MAEhEuR,EACA/rB,KAAK4iB,aAAagK,SAASH,aAE3BzsB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASirB,iBAAmB,EACzFxgC,EAAE,oBAAoBzN,YAAc+E,KAAKiL,KACvCjL,KAAKyD,IACHoZ,KAAK4iB,aAAagK,SAASH,QAAUzsB,KAAK4iB,aAAagK,SAASJ,QAChExsB,KAAK4iB,aAAagK,SAASH,QAAUzsB,KAAK4iB,aAAagK,SAASpS,MAC9Dxa,KAAKwB,KAER3V,EAAE,oBAAoBzN,YAAc,GjCxIxC,SAA+BsuC,GACpCpP,IAAmB,EAAIoP,CACzB,CiC6IMG,CALE1pC,KAAK2D,IACH,GACCkZ,KAAK4iB,aAAagK,SAASpS,KAAOxa,KAAK4iB,aAAagK,SAASJ,UAC3DxsB,KAAK4iB,aAAagK,SAASH,QAAUzsB,KAAK4iB,aAAagK,SAASJ,WAChE,GAEP3gC,EAAE,qBAAqBzN,YAAc,GAAG+E,KAAKiL,MAC1C4R,KAAK4iB,aAAagK,SAASH,QAAUzsB,KAAK4iB,aAAagK,SAASpS,MAAQxa,KAAKwB,QAC3Egc,KAAuB,IAAO,IAAM,KAAKA,KAAqBnI,eAAe,KAAM,CACtFxyB,MAAO,cAETopC,GAAkB,GAElBpgC,EAAE,iBAAiBhJ,MAAM2U,QAAU,OAIrC,MAAMs1B,EAAgB,CAAC,EACvBjhC,EAAE,wBAAwB6L,UAAY,GACtCnZ,OAAO6C,KAAK4e,KAAKmhB,OAAOhhB,SAASplB,IAC/B,GAAIilB,KAAKmhB,MAAMpmC,GAAI,CACjB,MAAM6gC,EAAQR,GAAYpb,KAAKmhB,MAAMpmC,GAAGuE,KAAM0gB,KAAKmhB,MAAMpmC,GAAGuE,KAAM,CAChE,CAAE8gB,GAAI,GAAGJ,KAAKmhB,MAAMpmC,GAAGuE,aAEzBs8B,EAAM/4B,MAAM2U,QAAU,GACtB,IAAIu1B,EAAc,GAGhBA,OAD6C,IAApC5V,GAAYnX,KAAKmhB,MAAMpmC,GAAGuE,MACrB63B,GAAYnX,KAAKmhB,MAAMpmC,GAAGuE,MACrB42B,GACrB0F,EAAMO,UAAU5b,SAAS,GAAG/kB,UAAYo6B,GAAgBmX,EACxDnR,EAAMO,UAAU5b,SAAS,GAAG1d,MAAMyF,MAAQ,QAEgD,IAAxF0X,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASirB,gBAEpEzQ,EAAMO,UAAU5b,SAAS,GAAGniB,YAAc,GAAG+E,KAAKC,MACzC4c,KAAKmhB,MAAMpmC,GAAGy/B,KAAOxa,KAAKmhB,MAAMpmC,GAAG0xC,QAA1C,QAEC7Q,EAAMO,UAAU5b,SAAS,GAAGniB,YAAc,GAC/Cw9B,EAAMO,UAAU5b,SAAS,GAAG1d,MAAMgG,MAAQ,GAAG1F,KAAKC,MAC/C4c,KAAKmhB,MAAMpmC,GAAGy/B,MACZwR,EAA8E,EAA7D7oC,KAAKiL,KAAK4R,KAAKmhB,MAAMpmC,GAAGy/B,KAAOxa,KAAKwB,KAAKne,WAAWrI,QACtEglB,KAAKmhB,MAAMpmC,GAAG0xC,aAElB7Q,EAAMO,UAAU5b,SAAS,GAAGniB,YAAc+E,KAAKiL,KAAK4R,KAAKmhB,MAAMpmC,GAAGy/B,KAAOxa,KAAKwB,KAC9EyqB,GAAkB,EAClBa,EAAc9sB,KAAKmhB,MAAMpmC,GAAGuE,MAAQs8B,CACtC,KAEFr9B,OAAO6C,KAAK0rC,GAAe3sB,SAASplB,IAClC8Q,EAAE,wBAAwBiK,YAAYg3B,EAAc/xC,GAAG,IAGlC,IAAnBkxC,IACFpgC,EAAE,cAAchJ,MAAMiG,OAA6B,GAAjBmjC,EAAsB,EAAzB,MAE7BpU,KAAuBoU,IACzBpU,GAAqBoU,EACrBhP,KAEJ,CjC9MK,IAA2ByP,CiC+MlC,CDtMEM,GAGA3Q,KAGA6I,KE3BK,WACL,GACuF,IAArFllB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6rB,cAC5C,IAAxBvW,GACA,CAEA,IAAIwW,GAAiB,EACrB3uC,OAAO6C,KAAK4e,KAAKkb,WAAW/a,SAASplB,IACnC,MAAM8+B,EAAK7Z,KAAKkb,UAAUngC,GAC1B,GAAI8+B,EAAGsT,MAAQ,GAAKtT,EAAGuT,UAErB,GADAF,GAAiB,EACoB,IAAjCtW,GAA0B77B,SAA6CI,IAAjCy7B,GAA0B77B,GAAkB,CACpF,MAAMsyC,EAAch0C,SAAS4D,cAAc,OACrCqwC,EAAWj0C,SAAS4D,cAAc,OACxCqwC,EAASzqC,MAAM0qC,SAAW,QAC1BD,EAASzqC,MAAM+9B,aAAe,MAC9B,MAAMra,EAAMltB,SAAS4D,cAAc,OACnCspB,EAAI1jB,MAAM6V,UAAY,SACtB6N,EAAInG,GAAK,oBACTktB,EAASx3B,YAAYyQ,GACrB8mB,EAAYv3B,YAAYw3B,GACxBttB,KAAKiH,QAAQhV,KAAKxY,KAAM4oB,OAAOgrB,EAAY31B,YAC3Cif,GAAkB57B,EAClB67B,GAA0B77B,GAAK,CACjC,OAEA67B,GAA0B77B,GAAK,CACjC,IAEGmyC,GACHltB,KAAKiH,QAAQxV,MAEjB,CACF,CFHE+7B,GEUK,WACL,GACuF,IAArFxtB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6rB,cACzC,OAA3BphC,EAAE,qBACF,CACA,IAAI,OAAE4hC,GAAWztB,KAAKkb,UAAUvE,IAC5B+W,EAAS,IAKb,GAJI1tB,KAAKusB,IAAI,6BAA4BmB,GAAU,MACN,IAAzC1tB,KAAKkb,UAAUvE,IAAiBv7B,OAAYsyC,GAAU,GAC1DD,GAAUC,EACN1tB,KAAKusB,IAAI,mBAAkBkB,GAAU,MACrC5d,GAAWqB,OAAOW,eAAgB,CACpC,MAAMC,EAAS9R,KAAKiR,OAAO,SACZ,IAAXa,EAAc2b,GAAU,KACR,IAAX3b,EAAc2b,GAAU,IACb,IAAX3b,IAAc2b,GAAU,KACnC,CACA5hC,EAAE,qBAAqBzN,YAAc,GAASqvC,EAChD,CACF,CF5BEE,GGtCE3tB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASwsB,SACpD,UAAhB5tB,KAAKwD,SACJxD,KAAK2rB,MAAQ,IAAiB,EAAX3rB,KAAKwB,MAAa,IACrCxB,KAAK2rB,MAAQ,GAAK3rB,KAAKwB,KAAQ,GAEhCxB,KAAKiE,aHuCPyF,GACF,CIjDe,SAASmkB,KAEtB/jB,EAA8BgkB,UAAU9tB,KAAK+tB,iBAC/C,CCYO,MAAMC,GACXruB,YAAYsuB,GACVx0C,KAAKw0C,UAAYA,EACjBx0C,KAAKy0C,MAAQ,EACf,CAEAJ,UAAUK,GACJ10C,KAAKy0C,MAAMrxC,KAAKsxC,GAAY10C,KAAKw0C,WACnCx0C,KAAKy0C,MAAMxvB,OAEf,CAOA0vB,YAAYC,GACV,IAAI7T,EAAO6T,EACP7T,EAAO/gC,KAAKw0C,YAAWzT,EAAO/gC,KAAKw0C,WACnCzT,EAAO/gC,KAAKy0C,MAAMlzC,SAAQw/B,EAAO/gC,KAAKy0C,MAAMlzC,QAChD,IAAIqM,EAAM,EACV,IAAK,IAAItM,EAAItB,KAAKy0C,MAAMlzC,OAAS,EAAGD,GAAK,GAAKA,EAAItB,KAAKy0C,MAAMlzC,OAAS,EAAIw/B,EAAMz/B,IAC9EsM,GAAO5N,KAAKy0C,MAAMnzC,GAEpB,OAAY,IAARsM,EACK,EAEFA,EAAMmzB,CACf,CAEA8T,QAAQD,GACN,IAAI7T,EAAO6T,EAGX,OAFI7T,EAAO/gC,KAAKw0C,YAAWzT,EAAO/gC,KAAKw0C,WACnCzT,EAAO/gC,KAAKy0C,MAAMlzC,SAAQw/B,EAAO/gC,KAAKy0C,MAAMlzC,QACnC,IAATw/B,EAAmB,EAChB/gC,KAAKy0C,MAAMnwB,OAAOyc,GAAM+T,QAAO,CAAC9qC,EAAGP,IAAMO,EAAIP,GAAG,EACzD,EChDa,SAASsrC,GAAaC,GAC7B,UAAWj1C,OAAOk1C,oBACtBl1C,OAAOk1C,kBAAkBC,MAAQ,CAAC,GAGpCpwC,OAAO6C,KAAKqtC,GAAQtuB,SAAS7gB,IAC3B,MAAMsvC,EAAatvC,EAAKkC,QAAQ,SAAU,SAEd,IAAjBitC,EAAOnvC,GAChB9F,OAAOk1C,kBAAkBC,MAAMC,QAAczzC,EAG7C3B,OAAOk1C,kBAAkBC,MAAMC,GAAcxyC,KAAKC,MAAMD,KAAKulB,UAAU8sB,EAAOnvC,IAChF,GAEJ,CCce,SAASuvC,KACtB,MAAMC,EAAW3rC,KAAKgE,MAAMmtB,KAAKC,MAAQ,KAEzC,GAAKvU,KAAK8rB,EAAI9rB,KAAKwB,IAAO,GAAM,EAAG,CACjC,IAAIutB,EAAc/uB,KAAK4c,QAAUjN,GAC7B3P,KAAKib,UAAY,IAAG8T,GAAenhB,IACvCsB,GAAyB/rB,KAAK2D,IAAIkZ,KAAKgvB,cAAeD,GACtDA,GAAe,IAGf,MAAME,EAAWH,EAAWzkB,EACtB6kB,EAAc/rC,KAAK2D,IAAI,EAAGkZ,KAAK4c,QAAUtS,GAAoB2kB,EAC7DE,EAAehsC,KAAK2D,IAAI,EAAG8mB,GAAsBrD,GAAyB0kB,EAC1EG,EACJjsC,KAAK2D,IAAI,EAAGgnB,GAAsB,GAAKtD,GAAgCykB,EACnEI,EAAgBlsC,KAAK2D,IAAI,EAAGioC,EAAcxhB,IAAmB0hB,EAC7DK,GAAiBtvB,KAAKuvB,aAAe9kB,GAAmBwkB,EAC9D,IAAK,IAAIl0C,EAAI,EAAGA,EAAIk0C,EAAUl0C,IAC5BgvB,EAAY+jB,UAAUoB,GACtBllB,EAAU8jB,UAAUqB,GACpBllB,EAAiB6jB,UAAUsB,GAC3BllB,EAAW4jB,UAAUuB,GACrBllB,EAAW2jB,UAAUwB,GAIvBjlB,EAAoBykB,EACpBxkB,EAAmBtK,KAAK4c,QACxBrS,EAAwBqD,GACxBpD,EAA+BsD,GAAsB,GACrDP,GAAkBwhB,EAClBtkB,EAAkBzK,KAAKuvB,aAGvB,MAAMC,EACJvY,GAAYjX,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASquB,YAClF/kB,EAAuBX,EAAYqkB,YAAYoB,GAC/C7kB,EAAwBX,EAAUokB,YAAYoB,GAC9C5kB,EAA+BX,EAAiBmkB,YAAYoB,GAC5D3kB,EAAyBX,EAAWkkB,YAAYoB,GAChD1kB,EAAkBJ,EACoE,IAAlF1K,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,YACtEjQ,GAAmBH,GACiE,IAAlF3K,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,YACtEjQ,GAAmBF,GAErB,MAAM8kB,EAAS1vB,KAAK2vB,YAAY,mBAAqB3vB,KAAKusB,IAAI,iBAM5Dpd,GAHAugB,GACkF,IAAlF1vB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,UAGlErQ,EAAuBC,GAAyB+kB,EAAS7kB,EAAyB,GACvDC,EAG/BoD,GAAqB/D,EAAWikB,YAC9BlX,GAAWlX,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASwuB,eAEnF,CAEApB,GAAa,CACXtf,uBAAsB,GACtB7E,kBAAiB,EACjBC,iBAAgB,EAChBC,sBAAqB,EACrBC,6BAA4B,EAC5B+C,gBAAe,GACf9C,gBAAe,EACfC,qBAAoB,EACpBC,sBAAqB,EACrBC,6BAA4B,EAC5BC,uBAAsB,EACtBC,gBAAe,EACfqE,sBAAqB,GACrBjB,mBAAkB,IAEtB,CCxGe,SAAS2hB,GAAiB7d,EAAOC,EAAW/nB,EAAOgoB,EAAMoT,GACtE,IAAIwK,EAAe,EACnB,IAAK,IAAI/0C,EAAIoI,KAAK2D,IAAI,EAAGoD,GAAQnP,EAAIoI,KAAK2D,IAAI,EAAGoD,EAAQo7B,GAAWvqC,IAClE+0C,GAAgB9vB,KAAK0S,eAAiBvvB,KAAK2D,IAAI,EAAG/L,EAAIm3B,GAExD,IAAIT,EAAQQ,EAAY6d,EAExB,OADAre,EAAQzR,KAAK2S,oBAAoB3S,KAAKoR,QAAQY,GAAQP,GAC/CtuB,KAAKiL,KAAKqjB,EACnB,CCEA,SAASse,GAAY3vC,EAAQ+xB,GAC3B5zB,OAAO6C,KAAKhB,GAAQ+f,SAASplB,IAC3B,GACEilB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS4uB,eACzD,IAAX7d,EAEA/xB,EAAOrF,GAAGs9B,OAASlC,OAJrB,CAQA/1B,EAAOrF,GAAGs9B,OAAS0I,GACjB3gC,EAAOrF,GACP80C,GACE90C,EACAilB,KAAKoR,QAAQr2B,GAAGk3B,UAChBjS,KAAKoR,QAAQr2B,GAAGo3B,OAChBnS,KAAKoR,QAAQr2B,GAAGm3B,KAChBC,IAIJ,IACE,IAAI4H,EAAI,EACRA,EAAI/Z,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6uB,aACxElW,IAEI35B,EAAOrF,GAAGgR,KAAO0jB,GAAasK,GAAG,KAAI35B,EAAOrF,GAAGs9B,OAASlC,GAlB9D,CAmBA,GAEJ,CAEA,SAAS+Z,GAAQ9vC,EAAQ+xB,GACvB5zB,OAAO6C,KAAKhB,GAAQ+f,SAASplB,IAC3B,MAAM02B,EAAQoe,GACZ90C,EACAilB,KAAKoR,QAAQr2B,GAAGk3B,UAChBjS,KAAKoR,QAAQr2B,GAAGo3B,OAChBnS,KAAKoR,QAAQr2B,GAAGm3B,KAChBC,GAEEnS,KAAKgb,UACP56B,EAAOrF,GAAGgR,GACR5I,KAAK2D,IAAI2qB,GAASzR,KAAK4c,QAAUzB,MAAuB,GAAKnb,KAAKgb,UAClEvJ,EAAQrxB,EAAOrF,GAAGihC,MACf57B,EAAOrF,GAAGgR,GAAK0lB,EAAQrxB,EAAOrF,GAAGihC,MAGpChc,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS4uB,eACzD,IAAX7d,GAGF1C,GAAa5yB,KAAK,CAACuD,EAAOrF,GAAGgR,GAAIomB,EAAQV,GAAO,GAEtD,CC7De,SAAS,MDmET,WACblC,GAAasF,IACbpF,GAAe,QAGb,IADOzP,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6uB,eAG3EjwB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6uB,aAAe,GAGrFC,GAAQ1iB,GAAe,GACvB0iB,GAAQziB,GAAgB,IACxByiB,GAAQxiB,GAAiB,KAGzB+B,GAAa+I,MAAK,CAAC/0B,EAAGP,IAAMO,EAAE,GAAKP,EAAE,KACrC,IAAIitC,EAAanwB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6uB,aACrF,GAAIjwB,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6f,sBACtE,KAAOxR,GAAa0gB,GAAY,GAAKnwB,KAAK4c,UACxCuT,GAAc,EACV1gB,GAAaz0B,SAAWm1C,EAAa,KAK7C5gB,GAAaE,GAAa0gB,GAAY,GACtC3gB,GAAiBC,GAAa0gB,GAAY,GAE1CJ,GAAYviB,GAAe,GAC3BuiB,GAAYtiB,GAAgB,IAC5BsiB,GAAYriB,GAAiB,KAE7B8gB,GAAa,CAAEjf,WAAU,kBAAgB,gBAAc,IACzD,CCnGE6gB,GCHA7xC,OAAO6C,KAAK6sB,IAAe9N,SAASplB,IAC9BilB,KAAKgb,UACP/M,GAAclzB,GAAGgR,GACf5I,KAAK2D,IAAIkZ,KAAK2f,SAAS5kC,GAAGgrC,YAAc/lB,KAAK4c,QAAUzB,MAAuB,GAC5Enb,KAAKgb,UACPhb,KAAK2f,SAAS5kC,GAAGgrC,WAAa9X,GAAclzB,GAAGihC,MAC5C/N,GAAclzB,GAAGgR,GAAKiU,KAAK2f,SAAS5kC,GAAGgrC,WAAa9X,GAAclzB,GAAGihC,MACxEhH,OAAOvZ,MAAMwS,GAAclzB,GAAGgR,MAAKkiB,GAAclzB,GAAGgR,GAAK8oB,KAE7D5G,GAAclzB,GAAGs9B,OAAS0I,GAAW9S,GAAclzB,GAAIilB,KAAK2f,SAAS5kC,GAAGgrC,WAAW,IDJrFvsC,OAAOk1C,kBAAkB2B,SAAWj0C,KAAKC,MAAMD,KAAKulB,UAAU6L,KAC9Dh0B,OAAOk1C,kBAAkB4B,UAAYl0C,KAAKC,MAAMD,KAAKulB,UAAU8L,KAC/Dj0B,OAAOk1C,kBAAkB6B,WAAan0C,KAAKC,MAAMD,KAAKulB,UAAU+L,KAChEl0B,OAAOk1C,kBAAkB/O,SAAW,GACpCphC,OAAOiyC,QAAQviB,IAAe9N,SAASplB,IACrCvB,OAAOk1C,kBAAkB/O,SAAS5kC,EAAE,IAAMqB,KAAKC,MAAMD,KAAKulB,UAAU5mB,EAAE,IAAI,GAE9E,CE6Fe,SAAS01C,GAAuBrW,GAC7C,GACkC,WAAhCpa,KAAK2f,SAASvF,GAASxJ,MACY,IAAlC5Q,KAAK2f,SAASvF,GAAStJ,QACtB9Q,KAAK2f,SAASvF,GAASsW,UACS,aAAhC1wB,KAAK2f,SAASvF,GAASxJ,KACzB,CACAmP,KACkC,yBAA9BjQ,GAAYsK,GAAS96B,KACvBwwB,GAAY,yBAAZ,OAA8C,EACP,uBAA9BA,GAAYsK,GAAS96B,KAC9BwwB,GAAY,uBAAZ,OAA4C,EAE5CA,GAAYsK,GAAStJ,QAAUhB,GAAYsK,GAAStJ,OAAS,GAAK,EAEhE9Q,KAAK2wB,qBAAqB3wB,KAAK2f,SAASvF,GAASxJ,QAAOxF,GAAoB,GAEhE,iBAAZgP,GACF/O,IAAc,EACVA,GAAa,GAAGgW,GAAO,aACvBhW,IAAc,GAAGgW,GAAO,kBACP,mBAAZjH,EACTiH,GAAO,cACc,yBAAZjH,EACTiH,GAAO,kBACc,iBAAZjH,GACTiH,GAAO,aAGT,MAAMqD,EAAwBpZ,GAE9BgW,KAEAqC,KAEIe,IAA0BpZ,IAC5BgW,KAGF,MAAMsP,EAnIV,WACE,IAAI7uC,EAAM,EACN0uB,GAAO,sBAAqB1uB,GAAO,IACnC0uB,GAAO,qBAAoB1uB,GAAO,GAClC0uB,GAAO,qBAAoB1uB,GAAO,IAClC0uB,GAAO,sBAAqB1uB,GAAO,IACnC0uB,GAAO,yBAAwB1uB,GAAO,IACtC0uB,GAAO,yBAAwB1uB,GAAO,IACtC0uB,GAAO,wBAAuB1uB,GAAO,IACrC0uB,GAAO,wBAAuB1uB,GAAO,IACrC0uB,GAAO,uBAAsB1uB,GAAO,IACpC0uB,GAAO,uBAAsB1uB,GAAO,IACpC0uB,GAAO,uBAAsB1uB,GAAO,IACpC0uB,GAAO,yBAAwB1uB,GAAO,IACtC0uB,GAAO,wBAAuB1uB,GAAO,IACzC,IAAI0yB,EAAM,EACVl2B,OAAO6C,KAAKyuB,IAAY1P,SAASplB,IAC/B05B,GAAO5E,GAAW90B,GAAGo3B,MAAM,IAE7BsC,GAAO5E,GAAWqU,OAAO/R,OACzBpwB,GAAO0yB,EAGHhE,GAAO,mBAAkB1uB,GAAsB,IAAfiqB,IAChCyE,GAAO,gBAAe1uB,GAAsB,IAAfiqB,IAC7ByE,GAAO,oBAAmB1uB,GAAsB,IAAfiqB,IACjCyE,GAAO,sBAAqB1uB,GAAsB,IAAfiqB,IACnCyE,GAAO,uBAAsB1uB,GAAsB,IAAfiqB,IACpCyE,GAAO,mBAAkB1uB,GAAsB,IAAfiqB,IAChCyE,GAAO,qBAAoB1uB,GAAsB,IAAfiqB,IAClCyE,GAAO,sBAAqB1uB,GAAsB,IAAfiqB,IACnCyE,GAAO,sBAAqB1uB,GAAsB,IAAfiqB,IACnCyE,GAAO,qBAAoB1uB,GAAsB,IAAfiqB,IAClCyE,GAAO,yBAAwB1uB,GAAsB,IAAfiqB,IACtCyE,GAAO,sBAAqB1uB,GAAsB,IAAfiqB,IACnCyE,GAAO,sBAAqB1uB,GAAsB,IAAfiqB,IACnCyE,GAAO,qBAAoB1uB,GAAsB,IAAfiqB,IAClCyE,GAAO,qBAAoB1uB,GAAsB,IAAfiqB,IAElCyE,GAAO,kBAAiB1uB,GAAsB,IAAfiqB,IAEnC,IAAIiS,EAAO,EAWX,GAVIxN,GAAO,qBAAoBwN,GAAQ,KACnCxN,GAAO,gBAAewN,GAAQ,KAC9BxN,GAAO,iBAAgBwN,GAAQ,KAC/BxN,GAAO,iBAAgBwN,GAAQ,MAE/BxN,GAAO,iBACTwN,GAAQ,EAAI,IAAO96B,KAAKyD,IAAIoZ,KAAKoR,QAAQ8S,OAAOrE,MAAOpP,GAAO,mBAAqB,GAAK,KAG1FwN,GAAQ1N,GAAO,SACXV,GAAWqB,OAAOW,gBAChBb,GAAW,CACb,MAAMc,EAASd,GAAU,SACV,IAAXc,EAAcmM,GAAQ,KACN,IAAXnM,EAAcmM,GAAQ,IACX,IAAXnM,IAAcmM,GAAQ,KACjC,CAGF1/B,OAAO6C,KAAK4e,KAAKmhB,OAAOhhB,SAASplB,SACQ,IAA5BilB,KAAKmhB,MAAMpmC,GAAG81C,YAA2B5S,GAAQje,KAAKmhB,MAAMpmC,GAAG81C,UAAS,IAIrF5S,GAAQ,EAAmC,IAA/BjO,GAAY,iBAGxB,IAAI8gB,EACF7S,EACAje,KAAKkf,WACH,EACAzO,GAAO,2BACLA,GAAO,kCACPA,GAAO,gBACT1uB,GAOJ,OAJA+uC,EAAM9wB,KAAKojB,kBAAkB,kBAAmB0N,GAE5C9wB,KAAK2R,QAAQ,mBAAkBmf,EAAM9wB,KAAKmhB,MAAM,iBAAiBvB,OAE9DkR,CACT,CA+CyBC,GAAa/wB,KAAK+tB,iBACvC,OAAI6C,EACK,CAAC5kB,GAAehM,KAAKgb,UAAW4V,GAElC,CAAC5kB,GAAehM,KAAKgb,UAC9B,CACA,MAAO,EACT,CCxIA,SAASgW,GAAoB7e,GAC3B,MAAM8e,EAAS,CAAC,EAQhB,OAPA1yC,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,IACjCk2C,EAAOl2C,GAAK,CAAC,EACbk2C,EAAOl2C,GAAGihC,MAAQuI,GAAwBxpC,EAAGo3B,GAC9B,IAAXA,IACFlH,EAA2B,EAC7B,IAEKgmB,CACT,CA+BO,SAASC,KACd3yC,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,IACjCyyB,GAAczyB,GAAG02B,MAAQoe,GACvB90C,EACAilB,KAAKoR,QAAQr2B,GAAGk3B,UAChBjS,KAAKoR,QAAQr2B,GAAGo3B,OAChBnS,KAAKoR,QAAQr2B,GAAGm3B,KAChB,GAEFzE,GAAe1yB,GAAG02B,MAAQoe,GACxB90C,EACAilB,KAAKoR,QAAQr2B,GAAGk3B,UAChBjS,KAAKoR,QAAQr2B,GAAGo3B,OAChBnS,KAAKoR,QAAQr2B,GAAGm3B,KAChB,IAEFxE,GAAgB3yB,GAAG02B,MAAQoe,GACzB90C,EACAilB,KAAKoR,QAAQr2B,GAAGk3B,UAChBjS,KAAKoR,QAAQr2B,GAAGo3B,OAChBnS,KAAKoR,QAAQr2B,GAAGm3B,KAChB,KAEFvE,GAA4B5yB,GAAG02B,MAAQoe,GACrC90C,EACAilB,KAAKoR,QAAQr2B,GAAGk3B,UAChBjS,KAAKoR,QAAQr2B,GAAGo3B,OAChBnS,KAAKoR,QAAQr2B,GAAGm3B,KAChBvE,GAA4B5yB,GAAG29B,aAChC,IAGH8V,GAAa,CAAE7gB,4BAA2B,IAC5C,CAMO,SAASwjB,KAEd3jB,GAAgBwjB,GAAoB,GACpCvjB,GAAiBujB,GAAoB,IACrCtjB,GAAkBsjB,GAAoB,KApExC,WACE/iB,GAAgB,CAAC,EACjB,IAAK,IAAIlzB,EAAI,EAAGA,EAAIilB,KAAK4Z,gBAAgB5+B,OAAQD,IAAK,CACpD,MAAM2kC,EAAc1f,KAAK4Z,gBAAgB7+B,GAAGuE,KACtC8xC,EAAcX,GAAuB/Q,GACvB,iBAAhBA,GACFzR,GAAcyR,GAAe,CAC3B1D,MAAOhc,KAAKgb,UAAYtQ,GAE4D,IAAlF1K,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,UACtE9M,GAAcyR,GAAa1D,OAASrR,EACqD,IAAlF3K,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS2Z,YAC3E9M,GAAcyR,GAAa1D,OAASpR,GACjCoK,OAAOC,SAAShH,GAAcyR,GAAa1D,SAAQ/N,GAAcyR,GAAa1D,MAAQ,KAE3F/N,GAAcyR,GAAe,CAAC,EAC1B0R,EAAY,KAAInjB,GAAcyR,GAAa1D,MAAQoV,EAAY,IAC/DA,EAAY,KAAInjB,GAAcyR,GAAasG,WAAaoL,EAAY,IAE5E,CACF,CAmDEC,EACF,CCnFO,SAASC,GAAqBC,EAAOC,EAAWvT,GACrD,IAAIwT,EAAiB,EACjBjf,EAAO,EACPkf,EAAW,EACXC,EAAe,EACfC,EAAQ,EAAIzuC,KAAK2D,IAAI,EAAG3D,KAAKiL,KAAKjL,KAAKuyB,IAAI1V,KAAK4c,SAAWz5B,KAAK0uC,MAAQ,IAC5E,KAAOH,EAAWF,EAAYvT,GAC5BzL,EAAOrvB,KAAK2D,IACVyqC,EACApuC,KAAKyD,IAAIzD,KAAKgE,MAAO,EAAI,EAAK,IAAMyqC,EAAQL,EAAQtT,GAAOuT,EAAYvT,IAEzEyT,EAAWvuC,KAAK2D,IACdyqC,EACApuC,KAAKyD,IAAIzD,KAAKgE,MAAO,EAAI,EAAK,KAAOyqC,EAAQ,GAAKL,EAAQtT,GAAOuT,EAAYvT,IAE/E0T,EAAexuC,KAAKgE,MAAO,EAAI,EAAK,KAAOyqC,EAAQ,GAAKL,EAAQtT,GAChEwT,GAAkBjf,EAClBof,GAAS,EAEX,MAAO,CAACH,EAAgBjf,EAAMmf,EAChC,CAkBO,SAASG,KACd,IAAIN,EAAyC,GAA7BxkB,GAAkC,GAAK,EAAIC,GAE3D,MAAM8kB,EAAc7Q,KAChB6Q,EAAc,EAAGP,GAAaO,EAC7BP,EAAY,EAEjBhjB,GAAsB8iB,GAAqB,EAAGE,EAAWtkB,IACzDoB,GAA+C,EAAzBE,GAAoB,GAAUtB,GACpDqB,GAAyBC,GAAoB,GAAK,GAAK,GAAK,EAAIvB,GAEhE0B,GAA2B2iB,GAAqB,EAAGE,EAAWrkB,IAC9DsB,GAAyD,EAA9BE,GAAyB,GAAUxB,GAC9DuB,GACEC,GAAyB,GAAK,GAAK,GAAK,EAAI1B,GAE9C6B,GAA4BwiB,GAAqB,EAAe,EAAZE,EAAetkB,IACnE0B,GAA2D,EAA/BE,GAA0B,GAAU5B,GAChE2B,GACEC,GAA0B,GAAK,GAAK,GAAK,EAAI7B,GAE/CgC,GAAiCqiB,GAAqB,EAAe,EAAZE,EAAerkB,IACxE4B,GAAqE,EAApCE,GAA+B,GAAU9B,GAC1E6B,GACEC,GAA+B,GAAK,GAAK,GAAK,EAAIhC,GAEpDuhB,GAAa,CACXhgB,oBAAmB,GACnBF,mBAAkB,GAClBC,uBAAsB,GACtBI,yBAAwB,GACxBF,wBAAuB,GACvBC,4BAA2B,GAC3BI,0BAAyB,GACzBF,yBAAwB,GACxBC,6BAA4B,GAC5BI,+BAA8B,GAC9BF,8BAA6B,GAC7BC,kCAAiC,IAErC,CC9Fe,SAASgjB,KACtB,MAAMlD,EAAW3rC,KAAKgE,MAAMmtB,KAAKC,MAAQ,KAEzC,GAAKvU,KAAK8rB,EAAI9rB,KAAKwB,IAAO,GAAM,EAAG,CACjC,MAAMywB,EAAajyB,KAAKkyB,gBAAgBlyB,KAAKmyB,cAEvCC,EADiBjvC,KAAKgE,MAAM6Y,KAAKkyB,gBAAgBlyB,KAAKmyB,aAAenyB,KAAKgvB,gBACxC7rC,KAAKgE,MAAM8qC,GAG7ChD,EAAWH,EAAW/jB,EACtBsnB,EAAuBlvC,KAAK2D,IAAI,EAAGsrC,EAAiBpnB,GAA0BikB,EACpF,IAAK,IAAIl0C,EAAI,EAAGA,EAAIk0C,EAAUl0C,IAC5BqvB,EAAkB0jB,UAAUuE,GAI9BtnB,EAAyB+jB,EACzB9jB,EAAyBonB,EAGzBhlB,GAAmBhD,EAAkBgkB,YAAY,EACnD,CAEAI,GAAa,CAAEzjB,uBAAsB,yBAAwB,mBAAkB,IACjF,CCvBe,SAASunB,KACtBnkB,GAAuB,GACvBE,GAA8B,GAC9BD,GAA+B,GAC/B,MAAMiW,EAAO,GAEb9lC,OAAO6C,KAAK4e,KAAK2f,UAAUxf,SAASplB,IAClCspC,EAAKxnC,KAAKmjB,KAAK2f,SAAS5kC,GAAG,IAO7BspC,EAAK7L,MALW,SAAU/0B,EAAGP,GAC3B,OAAIO,EAAE62B,MAAQp3B,EAAEo3B,MAAc,EAC1B72B,EAAE62B,MAAQp3B,EAAEo3B,OAAe,EACxB,CACT,IAGA/7B,OAAO6C,KAAKijC,GAAMlkB,SAASplB,IACzB,MAAM8+B,EAAKwK,EAAKtpC,GAEhB,GAAkB,IAAd8+B,EAAG/I,OAAc,CACnB,IAAI30B,EAAM,GAEVA,GC+CC,SAAsB09B,GAC3B,IAAI0Y,EAAU,wBACE,aAAZ1Y,EAAGjJ,OAAqB2hB,GAAW,aAEvC,IAAIC,EAAU,EACTxyB,KAAKyrB,MAAMgH,SAAQD,EAAU,GAC9BA,IAASD,GAAW,YAExB,IAAI,KAAEG,GAAS7Y,EACXA,EAAG8Y,eAAcD,EAAO7Y,EAAG8Y,gBAC/B,MAAM1rB,EAAU,0DAA0D4S,EAAGzZ,kBAC7E,MAAO,eAAemyB,SACrBvyB,KAAK4yB,kBAAkB3rB,EAAS,OAAO,kBAC3ByrB,EAAK,GAAK,yBAAyBA,EAAK,OAAS,yBACjD,IAAVA,EAAK,QACS,IAAVA,EAAK,mBAEd,CDhEaG,CAAahZ,GAEJ,aAAZA,EAAGjJ,KAAqBxC,IAAgCjyB,EACvC,WAAZ09B,EAAGjJ,KAAmBvC,IAA+BlyB,EACzC,WAAZ09B,EAAGjJ,MAAiC,WAAZiJ,EAAGjJ,MAAiC,UAAZiJ,EAAGjJ,OAC1DzC,IAAwBhyB,EAE5B,IAEJ,CErCe,SAAS22C,KACtB,GAAoB,cAAhB9yB,KAAK2sB,OAAwB,CAC/B,IAAIpvC,EAAuB,GAAjByiB,KAAKgb,UACXhb,KAAK2R,QAAQ,kBAAiBp0B,GAAO,IACrCyiB,KAAK2R,QAAQ,YAAWp0B,GAAO,KACnC+vB,GAAenqB,KAAK2D,IAAI,GAAIvJ,GACxByiB,KAAKusB,IAAI,gCAA+Bjf,IAAgB,EAC9D,CAEAkhB,GAAa,CAAElhB,aAAY,IAC7B,CCOO,SAASylB,KACdzmB,GAA2C,IAA7BU,GAAoC,IAClDV,IAAcW,GACd,MAAM8kB,EAAc7Q,KAChB6Q,EAAc,EAAGzlB,IAAcylB,EAC9BzlB,GAAa,EAClBC,GAAmBW,IAAuC,IAAbZ,IAAqB,GAClEE,GAAwBW,IAAsC,IAAbb,IAAqB,GACtEG,GAAgC,EAAbH,GACnBI,GAAyBQ,IAA6C,IAAnBT,IAA2B,GAC9EE,GAA8BQ,IAA4C,IAAnBV,IAA2B,GAClFG,GAA4B,EAAbN,GACfO,GAAoC,IAAfD,GAErBE,GAAe,EACf,IAAIhmB,EAAM,EACN9I,EAAI,EACRO,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,IAC7BilB,KAAKoR,QAAQr2B,GAAGo3B,OAASrrB,IAAKA,EAAMkZ,KAAKoR,QAAQr2B,GAAGo3B,QACpDnS,KAAKoR,QAAQr2B,GAAGo3B,OAAS,IAAGn0B,GAAK,EAAC,IAExCO,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,KAE9BilB,KAAKoR,QAAQr2B,GAAGo3B,OAASrrB,GAAa,IAAN9I,IACjCgiB,KAAKoR,QAAQr2B,GAAGo3B,OAAS,KACD,EAAxBnS,KAAKoR,QAAQr2B,GAAG02B,MAAY3E,KAE5BA,GAAuC,EAAxB9M,KAAKoR,QAAQr2B,GAAG02B,MAC/B1E,GAAuBhyB,EACzB,IAGFyzC,GAAa,CACXliB,WAAU,GACVC,iBAAgB,GAChBC,sBAAqB,GACrBC,iBAAgB,GAChBC,uBAAsB,GACtBC,4BAA2B,GAC3BC,aAAY,GACZC,mBAAkB,GAClBC,aAAY,GACZC,qBAAoB,IAExB,CAKO,SAASimB,KACd,IAAIC,EAAa,EACbC,EAAY,EACZjV,EAAO,EAGPxN,GAAO,4BAA2BwN,GAAQ,MAC1CxN,GAAO,iBAAgBwN,GAAQ,MAEnCgV,GAAc,EAA+C,GAA3CjzB,KAAK8iB,SAAS,2BAChCmQ,GAAcjzB,KAAKmzB,IAAI,oBACvBD,GAAa,EAAuC,GAAnClzB,KAAK8iB,SAAS,mBAC/BoQ,GAAalzB,KAAKmzB,IAAI,mBAGtBjmB,GAAyB+Q,EAAOgV,EAChC9lB,GAAwB8Q,EAAOiV,EAM/BjmB,GAAoC,EACD,IAA/BjN,KAAK4iB,aAAaC,OAAO7kC,IAC3BivB,IAAqC,EAAwC,KAApCjN,KAAK8iB,SAAS,qBAGzD0L,GAAa,CACXthB,uBAAsB,GACtBC,sBAAqB,GACrBF,kCAAiC,IAErC,CCjGe,SAASmmB,GAA6BC,GACnD,MAAMpC,EAAS,CAAC,EAEhB1yC,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,IACjC,GACsD,IAApDwD,OAAO6C,KAAKusB,IAA6B3yB,QACzC2yB,GAA4B5yB,GAAGu4C,YAActzB,KAAKoR,QAAQr2B,GAAGo3B,SAC5DkhB,EAEDpC,EAAOl2C,GAAK,CACV29B,aAAc/K,GAA4B5yB,GAAGu4C,YAActzB,KAAKoR,QAAQr2B,GAAGo3B,OAC3EmhB,YAAa3lB,GAA4B5yB,GAAGu4C,YAC5C7hB,MAAOoe,GACL90C,EACAilB,KAAKoR,QAAQr2B,GAAGk3B,UAChBjS,KAAKoR,QAAQr2B,GAAGo3B,OAChBnS,KAAKoR,QAAQr2B,GAAGm3B,KAChBvE,GAA4B5yB,GAAGu4C,YAActzB,KAAKoR,QAAQr2B,GAAGo3B,aAG5D,CACL,MAAMohB,EC3BG,SAA6C/hB,GAC1D,MAAMgiB,EAAsBxzB,KAAKkgB,kBACjC,IAAIuT,EAAQ,IACRC,EAAsB,IAC1B,KAAOD,GAAS,GAEd,GADAlP,GAAwB/S,EAAUiiB,GAC9BnoB,GAAuBkoB,EACzBE,EAAsBD,EACtBA,GAAS,OACJ,IAAc,MAAVA,EACT,OAAO,IAGP,IADAA,GAAS,EACFA,GAASC,GAAqB,CAEnC,GADAnP,GAAwB/S,EAAUiiB,GAC9BnoB,GAAuBkoB,EACzB,OAAOC,EAETA,GAAS,CACX,CACF,CAEF,OAAO,GACT,CDIuBE,CAAoC54C,GACrDk2C,EAAOl2C,GAAK,CACV29B,aAAc6a,EACdD,YAAatzB,KAAKoR,QAAQr2B,GAAGo3B,OAASohB,EACtC9hB,MAAOoe,GACL90C,EACAilB,KAAKoR,QAAQr2B,GAAGk3B,UAChBjS,KAAKoR,QAAQr2B,GAAGo3B,OAChBnS,KAAKoR,QAAQr2B,GAAGm3B,KAChBqhB,GAGN,KAEF5lB,GAA8BsjB,EAE9BzC,GAAa,CAAE7gB,4BAA2B,IAC5C,CE9Be,SAASimB,KACtBhmB,GAAsB,EACtBC,GAAuB,EACvBC,GAAwB,CAAC,EAAG,MAC5B,IAAK,IAAI/yB,EAAI,EAAGA,EAAIilB,KAAKkb,UAAUlgC,OAAQD,IAAK,CAC9C,IAAI,OAAE0yC,GAAWztB,KAAKkb,UAAUngC,GAC5B2yC,EAAS,IAKb,GAJI1tB,KAAKusB,IAAI,6BAA4BmB,GAAU,MACpB,IAA3B1tB,KAAKkb,UAAUngC,GAAGK,OAAYsyC,GAAU,GAC5CD,GAAUC,EACN1tB,KAAKusB,IAAI,mBAAkBkB,GAAU,MACrC5d,GAAWqB,OAAOW,eAAgB,CACpC,MAAMC,EAAS9R,KAAKiR,OAAO,SACZ,IAAXa,EAAc2b,GAAU,KACR,IAAX3b,EAAc2b,GAAU,IACb,IAAX3b,IAAc2b,GAAU,KACnC,CACA7f,IAAuB6f,EACQ,IAA3BztB,KAAKkb,UAAUngC,GAAGK,OACpByyB,IAAwB4f,EACpBA,EAAS3f,GAAsB,KAAIA,GAAwB,CAAC2f,EAAQ1yC,IAE5E,CAEAyzC,GAAa,CAAE5gB,oBAAmB,wBAAsB,yBAAuB,IACjF,CCxBe,SAASimB,KACtBpW,KACAmW,KACAb,KACAC,KACAlB,KACAQ,KACAQ,KlBqCA/oB,EAAc,IAAIikB,GAAW/W,GAAYA,GAAYj8B,OAAS,IAC9DgvB,EAAY,IAAIgkB,GAAW/W,GAAYA,GAAYj8B,OAAS,IAC5DivB,EAAmB,IAAI+jB,GAAW/W,GAAYA,GAAYj8B,OAAS,IACnEkvB,EAAa,IAAI8jB,GAAW/W,GAAYA,GAAYj8B,OAAS,IAC7DmvB,EAAa,IAAI6jB,GAAW9W,GAAWA,GAAWl8B,OAAS,IkBtC3DovB,EAAoB,IAAI4jB,GAAW,GACnClkB,EAAgC,IAAIkkB,GAA+C,GAApC9W,GAAWA,GAAWl8B,OAAS,IAC9Eg3C,KACAoB,KACAvE,KACAsC,KACAD,KACA,IACF,CChCe,SAAS4C,KACtBv1C,OAAO6C,KAAK4e,KAAKkb,WAAW/a,SAASplB,IAC/BilB,KAAKkb,UAAUngC,GAAG0yC,OAAS,GAAgC,IAA3BztB,KAAKkb,UAAUngC,GAAGK,OACpD4kB,KAAKkb,UAAUngC,GAAGg5C,GAAK,EACzB,GAEJ,CC0BO,SAASC,GAAc54C,EAAMkE,GAClC,GAAa,MAATlE,EAAc,CAIhB,GAFAyQ,EAAE,WAAW6L,UAAYsI,KAAKoR,QAAQ9xB,GAAM2nB,UAE4C,IAApFjH,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS6yB,YAAmB,CACzF,MAAMC,EAAarE,GACjBvwC,EACA0gB,KAAKoR,QAAQ9xB,GAAM2yB,UACnB,EACAjS,KAAKoR,QAAQ9xB,GAAM4yB,KACnBlS,KAAKoR,QAAQ9xB,GAAM6yB,QAEfgiB,EAAiBD,EAAal0B,KAAKoR,QAAQ9xB,GAAM+gC,aACnD8T,EAAiB,IACnBtoC,EAAE,WAAW6L,UAAY7L,EAAE,WACxB6L,UAAUjW,MAAM,gBAChB6C,KACC,wBAAwB,GAAS6vC,UACA,IAA/BhxC,KAAKgE,MAAMgtC,GAAwB,SAAW,+BAE9CvZ,IACGsZ,EAAal0B,KAAKoR,QAAQ9xB,GAAM+gC,eAC9BrgB,KAAKoR,QAAQ9xB,GAAM80C,eAAiBp0B,KAAKq0B,gBAC5CxrB,eAIZ,EACsB,IAAlB7I,KAAKkY,UASPrsB,EAAE,WAAW6L,UAAY7L,EAAE,WACxB6L,UAAUjW,MAAM,GAASue,KAAKoR,QAAQ9xB,GAAMq9B,YAC5Cr4B,KACC,IACG0b,KAAKoR,QAAQ9xB,GACd0gB,KAAKoR,QAAQ9xB,GAAM2yB,UACnBjS,KAAKoR,QAAQ9xB,GAAM6yB,OACnBnS,KAAKoR,QAAQ9xB,GAAM4yB,KACnBlS,KAAKyS,QACL,KAIV,MAAO,GAAa,MAATr3B,EAAc,CAEvB,IAAK4kB,KAAK4Z,gBAAgBt6B,GAAO,MAAO,GACxCuM,EAAE,WAAW6L,UAAYsI,KAAKs0B,aAAat0B,KAAK4Z,gBAAgBt6B,GAAO,QACzE,KAAoB,MAATlE,EAAcyQ,EAAE,WAAW6L,UAAYsI,KAAKu0B,cAErC,MAATn5C,EACPyQ,EAAE,WAAW6L,UAAYsI,KAAKoR,QAAQ,gBAAgBD,SAASqjB,aAAal1C,EAAnD0gB,GAET,MAAT5kB,EACPyQ,EAAE,WAAW6L,UAAYsI,KAAKikB,YAAY,GAAG9S,SAASsjB,YAAYn1C,EAAK,GAAIA,EAAK,GAAvD0gB,GAET,OAAT5kB,EAAeyQ,EAAE,WAAW6L,UAAYsI,KAAKikB,YAAY,GAAG9S,SAASujB,YAAY,EAAzC10B,GAE/B,OAAT5kB,EAAeyQ,EAAE,WAAW6L,UAAYsI,KAAKoR,QAAQ8W,KAAK/W,SAASwjB,YAAYr1C,EAAvC0gB,GAC/B,OAAT5kB,EAAeyQ,EAAE,WAAW6L,UAAY,GAC/B,QAATtc,EAAgByQ,EAAE,WAAW6L,UAAYsI,KAAKoR,QAAQF,OAAOC,SAASyjB,WAAWt1C,EAAxC0gB,GAChC,QAAT5kB,IACPyQ,EAAE,WAAW6L,UAAYsI,KAAKoR,QAAQF,OAAOC,SAAS0jB,YAAYv1C,EAAK,GAA9C0gB,IAG3B,GACY,MAAT5kB,GAAiC,IAAjB4kB,KAAKkY,SACb,MAAT98B,GACS,MAATA,GACS,MAATA,GACU,MAATA,IAAiB4kB,KAAK5e,KAAK,KACnB,OAAThG,GACS,OAATA,GACS,OAATA,GACS,QAATA,GACU,QAATA,IAA+B,IAAbkE,EAAK,GACxB,CACA,MAAMw1C,EAAOz7C,SAAS4D,cAAc,OACpC63C,EAAK10B,GAAK,gBACVvU,EAAE,WAAWiK,YAAYg/B,EAC3B,CAQA,OALArd,GAAcr8B,EACds8B,GAAcp4B,EAEd4lC,KAEOr5B,EAAE,WAAW6L,SACtB,CClHO,SAASq9B,KAEoE,IAAhF/0B,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS4zB,SACpErhB,GAAwB,EAEpBvE,GAA0B6lB,MAC5BppC,EAAE,aAAaqpC,KACb,4EAEFrpC,EAAE,aAAaqpC,KACb,6EACCrpC,EAAE,aAAaqpC,KAAO,sDAC/B,CCnBe,SAASC,KAEtBtlB,GAAa,GACbtxB,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAASplB,IACjC80B,GAAW90B,GAAKgkC,GAAoBhkC,EAAE,IAIxC+0B,GAAc,GACdvxB,OAAO6C,KAAK4e,KAAK2f,UAAUxf,SAASplB,IAClC+0B,GAAY/0B,GAAK0kC,GAAY1kC,EAAE,IAIjCg1B,GAAkB,GAClBxxB,OAAO6C,KAAK4e,KAAK8d,cAAc3d,SAASplB,IACtCg1B,GAAgBh1B,GAAK6iC,GAAgB7iC,EAAE,IAEzCglC,IACF,CCxBe,SAASqV,KAClBp1B,KAAKoR,QAAQ,gBAAgBS,gBAC/BtzB,OAAO6C,KAAK4e,KAAKoR,QAAQ,gBAAgBD,SAASwV,YAAYxmB,SAASplB,IAC1B,OAAvC8Q,EAAE,gBAAgB9Q,KAAKisB,cACzBkN,GAAsBn5B,GAAK8Q,EAAE,gBAAgB9Q,KAAKisB,YAClDnb,EAAE,gBAAgB9Q,KAAKisB,YAAc,WACnChH,KAAKiH,QAAQouB,QAAU,EACvBr1B,KAAKiH,QAAQhV,KAAKxY,MAAM,IAAMu6C,GAAc,IAAK,GAAGj5C,MAAM,QAC1DilB,KAAKiH,QAAQquB,QACf,EACF,GAGN,CCLA,SAASC,KACP,IAAKjiB,IAAgCtT,KAAKoR,QAAQ,gBAAgBS,eAAgB,CAChF,MAAM,SAAEV,GAAanR,KAAKoR,QAAQ,gBAClCgC,GAAqBjC,EAASlf,KAC9B+N,KAAKoR,QAAQ,gBAAgBD,SAASlf,KAAO,WAC3CmhB,KAEsF,IAApFpT,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASo0B,aACpErkB,EAAS4T,MAAQ5T,EAAS0V,QAC1B7mB,KAAK2rB,MAAQ,GAAM,IAEnBxa,EAASskB,cAAc/9B,WAAa,KAAK6iB,GACvCoK,GAA4BxT,EAAS4T,MAAO5T,EAAS0V,OAAQ1V,EAAS0V,YAExE1V,EAASukB,UAAU7yC,MAAMgG,MAAQ,MAErC,EACAyqB,IAA+B,CACjC,CACF,CA6Be,SAASqiB,MAxBxB,WACE,IAAKtiB,IAAkCrT,KAAKoR,QAAQ,gBAAgBS,eAAgB,CAClF,MAAM,SAAEV,GAAanR,KAAKoR,QAAQ,gBAClC8B,GAAuB/B,EAASykB,OAChCziB,GAA0B,IAAI32B,SAC5B,UAAU20B,EAASykB,OAChBvyC,WACA5B,MAAM,SACN6C,KAAK,8CAEV0b,KAAKoR,QAAQ,gBAAgBD,SAASykB,OAAS,WAC7CziB,KACAiiB,KACA9hB,IAA+B,EAC/BiiB,KAEAliB,IAAiC,CACnC,CACF,CACF,CAMEwiB,GACAN,IACF,CCtDe,SAASO,KACtB,GAAI1pB,KAAyBpM,KAAKmQ,aAAerE,GAAW,CAC1D,GACE9L,KAAKmQ,YAAc,IACnBnQ,KAAK+1B,aAAa/1B,KAAKmQ,aAAa6lB,IAAI3yC,WAAWsjB,SAAS,aAC5D,CACA,MAAMsvB,EAAcj2B,KAAK+1B,aAAa/1B,KAAKmQ,aAAa6lB,IACrD3yC,WACA5H,MAAM,mBACT,IAAI2E,EACc,OAAhB61C,EAAuBA,EAAY,GAAKj2B,KAAKikB,YAAYjkB,KAAKmQ,YAAc,GAAG7wB,KACjF,MAAM6yB,EAASnS,KAAK+1B,aAAa/1B,KAAKmQ,aAAa6lB,IAChD3yC,WACA5H,MAAM,sBAAsB,GAC/B,GAAe,MAAX2E,EAEF,GADAA,EAASA,EAAO81C,WAAW,IAAK,IAC5Bl2B,KAAKoR,QAAQhxB,GAAQ+xB,OAASA,EAChC9F,GAAyB,mCACpB,CACL,IAAI8pB,EAAO,EACXpW,KACA,IAAK,IAAIhlC,EAAI,EAAGA,EAAIo3B,EAAQp3B,IAAK,CAC/B,IAAI02B,EACF5B,GAAWzvB,GAAQ6xB,UACnBjS,KAAK0S,eACHvvB,KAAK2D,IAAI,EAAG+oB,GAAWzvB,GAAQ+xB,OAAS,EAAItC,GAAWzvB,GAAQ8xB,MACnET,EAAQzR,KAAK2S,oBAAoB9C,GAAWzvB,GAASqxB,GACrDA,EAAQtuB,KAAKiL,KAAKqjB,GAClB0kB,GAAQ1kB,EACR5B,GAAWzvB,GAAQ+xB,QAAU,CAC/B,CACA9F,GAAyB,kBAAkB,GAAS8pB,IACtD,KACK,CACL,IAAIA,EAAO,EACXpW,KACAxhC,OAAO6C,KAAK4e,KAAKoR,SAASjR,SAAS4Z,IAEjC,GADA35B,EAAS25B,EACL/Z,KAAKoR,QAAQhxB,GAAQ+xB,OAASA,EAChC9F,GAAyB,mCAD3B,CAIA,IAAK,IAAItxB,EAAI,EAAGA,EAAIo3B,EAAQp3B,IAAK,CAC/B,IAAI02B,EACF5B,GAAWzvB,GAAQ6xB,UACnBjS,KAAK0S,eACHvvB,KAAK2D,IAAI,EAAG+oB,GAAWzvB,GAAQ+xB,OAAS,EAAItC,GAAWzvB,GAAQ8xB,MACnET,EAAQzR,KAAK2S,oBAAoB9C,GAAWzvB,GAASqxB,GACrDA,EAAQtuB,KAAKiL,KAAKqjB,GAClB0kB,GAAQ1kB,EACR5B,GAAWzvB,GAAQ+xB,QAAU,CAC/B,CACA9F,GAAyB,kBAAkB,GAAS8pB,IAXpD,CAW2D,GAE/D,CACF,CACA/pB,GAAuBpM,KAAKmQ,WAC9B,CAEAqe,GAAa,CAAEpiB,qBAAoB,IACrC,CCpEO,MAAMgqB,GAAe,CAC1BC,UAAW,qBACXC,YAAa,cACbC,SAAU,WACVC,QAAS,4BACTC,YAAa,+BACbC,QAAS,WACTC,WAAY,aACZttB,aAAc,gBACdutB,cAAe,iBAIJC,GAA2B,CACtCC,oBAAqB,wBACrBC,eAAgB,gBAChBC,eAAgB,iBAChBC,gBAAiB,iBACjBC,iBAAkB,cAClBC,iBAAkB,iBAClBC,kBAAmB,WACnBC,qBAAsB,qBCKxB,GAvBA,SAAsCC,GACpC,GAAoB,IAAhBA,EAAmB,CAErB,MAAMC,EAA2B,WAC/B,IACEluB,aAAamuB,oBAAoBC,MAGnC,CAFE,MAAOv7C,GACP,OAAO,CACT,CACA,OAAO,CACT,EAGM,iBAAkB1C,OAEb+9C,IACTluB,aAAamuB,oBAAoBC,OAEjCpuB,aAAamuB,oBAJb57C,QAAQ85B,IAAI,+CAMhB,CACF,ECnBe,SAASgiB,KACtBC,cACA33B,KAAK43B,eACL53B,KAAK63B,kBAELxb,KACArE,KACAmB,IACF,CCTe,SAAS2e,KAC6D,IAA/E93B,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAASkb,QACtEzwB,EAAE,YAAYhJ,MAAM2U,QAAU,GAC9B6kB,MAEAxwB,EAAE,YAAYhJ,MAAM2U,QAAU,OAEhCylB,IACF,CCKA,MAi7BA,GAj7BiB,CAEfnC,QAAS,IAAItR,EACX,EACA,OACA,cACA,CAAC,6BAA8B,8BAC/B,kFACA,GAEFimB,WAAY,IAAIjmB,EACd,EACA,OACA,cACA,CACE,0BACA,0BACA,0BACA,yBACA,yBACA,0BACA,0BACA,2BAEF,4DACA,GAEFomB,cAAe,IAAIpmB,EACjB,EACA,OACA,cACA,CACE,4BACA,4BACA,6BACA,6BACA,8BAEF,uDACA,GAEFuR,UAAW,IAAIvR,EACb,EACA,OACA,cACA,CACE,+BACA,8BACA,6CAEF,qGACA,GACA,KACEsC,IAAY,CAAI,IAKpBgJ,MAAO,IAAItL,EACT,EACA,OACA,WACA,CACE,uBACA,SACA,cACA,4BACA,sBACA,wBAEF,yCACA,GACA,KACEkuB,IAAc,IAGlB9iB,cAAe,IAAIpL,EACjB,EACA,OACA,WACA,CAAC,aAAc,aAAc,cAC7B,oIACA,GACA,KACEkuB,IAAc,IAGlBtiB,eAAgB,IAAI5L,EAClB,EACA,OACA,WACA,CAAC,4BAA6B,mBAC9B,qDACA,GACA,KACEkuB,IAAc,IAGlBviB,YAAa,IAAI3L,EACf,OACA,WACA,WACA,2BACA,8KACA,EACA,WAEFmR,WAAY,IAAInR,EACd,EACA,OACA,WACA,CAAC,0BAA2B,sBAAuB,iBACnD,0BACA,GAEFuuB,aAAc,IAAIvuB,EAChB,EACA,OACA,WACA,CAAC,oBAAqB,oBACtB,mEACA,GACA,KCtIuF,IAArFxJ,KAAKiB,KAAKC,uBAAuBC,SAASwI,iBAAiBvI,SAAS22B,aACtE/3B,KAAK6rB,QAAUhV,GACZ7W,KAAK6rB,QAAUzX,GAAgByX,ODqIZ,IAGxBpP,cAAe,IAAIjT,EACjB,EACA,OACA,WACA,CAAC,yBAA0B,mBAC3B,sKACA,GAIF4O,YAAa,IAAI5O,EACf,EACA,OACA,UACA,CAAC,uBAAwB,uBACzB,yBACA,GACA,KACEwO,IAAiB,IAGrBiJ,sBAAuB,IAAIzX,EACzB,EACA,OACA,UACA,CAAC,2BAA4B,sBAC7B,0KACA,GAEFymB,aAAc,IAAIzmB,EAChB,EACA,OACA,UACA,CACE,mBACA,kBACA,0BACA,gCAEF,sGACA,GAEFwmB,cAAe,IAAIxmB,EACjB,EACA,OACA,UACA,CAAC,mBAAoB,mBACrB,sJACA,GAEFwX,oBAAqB,IAAIxX,EACvB,EACA,WACA,UACA,oCACA,wMACA,EACAqL,KAEFgB,WAAY,IAAIrM,EACd,UACA,SACA,UACA,6HAEFsM,YAAa,IAAItM,EACf,UACA,SACA,UACA,yGAEFuM,aAAc,IAAIvM,EAChB,UACA,SACA,UACA,qHAEFwM,aAAc,IA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","sources":["webpack:///./node_modules/@eastdesire/jscolor/jscolor.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/baseSetting.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/notifications/prompt.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/notifications/flash.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/savingAndLoading/saveFramework.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/toggles/toggleHeader.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/notifications/sound.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/toggleConfigVolume.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/menuSections/addMenu.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/menuSections/info/addInfoMenuSection.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/menuSections/info/createFrameworkInfoMenuSection.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/data/modInfo.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/draw/drawLoop.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/data/headers.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/savingAndLoading/loadMod.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/savingAndLoading/createSaveDataObject.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/logic/logicLoop.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/data/settings.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/load.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/cookieMonsterFramework.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/init.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/init/createFlashScreen.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/save.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/index.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/init/initModFramework.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/init/registerMod.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/listings/createInfoListing.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/listings/createOptionListing.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/listings/createOptionsFavouriteStar.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/toggles/toggleFavourite.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/toggleConfig.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/toggleConfigKeycode.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/listings/createOptionsSubHeader.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/createModMenuSection.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/notifications/notification.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingColours.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingInputNumber.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingStandard.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingStandardWithFunc.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingVolume.js","webpack:///./src/Config/Toggles/ToggleWrinklerButtons.js","webpack:///./src/Cache/VariablesAndData.js","webpack:///./src/Sim/VariablesAndData.js","webpack:///./src/Sim/ReplacedGameFunctions/SimAuraMult.js","webpack:///./src/Sim/ReplacedGameFunctions/SimGetSellMultiplier.js","webpack:///./src/Sim/ReplacedGameFunctions/SimEff.js","webpack:///./src/Sim/ReplacedGameFunctions/SimHas.js","webpack:///./src/Sim/ReplacedGameFunctions/SimHasAura.js","webpack:///./src/Sim/ReplacedGameFunctions/SimHasGod.js","webpack:///./src/Sim/ReplacedGameFunctions/SimModifyBuidlingPrice.js","webpack:///./src/Sim/SimulationEvents/SellBuilding.js","webpack:///./src/Data/Scales.js","webpack:///./src/Main/VariablesAndData.js","webpack:///./src/Disp/VariablesAndData.js","webpack:///./src/Disp/BeautifyAndFormatting/Beautify.js","webpack:///./src/Disp/BuildingsUpgrades/Buildings.js","webpack:///./src/Disp/BuildingsUpgrades/UpdateUpgradeSectionsHeight.js","webpack:///./src/Disp/BuildingsUpgrades/Upgrades.js","webpack:///./src/Disp/BeautifyAndFormatting/FormatTime.js","webpack:///./src/Disp/BeautifyAndFormatting/GetTimeColour.js","webpack:///./src/Disp/HelperFunctions/GetCPS.js","webpack:///./src/Disp/HelperFunctions/GetWrinkConfigBank.js","webpack:///./src/Disp/InfoBars/CreateDOMElements.js","webpack:///./src/Disp/InfoBars/BottomBar.js","webpack:///./src/Disp/HelperFunctions/UpdateBackground.js","webpack:///./src/Config/SpecificToggles.js","webpack:///./src/Main/CheckStates/Probability.js","webpack:///./src/Cache/Dragon/CacheDragonAuras.js","webpack:///./src/Sim/InitializeData/InitAchievement.js","webpack:///./src/Sim/ReplacedGameFunctions/SimGetTieredCpsMult.js","webpack:///./src/Sim/InitializeData/InitialBuildingData.js","webpack:///./src/Sim/InitializeData/InitUpgrade.js","webpack:///./src/Sim/SimulationData/CopyData.js","webpack:///./src/Disp/Tooltips/CreateTooltip.js","webpack:///./src/Cache/PP/ColourOfPP.js","webpack:///./src/Cache/CPS/GetCPSBuffMult.js","webpack:///./src/Sim/SimulationData/SimWin.js","webpack:///./src/Sim/Calculations/CalculateGains.js","webpack:///./src/Sim/ReplacedGameFunctions/SimGetHeavenlyMultiplier.js","webpack:///./src/Data/Gamedata.js","webpack:///./src/Sim/ReplacedGameFunctions/SimHasAchiev.js","webpack:///./src/Sim/Calculations/CheckOtherAchiev.js","webpack:///./src/Sim/SimulationEvents/BuyBuildingBonusIncome.js","webpack:///./src/Disp/HelperFunctions/CalculateGrimoireRefillTime.js","webpack:///./src/Config/Toggles/ToggleToolWarnPos.js","webpack:///./src/Disp/Tooltips/UpdateTooltips.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/Building.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/Upgrade.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/SugarLump.js","webpack:///./src/Disp/HelperFunctions/GetLumpColour.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/Grimoire.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/HarvestAll.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/StockMarket.js","webpack:///./src/Disp/HelperFunctions/CalculateStockNextExpectedValue.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/WrinklerButton.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/PantheonGods.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/Warnings.js","webpack:///./src/Disp/DrawHook.js","webpack:///./src/Disp/InfoBars/TimerBar.js","webpack:///./src/Disp/Tooltips/WrinklerTooltips.js","webpack:///./src/Disp/MenuSections/Refreshmenu.js","webpack:///./src/Main/ClickHook.js","webpack:///./src/Cache/CPS/AverageQueue.js","webpack:///./src/Cache/FillCMDCache.js","webpack:///./src/Cache/CPS/CPS.js","webpack:///./src/Sim/SimulationEvents/BuyBuilding.js","webpack:///./src/Cache/PP/Building.js","webpack:///./src/Cache/PP/PP.js","webpack:///./src/Cache/PP/Upgrade.js","webpack:///./src/Sim/SimulationEvents/BuyUpgrades.js","webpack:///./src/Cache/PriceAndIncome/PriceAndIncome.js","webpack:///./src/Cache/Stats/ChainCookies.js","webpack:///./src/Cache/Stats/HeavenlyChips.js","webpack:///./src/Cache/Stats/MissingUpgrades.js","webpack:///./src/Disp/MenuSections/Statistics/CreateMissingUpgrades.js","webpack:///./src/Cache/Stats/Reindeer.js","webpack:///./src/Cache/Stats/Stats.js","webpack:///./src/Cache/TillNextAchievement/AllAmountTillNextAchievement.js","webpack:///./src/Cache/TillNextAchievement/IndividualAmountTillNextAchievement.js","webpack:///./src/Cache/Wrinklers/Wrinklers.js","webpack:///./src/Cache/CacheInit.js","webpack:///./src/Disp/HelperFunctions/PopWrinklers.js","webpack:///./src/Disp/Tooltips/Tooltip.js","webpack:///./src/Disp/TabTitle/FavIcon.js","webpack:///./src/Sim/InitializeData/InitData.js","webpack:///./src/Main/ReplaceGameElements/TooltipGrimoire.js","webpack:///./src/Main/ReplaceGameElements/NativeGrimoire.js","webpack:///./src/Cache/Dragon/Dragon.js","webpack:///./src/Data/Sectionheaders.js","webpack:///./src/Config/CheckNotificationPermissions.js","webpack:///./src/Disp/HelperFunctions/RefreshScale.js","webpack:///./src/Config/Toggles/ToggleBotBar.js","webpack:///./src/Data/settings.js","webpack:///./src/Config/Toggles/ToggleDetailedTime.js","webpack:///./src/Config/Toggles/ToggleUpgradeBarAndColour.js","webpack:///./src/Config/Toggles/ToggleUpgradeBarFixedPos.js","webpack:///./src/Config/Toggles/ToggleGCTimer.js","webpack:///./src/Config/Toggles/ToggleSectionHideButtons.js","webpack:///./src/Disp/HelperFunctions/UpdateColours.js","webpack:///./src/Disp/MenuSections/createMenuOptions.js","webpack:///./src/Disp/HelperFunctions/CalculateLuckyLevels.js","webpack:///./src/Disp/MenuSections/Statistics/CreateDOMElements.js","webpack:///./src/Config/ToggleSetting.js","webpack:///./src/Disp/MenuSections/Statistics/AddStatsPage.js","webpack:///./src/Disp/MenuSections/Statistics/CreateStatsSections.js","webpack:///./src/Sim/SimulationEvents/ResetAscension.js","webpack:///./src/Disp/MenuSections/Statistics/CreateMissingAchievements.js","webpack:///./src/Main/ReplaceGameFunctions/FixMouse.js","webpack:///./src/Main/ReplaceGameFunctions/ReplaceNative.js","webpack:///./src/Disp/Tooltips/PositionLocation.js","webpack:///./src/Main/ReplaceGameElements/TooltipUpgrades.js","webpack:///./src/Disp/Dragon/Dragon.js","webpack:///./src/Sim/SimulationEvents/AuraChange.js","webpack:///./src/Disp/MenuSections/AddMenus.js","webpack:///./src/Disp/TabTitle/TabTitle.js","webpack:///./src/Disp/Tooltips/AscendButton.js","webpack:///./src/Main/Initialization.js","webpack:///./src/Disp/Initialization/CssArea.js","webpack:///./src/Disp/BuildingsUpgrades/UpgradeBar.js","webpack:///./src/Disp/Initialization/CreateSectionHideButtons.js","webpack:///./src/Disp/Initialization/CreateWrinklerButton.js","webpack:///./src/Disp/Initialization/UpdateBuildingUpgradeStyle.js","webpack:///./src/Disp/buildingTiles/createBuildingLockButtons.js","webpack:///./src/Disp/buildingTiles/toggleBuildingLock.js","webpack:///./src/Main/ReplaceGameElements/Tooltips.js","webpack:///./src/Main/WrinklerArea/AddDetectArea.js","webpack:///./src/Sim/SimulationEvents/GodChange.js","webpack:///./src/Main/LoopHook.js","webpack:///./src/Disp/HelperFunctions/UpdateAscendState.js","webpack:///./src/Cache/CPS/NoGoldSwitchCPS.js","webpack:///./src/Sim/Calculations/NoGoldenSwitchCalc.js","webpack:///./src/Cache/PantheonGods/CacheGods.js","webpack:///./src/Cache/CPS/SellChoEgg.js","webpack:///./src/Sim/SimulationEvents/SellBuildingForChoEgg.js","webpack:///./src/Cache/CacheLoop.js","webpack:///./src/Cache/CPS/CurrWrinklerCPS.js","webpack:///./src/Main/CheckStates/Ticker.js","webpack:///./src/Main/CheckStates/Season.js","webpack:///./src/Main/CheckStates/Garden.js","webpack:///./src/Main/CheckStates/Grimoire.js","webpack:///./src/Main/CheckStates/Wrinkler.js","webpack:///./src/Main/CheckStates/GoldenCookie.js","webpack:///./src/Disp/GoldenCookieTimers/GoldenCookieTimers.js","webpack:///./src/Data/headers.js","webpack:///./src/InitSaveLoad/load.js","webpack:///./src/CookieMonster.js","webpack:///./src/InitSaveLoad/init.js","webpack:///./src/Data/Moddata.js","webpack:///./src/InitSaveLoad/save.js"],"sourcesContent":["/**\r\n * jscolor - JavaScript Color Picker\r\n *\r\n * @link http://jscolor.com\r\n * @license For open source use: GPLv3\r\n * For commercial use: JSColor Commercial License\r\n * @author Jan Odvarko - East Desire\r\n *\r\n * See usage examples at http://jscolor.com/examples/\r\n */\r\n\r\n\r\n(function (global, factory) {\r\n\r\n\t'use strict';\r\n\r\n\tif (typeof module === 'object' && typeof module.exports === 'object') {\r\n\t\t// Export jscolor as a module\r\n\t\tmodule.exports = global.document ?\r\n\t\t\tfactory (global) :\r\n\t\t\tfunction (win) {\r\n\t\t\t\tif (!win.document) {\r\n\t\t\t\t\tthrow new Error('jscolor needs a window with document');\r\n\t\t\t\t}\r\n\t\t\t\treturn factory(win);\r\n\t\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Default use (no module export)\r\n\tfactory(global);\r\n\r\n})(typeof window !== 'undefined' ? window : this, function (window) { // BEGIN factory\r\n\r\n// BEGIN jscolor code\r\n\r\n\r\n'use strict';\r\n\r\n\r\nvar jscolor = (function () { // BEGIN jscolor\r\n\r\nvar jsc = {\r\n\r\n\r\n\tinitialized : false,\r\n\r\n\tinstances : [], // created instances of jscolor\r\n\r\n\treadyQueue : [], // functions waiting to be called after init\r\n\r\n\r\n\tregister : function () {\r\n\t\tif (typeof window !== 'undefined' && window.document) {\r\n\t\t\twindow.document.addEventListener('DOMContentLoaded', jsc.pub.init, false);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tinstallBySelector : function (selector, rootNode) {\r\n\t\trootNode = rootNode ? jsc.node(rootNode) : window.document;\r\n\t\tif (!rootNode) {\r\n\t\t\tthrow new Error('Missing root node');\r\n\t\t}\r\n\r\n\t\tvar elms = rootNode.querySelectorAll(selector);\r\n\r\n\t\t// for backward compatibility with DEPRECATED installation/configuration using className\r\n\t\tvar matchClass = new RegExp('(^|\\\\s)(' + jsc.pub.lookupClass + ')(\\\\s*(\\\\{[^}]*\\\\})|\\\\s|$)', 'i');\r\n\r\n\t\tfor (var i = 0; i < elms.length; i += 1) {\r\n\r\n\t\t\tif (elms[i].jscolor && elms[i].jscolor instanceof jsc.pub) {\r\n\t\t\t\tcontinue; // jscolor already installed on this element\r\n\t\t\t}\r\n\r\n\t\t\tif (elms[i].type !== undefined && elms[i].type.toLowerCase() == 'color' && jsc.isColorAttrSupported) {\r\n\t\t\t\tcontinue; // skips inputs of type 'color' if supported by the browser\r\n\t\t\t}\r\n\r\n\t\t\tvar dataOpts, m;\r\n\r\n\t\t\tif (\r\n\t\t\t\t(dataOpts = jsc.getDataAttr(elms[i], 'jscolor')) !== null ||\r\n\t\t\t\t(elms[i].className && (m = elms[i].className.match(matchClass))) // installation using className (DEPRECATED)\r\n\t\t\t) {\r\n\t\t\t\tvar targetElm = elms[i];\r\n\r\n\t\t\t\tvar optsStr = '';\r\n\t\t\t\tif (dataOpts !== null) {\r\n\t\t\t\t\toptsStr = dataOpts;\r\n\r\n\t\t\t\t} else if (m) { // installation using className (DEPRECATED)\r\n\t\t\t\t\tconsole.warn('Installation using class name is DEPRECATED. Use data-jscolor=\"\" attribute instead.' + jsc.docsRef);\r\n\t\t\t\t\tif (m[4]) {\r\n\t\t\t\t\t\toptsStr = m[4];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar opts = null;\r\n\t\t\t\tif (optsStr.trim()) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\topts = jsc.parseOptionsStr(optsStr);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.warn(e + '\\n' + optsStr);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tnew jsc.pub(targetElm, opts);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tparseOptionsStr : function (str) {\r\n\t\tvar opts = null;\r\n\r\n\t\ttry {\r\n\t\t\topts = JSON.parse(str);\r\n\r\n\t\t} catch (eParse) {\r\n\t\t\tif (!jsc.pub.looseJSON) {\r\n\t\t\t\tthrow new Error('Could not parse jscolor options as JSON: ' + eParse);\r\n\t\t\t} else {\r\n\t\t\t\t// loose JSON syntax is enabled -> try to evaluate the options string as JavaScript object\r\n\t\t\t\ttry {\r\n\t\t\t\t\topts = (new Function ('var opts = (' + str + '); return typeof opts === \"object\" ? opts : {};'))();\r\n\t\t\t\t} catch (eEval) {\r\n\t\t\t\t\tthrow new Error('Could not evaluate jscolor options: ' + eEval);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn opts;\r\n\t},\r\n\r\n\r\n\tgetInstances : function () {\r\n\t\tvar inst = [];\r\n\t\tfor (var i = 0; i < jsc.instances.length; i += 1) {\r\n\t\t\t// if the targetElement still exists, the instance is considered \"alive\"\r\n\t\t\tif (jsc.instances[i] && jsc.instances[i].targetElement) {\r\n\t\t\t\tinst.push(jsc.instances[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn inst;\r\n\t},\r\n\r\n\r\n\tcreateEl : function (tagName) {\r\n\t\tvar el = window.document.createElement(tagName);\r\n\t\tjsc.setData(el, 'gui', true);\r\n\t\treturn el;\r\n\t},\r\n\r\n\r\n\tnode : function (nodeOrSelector) {\r\n\t\tif (!nodeOrSelector) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (typeof nodeOrSelector === 'string') {\r\n\t\t\t// query selector\r\n\t\t\tvar sel = nodeOrSelector;\r\n\t\t\tvar el = null;\r\n\t\t\ttry {\r\n\t\t\t\tel = window.document.querySelector(sel);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.warn(e);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tif (!el) {\r\n\t\t\t\tconsole.warn('No element matches the selector: %s', sel);\r\n\t\t\t}\r\n\t\t\treturn el;\r\n\t\t}\r\n\r\n\t\tif (jsc.isNode(nodeOrSelector)) {\r\n\t\t\t// DOM node\r\n\t\t\treturn nodeOrSelector;\r\n\t\t}\r\n\r\n\t\tconsole.warn('Invalid node of type %s: %s', typeof nodeOrSelector, nodeOrSelector);\r\n\t\treturn null;\r\n\t},\r\n\r\n\r\n\t// See https://stackoverflow.com/questions/384286/\r\n\tisNode : function (val) {\r\n\t\tif (typeof Node === 'object') {\r\n\t\t\treturn val instanceof Node;\r\n\t\t}\r\n\t\treturn val && typeof val === 'object' && typeof val.nodeType === 'number' && typeof val.nodeName === 'string';\r\n\t},\r\n\r\n\r\n\tnodeName : function (node) {\r\n\t\tif (node && node.nodeName) {\r\n\t\t\treturn node.nodeName.toLowerCase();\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\tremoveChildren : function (node) {\r\n\t\twhile (node.firstChild) {\r\n\t\t\tnode.removeChild(node.firstChild);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tisTextInput : function (el) {\r\n\t\treturn el && jsc.nodeName(el) === 'input' && el.type.toLowerCase() === 'text';\r\n\t},\r\n\r\n\r\n\tisButton : function (el) {\r\n\t\tif (!el) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tvar n = jsc.nodeName(el);\r\n\t\treturn (\r\n\t\t\t(n === 'button') ||\r\n\t\t\t(n === 'input' && ['button', 'submit', 'reset'].indexOf(el.type.toLowerCase()) > -1)\r\n\t\t);\r\n\t},\r\n\r\n\r\n\tisButtonEmpty : function (el) {\r\n\t\tswitch (jsc.nodeName(el)) {\r\n\t\t\tcase 'input': return (!el.value || el.value.trim() === '');\r\n\t\t\tcase 'button': return (el.textContent.trim() === '');\r\n\t\t}\r\n\t\treturn null; // could not determine element's text\r\n\t},\r\n\r\n\r\n\t// See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\n\tisPassiveEventSupported : (function () {\r\n\t\tvar supported = false;\r\n\r\n\t\ttry {\r\n\t\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\t\tget: function () { supported = true; }\r\n\t\t\t});\r\n\t\t\twindow.addEventListener('testPassive', null, opts);\r\n\t\t\twindow.removeEventListener('testPassive', null, opts);\r\n\t\t} catch (e) {}\r\n\r\n\t\treturn supported;\r\n\t})(),\r\n\r\n\r\n\tisColorAttrSupported : (function () {\r\n\t\tvar elm = window.document.createElement('input');\r\n\t\tif (elm.setAttribute) {\r\n\t\t\telm.setAttribute('type', 'color');\r\n\t\t\tif (elm.type.toLowerCase() == 'color') {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t})(),\r\n\r\n\r\n\tdataProp : '_data_jscolor',\r\n\r\n\r\n\t// usage:\r\n\t// setData(obj, prop, value)\r\n\t// setData(obj, {prop:value, ...})\r\n\t//\r\n\tsetData : function () {\r\n\t\tvar obj = arguments[0];\r\n\r\n\t\tif (arguments.length === 3) {\r\n\t\t\t// setting a single property\r\n\t\t\tvar data = obj.hasOwnProperty(jsc.dataProp) ? obj[jsc.dataProp] : (obj[jsc.dataProp] = {});\r\n\t\t\tvar prop = arguments[1];\r\n\t\t\tvar value = arguments[2];\r\n\r\n\t\t\tdata[prop] = value;\r\n\t\t\treturn true;\r\n\r\n\t\t} else if (arguments.length === 2 && typeof arguments[1] === 'object') {\r\n\t\t\t// setting multiple properties\r\n\t\t\tvar data = obj.hasOwnProperty(jsc.dataProp) ? obj[jsc.dataProp] : (obj[jsc.dataProp] = {});\r\n\t\t\tvar map = arguments[1];\r\n\r\n\t\t\tfor (var prop in map) {\r\n\t\t\t\tif (map.hasOwnProperty(prop)) {\r\n\t\t\t\t\tdata[prop] = map[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tthrow new Error('Invalid arguments');\r\n\t},\r\n\r\n\r\n\t// usage:\r\n\t// removeData(obj, prop, [prop...])\r\n\t//\r\n\tremoveData : function () {\r\n\t\tvar obj = arguments[0];\r\n\t\tif (!obj.hasOwnProperty(jsc.dataProp)) {\r\n\t\t\treturn true; // data object does not exist\r\n\t\t}\r\n\t\tfor (var i = 1; i < arguments.length; i += 1) {\r\n\t\t\tvar prop = arguments[i];\r\n\t\t\tdelete obj[jsc.dataProp][prop];\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\r\n\tgetData : function (obj, prop, setDefault) {\r\n\t\tif (!obj.hasOwnProperty(jsc.dataProp)) {\r\n\t\t\t// data object does not exist\r\n\t\t\tif (setDefault !== undefined) {\r\n\t\t\t\tobj[jsc.dataProp] = {}; // create data object\r\n\t\t\t} else {\r\n\t\t\t\treturn undefined; // no value to return\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar data = obj[jsc.dataProp];\r\n\r\n\t\tif (!data.hasOwnProperty(prop) && setDefault !== undefined) {\r\n\t\t\tdata[prop] = setDefault;\r\n\t\t}\r\n\t\treturn data[prop];\r\n\t},\r\n\r\n\r\n\tgetDataAttr : function (el, name) {\r\n\t\tvar attrName = 'data-' + name;\r\n\t\tvar attrValue = el.getAttribute(attrName);\r\n\t\treturn attrValue;\r\n\t},\r\n\r\n\r\n\tsetDataAttr : function (el, name, value) {\r\n\t\tvar attrName = 'data-' + name;\r\n\t\tel.setAttribute(attrName, value);\r\n\t},\r\n\r\n\r\n\t_attachedGroupEvents : {},\r\n\r\n\r\n\tattachGroupEvent : function (groupName, el, evnt, func) {\r\n\t\tif (!jsc._attachedGroupEvents.hasOwnProperty(groupName)) {\r\n\t\t\tjsc._attachedGroupEvents[groupName] = [];\r\n\t\t}\r\n\t\tjsc._attachedGroupEvents[groupName].push([el, evnt, func]);\r\n\t\tel.addEventListener(evnt, func, false);\r\n\t},\r\n\r\n\r\n\tdetachGroupEvents : function (groupName) {\r\n\t\tif (jsc._attachedGroupEvents.hasOwnProperty(groupName)) {\r\n\t\t\tfor (var i = 0; i < jsc._attachedGroupEvents[groupName].length; i += 1) {\r\n\t\t\t\tvar evt = jsc._attachedGroupEvents[groupName][i];\r\n\t\t\t\tevt[0].removeEventListener(evt[1], evt[2], false);\r\n\t\t\t}\r\n\t\t\tdelete jsc._attachedGroupEvents[groupName];\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tpreventDefault : function (e) {\r\n\t\tif (e.preventDefault) { e.preventDefault(); }\r\n\t\te.returnValue = false;\r\n\t},\r\n\r\n\r\n\tcaptureTarget : function (target) {\r\n\t\t// IE\r\n\t\tif (target.setCapture) {\r\n\t\t\tjsc._capturedTarget = target;\r\n\t\t\tjsc._capturedTarget.setCapture();\r\n\t\t}\r\n\t},\r\n\r\n\r\n\treleaseTarget : function () {\r\n\t\t// IE\r\n\t\tif (jsc._capturedTarget) {\r\n\t\t\tjsc._capturedTarget.releaseCapture();\r\n\t\t\tjsc._capturedTarget = null;\r\n\t\t}\r\n\t},\r\n\r\n\r\n\ttriggerEvent : function (el, eventName, bubbles, cancelable) {\r\n\t\tif (!el) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ev = null;\r\n\r\n\t\tif (typeof Event === 'function') {\r\n\t\t\tev = new Event(eventName, {\r\n\t\t\t\tbubbles: bubbles,\r\n\t\t\t\tcancelable: cancelable\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// IE\r\n\t\t\tev = window.document.createEvent('Event');\r\n\t\t\tev.initEvent(eventName, bubbles, cancelable);\r\n\t\t}\r\n\r\n\t\tif (!ev) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// so that we know that the event was triggered internally\r\n\t\tjsc.setData(ev, 'internal', true);\r\n\r\n\t\tel.dispatchEvent(ev);\r\n\t\treturn true;\r\n\t},\r\n\r\n\r\n\ttriggerInputEvent : function (el, eventName, bubbles, cancelable) {\r\n\t\tif (!el) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (jsc.isTextInput(el)) {\r\n\t\t\tjsc.triggerEvent(el, eventName, bubbles, cancelable);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\teventKey : function (ev) {\r\n\t\tvar keys = {\r\n\t\t\t9: 'Tab',\r\n\t\t\t13: 'Enter',\r\n\t\t\t27: 'Escape',\r\n\t\t};\r\n\t\tif (typeof ev.code === 'string') {\r\n\t\t\treturn ev.code;\r\n\t\t} else if (ev.keyCode !== undefined && keys.hasOwnProperty(ev.keyCode)) {\r\n\t\t\treturn keys[ev.keyCode];\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\r\n\tstrList : function (str) {\r\n\t\tif (!str) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\treturn str.replace(/^\\s+|\\s+$/g, '').split(/\\s+/);\r\n\t},\r\n\r\n\r\n\t// The className parameter (str) can only contain a single class name\r\n\thasClass : function (elm, className) {\r\n\t\tif (!className) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (elm.classList !== undefined) {\r\n\t\t\treturn elm.classList.contains(className);\r\n\t\t}\r\n\t\t// polyfill\r\n\t\treturn -1 != (' ' + elm.className.replace(/\\s+/g, ' ') + ' ').indexOf(' ' + className + ' ');\r\n\t},\r\n\r\n\r\n\t// The className parameter (str) can contain multiple class names separated by whitespace\r\n\taddClass : function (elm, className) {\r\n\t\tvar classNames = jsc.strList(className);\r\n\r\n\t\tif (elm.classList !== undefined) {\r\n\t\t\tfor (var i = 0; i < classNames.length; i += 1) {\r\n\t\t\t\telm.classList.add(classNames[i]);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// polyfill\r\n\t\tfor (var i = 0; i < classNames.length; i += 1) {\r\n\t\t\tif (!jsc.hasClass(elm, classNames[i])) {\r\n\t\t\t\telm.className += (elm.className ? ' ' : '') + classNames[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// The className parameter (str) can contain multiple class names separated by whitespace\r\n\tremoveClass : function (elm, className) {\r\n\t\tvar classNames = jsc.strList(className);\r\n\r\n\t\tif (elm.classList !== undefined) {\r\n\t\t\tfor (var i = 0; i < classNames.length; i += 1) {\r\n\t\t\t\telm.classList.remove(classNames[i]);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// polyfill\r\n\t\tfor (var i = 0; i < classNames.length; i += 1) {\r\n\t\t\tvar repl = new RegExp(\r\n\t\t\t\t'^\\\\s*' + classNames[i] + '\\\\s*|' +\r\n\t\t\t\t'\\\\s*' + classNames[i] + '\\\\s*$|' +\r\n\t\t\t\t'\\\\s+' + classNames[i] + '(\\\\s+)',\r\n\t\t\t\t'g'\r\n\t\t\t);\r\n\t\t\telm.className = elm.className.replace(repl, '$1');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tgetCompStyle : function (elm) {\r\n\t\tvar compStyle = window.getComputedStyle ? window.getComputedStyle(elm) : elm.currentStyle;\r\n\r\n\t\t// Note: In Firefox, getComputedStyle returns null in a hidden iframe,\r\n\t\t// that's why we need to check if the returned value is non-empty\r\n\t\tif (!compStyle) {\r\n\t\t\treturn {};\r\n\t\t}\r\n\t\treturn compStyle;\r\n\t},\r\n\r\n\r\n\t// Note:\r\n\t// Setting a property to NULL reverts it to the state before it was first set\r\n\t// with the 'reversible' flag enabled\r\n\t//\r\n\tsetStyle : function (elm, styles, important, reversible) {\r\n\t\t// using '' for standard priority (IE10 apparently doesn't like value undefined)\r\n\t\tvar priority = important ? 'important' : '';\r\n\t\tvar origStyle = null;\r\n\r\n\t\tfor (var prop in styles) {\r\n\t\t\tif (styles.hasOwnProperty(prop)) {\r\n\t\t\t\tvar setVal = null;\r\n\r\n\t\t\t\tif (styles[prop] === null) {\r\n\t\t\t\t\t// reverting a property value\r\n\r\n\t\t\t\t\tif (!origStyle) {\r\n\t\t\t\t\t\t// get the original style object, but dont't try to create it if it doesn't exist\r\n\t\t\t\t\t\torigStyle = jsc.getData(elm, 'origStyle');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (origStyle && origStyle.hasOwnProperty(prop)) {\r\n\t\t\t\t\t\t// we have property's original value -> use it\r\n\t\t\t\t\t\tsetVal = origStyle[prop];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// setting a property value\r\n\r\n\t\t\t\t\tif (reversible) {\r\n\t\t\t\t\t\tif (!origStyle) {\r\n\t\t\t\t\t\t\t// get the original style object and if it doesn't exist, create it\r\n\t\t\t\t\t\t\torigStyle = jsc.getData(elm, 'origStyle', {});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!origStyle.hasOwnProperty(prop)) {\r\n\t\t\t\t\t\t\t// original property value not yet stored -> store it\r\n\t\t\t\t\t\t\torigStyle[prop] = elm.style[prop];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetVal = styles[prop];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (setVal !== null) {\r\n\t\t\t\t\telm.style.setProperty(prop, setVal, priority);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\thexColor : function (r, g, b) {\r\n\t\treturn '#' + (\r\n\t\t\t('0' + Math.round(r).toString(16)).substr(-2) +\r\n\t\t\t('0' + Math.round(g).toString(16)).substr(-2) +\r\n\t\t\t('0' + Math.round(b).toString(16)).substr(-2)\r\n\t\t).toUpperCase();\r\n\t},\r\n\r\n\r\n\thexaColor : function (r, g, b, a) {\r\n\t\treturn '#' + (\r\n\t\t\t('0' + Math.round(r).toString(16)).substr(-2) +\r\n\t\t\t('0' + Math.round(g).toString(16)).substr(-2) +\r\n\t\t\t('0' + Math.round(b).toString(16)).substr(-2) +\r\n\t\t\t('0' + Math.round(a * 255).toString(16)).substr(-2)\r\n\t\t).toUpperCase();\r\n\t},\r\n\r\n\r\n\trgbColor : function (r, g, b) {\r\n\t\treturn 'rgb(' +\r\n\t\t\tMath.round(r) + ',' +\r\n\t\t\tMath.round(g) + ',' +\r\n\t\t\tMath.round(b) +\r\n\t\t')';\r\n\t},\r\n\r\n\r\n\trgbaColor : function (r, g, b, a) {\r\n\t\treturn 'rgba(' +\r\n\t\t\tMath.round(r) + ',' +\r\n\t\t\tMath.round(g) + ',' +\r\n\t\t\tMath.round(b) + ',' +\r\n\t\t\t(Math.round((a===undefined || a===null ? 1 : a) * 100) / 100) +\r\n\t\t')';\r\n\t},\r\n\r\n\r\n\tlinearGradient : (function () {\r\n\r\n\t\tfunction getFuncName () {\r\n\t\t\tvar stdName = 'linear-gradient';\r\n\t\t\tvar prefixes = ['', '-webkit-', '-moz-', '-o-', '-ms-'];\r\n\t\t\tvar helper = window.document.createElement('div');\r\n\r\n\t\t\tfor (var i = 0; i < prefixes.length; i += 1) {\r\n\t\t\t\tvar tryFunc = prefixes[i] + stdName;\r\n\t\t\t\tvar tryVal = tryFunc + '(to right, rgba(0,0,0,0), rgba(0,0,0,0))';\r\n\r\n\t\t\t\thelper.style.background = tryVal;\r\n\t\t\t\tif (helper.style.background) { // CSS background successfully set -> function name is supported\r\n\t\t\t\t\treturn tryFunc;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn stdName; // fallback to standard 'linear-gradient' without vendor prefix\r\n\t\t}\r\n\r\n\t\tvar funcName = getFuncName();\r\n\r\n\t\treturn function () {\r\n\t\t\treturn funcName + '(' + Array.prototype.join.call(arguments, ', ') + ')';\r\n\t\t};\r\n\r\n\t})(),\r\n\r\n\r\n\tsetBorderRadius : function (elm, value) {\r\n\t\tjsc.setStyle(elm, {'border-radius' : value || '0'});\r\n\t},\r\n\r\n\r\n\tsetBoxShadow : function (elm, value) {\r\n\t\tjsc.setStyle(elm, {'box-shadow': value || 'none'});\r\n\t},\r\n\r\n\r\n\tgetElementPos : function (e, relativeToViewport) {\r\n\t\tvar x=0, y=0;\r\n\t\tvar rect = e.getBoundingClientRect();\r\n\t\tx = rect.left;\r\n\t\ty = rect.top;\r\n\t\tif (!relativeToViewport) {\r\n\t\t\tvar viewPos = jsc.getViewPos();\r\n\t\t\tx += viewPos[0];\r\n\t\t\ty += viewPos[1];\r\n\t\t}\r\n\t\treturn [x, y];\r\n\t},\r\n\r\n\r\n\tgetElementSize : function (e) {\r\n\t\treturn [e.offsetWidth, e.offsetHeight];\r\n\t},\r\n\r\n\r\n\t// get pointer's X/Y coordinates relative to viewport\r\n\tgetAbsPointerPos : function (e) {\r\n\t\tvar x = 0, y = 0;\r\n\t\tif (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {\r\n\t\t\t// touch devices\r\n\t\t\tx = e.changedTouches[0].clientX;\r\n\t\t\ty = e.changedTouches[0].clientY;\r\n\t\t} else if (typeof e.clientX === 'number') {\r\n\t\t\tx = e.clientX;\r\n\t\t\ty = e.clientY;\r\n\t\t}\r\n\t\treturn { x: x, y: y };\r\n\t},\r\n\r\n\r\n\t// get pointer's X/Y coordinates relative to target element\r\n\tgetRelPointerPos : function (e) {\r\n\t\tvar target = e.target || e.srcElement;\r\n\t\tvar targetRect = target.getBoundingClientRect();\r\n\r\n\t\tvar x = 0, y = 0;\r\n\r\n\t\tvar clientX = 0, clientY = 0;\r\n\t\tif (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {\r\n\t\t\t// touch devices\r\n\t\t\tclientX = e.changedTouches[0].clientX;\r\n\t\t\tclientY = e.changedTouches[0].clientY;\r\n\t\t} else if (typeof e.clientX === 'number') {\r\n\t\t\tclientX = e.clientX;\r\n\t\t\tclientY = e.clientY;\r\n\t\t}\r\n\r\n\t\tx = clientX - targetRect.left;\r\n\t\ty = clientY - targetRect.top;\r\n\t\treturn { x: x, y: y };\r\n\t},\r\n\r\n\r\n\tgetViewPos : function () {\r\n\t\tvar doc = window.document.documentElement;\r\n\t\treturn [\r\n\t\t\t(window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0),\r\n\t\t\t(window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\r\n\t\t];\r\n\t},\r\n\r\n\r\n\tgetViewSize : function () {\r\n\t\tvar doc = window.document.documentElement;\r\n\t\treturn [\r\n\t\t\t(window.innerWidth || doc.clientWidth),\r\n\t\t\t(window.innerHeight || doc.clientHeight),\r\n\t\t];\r\n\t},\r\n\r\n\r\n\t// r: 0-255\r\n\t// g: 0-255\r\n\t// b: 0-255\r\n\t//\r\n\t// returns: [ 0-360, 0-100, 0-100 ]\r\n\t//\r\n\tRGB_HSV : function (r, g, b) {\r\n\t\tr /= 255;\r\n\t\tg /= 255;\r\n\t\tb /= 255;\r\n\t\tvar n = Math.min(Math.min(r,g),b);\r\n\t\tvar v = Math.max(Math.max(r,g),b);\r\n\t\tvar m = v - n;\r\n\t\tif (m === 0) { return [ null, 0, 100 * v ]; }\r\n\t\tvar h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);\r\n\t\treturn [\r\n\t\t\t60 * (h===6?0:h),\r\n\t\t\t100 * (m/v),\r\n\t\t\t100 * v\r\n\t\t];\r\n\t},\r\n\r\n\r\n\t// h: 0-360\r\n\t// s: 0-100\r\n\t// v: 0-100\r\n\t//\r\n\t// returns: [ 0-255, 0-255, 0-255 ]\r\n\t//\r\n\tHSV_RGB : function (h, s, v) {\r\n\t\tvar u = 255 * (v / 100);\r\n\r\n\t\tif (h === null) {\r\n\t\t\treturn [ u, u, u ];\r\n\t\t}\r\n\r\n\t\th /= 60;\r\n\t\ts /= 100;\r\n\r\n\t\tvar i = Math.floor(h);\r\n\t\tvar f = i%2 ? h-i : 1-(h-i);\r\n\t\tvar m = u * (1 - s);\r\n\t\tvar n = u * (1 - s * f);\r\n\t\tswitch (i) {\r\n\t\t\tcase 6:\r\n\t\t\tcase 0: return [u,n,m];\r\n\t\t\tcase 1: return [n,u,m];\r\n\t\t\tcase 2: return [m,u,n];\r\n\t\t\tcase 3: return [m,n,u];\r\n\t\t\tcase 4: return [n,m,u];\r\n\t\t\tcase 5: return [u,m,n];\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tparseColorString : function (str) {\r\n\t\tvar ret = {\r\n\t\t\trgba: null,\r\n\t\t\tformat: null // 'hex' | 'hexa' | 'rgb' | 'rgba'\r\n\t\t};\r\n\r\n\t\tvar m;\r\n\r\n\t\tif (m = str.match(/^\\W*([0-9A-F]{3,8})\\W*$/i)) {\r\n\t\t\t// HEX notation\r\n\r\n\t\t\tif (m[1].length === 8) {\r\n\t\t\t\t// 8-char notation (= with alpha)\r\n\t\t\t\tret.format = 'hexa';\r\n\t\t\t\tret.rgba = [\r\n\t\t\t\t\tparseInt(m[1].substr(0,2),16),\r\n\t\t\t\t\tparseInt(m[1].substr(2,2),16),\r\n\t\t\t\t\tparseInt(m[1].substr(4,2),16),\r\n\t\t\t\t\tparseInt(m[1].substr(6,2),16) / 255\r\n\t\t\t\t];\r\n\r\n\t\t\t} else if (m[1].length === 6) {\r\n\t\t\t\t// 6-char notation\r\n\t\t\t\tret.format = 'hex';\r\n\t\t\t\tret.rgba = [\r\n\t\t\t\t\tparseInt(m[1].substr(0,2),16),\r\n\t\t\t\t\tparseInt(m[1].substr(2,2),16),\r\n\t\t\t\t\tparseInt(m[1].substr(4,2),16),\r\n\t\t\t\t\tnull\r\n\t\t\t\t];\r\n\r\n\t\t\t} else if (m[1].length === 3) {\r\n\t\t\t\t// 3-char notation\r\n\t\t\t\tret.format = 'hex';\r\n\t\t\t\tret.rgba = [\r\n\t\t\t\t\tparseInt(m[1].charAt(0) + m[1].charAt(0),16),\r\n\t\t\t\t\tparseInt(m[1].charAt(1) + m[1].charAt(1),16),\r\n\t\t\t\t\tparseInt(m[1].charAt(2) + m[1].charAt(2),16),\r\n\t\t\t\t\tnull\r\n\t\t\t\t];\r\n\r\n\t\t\t} else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn ret;\r\n\t\t}\r\n\r\n\t\tif (m = str.match(/^\\W*rgba?\\(([^)]*)\\)\\W*$/i)) {\r\n\t\t\t// rgb(...) or rgba(...) notation\r\n\r\n\t\t\tvar par = m[1].split(',');\r\n\t\t\tvar re = /^\\s*(\\d+|\\d*\\.\\d+|\\d+\\.\\d*)\\s*$/;\r\n\t\t\tvar mR, mG, mB, mA;\r\n\t\t\tif (\r\n\t\t\t\tpar.length >= 3 &&\r\n\t\t\t\t(mR = par[0].match(re)) &&\r\n\t\t\t\t(mG = par[1].match(re)) &&\r\n\t\t\t\t(mB = par[2].match(re))\r\n\t\t\t) {\r\n\t\t\t\tret.format = 'rgb';\r\n\t\t\t\tret.rgba = [\r\n\t\t\t\t\tparseFloat(mR[1]) || 0,\r\n\t\t\t\t\tparseFloat(mG[1]) || 0,\r\n\t\t\t\t\tparseFloat(mB[1]) || 0,\r\n\t\t\t\t\tnull\r\n\t\t\t\t];\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tpar.length >= 4 &&\r\n\t\t\t\t\t(mA = par[3].match(re))\r\n\t\t\t\t) {\r\n\t\t\t\t\tret.format = 'rgba';\r\n\t\t\t\t\tret.rgba[3] = parseFloat(mA[1]) || 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\tparsePaletteValue : function (mixed) {\r\n\t\tvar vals = [];\r\n\r\n\t\tif (typeof mixed === 'string') { // input is a string of space separated color values\r\n\t\t\t// rgb() and rgba() may contain spaces too, so let's find all color values by regex\r\n\t\t\tmixed.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\\(([^)]*)\\)/ig, function (val) {\r\n\t\t\t\tvals.push(val);\r\n\t\t\t});\r\n\t\t} else if (Array.isArray(mixed)) { // input is an array of color values\r\n\t\t\tvals = mixed;\r\n\t\t}\r\n\r\n\t\t// convert all values into uniform color format\r\n\r\n\t\tvar colors = [];\r\n\r\n\t\tfor (var i = 0; i < vals.length; i++) {\r\n\t\t\tvar color = jsc.parseColorString(vals[i]);\r\n\t\t\tif (color) {\r\n\t\t\t\tcolors.push(color);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn colors;\r\n\t},\r\n\r\n\r\n\tcontainsTranparentColor : function (colors) {\r\n\t\tfor (var i = 0; i < colors.length; i++) {\r\n\t\t\tvar a = colors[i].rgba[3];\r\n\t\t\tif (a !== null && a < 1.0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\tisAlphaFormat : function (format) {\r\n\t\tswitch (format.toLowerCase()) {\r\n\t\tcase 'hexa':\r\n\t\tcase 'rgba':\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\t// Canvas scaling for retina displays\r\n\t//\r\n\t// adapted from https://www.html5rocks.com/en/tutorials/canvas/hidpi/\r\n\t//\r\n\tscaleCanvasForHighDPR : function (canvas) {\r\n\t\tvar dpr = window.devicePixelRatio || 1;\r\n\t\tcanvas.width *= dpr;\r\n\t\tcanvas.height *= dpr;\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\t\tctx.scale(dpr, dpr);\r\n\t},\r\n\r\n\r\n\tgenColorPreviewCanvas : function (color, separatorPos, specWidth, scaleForHighDPR) {\r\n\r\n\t\tvar sepW = Math.round(jsc.pub.previewSeparator.length);\r\n\t\tvar sqSize = jsc.pub.chessboardSize;\r\n\t\tvar sqColor1 = jsc.pub.chessboardColor1;\r\n\t\tvar sqColor2 = jsc.pub.chessboardColor2;\r\n\r\n\t\tvar cWidth = specWidth ? specWidth : sqSize * 2;\r\n\t\tvar cHeight = sqSize * 2;\r\n\r\n\t\tvar canvas = jsc.createEl('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\tcanvas.width = cWidth;\r\n\t\tcanvas.height = cHeight;\r\n\t\tif (scaleForHighDPR) {\r\n\t\t\tjsc.scaleCanvasForHighDPR(canvas);\r\n\t\t}\r\n\r\n\t\t// transparency chessboard - background\r\n\t\tctx.fillStyle = sqColor1;\r\n\t\tctx.fillRect(0, 0, cWidth, cHeight);\r\n\r\n\t\t// transparency chessboard - squares\r\n\t\tctx.fillStyle = sqColor2;\r\n\t\tfor (var x = 0; x < cWidth; x += sqSize * 2) {\r\n\t\t\tctx.fillRect(x, 0, sqSize, sqSize);\r\n\t\t\tctx.fillRect(x + sqSize, sqSize, sqSize, sqSize);\r\n\t\t}\r\n\r\n\t\tif (color) {\r\n\t\t\t// actual color in foreground\r\n\t\t\tctx.fillStyle = color;\r\n\t\t\tctx.fillRect(0, 0, cWidth, cHeight);\r\n\t\t}\r\n\r\n\t\tvar start = null;\r\n\t\tswitch (separatorPos) {\r\n\t\t\tcase 'left':\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tctx.clearRect(0, 0, sepW/2, cHeight);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'right':\r\n\t\t\t\tstart = cWidth - sepW;\r\n\t\t\t\tctx.clearRect(cWidth - (sepW/2), 0, sepW/2, cHeight);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif (start !== null) {\r\n\t\t\tctx.lineWidth = 1;\r\n\t\t\tfor (var i = 0; i < jsc.pub.previewSeparator.length; i += 1) {\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.strokeStyle = jsc.pub.previewSeparator[i];\r\n\t\t\t\tctx.moveTo(0.5 + start + i, 0);\r\n\t\t\t\tctx.lineTo(0.5 + start + i, cHeight);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tcanvas: canvas,\r\n\t\t\twidth: cWidth,\r\n\t\t\theight: cHeight,\r\n\t\t};\r\n\t},\r\n\r\n\r\n\t// if position or width is not set => fill the entire element (0%-100%)\r\n\tgenColorPreviewGradient : function (color, position, width) {\r\n\t\tvar params = [];\r\n\r\n\t\tif (position && width) {\r\n\t\t\tparams = [\r\n\t\t\t\t'to ' + {'left':'right', 'right':'left'}[position],\r\n\t\t\t\tcolor + ' 0%',\r\n\t\t\t\tcolor + ' ' + width + 'px',\r\n\t\t\t\t'rgba(0,0,0,0) ' + (width + 1) + 'px',\r\n\t\t\t\t'rgba(0,0,0,0) 100%',\r\n\t\t\t];\r\n\t\t} else {\r\n\t\t\tparams = [\r\n\t\t\t\t'to right',\r\n\t\t\t\tcolor + ' 0%',\r\n\t\t\t\tcolor + ' 100%',\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn jsc.linearGradient.apply(this, params);\r\n\t},\r\n\r\n\r\n\tredrawPosition : function () {\r\n\r\n\t\tif (!jsc.picker || !jsc.picker.owner) {\r\n\t\t\treturn; // picker is not shown\r\n\t\t}\r\n\r\n\t\tvar thisObj = jsc.picker.owner;\r\n\r\n\t\tvar tp, vp;\r\n\r\n\t\tif (thisObj.fixed) {\r\n\t\t\t// Fixed elements are positioned relative to viewport,\r\n\t\t\t// therefore we can ignore the scroll offset\r\n\t\t\ttp = jsc.getElementPos(thisObj.targetElement, true); // target pos\r\n\t\t\tvp = [0, 0]; // view pos\r\n\t\t} else {\r\n\t\t\ttp = jsc.getElementPos(thisObj.targetElement); // target pos\r\n\t\t\tvp = jsc.getViewPos(); // view pos\r\n\t\t}\r\n\r\n\t\tvar ts = jsc.getElementSize(thisObj.targetElement); // target size\r\n\t\tvar vs = jsc.getViewSize(); // view size\r\n\t\tvar pd = jsc.getPickerDims(thisObj);\r\n\t\tvar ps = [pd.borderW, pd.borderH]; // picker outer size\r\n\t\tvar a, b, c;\r\n\t\tswitch (thisObj.position.toLowerCase()) {\r\n\t\t\tcase 'left': a=1; b=0; c=-1; break;\r\n\t\t\tcase 'right':a=1; b=0; c=1; break;\r\n\t\t\tcase 'top': a=0; b=1; c=-1; break;\r\n\t\t\tdefault: a=0; b=1; c=1; break;\r\n\t\t}\r\n\t\tvar l = (ts[b]+ps[b])/2;\r\n\r\n\t\t// compute picker position\r\n\t\tif (!thisObj.smartPosition) {\r\n\t\t\tvar pp = [\r\n\t\t\t\ttp[a],\r\n\t\t\t\ttp[b]+ts[b]-l+l*c\r\n\t\t\t];\r\n\t\t} else {\r\n\t\t\tvar pp = [\r\n\t\t\t\t-vp[a]+tp[a]+ps[a] > vs[a] ?\r\n\t\t\t\t\t(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :\r\n\t\t\t\t\ttp[a],\r\n\t\t\t\t-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?\r\n\t\t\t\t\t(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :\r\n\t\t\t\t\t(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tvar x = pp[a];\r\n\t\tvar y = pp[b];\r\n\t\tvar positionValue = thisObj.fixed ? 'fixed' : 'absolute';\r\n\t\tvar contractShadow =\r\n\t\t\t(pp[0] + ps[0] > tp[0] || pp[0] < tp[0] + ts[0]) &&\r\n\t\t\t(pp[1] + ps[1] < tp[1] + ts[1]);\r\n\r\n\t\tjsc._drawPosition(thisObj, x, y, positionValue, contractShadow);\r\n\t},\r\n\r\n\r\n\t_drawPosition : function (thisObj, x, y, positionValue, contractShadow) {\r\n\t\tvar vShadow = contractShadow ? 0 : thisObj.shadowBlur; // px\r\n\r\n\t\tjsc.picker.wrap.style.position = positionValue;\r\n\t\tjsc.picker.wrap.style.left = x + 'px';\r\n\t\tjsc.picker.wrap.style.top = y + 'px';\r\n\r\n\t\tjsc.setBoxShadow(\r\n\t\t\tjsc.picker.boxS,\r\n\t\t\tthisObj.shadow ?\r\n\t\t\t\tnew jsc.BoxShadow(0, vShadow, thisObj.shadowBlur, 0, thisObj.shadowColor) :\r\n\t\t\t\tnull);\r\n\t},\r\n\r\n\r\n\tgetPickerDims : function (thisObj) {\r\n\t\tvar w = 2 * thisObj.controlBorderWidth + thisObj.width;\r\n\t\tvar h = 2 * thisObj.controlBorderWidth + thisObj.height;\r\n\r\n\t\tvar sliderSpace = 2 * thisObj.controlBorderWidth + 2 * jsc.getControlPadding(thisObj) + thisObj.sliderSize;\r\n\r\n\t\tif (jsc.getSliderChannel(thisObj)) {\r\n\t\t\tw += sliderSpace;\r\n\t\t}\r\n\t\tif (thisObj.hasAlphaChannel()) {\r\n\t\t\tw += sliderSpace;\r\n\t\t}\r\n\r\n\t\tvar pal = jsc.getPaletteDims(thisObj, w);\r\n\r\n\t\tif (pal.height) {\r\n\t\t\th += pal.height + thisObj.padding;\r\n\t\t}\r\n\t\tif (thisObj.closeButton) {\r\n\t\t\th += 2 * thisObj.controlBorderWidth + thisObj.padding + thisObj.buttonHeight;\r\n\t\t}\r\n\r\n\t\tvar pW = w + (2 * thisObj.padding);\r\n\t\tvar pH = h + (2 * thisObj.padding);\r\n\r\n\t\treturn {\r\n\t\t\tcontentW: w,\r\n\t\t\tcontentH: h,\r\n\t\t\tpaddedW: pW,\r\n\t\t\tpaddedH: pH,\r\n\t\t\tborderW: pW + (2 * thisObj.borderWidth),\r\n\t\t\tborderH: pH + (2 * thisObj.borderWidth),\r\n\t\t\tpalette: pal,\r\n\t\t};\r\n\t},\r\n\r\n\r\n\tgetPaletteDims : function (thisObj, width) {\r\n\t\tvar cols = 0, rows = 0, cellW = 0, cellH = 0, height = 0;\r\n\t\tvar sampleCount = thisObj._palette ? thisObj._palette.length : 0;\r\n\r\n\t\tif (sampleCount) {\r\n\t\t\tcols = thisObj.paletteCols;\r\n\t\t\trows = cols > 0 ? Math.ceil(sampleCount / cols) : 0;\r\n\r\n\t\t\t// color sample's dimensions (includes border)\r\n\t\t\tcellW = Math.max(1, Math.floor((width - ((cols - 1) * thisObj.paletteSpacing)) / cols));\r\n\t\t\tcellH = thisObj.paletteHeight ? Math.min(thisObj.paletteHeight, cellW) : cellW;\r\n\t\t}\r\n\r\n\t\tif (rows) {\r\n\t\t\theight =\r\n\t\t\t\trows * cellH +\r\n\t\t\t\t(rows - 1) * thisObj.paletteSpacing;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tcols: cols,\r\n\t\t\trows: rows,\r\n\t\t\tcellW: cellW,\r\n\t\t\tcellH: cellH,\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t};\r\n\t},\r\n\r\n\r\n\tgetControlPadding : function (thisObj) {\r\n\t\treturn Math.max(\r\n\t\t\tthisObj.padding / 2,\r\n\t\t\t(2 * thisObj.pointerBorderWidth + thisObj.pointerThickness) - thisObj.controlBorderWidth\r\n\t\t);\r\n\t},\r\n\r\n\r\n\tgetPadYChannel : function (thisObj) {\r\n\t\tswitch (thisObj.mode.charAt(1).toLowerCase()) {\r\n\t\t\tcase 'v': return 'v'; break;\r\n\t\t}\r\n\t\treturn 's';\r\n\t},\r\n\r\n\r\n\tgetSliderChannel : function (thisObj) {\r\n\t\tif (thisObj.mode.length > 2) {\r\n\t\t\tswitch (thisObj.mode.charAt(2).toLowerCase()) {\r\n\t\t\t\tcase 's': return 's'; break;\r\n\t\t\t\tcase 'v': return 'v'; break;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\r\n\t// calls function specified in picker's property\r\n\ttriggerCallback : function (thisObj, prop) {\r\n\t\tif (!thisObj[prop]) {\r\n\t\t\treturn; // callback func not specified\r\n\t\t}\r\n\t\tvar callback = null;\r\n\r\n\t\tif (typeof thisObj[prop] === 'string') {\r\n\t\t\t// string with code\r\n\t\t\ttry {\r\n\t\t\t\tcallback = new Function (thisObj[prop]);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// function\r\n\t\t\tcallback = thisObj[prop];\r\n\t\t}\r\n\r\n\t\tif (callback) {\r\n\t\t\tcallback.call(thisObj);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// Triggers a color change related event(s) on all picker instances.\r\n\t// It is possible to specify multiple events separated with a space.\r\n\ttriggerGlobal : function (eventNames) {\r\n\t\tvar inst = jsc.getInstances();\r\n\t\tfor (var i = 0; i < inst.length; i += 1) {\r\n\t\t\tinst[i].trigger(eventNames);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t_pointerMoveEvent : {\r\n\t\tmouse: 'mousemove',\r\n\t\ttouch: 'touchmove'\r\n\t},\r\n\t_pointerEndEvent : {\r\n\t\tmouse: 'mouseup',\r\n\t\ttouch: 'touchend'\r\n\t},\r\n\r\n\r\n\t_pointerOrigin : null,\r\n\t_capturedTarget : null,\r\n\r\n\r\n\tonDocumentKeyUp : function (e) {\r\n\t\tif (['Tab', 'Escape'].indexOf(jsc.eventKey(e)) !== -1) {\r\n\t\t\tif (jsc.picker && jsc.picker.owner) {\r\n\t\t\t\tjsc.picker.owner.tryHide();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonWindowResize : function (e) {\r\n\t\tjsc.redrawPosition();\r\n\t},\r\n\r\n\r\n\tonWindowScroll : function (e) {\r\n\t\tjsc.redrawPosition();\r\n\t},\r\n\r\n\r\n\tonParentScroll : function (e) {\r\n\t\t// hide the picker when one of the parent elements is scrolled\r\n\t\tif (jsc.picker && jsc.picker.owner) {\r\n\t\t\tjsc.picker.owner.tryHide();\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonDocumentMouseDown : function (e) {\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tif (target.jscolor && target.jscolor instanceof jsc.pub) { // clicked targetElement -> show picker\r\n\t\t\tif (target.jscolor.showOnClick && !target.disabled) {\r\n\t\t\t\ttarget.jscolor.show();\r\n\t\t\t}\r\n\t\t} else if (jsc.getData(target, 'gui')) { // clicked jscolor's GUI element\r\n\t\t\tvar control = jsc.getData(target, 'control');\r\n\t\t\tif (control) {\r\n\t\t\t\t// jscolor's control\r\n\t\t\t\tjsc.onControlPointerStart(e, target, jsc.getData(target, 'control'), 'mouse');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// mouse is outside the picker's controls -> hide the color picker!\r\n\t\t\tif (jsc.picker && jsc.picker.owner) {\r\n\t\t\t\tjsc.picker.owner.tryHide();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonPickerTouchStart : function (e) {\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tif (jsc.getData(target, 'control')) {\r\n\t\t\tjsc.onControlPointerStart(e, target, jsc.getData(target, 'control'), 'touch');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonControlPointerStart : function (e, target, controlName, pointerType) {\r\n\t\tvar thisObj = jsc.getData(target, 'instance');\r\n\r\n\t\tjsc.preventDefault(e);\r\n\t\tjsc.captureTarget(target);\r\n\r\n\t\tvar registerDragEvents = function (doc, offset) {\r\n\t\t\tjsc.attachGroupEvent('drag', doc, jsc._pointerMoveEvent[pointerType],\r\n\t\t\t\tjsc.onDocumentPointerMove(e, target, controlName, pointerType, offset));\r\n\t\t\tjsc.attachGroupEvent('drag', doc, jsc._pointerEndEvent[pointerType],\r\n\t\t\t\tjsc.onDocumentPointerEnd(e, target, controlName, pointerType));\r\n\t\t};\r\n\r\n\t\tregisterDragEvents(window.document, [0, 0]);\r\n\r\n\t\tif (window.parent && window.frameElement) {\r\n\t\t\tvar rect = window.frameElement.getBoundingClientRect();\r\n\t\t\tvar ofs = [-rect.left, -rect.top];\r\n\t\t\tregisterDragEvents(window.parent.window.document, ofs);\r\n\t\t}\r\n\r\n\t\tvar abs = jsc.getAbsPointerPos(e);\r\n\t\tvar rel = jsc.getRelPointerPos(e);\r\n\t\tjsc._pointerOrigin = {\r\n\t\t\tx: abs.x - rel.x,\r\n\t\t\ty: abs.y - rel.y\r\n\t\t};\r\n\r\n\t\tswitch (controlName) {\r\n\t\tcase 'pad':\r\n\t\t\t// if the value slider is at the bottom, move it up\r\n\t\t\tif (jsc.getSliderChannel(thisObj) === 'v' && thisObj.channels.v === 0) {\r\n\t\t\t\tthisObj.fromHSVA(null, null, 100, null);\r\n\t\t\t}\r\n\t\t\tjsc.setPad(thisObj, e, 0, 0);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'sld':\r\n\t\t\tjsc.setSld(thisObj, e, 0);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'asld':\r\n\t\t\tjsc.setASld(thisObj, e, 0);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tthisObj.trigger('input');\r\n\t},\r\n\r\n\r\n\tonDocumentPointerMove : function (e, target, controlName, pointerType, offset) {\r\n\t\treturn function (e) {\r\n\t\t\tvar thisObj = jsc.getData(target, 'instance');\r\n\t\t\tswitch (controlName) {\r\n\t\t\tcase 'pad':\r\n\t\t\t\tjsc.setPad(thisObj, e, offset[0], offset[1]);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'sld':\r\n\t\t\t\tjsc.setSld(thisObj, e, offset[1]);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'asld':\r\n\t\t\t\tjsc.setASld(thisObj, e, offset[1]);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tthisObj.trigger('input');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonDocumentPointerEnd : function (e, target, controlName, pointerType) {\r\n\t\treturn function (e) {\r\n\t\t\tvar thisObj = jsc.getData(target, 'instance');\r\n\t\t\tjsc.detachGroupEvents('drag');\r\n\t\t\tjsc.releaseTarget();\r\n\r\n\t\t\t// Always trigger changes AFTER detaching outstanding mouse handlers,\r\n\t\t\t// in case some color change that occured in user-defined onChange/onInput handler\r\n\t\t\t// intruded into current mouse events\r\n\t\t\tthisObj.trigger('input');\r\n\t\t\tthisObj.trigger('change');\r\n\t\t};\r\n\t},\r\n\r\n\r\n\tonPaletteSampleClick : function (e) {\r\n\t\tvar target = e.currentTarget;\r\n\t\tvar thisObj = jsc.getData(target, 'instance');\r\n\t\tvar color = jsc.getData(target, 'color');\r\n\r\n\t\t// when format is flexible, use the original format of this color sample\r\n\t\tif (thisObj.format.toLowerCase() === 'any') {\r\n\t\t\tthisObj._setFormat(color.format); // adapt format\r\n\t\t\tif (!jsc.isAlphaFormat(thisObj.getFormat())) {\r\n\t\t\t\tcolor.rgba[3] = 1.0; // when switching to a format that doesn't support alpha, set full opacity\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if this color doesn't specify alpha, use alpha of 1.0 (if applicable)\r\n\t\tif (color.rgba[3] === null) {\r\n\t\t\tif (thisObj.paletteSetsAlpha === true || (thisObj.paletteSetsAlpha === 'auto' && thisObj._paletteHasTransparency)) {\r\n\t\t\t\tcolor.rgba[3] = 1.0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthisObj.fromRGBA.apply(thisObj, color.rgba);\r\n\r\n\t\tthisObj.trigger('input');\r\n\t\tthisObj.trigger('change');\r\n\r\n\t\tif (thisObj.hideOnPaletteClick) {\r\n\t\t\tthisObj.hide();\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tsetPad : function (thisObj, e, ofsX, ofsY) {\r\n\t\tvar pointerAbs = jsc.getAbsPointerPos(e);\r\n\t\tvar x = ofsX + pointerAbs.x - jsc._pointerOrigin.x - thisObj.padding - thisObj.controlBorderWidth;\r\n\t\tvar y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.controlBorderWidth;\r\n\r\n\t\tvar xVal = x * (360 / (thisObj.width - 1));\r\n\t\tvar yVal = 100 - (y * (100 / (thisObj.height - 1)));\r\n\r\n\t\tswitch (jsc.getPadYChannel(thisObj)) {\r\n\t\tcase 's': thisObj.fromHSVA(xVal, yVal, null, null); break;\r\n\t\tcase 'v': thisObj.fromHSVA(xVal, null, yVal, null); break;\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tsetSld : function (thisObj, e, ofsY) {\r\n\t\tvar pointerAbs = jsc.getAbsPointerPos(e);\r\n\t\tvar y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.controlBorderWidth;\r\n\t\tvar yVal = 100 - (y * (100 / (thisObj.height - 1)));\r\n\r\n\t\tswitch (jsc.getSliderChannel(thisObj)) {\r\n\t\tcase 's': thisObj.fromHSVA(null, yVal, null, null); break;\r\n\t\tcase 'v': thisObj.fromHSVA(null, null, yVal, null); break;\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tsetASld : function (thisObj, e, ofsY) {\r\n\t\tvar pointerAbs = jsc.getAbsPointerPos(e);\r\n\t\tvar y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.controlBorderWidth;\r\n\t\tvar yVal = 1.0 - (y * (1.0 / (thisObj.height - 1)));\r\n\r\n\t\tif (yVal < 1.0) {\r\n\t\t\t// if format is flexible and the current format doesn't support alpha, switch to a suitable one\r\n\t\t\tvar fmt = thisObj.getFormat();\r\n\t\t\tif (thisObj.format.toLowerCase() === 'any' && !jsc.isAlphaFormat(fmt)) {\r\n\t\t\t\tthisObj._setFormat(fmt === 'hex' ? 'hexa' : 'rgba');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthisObj.fromHSVA(null, null, null, yVal);\r\n\t},\r\n\r\n\r\n\tcreatePadCanvas : function () {\r\n\r\n\t\tvar ret = {\r\n\t\t\telm: null,\r\n\t\t\tdraw: null\r\n\t\t};\r\n\r\n\t\tvar canvas = jsc.createEl('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\tvar drawFunc = function (width, height, type) {\r\n\t\t\tcanvas.width = width;\r\n\t\t\tcanvas.height = height;\r\n\r\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tvar hGrad = ctx.createLinearGradient(0, 0, canvas.width, 0);\r\n\t\t\thGrad.addColorStop(0 / 6, '#F00');\r\n\t\t\thGrad.addColorStop(1 / 6, '#FF0');\r\n\t\t\thGrad.addColorStop(2 / 6, '#0F0');\r\n\t\t\thGrad.addColorStop(3 / 6, '#0FF');\r\n\t\t\thGrad.addColorStop(4 / 6, '#00F');\r\n\t\t\thGrad.addColorStop(5 / 6, '#F0F');\r\n\t\t\thGrad.addColorStop(6 / 6, '#F00');\r\n\r\n\t\t\tctx.fillStyle = hGrad;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tvar vGrad = ctx.createLinearGradient(0, 0, 0, canvas.height);\r\n\t\t\tswitch (type.toLowerCase()) {\r\n\t\t\tcase 's':\r\n\t\t\t\tvGrad.addColorStop(0, 'rgba(255,255,255,0)');\r\n\t\t\t\tvGrad.addColorStop(1, 'rgba(255,255,255,1)');\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'v':\r\n\t\t\t\tvGrad.addColorStop(0, 'rgba(0,0,0,0)');\r\n\t\t\t\tvGrad.addColorStop(1, 'rgba(0,0,0,1)');\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tctx.fillStyle = vGrad;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\t\t};\r\n\r\n\t\tret.elm = canvas;\r\n\t\tret.draw = drawFunc;\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\r\n\tcreateSliderGradient : function () {\r\n\r\n\t\tvar ret = {\r\n\t\t\telm: null,\r\n\t\t\tdraw: null\r\n\t\t};\r\n\r\n\t\tvar canvas = jsc.createEl('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\tvar drawFunc = function (width, height, color1, color2) {\r\n\t\t\tcanvas.width = width;\r\n\t\t\tcanvas.height = height;\r\n\r\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tvar grad = ctx.createLinearGradient(0, 0, 0, canvas.height);\r\n\t\t\tgrad.addColorStop(0, color1);\r\n\t\t\tgrad.addColorStop(1, color2);\r\n\r\n\t\t\tctx.fillStyle = grad;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\t\t};\r\n\r\n\t\tret.elm = canvas;\r\n\t\tret.draw = drawFunc;\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\r\n\tcreateASliderGradient : function () {\r\n\r\n\t\tvar ret = {\r\n\t\t\telm: null,\r\n\t\t\tdraw: null\r\n\t\t};\r\n\r\n\t\tvar canvas = jsc.createEl('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\tvar drawFunc = function (width, height, color) {\r\n\t\t\tcanvas.width = width;\r\n\t\t\tcanvas.height = height;\r\n\r\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tvar sqSize = canvas.width / 2;\r\n\t\t\tvar sqColor1 = jsc.pub.chessboardColor1;\r\n\t\t\tvar sqColor2 = jsc.pub.chessboardColor2;\r\n\r\n\t\t\t// dark gray background\r\n\t\t\tctx.fillStyle = sqColor1;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tif (sqSize > 0) { // to avoid infinite loop\r\n\t\t\t\tfor (var y = 0; y < canvas.height; y += sqSize * 2) {\r\n\t\t\t\t\t// light gray squares\r\n\t\t\t\t\tctx.fillStyle = sqColor2;\r\n\t\t\t\t\tctx.fillRect(0, y, sqSize, sqSize);\r\n\t\t\t\t\tctx.fillRect(sqSize, y + sqSize, sqSize, sqSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar grad = ctx.createLinearGradient(0, 0, 0, canvas.height);\r\n\t\t\tgrad.addColorStop(0, color);\r\n\t\t\tgrad.addColorStop(1, 'rgba(0,0,0,0)');\r\n\r\n\t\t\tctx.fillStyle = grad;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\t\t};\r\n\r\n\t\tret.elm = canvas;\r\n\t\tret.draw = drawFunc;\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\r\n\tBoxShadow : (function () {\r\n\t\tvar BoxShadow = function (hShadow, vShadow, blur, spread, color, inset) {\r\n\t\t\tthis.hShadow = hShadow;\r\n\t\t\tthis.vShadow = vShadow;\r\n\t\t\tthis.blur = blur;\r\n\t\t\tthis.spread = spread;\r\n\t\t\tthis.color = color;\r\n\t\t\tthis.inset = !!inset;\r\n\t\t};\r\n\r\n\t\tBoxShadow.prototype.toString = function () {\r\n\t\t\tvar vals = [\r\n\t\t\t\tMath.round(this.hShadow) + 'px',\r\n\t\t\t\tMath.round(this.vShadow) + 'px',\r\n\t\t\t\tMath.round(this.blur) + 'px',\r\n\t\t\t\tMath.round(this.spread) + 'px',\r\n\t\t\t\tthis.color\r\n\t\t\t];\r\n\t\t\tif (this.inset) {\r\n\t\t\t\tvals.push('inset');\r\n\t\t\t}\r\n\t\t\treturn vals.join(' ');\r\n\t\t};\r\n\r\n\t\treturn BoxShadow;\r\n\t})(),\r\n\r\n\r\n\tflags : {\r\n\t\tleaveValue : 1 << 0,\r\n\t\tleaveAlpha : 1 << 1,\r\n\t\tleavePreview : 1 << 2,\r\n\t},\r\n\r\n\r\n\tenumOpts : {\r\n\t\tformat: ['auto', 'any', 'hex', 'hexa', 'rgb', 'rgba'],\r\n\t\tpreviewPosition: ['left', 'right'],\r\n\t\tmode: ['hsv', 'hvs', 'hs', 'hv'],\r\n\t\tposition: ['left', 'right', 'top', 'bottom'],\r\n\t\talphaChannel: ['auto', true, false],\r\n\t\tpaletteSetsAlpha: ['auto', true, false],\r\n\t},\r\n\r\n\r\n\tdeprecatedOpts : {\r\n\t\t// : ( can be null)\r\n\t\t'styleElement': 'previewElement',\r\n\t\t'onFineChange': 'onInput',\r\n\t\t'overwriteImportant': 'forceStyle',\r\n\t\t'closable': 'closeButton',\r\n\t\t'insetWidth': 'controlBorderWidth',\r\n\t\t'insetColor': 'controlBorderColor',\r\n\t\t'refine': null,\r\n\t},\r\n\r\n\r\n\tdocsRef : ' ' + 'See https://jscolor.com/docs/',\r\n\r\n\r\n\t//\r\n\t// Usage:\r\n\t// var myPicker = new JSColor( [, ])\r\n\t//\r\n\t// (constructor is accessible via both 'jscolor' and 'JSColor' name)\r\n\t//\r\n\r\n\tpub : function (targetElement, opts) {\r\n\r\n\t\tvar THIS = this;\r\n\r\n\t\tif (!opts) {\r\n\t\t\topts = {};\r\n\t\t}\r\n\r\n\t\tthis.channels = {\r\n\t\t\tr: 255, // red [0-255]\r\n\t\t\tg: 255, // green [0-255]\r\n\t\t\tb: 255, // blue [0-255]\r\n\t\t\th: 0, // hue [0-360]\r\n\t\t\ts: 0, // saturation [0-100]\r\n\t\t\tv: 100, // value (brightness) [0-100]\r\n\t\t\ta: 1.0, // alpha (opacity) [0.0 - 1.0]\r\n\t\t};\r\n\r\n\t\t// General options\r\n\t\t//\r\n\t\tthis.format = 'auto'; // 'auto' | 'any' | 'hex' | 'hexa' | 'rgb' | 'rgba' - Format of the input/output value\r\n\t\tthis.value = undefined; // INITIAL color value in any supported format. To change it later, use method fromString(), fromHSVA(), fromRGBA() or channel()\r\n\t\tthis.alpha = undefined; // INITIAL alpha value. To change it later, call method channel('A', )\r\n\t\tthis.random = false; // whether to randomize the initial color. Either true | false, or an array of ranges: [minV, maxV, minS, maxS, minH, maxH, minA, maxA]\r\n\t\tthis.onChange = undefined; // called when color changes. Value can be either a function or a string with JS code.\r\n\t\tthis.onInput = undefined; // called repeatedly as the color is being changed, e.g. while dragging a slider. Value can be either a function or a string with JS code.\r\n\t\tthis.valueElement = undefined; // element that will be used to display and input the color value\r\n\t\tthis.alphaElement = undefined; // element that will be used to display and input the alpha (opacity) value\r\n\t\tthis.previewElement = undefined; // element that will preview the picked color using CSS background\r\n\t\tthis.previewPosition = 'left'; // 'left' | 'right' - position of the color preview in previewElement\r\n\t\tthis.previewSize = 32; // (px) width of the color preview displayed in previewElement\r\n\t\tthis.previewPadding = 8; // (px) space between color preview and content of the previewElement\r\n\t\tthis.required = true; // whether the associated text input must always contain a color value. If false, the input can be left empty.\r\n\t\tthis.hash = true; // whether to prefix the HEX color code with # symbol (only applicable for HEX format)\r\n\t\tthis.uppercase = true; // whether to show the HEX color code in upper case (only applicable for HEX format)\r\n\t\tthis.forceStyle = true; // whether to overwrite CSS style of the previewElement using !important flag\r\n\r\n\t\t// Color Picker options\r\n\t\t//\r\n\t\tthis.width = 181; // width of the color spectrum (in px)\r\n\t\tthis.height = 101; // height of the color spectrum (in px)\r\n\t\tthis.mode = 'HSV'; // 'HSV' | 'HVS' | 'HS' | 'HV' - layout of the color picker controls\r\n\t\tthis.alphaChannel = 'auto'; // 'auto' | true | false - if alpha channel is enabled, the alpha slider will be visible. If 'auto', it will be determined according to color format\r\n\t\tthis.position = 'bottom'; // 'left' | 'right' | 'top' | 'bottom' - position relative to the target element\r\n\t\tthis.smartPosition = true; // automatically change picker position when there is not enough space for it\r\n\t\tthis.showOnClick = true; // whether to show the picker when user clicks its target element\r\n\t\tthis.hideOnLeave = true; // whether to automatically hide the picker when user leaves its target element (e.g. upon clicking the document)\r\n\t\tthis.palette = []; // colors to be displayed in the palette, specified as an array or a string of space separated color values (in any supported format)\r\n\t\tthis.paletteCols = 10; // number of columns in the palette\r\n\t\tthis.paletteSetsAlpha = 'auto'; // 'auto' | true | false - if true, palette colors that don't specify alpha will set alpha to 1.0\r\n\t\tthis.paletteHeight = 16; // maximum height (px) of a row in the palette\r\n\t\tthis.paletteSpacing = 4; // distance (px) between color samples in the palette\r\n\t\tthis.hideOnPaletteClick = false; // when set to true, clicking the palette will also hide the color picker\r\n\t\tthis.sliderSize = 16; // px\r\n\t\tthis.crossSize = 8; // px\r\n\t\tthis.closeButton = false; // whether to display the Close button\r\n\t\tthis.closeText = 'Close';\r\n\t\tthis.buttonColor = 'rgba(0,0,0,1)'; // CSS color\r\n\t\tthis.buttonHeight = 18; // px\r\n\t\tthis.padding = 12; // px\r\n\t\tthis.backgroundColor = 'rgba(255,255,255,1)'; // CSS color\r\n\t\tthis.borderWidth = 1; // px\r\n\t\tthis.borderColor = 'rgba(187,187,187,1)'; // CSS color\r\n\t\tthis.borderRadius = 8; // px\r\n\t\tthis.controlBorderWidth = 1; // px\r\n\t\tthis.controlBorderColor = 'rgba(187,187,187,1)'; // CSS color\r\n\t\tthis.shadow = true; // whether to display a shadow\r\n\t\tthis.shadowBlur = 15; // px\r\n\t\tthis.shadowColor = 'rgba(0,0,0,0.2)'; // CSS color\r\n\t\tthis.pointerColor = 'rgba(76,76,76,1)'; // CSS color\r\n\t\tthis.pointerBorderWidth = 1; // px\r\n\t\tthis.pointerBorderColor = 'rgba(255,255,255,1)'; // CSS color\r\n\t\tthis.pointerThickness = 2; // px\r\n\t\tthis.zIndex = 5000;\r\n\t\tthis.container = undefined; // where to append the color picker (BODY element by default)\r\n\r\n\t\t// Experimental\r\n\t\t//\r\n\t\tthis.minS = 0; // min allowed saturation (0 - 100)\r\n\t\tthis.maxS = 100; // max allowed saturation (0 - 100)\r\n\t\tthis.minV = 0; // min allowed value (brightness) (0 - 100)\r\n\t\tthis.maxV = 100; // max allowed value (brightness) (0 - 100)\r\n\t\tthis.minA = 0.0; // min allowed alpha (opacity) (0.0 - 1.0)\r\n\t\tthis.maxA = 1.0; // max allowed alpha (opacity) (0.0 - 1.0)\r\n\r\n\r\n\t\t// Getter: option(name)\r\n\t\t// Setter: option(name, value)\r\n\t\t// option({name:value, ...})\r\n\t\t//\r\n\t\tthis.option = function () {\r\n\t\t\tif (!arguments.length) {\r\n\t\t\t\tthrow new Error('No option specified');\r\n\t\t\t}\r\n\r\n\t\t\tif (arguments.length === 1 && typeof arguments[0] === 'string') {\r\n\t\t\t\t// getting a single option\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn getOption(arguments[0]);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t} else if (arguments.length >= 2 && typeof arguments[0] === 'string') {\r\n\t\t\t\t// setting a single option\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (!setOption(arguments[0], arguments[1])) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.redraw(); // immediately redraws the picker, if it's displayed\r\n\t\t\t\tthis.exposeColor(); // in case some preview-related or format-related option was changed\r\n\t\t\t\treturn true;\r\n\r\n\t\t\t} else if (arguments.length === 1 && typeof arguments[0] === 'object') {\r\n\t\t\t\t// setting multiple options\r\n\t\t\t\tvar opts = arguments[0];\r\n\t\t\t\tvar success = true;\r\n\t\t\t\tfor (var opt in opts) {\r\n\t\t\t\t\tif (opts.hasOwnProperty(opt)) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tif (!setOption(opt, opts[opt])) {\r\n\t\t\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.redraw(); // immediately redraws the picker, if it's displayed\r\n\t\t\t\tthis.exposeColor(); // in case some preview-related or format-related option was changed\r\n\t\t\t\treturn success;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error('Invalid arguments');\r\n\t\t}\r\n\r\n\r\n\t\t// Getter: channel(name)\r\n\t\t// Setter: channel(name, value)\r\n\t\t//\r\n\t\tthis.channel = function (name, value) {\r\n\t\t\tif (typeof name !== 'string') {\r\n\t\t\t\tthrow new Error('Invalid value for channel name: ' + name);\r\n\t\t\t}\r\n\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\t// getting channel value\r\n\t\t\t\tif (!this.channels.hasOwnProperty(name.toLowerCase())) {\r\n\t\t\t\t\tconsole.warn('Getting unknown channel: ' + name);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn this.channels[name.toLowerCase()];\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// setting channel value\r\n\t\t\t\tvar res = false;\r\n\t\t\t\tswitch (name.toLowerCase()) {\r\n\t\t\t\t\tcase 'r': res = this.fromRGBA(value, null, null, null); break;\r\n\t\t\t\t\tcase 'g': res = this.fromRGBA(null, value, null, null); break;\r\n\t\t\t\t\tcase 'b': res = this.fromRGBA(null, null, value, null); break;\r\n\t\t\t\t\tcase 'h': res = this.fromHSVA(value, null, null, null); break;\r\n\t\t\t\t\tcase 's': res = this.fromHSVA(null, value, null, null); break;\r\n\t\t\t\t\tcase 'v': res = this.fromHSVA(null, null, value, null); break;\r\n\t\t\t\t\tcase 'a': res = this.fromHSVA(null, null, null, value); break;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tconsole.warn('Setting unknown channel: ' + name);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (res) {\r\n\t\t\t\t\tthis.redraw(); // immediately redraws the picker, if it's displayed\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\t// Triggers given input event(s) by:\r\n\t\t// - executing on callback specified as picker's option\r\n\t\t// - triggering standard DOM event listeners attached to the value element\r\n\t\t//\r\n\t\t// It is possible to specify multiple events separated with a space.\r\n\t\t//\r\n\t\tthis.trigger = function (eventNames) {\r\n\t\t\tvar evs = jsc.strList(eventNames);\r\n\t\t\tfor (var i = 0; i < evs.length; i += 1) {\r\n\t\t\t\tvar ev = evs[i].toLowerCase();\r\n\r\n\t\t\t\t// trigger a callback\r\n\t\t\t\tvar callbackProp = null;\r\n\t\t\t\tswitch (ev) {\r\n\t\t\t\t\tcase 'input': callbackProp = 'onInput'; break;\r\n\t\t\t\t\tcase 'change': callbackProp = 'onChange'; break;\r\n\t\t\t\t}\r\n\t\t\t\tif (callbackProp) {\r\n\t\t\t\t\tjsc.triggerCallback(this, callbackProp);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// trigger standard DOM event listeners on the value element\r\n\t\t\t\tjsc.triggerInputEvent(this.valueElement, ev, true, true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\t// h: 0-360\r\n\t\t// s: 0-100\r\n\t\t// v: 0-100\r\n\t\t// a: 0.0-1.0\r\n\t\t//\r\n\t\tthis.fromHSVA = function (h, s, v, a, flags) { // null = don't change\r\n\t\t\tif (h === undefined) { h = null; }\r\n\t\t\tif (s === undefined) { s = null; }\r\n\t\t\tif (v === undefined) { v = null; }\r\n\t\t\tif (a === undefined) { a = null; }\r\n\r\n\t\t\tif (h !== null) {\r\n\t\t\t\tif (isNaN(h)) { return false; }\r\n\t\t\t\tthis.channels.h = Math.max(0, Math.min(360, h));\r\n\t\t\t}\r\n\t\t\tif (s !== null) {\r\n\t\t\t\tif (isNaN(s)) { return false; }\r\n\t\t\t\tthis.channels.s = Math.max(0, Math.min(100, this.maxS, s), this.minS);\r\n\t\t\t}\r\n\t\t\tif (v !== null) {\r\n\t\t\t\tif (isNaN(v)) { return false; }\r\n\t\t\t\tthis.channels.v = Math.max(0, Math.min(100, this.maxV, v), this.minV);\r\n\t\t\t}\r\n\t\t\tif (a !== null) {\r\n\t\t\t\tif (isNaN(a)) { return false; }\r\n\t\t\t\tthis.channels.a = this.hasAlphaChannel() ?\r\n\t\t\t\t\tMath.max(0, Math.min(1, this.maxA, a), this.minA) :\r\n\t\t\t\t\t1.0; // if alpha channel is disabled, the color should stay 100% opaque\r\n\t\t\t}\r\n\r\n\t\t\tvar rgb = jsc.HSV_RGB(\r\n\t\t\t\tthis.channels.h,\r\n\t\t\t\tthis.channels.s,\r\n\t\t\t\tthis.channels.v\r\n\t\t\t);\r\n\t\t\tthis.channels.r = rgb[0];\r\n\t\t\tthis.channels.g = rgb[1];\r\n\t\t\tthis.channels.b = rgb[2];\r\n\r\n\t\t\tthis.exposeColor(flags);\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\r\n\t\t// r: 0-255\r\n\t\t// g: 0-255\r\n\t\t// b: 0-255\r\n\t\t// a: 0.0-1.0\r\n\t\t//\r\n\t\tthis.fromRGBA = function (r, g, b, a, flags) { // null = don't change\r\n\t\t\tif (r === undefined) { r = null; }\r\n\t\t\tif (g === undefined) { g = null; }\r\n\t\t\tif (b === undefined) { b = null; }\r\n\t\t\tif (a === undefined) { a = null; }\r\n\r\n\t\t\tif (r !== null) {\r\n\t\t\t\tif (isNaN(r)) { return false; }\r\n\t\t\t\tr = Math.max(0, Math.min(255, r));\r\n\t\t\t}\r\n\t\t\tif (g !== null) {\r\n\t\t\t\tif (isNaN(g)) { return false; }\r\n\t\t\t\tg = Math.max(0, Math.min(255, g));\r\n\t\t\t}\r\n\t\t\tif (b !== null) {\r\n\t\t\t\tif (isNaN(b)) { return false; }\r\n\t\t\t\tb = Math.max(0, Math.min(255, b));\r\n\t\t\t}\r\n\t\t\tif (a !== null) {\r\n\t\t\t\tif (isNaN(a)) { return false; }\r\n\t\t\t\tthis.channels.a = this.hasAlphaChannel() ?\r\n\t\t\t\t\tMath.max(0, Math.min(1, this.maxA, a), this.minA) :\r\n\t\t\t\t\t1.0; // if alpha channel is disabled, the color should stay 100% opaque\r\n\t\t\t}\r\n\r\n\t\t\tvar hsv = jsc.RGB_HSV(\r\n\t\t\t\tr===null ? this.channels.r : r,\r\n\t\t\t\tg===null ? this.channels.g : g,\r\n\t\t\t\tb===null ? this.channels.b : b\r\n\t\t\t);\r\n\t\t\tif (hsv[0] !== null) {\r\n\t\t\t\tthis.channels.h = Math.max(0, Math.min(360, hsv[0]));\r\n\t\t\t}\r\n\t\t\tif (hsv[2] !== 0) { // fully black color stays black through entire saturation range, so let's not change saturation\r\n\t\t\t\tthis.channels.s = Math.max(0, this.minS, Math.min(100, this.maxS, hsv[1]));\r\n\t\t\t}\r\n\t\t\tthis.channels.v = Math.max(0, this.minV, Math.min(100, this.maxV, hsv[2]));\r\n\r\n\t\t\t// update RGB according to final HSV, as some values might be trimmed\r\n\t\t\tvar rgb = jsc.HSV_RGB(this.channels.h, this.channels.s, this.channels.v);\r\n\t\t\tthis.channels.r = rgb[0];\r\n\t\t\tthis.channels.g = rgb[1];\r\n\t\t\tthis.channels.b = rgb[2];\r\n\r\n\t\t\tthis.exposeColor(flags);\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\r\n\t\t// DEPRECATED. Use .fromHSVA() instead\r\n\t\t//\r\n\t\tthis.fromHSV = function (h, s, v, flags) {\r\n\t\t\tconsole.warn('fromHSV() method is DEPRECATED. Using fromHSVA() instead.' + jsc.docsRef);\r\n\t\t\treturn this.fromHSVA(h, s, v, null, flags);\r\n\t\t};\r\n\r\n\r\n\t\t// DEPRECATED. Use .fromRGBA() instead\r\n\t\t//\r\n\t\tthis.fromRGB = function (r, g, b, flags) {\r\n\t\t\tconsole.warn('fromRGB() method is DEPRECATED. Using fromRGBA() instead.' + jsc.docsRef);\r\n\t\t\treturn this.fromRGBA(r, g, b, null, flags);\r\n\t\t};\r\n\r\n\r\n\t\tthis.fromString = function (str, flags) {\r\n\t\t\tif (!this.required && str.trim() === '') {\r\n\t\t\t\t// setting empty string to an optional color input\r\n\t\t\t\tthis.setPreviewElementBg(null);\r\n\t\t\t\tthis.setValueElementValue('');\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tvar color = jsc.parseColorString(str);\r\n\t\t\tif (!color) {\r\n\t\t\t\treturn false; // could not parse\r\n\t\t\t}\r\n\t\t\tif (this.format.toLowerCase() === 'any') {\r\n\t\t\t\tthis._setFormat(color.format); // adapt format\r\n\t\t\t\tif (!jsc.isAlphaFormat(this.getFormat())) {\r\n\t\t\t\t\tcolor.rgba[3] = 1.0; // when switching to a format that doesn't support alpha, set full opacity\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.fromRGBA(\r\n\t\t\t\tcolor.rgba[0],\r\n\t\t\t\tcolor.rgba[1],\r\n\t\t\t\tcolor.rgba[2],\r\n\t\t\t\tcolor.rgba[3],\r\n\t\t\t\tflags\r\n\t\t\t);\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\r\n\t\tthis.randomize = function (minV, maxV, minS, maxS, minH, maxH, minA, maxA) {\r\n\t\t\tif (minV === undefined) { minV = 0; }\r\n\t\t\tif (maxV === undefined) { maxV = 100; }\r\n\t\t\tif (minS === undefined) { minS = 0; }\r\n\t\t\tif (maxS === undefined) { maxS = 100; }\r\n\t\t\tif (minH === undefined) { minH = 0; }\r\n\t\t\tif (maxH === undefined) { maxH = 359; }\r\n\t\t\tif (minA === undefined) { minA = 1; }\r\n\t\t\tif (maxA === undefined) { maxA = 1; }\r\n\r\n\t\t\tthis.fromHSVA(\r\n\t\t\t\tminH + Math.floor(Math.random() * (maxH - minH + 1)),\r\n\t\t\t\tminS + Math.floor(Math.random() * (maxS - minS + 1)),\r\n\t\t\t\tminV + Math.floor(Math.random() * (maxV - minV + 1)),\r\n\t\t\t\t((100 * minA) + Math.floor(Math.random() * (100 * (maxA - minA) + 1))) / 100\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toString = function (format) {\r\n\t\t\tif (format === undefined) {\r\n\t\t\t\tformat = this.getFormat(); // format not specified -> use the current format\r\n\t\t\t}\r\n\t\t\tswitch (format.toLowerCase()) {\r\n\t\t\t\tcase 'hex': return this.toHEXString(); break;\r\n\t\t\t\tcase 'hexa': return this.toHEXAString(); break;\r\n\t\t\t\tcase 'rgb': return this.toRGBString(); break;\r\n\t\t\t\tcase 'rgba': return this.toRGBAString(); break;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\r\n\t\tthis.toHEXString = function () {\r\n\t\t\treturn jsc.hexColor(\r\n\t\t\t\tthis.channels.r,\r\n\t\t\t\tthis.channels.g,\r\n\t\t\t\tthis.channels.b\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toHEXAString = function () {\r\n\t\t\treturn jsc.hexaColor(\r\n\t\t\t\tthis.channels.r,\r\n\t\t\t\tthis.channels.g,\r\n\t\t\t\tthis.channels.b,\r\n\t\t\t\tthis.channels.a\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toRGBString = function () {\r\n\t\t\treturn jsc.rgbColor(\r\n\t\t\t\tthis.channels.r,\r\n\t\t\t\tthis.channels.g,\r\n\t\t\t\tthis.channels.b\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toRGBAString = function () {\r\n\t\t\treturn jsc.rgbaColor(\r\n\t\t\t\tthis.channels.r,\r\n\t\t\t\tthis.channels.g,\r\n\t\t\t\tthis.channels.b,\r\n\t\t\t\tthis.channels.a\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toGrayscale = function () {\r\n\t\t\treturn (\r\n\t\t\t\t0.213 * this.channels.r +\r\n\t\t\t\t0.715 * this.channels.g +\r\n\t\t\t\t0.072 * this.channels.b\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toCanvas = function () {\r\n\t\t\treturn jsc.genColorPreviewCanvas(this.toRGBAString()).canvas;\r\n\t\t};\r\n\r\n\r\n\t\tthis.toDataURL = function () {\r\n\t\t\treturn this.toCanvas().toDataURL();\r\n\t\t};\r\n\r\n\r\n\t\tthis.toBackground = function () {\r\n\t\t\treturn jsc.pub.background(this.toRGBAString());\r\n\t\t};\r\n\r\n\r\n\t\tthis.isLight = function () {\r\n\t\t\treturn this.toGrayscale() > 255 / 2;\r\n\t\t};\r\n\r\n\r\n\t\tthis.hide = function () {\r\n\t\t\tif (isPickerOwner()) {\r\n\t\t\t\tdetachPicker();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.show = function () {\r\n\t\t\tdrawPicker();\r\n\t\t};\r\n\r\n\r\n\t\tthis.redraw = function () {\r\n\t\t\tif (isPickerOwner()) {\r\n\t\t\t\tdrawPicker();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.getFormat = function () {\r\n\t\t\treturn this._currentFormat;\r\n\t\t};\r\n\r\n\r\n\t\tthis._setFormat = function (format) {\r\n\t\t\tthis._currentFormat = format.toLowerCase();\r\n\t\t};\r\n\r\n\r\n\t\tthis.hasAlphaChannel = function () {\r\n\t\t\tif (this.alphaChannel === 'auto') {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tthis.format.toLowerCase() === 'any' || // format can change on the fly (e.g. from hex to rgba), so let's consider the alpha channel enabled\r\n\t\t\t\t\tjsc.isAlphaFormat(this.getFormat()) || // the current format supports alpha channel\r\n\t\t\t\t\tthis.alpha !== undefined || // initial alpha value is set, so we're working with alpha channel\r\n\t\t\t\t\tthis.alphaElement !== undefined // the alpha value is redirected, so we're working with alpha channel\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.alphaChannel; // the alpha channel is explicitly set\r\n\t\t};\r\n\r\n\r\n\t\tthis.processValueInput = function (str) {\r\n\t\t\tif (!this.fromString(str)) {\r\n\t\t\t\t// could not parse the color value - let's just expose the current color\r\n\t\t\t\tthis.exposeColor();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.processAlphaInput = function (str) {\r\n\t\t\tif (!this.fromHSVA(null, null, null, parseFloat(str))) {\r\n\t\t\t\t// could not parse the alpha value - let's just expose the current color\r\n\t\t\t\tthis.exposeColor();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.exposeColor = function (flags) {\r\n\t\t\tvar colorStr = this.toString();\r\n\t\t\tvar fmt = this.getFormat();\r\n\r\n\t\t\t// reflect current color in data- attribute\r\n\t\t\tjsc.setDataAttr(this.targetElement, 'current-color', colorStr);\r\n\r\n\t\t\tif (!(flags & jsc.flags.leaveValue) && this.valueElement) {\r\n\t\t\t\tif (fmt === 'hex' || fmt === 'hexa') {\r\n\t\t\t\t\tif (!this.uppercase) { colorStr = colorStr.toLowerCase(); }\r\n\t\t\t\t\tif (!this.hash) { colorStr = colorStr.replace(/^#/, ''); }\r\n\t\t\t\t}\r\n\t\t\t\tthis.setValueElementValue(colorStr);\r\n\t\t\t}\r\n\r\n\t\t\tif (!(flags & jsc.flags.leaveAlpha) && this.alphaElement) {\r\n\t\t\t\tvar alphaVal = Math.round(this.channels.a * 100) / 100;\r\n\t\t\t\tthis.setAlphaElementValue(alphaVal);\r\n\t\t\t}\r\n\r\n\t\t\tif (!(flags & jsc.flags.leavePreview) && this.previewElement) {\r\n\t\t\t\tvar previewPos = null; // 'left' | 'right' (null -> fill the entire element)\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tjsc.isTextInput(this.previewElement) || // text input\r\n\t\t\t\t\t(jsc.isButton(this.previewElement) && !jsc.isButtonEmpty(this.previewElement)) // button with text\r\n\t\t\t\t) {\r\n\t\t\t\t\tpreviewPos = this.previewPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setPreviewElementBg(this.toRGBAString());\r\n\t\t\t}\r\n\r\n\t\t\tif (isPickerOwner()) {\r\n\t\t\t\tredrawPad();\r\n\t\t\t\tredrawSld();\r\n\t\t\t\tredrawASld();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.setPreviewElementBg = function (color) {\r\n\t\t\tif (!this.previewElement) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar position = null; // color preview position: null | 'left' | 'right'\r\n\t\t\tvar width = null; // color preview width: px | null = fill the entire element\r\n\t\t\tif (\r\n\t\t\t\tjsc.isTextInput(this.previewElement) || // text input\r\n\t\t\t\t(jsc.isButton(this.previewElement) && !jsc.isButtonEmpty(this.previewElement)) // button with text\r\n\t\t\t) {\r\n\t\t\t\tposition = this.previewPosition;\r\n\t\t\t\twidth = this.previewSize;\r\n\t\t\t}\r\n\r\n\t\t\tvar backgrounds = [];\r\n\r\n\t\t\tif (!color) {\r\n\t\t\t\t// there is no color preview to display -> let's remove any previous background image\r\n\t\t\t\tbackgrounds.push({\r\n\t\t\t\t\timage: 'none',\r\n\t\t\t\t\tposition: 'left top',\r\n\t\t\t\t\tsize: 'auto',\r\n\t\t\t\t\trepeat: 'no-repeat',\r\n\t\t\t\t\torigin: 'padding-box',\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// CSS gradient for background color preview\r\n\t\t\t\tbackgrounds.push({\r\n\t\t\t\t\timage: jsc.genColorPreviewGradient(\r\n\t\t\t\t\t\tcolor,\r\n\t\t\t\t\t\tposition,\r\n\t\t\t\t\t\twidth ? width - jsc.pub.previewSeparator.length : null\r\n\t\t\t\t\t),\r\n\t\t\t\t\tposition: 'left top',\r\n\t\t\t\t\tsize: 'auto',\r\n\t\t\t\t\trepeat: position ? 'repeat-y' : 'repeat',\r\n\t\t\t\t\torigin: 'padding-box',\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// data URL of generated PNG image with a gray transparency chessboard\r\n\t\t\t\tvar preview = jsc.genColorPreviewCanvas(\r\n\t\t\t\t\t'rgba(0,0,0,0)',\r\n\t\t\t\t\tposition ? {'left':'right', 'right':'left'}[position] : null,\r\n\t\t\t\t\twidth,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t\tbackgrounds.push({\r\n\t\t\t\t\timage: 'url(\\'' + preview.canvas.toDataURL() + '\\')',\r\n\t\t\t\t\tposition: (position || 'left') + ' top',\r\n\t\t\t\t\tsize: preview.width + 'px ' + preview.height + 'px',\r\n\t\t\t\t\trepeat: position ? 'repeat-y' : 'repeat',\r\n\t\t\t\t\torigin: 'padding-box',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tvar bg = {\r\n\t\t\t\timage: [],\r\n\t\t\t\tposition: [],\r\n\t\t\t\tsize: [],\r\n\t\t\t\trepeat: [],\r\n\t\t\t\torigin: [],\r\n\t\t\t};\r\n\t\t\tfor (var i = 0; i < backgrounds.length; i += 1) {\r\n\t\t\t\tbg.image.push(backgrounds[i].image);\r\n\t\t\t\tbg.position.push(backgrounds[i].position);\r\n\t\t\t\tbg.size.push(backgrounds[i].size);\r\n\t\t\t\tbg.repeat.push(backgrounds[i].repeat);\r\n\t\t\t\tbg.origin.push(backgrounds[i].origin);\r\n\t\t\t}\r\n\r\n\t\t\t// set previewElement's background-images\r\n\t\t\tvar sty = {\r\n\t\t\t\t'background-image': bg.image.join(', '),\r\n\t\t\t\t'background-position': bg.position.join(', '),\r\n\t\t\t\t'background-size': bg.size.join(', '),\r\n\t\t\t\t'background-repeat': bg.repeat.join(', '),\r\n\t\t\t\t'background-origin': bg.origin.join(', '),\r\n\t\t\t};\r\n\t\t\tjsc.setStyle(this.previewElement, sty, this.forceStyle);\r\n\r\n\r\n\t\t\t// set/restore previewElement's padding\r\n\t\t\tvar padding = {\r\n\t\t\t\tleft: null,\r\n\t\t\t\tright: null,\r\n\t\t\t};\r\n\t\t\tif (position) {\r\n\t\t\t\tpadding[position] = (this.previewSize + this.previewPadding) + 'px';\r\n\t\t\t}\r\n\r\n\t\t\tvar sty = {\r\n\t\t\t\t'padding-left': padding.left,\r\n\t\t\t\t'padding-right': padding.right,\r\n\t\t\t};\r\n\t\t\tjsc.setStyle(this.previewElement, sty, this.forceStyle, true);\r\n\t\t};\r\n\r\n\r\n\t\tthis.setValueElementValue = function (str) {\r\n\t\t\tif (this.valueElement) {\r\n\t\t\t\tif (jsc.nodeName(this.valueElement) === 'input') {\r\n\t\t\t\t\tthis.valueElement.value = str;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.valueElement.innerHTML = str;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.setAlphaElementValue = function (str) {\r\n\t\t\tif (this.alphaElement) {\r\n\t\t\t\tif (jsc.nodeName(this.alphaElement) === 'input') {\r\n\t\t\t\t\tthis.alphaElement.value = str;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.alphaElement.innerHTML = str;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis._processParentElementsInDOM = function () {\r\n\t\t\tif (this._parentElementsProcessed) { return; }\r\n\t\t\tthis._parentElementsProcessed = true;\r\n\r\n\t\t\tvar elm = this.targetElement;\r\n\t\t\tdo {\r\n\t\t\t\t// If the target element or one of its parent nodes has fixed position,\r\n\t\t\t\t// then use fixed positioning instead\r\n\t\t\t\tvar compStyle = jsc.getCompStyle(elm);\r\n\t\t\t\tif (compStyle.position && compStyle.position.toLowerCase() === 'fixed') {\r\n\t\t\t\t\tthis.fixed = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elm !== this.targetElement) {\r\n\t\t\t\t\t// Ensure to attach onParentScroll only once to each parent element\r\n\t\t\t\t\t// (multiple targetElements can share the same parent nodes)\r\n\t\t\t\t\t//\r\n\t\t\t\t\t// Note: It's not just offsetParents that can be scrollable,\r\n\t\t\t\t\t// that's why we loop through all parent nodes\r\n\t\t\t\t\tif (!jsc.getData(elm, 'hasScrollListener')) {\r\n\t\t\t\t\t\telm.addEventListener('scroll', jsc.onParentScroll, false);\r\n\t\t\t\t\t\tjsc.setData(elm, 'hasScrollListener', true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} while ((elm = elm.parentNode) && jsc.nodeName(elm) !== 'body');\r\n\t\t};\r\n\r\n\r\n\t\tthis.tryHide = function () {\r\n\t\t\tif (this.hideOnLeave) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.set__palette = function (val) {\r\n\t\t\tthis.palette = val;\r\n\t\t\tthis._palette = jsc.parsePaletteValue(val);\r\n\t\t\tthis._paletteHasTransparency = jsc.containsTranparentColor(this._palette);\r\n\t\t};\r\n\r\n\r\n\t\tfunction setOption (option, value) {\r\n\t\t\tif (typeof option !== 'string') {\r\n\t\t\t\tthrow new Error('Invalid value for option name: ' + option);\r\n\t\t\t}\r\n\r\n\t\t\t// enum option\r\n\t\t\tif (jsc.enumOpts.hasOwnProperty(option)) {\r\n\t\t\t\tif (typeof value === 'string') { // enum string values are case insensitive\r\n\t\t\t\t\tvalue = value.toLowerCase();\r\n\t\t\t\t}\r\n\t\t\t\tif (jsc.enumOpts[option].indexOf(value) === -1) {\r\n\t\t\t\t\tthrow new Error('Option \\'' + option + '\\' has invalid value: ' + value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated option\r\n\t\t\tif (jsc.deprecatedOpts.hasOwnProperty(option)) {\r\n\t\t\t\tvar oldOpt = option;\r\n\t\t\t\tvar newOpt = jsc.deprecatedOpts[option];\r\n\t\t\t\tif (newOpt) {\r\n\t\t\t\t\t// if we have a new name for this option, let's log a warning and use the new name\r\n\t\t\t\t\tconsole.warn('Option \\'%s\\' is DEPRECATED, using \\'%s\\' instead.' + jsc.docsRef, oldOpt, newOpt);\r\n\t\t\t\t\toption = newOpt;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// new name not available for the option\r\n\t\t\t\t\tthrow new Error('Option \\'' + option + '\\' is DEPRECATED');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar setter = 'set__' + option;\r\n\r\n\t\t\tif (typeof THIS[setter] === 'function') { // a setter exists for this option\r\n\t\t\t\tTHIS[setter](value);\r\n\t\t\t\treturn true;\r\n\r\n\t\t\t} else if (option in THIS) { // option exists as a property\r\n\t\t\t\tTHIS[option] = value;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error('Unrecognized configuration option: ' + option);\r\n\t\t}\r\n\r\n\r\n\t\tfunction getOption (option) {\r\n\t\t\tif (typeof option !== 'string') {\r\n\t\t\t\tthrow new Error('Invalid value for option name: ' + option);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated option\r\n\t\t\tif (jsc.deprecatedOpts.hasOwnProperty(option)) {\r\n\t\t\t\tvar oldOpt = option;\r\n\t\t\t\tvar newOpt = jsc.deprecatedOpts[option];\r\n\t\t\t\tif (newOpt) {\r\n\t\t\t\t\t// if we have a new name for this option, let's log a warning and use the new name\r\n\t\t\t\t\tconsole.warn('Option \\'%s\\' is DEPRECATED, using \\'%s\\' instead.' + jsc.docsRef, oldOpt, newOpt);\r\n\t\t\t\t\toption = newOpt;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// new name not available for the option\r\n\t\t\t\t\tthrow new Error('Option \\'' + option + '\\' is DEPRECATED');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar getter = 'get__' + option;\r\n\r\n\t\t\tif (typeof THIS[getter] === 'function') { // a getter exists for this option\r\n\t\t\t\treturn THIS[getter](value);\r\n\r\n\t\t\t} else if (option in THIS) { // option exists as a property\r\n\t\t\t\treturn THIS[option];\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error('Unrecognized configuration option: ' + option);\r\n\t\t}\r\n\r\n\r\n\t\tfunction detachPicker () {\r\n\t\t\tjsc.removeClass(THIS.targetElement, jsc.pub.activeClassName);\r\n\t\t\tjsc.picker.wrap.parentNode.removeChild(jsc.picker.wrap);\r\n\t\t\tdelete jsc.picker.owner;\r\n\t\t}\r\n\r\n\r\n\t\tfunction drawPicker () {\r\n\r\n\t\t\t// At this point, when drawing the picker, we know what the parent elements are\r\n\t\t\t// and we can do all related DOM operations, such as registering events on them\r\n\t\t\t// or checking their positioning\r\n\t\t\tTHIS._processParentElementsInDOM();\r\n\r\n\t\t\tif (!jsc.picker) {\r\n\t\t\t\tjsc.picker = {\r\n\t\t\t\t\towner: null, // owner picker instance\r\n\t\t\t\t\twrap : jsc.createEl('div'),\r\n\t\t\t\t\tbox : jsc.createEl('div'),\r\n\t\t\t\t\tboxS : jsc.createEl('div'), // shadow area\r\n\t\t\t\t\tboxB : jsc.createEl('div'), // border\r\n\t\t\t\t\tpad : jsc.createEl('div'),\r\n\t\t\t\t\tpadB : jsc.createEl('div'), // border\r\n\t\t\t\t\tpadM : jsc.createEl('div'), // mouse/touch area\r\n\t\t\t\t\tpadCanvas : jsc.createPadCanvas(),\r\n\t\t\t\t\tcross : jsc.createEl('div'),\r\n\t\t\t\t\tcrossBY : jsc.createEl('div'), // border Y\r\n\t\t\t\t\tcrossBX : jsc.createEl('div'), // border X\r\n\t\t\t\t\tcrossLY : jsc.createEl('div'), // line Y\r\n\t\t\t\t\tcrossLX : jsc.createEl('div'), // line X\r\n\t\t\t\t\tsld : jsc.createEl('div'), // slider\r\n\t\t\t\t\tsldB : jsc.createEl('div'), // border\r\n\t\t\t\t\tsldM : jsc.createEl('div'), // mouse/touch area\r\n\t\t\t\t\tsldGrad : jsc.createSliderGradient(),\r\n\t\t\t\t\tsldPtrS : jsc.createEl('div'), // slider pointer spacer\r\n\t\t\t\t\tsldPtrIB : jsc.createEl('div'), // slider pointer inner border\r\n\t\t\t\t\tsldPtrMB : jsc.createEl('div'), // slider pointer middle border\r\n\t\t\t\t\tsldPtrOB : jsc.createEl('div'), // slider pointer outer border\r\n\t\t\t\t\tasld : jsc.createEl('div'), // alpha slider\r\n\t\t\t\t\tasldB : jsc.createEl('div'), // border\r\n\t\t\t\t\tasldM : jsc.createEl('div'), // mouse/touch area\r\n\t\t\t\t\tasldGrad : jsc.createASliderGradient(),\r\n\t\t\t\t\tasldPtrS : jsc.createEl('div'), // slider pointer spacer\r\n\t\t\t\t\tasldPtrIB : jsc.createEl('div'), // slider pointer inner border\r\n\t\t\t\t\tasldPtrMB : jsc.createEl('div'), // slider pointer middle border\r\n\t\t\t\t\tasldPtrOB : jsc.createEl('div'), // slider pointer outer border\r\n\t\t\t\t\tpal : jsc.createEl('div'), // palette\r\n\t\t\t\t\tbtn : jsc.createEl('div'),\r\n\t\t\t\t\tbtnT : jsc.createEl('span'), // text\r\n\t\t\t\t};\r\n\r\n\t\t\t\tjsc.picker.pad.appendChild(jsc.picker.padCanvas.elm);\r\n\t\t\t\tjsc.picker.padB.appendChild(jsc.picker.pad);\r\n\t\t\t\tjsc.picker.cross.appendChild(jsc.picker.crossBY);\r\n\t\t\t\tjsc.picker.cross.appendChild(jsc.picker.crossBX);\r\n\t\t\t\tjsc.picker.cross.appendChild(jsc.picker.crossLY);\r\n\t\t\t\tjsc.picker.cross.appendChild(jsc.picker.crossLX);\r\n\t\t\t\tjsc.picker.padB.appendChild(jsc.picker.cross);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.padB);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.padM);\r\n\r\n\t\t\t\tjsc.picker.sld.appendChild(jsc.picker.sldGrad.elm);\r\n\t\t\t\tjsc.picker.sldB.appendChild(jsc.picker.sld);\r\n\t\t\t\tjsc.picker.sldB.appendChild(jsc.picker.sldPtrOB);\r\n\t\t\t\tjsc.picker.sldPtrOB.appendChild(jsc.picker.sldPtrMB);\r\n\t\t\t\tjsc.picker.sldPtrMB.appendChild(jsc.picker.sldPtrIB);\r\n\t\t\t\tjsc.picker.sldPtrIB.appendChild(jsc.picker.sldPtrS);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.sldB);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.sldM);\r\n\r\n\t\t\t\tjsc.picker.asld.appendChild(jsc.picker.asldGrad.elm);\r\n\t\t\t\tjsc.picker.asldB.appendChild(jsc.picker.asld);\r\n\t\t\t\tjsc.picker.asldB.appendChild(jsc.picker.asldPtrOB);\r\n\t\t\t\tjsc.picker.asldPtrOB.appendChild(jsc.picker.asldPtrMB);\r\n\t\t\t\tjsc.picker.asldPtrMB.appendChild(jsc.picker.asldPtrIB);\r\n\t\t\t\tjsc.picker.asldPtrIB.appendChild(jsc.picker.asldPtrS);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.asldB);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.asldM);\r\n\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.pal);\r\n\r\n\t\t\t\tjsc.picker.btn.appendChild(jsc.picker.btnT);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.btn);\r\n\r\n\t\t\t\tjsc.picker.boxB.appendChild(jsc.picker.box);\r\n\t\t\t\tjsc.picker.wrap.appendChild(jsc.picker.boxS);\r\n\t\t\t\tjsc.picker.wrap.appendChild(jsc.picker.boxB);\r\n\r\n\t\t\t\tjsc.picker.wrap.addEventListener('touchstart', jsc.onPickerTouchStart,\r\n\t\t\t\t\tjsc.isPassiveEventSupported ? {passive: false} : false);\r\n\t\t\t}\r\n\r\n\t\t\tvar p = jsc.picker;\r\n\r\n\t\t\tvar displaySlider = !!jsc.getSliderChannel(THIS);\r\n\t\t\tvar displayAlphaSlider = THIS.hasAlphaChannel();\r\n\t\t\tvar pickerDims = jsc.getPickerDims(THIS);\r\n\t\t\tvar crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);\r\n\t\t\tvar controlPadding = jsc.getControlPadding(THIS);\r\n\t\t\tvar borderRadius = Math.min(\r\n\t\t\t\tTHIS.borderRadius,\r\n\t\t\t\tMath.round(THIS.padding * Math.PI)); // px\r\n\t\t\tvar padCursor = 'crosshair';\r\n\r\n\t\t\t// wrap\r\n\t\t\tp.wrap.className = 'jscolor-picker-wrap';\r\n\t\t\tp.wrap.style.clear = 'both';\r\n\t\t\tp.wrap.style.width = pickerDims.borderW + 'px';\r\n\t\t\tp.wrap.style.height = pickerDims.borderH + 'px';\r\n\t\t\tp.wrap.style.zIndex = THIS.zIndex;\r\n\r\n\t\t\t// picker\r\n\t\t\tp.box.className = 'jscolor-picker';\r\n\t\t\tp.box.style.width = pickerDims.paddedW + 'px';\r\n\t\t\tp.box.style.height = pickerDims.paddedH + 'px';\r\n\t\t\tp.box.style.position = 'relative';\r\n\r\n\t\t\t// picker shadow\r\n\t\t\tp.boxS.className = 'jscolor-picker-shadow';\r\n\t\t\tp.boxS.style.position = 'absolute';\r\n\t\t\tp.boxS.style.left = '0';\r\n\t\t\tp.boxS.style.top = '0';\r\n\t\t\tp.boxS.style.width = '100%';\r\n\t\t\tp.boxS.style.height = '100%';\r\n\t\t\tjsc.setBorderRadius(p.boxS, borderRadius + 'px');\r\n\r\n\t\t\t// picker border\r\n\t\t\tp.boxB.className = 'jscolor-picker-border';\r\n\t\t\tp.boxB.style.position = 'relative';\r\n\t\t\tp.boxB.style.border = THIS.borderWidth + 'px solid';\r\n\t\t\tp.boxB.style.borderColor = THIS.borderColor;\r\n\t\t\tp.boxB.style.background = THIS.backgroundColor;\r\n\t\t\tjsc.setBorderRadius(p.boxB, borderRadius + 'px');\r\n\r\n\t\t\t// IE hack:\r\n\t\t\t// If the element is transparent, IE will trigger the event on the elements under it,\r\n\t\t\t// e.g. on Canvas or on elements with border\r\n\t\t\tp.padM.style.background = 'rgba(255,0,0,.2)';\r\n\t\t\tp.sldM.style.background = 'rgba(0,255,0,.2)';\r\n\t\t\tp.asldM.style.background = 'rgba(0,0,255,.2)';\r\n\r\n\t\t\tp.padM.style.opacity =\r\n\t\t\tp.sldM.style.opacity =\r\n\t\t\tp.asldM.style.opacity =\r\n\t\t\t\t'0';\r\n\r\n\t\t\t// pad\r\n\t\t\tp.pad.style.position = 'relative';\r\n\t\t\tp.pad.style.width = THIS.width + 'px';\r\n\t\t\tp.pad.style.height = THIS.height + 'px';\r\n\r\n\t\t\t// pad - color spectrum (HSV and HVS)\r\n\t\t\tp.padCanvas.draw(THIS.width, THIS.height, jsc.getPadYChannel(THIS));\r\n\r\n\t\t\t// pad border\r\n\t\t\tp.padB.style.position = 'absolute';\r\n\t\t\tp.padB.style.left = THIS.padding + 'px';\r\n\t\t\tp.padB.style.top = THIS.padding + 'px';\r\n\t\t\tp.padB.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\tp.padB.style.borderColor = THIS.controlBorderColor;\r\n\r\n\t\t\t// pad mouse area\r\n\t\t\tp.padM.style.position = 'absolute';\r\n\t\t\tp.padM.style.left = 0 + 'px';\r\n\t\t\tp.padM.style.top = 0 + 'px';\r\n\t\t\tp.padM.style.width = (THIS.padding + 2 * THIS.controlBorderWidth + THIS.width + controlPadding) + 'px';\r\n\t\t\tp.padM.style.height = (2 * THIS.controlBorderWidth + 2 * THIS.padding + THIS.height) + 'px';\r\n\t\t\tp.padM.style.cursor = padCursor;\r\n\t\t\tjsc.setData(p.padM, {\r\n\t\t\t\tinstance: THIS,\r\n\t\t\t\tcontrol: 'pad',\r\n\t\t\t})\r\n\r\n\t\t\t// pad cross\r\n\t\t\tp.cross.style.position = 'absolute';\r\n\t\t\tp.cross.style.left =\r\n\t\t\tp.cross.style.top =\r\n\t\t\t\t'0';\r\n\t\t\tp.cross.style.width =\r\n\t\t\tp.cross.style.height =\r\n\t\t\t\tcrossOuterSize + 'px';\r\n\r\n\t\t\t// pad cross border Y and X\r\n\t\t\tp.crossBY.style.position =\r\n\t\t\tp.crossBX.style.position =\r\n\t\t\t\t'absolute';\r\n\t\t\tp.crossBY.style.background =\r\n\t\t\tp.crossBX.style.background =\r\n\t\t\t\tTHIS.pointerBorderColor;\r\n\t\t\tp.crossBY.style.width =\r\n\t\t\tp.crossBX.style.height =\r\n\t\t\t\t(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';\r\n\t\t\tp.crossBY.style.height =\r\n\t\t\tp.crossBX.style.width =\r\n\t\t\t\tcrossOuterSize + 'px';\r\n\t\t\tp.crossBY.style.left =\r\n\t\t\tp.crossBX.style.top =\r\n\t\t\t\t(Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2) - THIS.pointerBorderWidth) + 'px';\r\n\t\t\tp.crossBY.style.top =\r\n\t\t\tp.crossBX.style.left =\r\n\t\t\t\t'0';\r\n\r\n\t\t\t// pad cross line Y and X\r\n\t\t\tp.crossLY.style.position =\r\n\t\t\tp.crossLX.style.position =\r\n\t\t\t\t'absolute';\r\n\t\t\tp.crossLY.style.background =\r\n\t\t\tp.crossLX.style.background =\r\n\t\t\t\tTHIS.pointerColor;\r\n\t\t\tp.crossLY.style.height =\r\n\t\t\tp.crossLX.style.width =\r\n\t\t\t\t(crossOuterSize - 2 * THIS.pointerBorderWidth) + 'px';\r\n\t\t\tp.crossLY.style.width =\r\n\t\t\tp.crossLX.style.height =\r\n\t\t\t\tTHIS.pointerThickness + 'px';\r\n\t\t\tp.crossLY.style.left =\r\n\t\t\tp.crossLX.style.top =\r\n\t\t\t\t(Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2)) + 'px';\r\n\t\t\tp.crossLY.style.top =\r\n\t\t\tp.crossLX.style.left =\r\n\t\t\t\tTHIS.pointerBorderWidth + 'px';\r\n\r\n\r\n\t\t\t// slider\r\n\t\t\tp.sld.style.overflow = 'hidden';\r\n\t\t\tp.sld.style.width = THIS.sliderSize + 'px';\r\n\t\t\tp.sld.style.height = THIS.height + 'px';\r\n\r\n\t\t\t// slider gradient\r\n\t\t\tp.sldGrad.draw(THIS.sliderSize, THIS.height, '#000', '#000');\r\n\r\n\t\t\t// slider border\r\n\t\t\tp.sldB.style.display = displaySlider ? 'block' : 'none';\r\n\t\t\tp.sldB.style.position = 'absolute';\r\n\t\t\tp.sldB.style.left = (THIS.padding + THIS.width + 2 * THIS.controlBorderWidth + 2 * controlPadding) + 'px';\r\n\t\t\tp.sldB.style.top = THIS.padding + 'px';\r\n\t\t\tp.sldB.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\tp.sldB.style.borderColor = THIS.controlBorderColor;\r\n\r\n\t\t\t// slider mouse area\r\n\t\t\tp.sldM.style.display = displaySlider ? 'block' : 'none';\r\n\t\t\tp.sldM.style.position = 'absolute';\r\n\t\t\tp.sldM.style.left = (THIS.padding + THIS.width + 2 * THIS.controlBorderWidth + controlPadding) + 'px';\r\n\t\t\tp.sldM.style.top = 0 + 'px';\r\n\t\t\tp.sldM.style.width = (\r\n\t\t\t\t\t(THIS.sliderSize + 2 * controlPadding + 2 * THIS.controlBorderWidth) +\r\n\t\t\t\t\t(displayAlphaSlider ? 0 : Math.max(0, THIS.padding - controlPadding)) // remaining padding to the right edge\r\n\t\t\t\t) + 'px';\r\n\t\t\tp.sldM.style.height = (2 * THIS.controlBorderWidth + 2 * THIS.padding + THIS.height) + 'px';\r\n\t\t\tp.sldM.style.cursor = 'default';\r\n\t\t\tjsc.setData(p.sldM, {\r\n\t\t\t\tinstance: THIS,\r\n\t\t\t\tcontrol: 'sld',\r\n\t\t\t});\r\n\r\n\t\t\t// slider pointer inner and outer border\r\n\t\t\tp.sldPtrIB.style.border =\r\n\t\t\tp.sldPtrOB.style.border =\r\n\t\t\t\tTHIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor;\r\n\r\n\t\t\t// slider pointer outer border\r\n\t\t\tp.sldPtrOB.style.position = 'absolute';\r\n\t\t\tp.sldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';\r\n\t\t\tp.sldPtrOB.style.top = '0';\r\n\r\n\t\t\t// slider pointer middle border\r\n\t\t\tp.sldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor;\r\n\r\n\t\t\t// slider pointer spacer\r\n\t\t\tp.sldPtrS.style.width = THIS.sliderSize + 'px';\r\n\t\t\tp.sldPtrS.style.height = jsc.pub.sliderInnerSpace + 'px';\r\n\r\n\r\n\t\t\t// alpha slider\r\n\t\t\tp.asld.style.overflow = 'hidden';\r\n\t\t\tp.asld.style.width = THIS.sliderSize + 'px';\r\n\t\t\tp.asld.style.height = THIS.height + 'px';\r\n\r\n\t\t\t// alpha slider gradient\r\n\t\t\tp.asldGrad.draw(THIS.sliderSize, THIS.height, '#000');\r\n\r\n\t\t\t// alpha slider border\r\n\t\t\tp.asldB.style.display = displayAlphaSlider ? 'block' : 'none';\r\n\t\t\tp.asldB.style.position = 'absolute';\r\n\t\t\tp.asldB.style.left = (\r\n\t\t\t\t\t(THIS.padding + THIS.width + 2 * THIS.controlBorderWidth + controlPadding) +\r\n\t\t\t\t\t(displaySlider ? (THIS.sliderSize + 3 * controlPadding + 2 * THIS.controlBorderWidth) : 0)\r\n\t\t\t\t) + 'px';\r\n\t\t\tp.asldB.style.top = THIS.padding + 'px';\r\n\t\t\tp.asldB.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\tp.asldB.style.borderColor = THIS.controlBorderColor;\r\n\r\n\t\t\t// alpha slider mouse area\r\n\t\t\tp.asldM.style.display = displayAlphaSlider ? 'block' : 'none';\r\n\t\t\tp.asldM.style.position = 'absolute';\r\n\t\t\tp.asldM.style.left = (\r\n\t\t\t\t\t(THIS.padding + THIS.width + 2 * THIS.controlBorderWidth + controlPadding) +\r\n\t\t\t\t\t(displaySlider ? (THIS.sliderSize + 2 * controlPadding + 2 * THIS.controlBorderWidth) : 0)\r\n\t\t\t\t) + 'px';\r\n\t\t\tp.asldM.style.top = 0 + 'px';\r\n\t\t\tp.asldM.style.width = (\r\n\t\t\t\t\t(THIS.sliderSize + 2 * controlPadding + 2 * THIS.controlBorderWidth) +\r\n\t\t\t\t\tMath.max(0, THIS.padding - controlPadding) // remaining padding to the right edge\r\n\t\t\t\t) + 'px';\r\n\t\t\tp.asldM.style.height = (2 * THIS.controlBorderWidth + 2 * THIS.padding + THIS.height) + 'px';\r\n\t\t\tp.asldM.style.cursor = 'default';\r\n\t\t\tjsc.setData(p.asldM, {\r\n\t\t\t\tinstance: THIS,\r\n\t\t\t\tcontrol: 'asld',\r\n\t\t\t})\r\n\r\n\t\t\t// alpha slider pointer inner and outer border\r\n\t\t\tp.asldPtrIB.style.border =\r\n\t\t\tp.asldPtrOB.style.border =\r\n\t\t\t\tTHIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor;\r\n\r\n\t\t\t// alpha slider pointer outer border\r\n\t\t\tp.asldPtrOB.style.position = 'absolute';\r\n\t\t\tp.asldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';\r\n\t\t\tp.asldPtrOB.style.top = '0';\r\n\r\n\t\t\t// alpha slider pointer middle border\r\n\t\t\tp.asldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor;\r\n\r\n\t\t\t// alpha slider pointer spacer\r\n\t\t\tp.asldPtrS.style.width = THIS.sliderSize + 'px';\r\n\t\t\tp.asldPtrS.style.height = jsc.pub.sliderInnerSpace + 'px';\r\n\r\n\r\n\t\t\t// palette\r\n\t\t\tp.pal.className = 'jscolor-palette';\r\n\t\t\tp.pal.style.display = pickerDims.palette.rows ? 'block' : 'none';\r\n\t\t\tp.pal.style.position = 'absolute';\r\n\t\t\tp.pal.style.left = THIS.padding + 'px';\r\n\t\t\tp.pal.style.top = (2 * THIS.controlBorderWidth + 2 * THIS.padding + THIS.height) + 'px';\r\n\r\n\t\t\t// palette's color samples\r\n\r\n\t\t\tp.pal.innerHTML = '';\r\n\r\n\t\t\tvar chessboard = jsc.genColorPreviewCanvas('rgba(0,0,0,0)');\r\n\r\n\t\t\tvar si = 0; // color sample's index\r\n\t\t\tfor (var r = 0; r < pickerDims.palette.rows; r++) {\r\n\t\t\t\tfor (var c = 0; c < pickerDims.palette.cols && si < THIS._palette.length; c++, si++) {\r\n\t\t\t\t\tvar sampleColor = THIS._palette[si];\r\n\t\t\t\t\tvar sampleCssColor = jsc.rgbaColor.apply(null, sampleColor.rgba);\r\n\r\n\t\t\t\t\tvar sc = jsc.createEl('div'); // color sample's color\r\n\t\t\t\t\tsc.style.width = (pickerDims.palette.cellW - 2 * THIS.controlBorderWidth) + 'px';\r\n\t\t\t\t\tsc.style.height = (pickerDims.palette.cellH - 2 * THIS.controlBorderWidth) + 'px';\r\n\t\t\t\t\tsc.style.backgroundColor = sampleCssColor;\r\n\r\n\t\t\t\t\tvar sw = jsc.createEl('div'); // color sample's wrap\r\n\t\t\t\t\tsw.className = 'jscolor-palette-sample';\r\n\t\t\t\t\tsw.style.display = 'block';\r\n\t\t\t\t\tsw.style.position = 'absolute';\r\n\t\t\t\t\tsw.style.left = (\r\n\t\t\t\t\t\t\tpickerDims.palette.cols <= 1 ? 0 :\r\n\t\t\t\t\t\t\tMath.round(10 * (c * ((pickerDims.contentW - pickerDims.palette.cellW) / (pickerDims.palette.cols - 1)))) / 10\r\n\t\t\t\t\t\t) + 'px';\r\n\t\t\t\t\tsw.style.top = (r * (pickerDims.palette.cellH + THIS.paletteSpacing)) + 'px';\r\n\t\t\t\t\tsw.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\t\t\tsw.style.borderColor = THIS.controlBorderColor;\r\n\t\t\t\t\tsw.style.cursor = 'pointer';\r\n\t\t\t\t\tif (sampleColor.rgba[3] !== null && sampleColor.rgba[3] < 1.0) { // only create chessboard background if the sample has transparency\r\n\t\t\t\t\t\tsw.style.backgroundImage = 'url(\\'' + chessboard.canvas.toDataURL() + '\\')';\r\n\t\t\t\t\t\tsw.style.backgroundRepeat = 'repeat';\r\n\t\t\t\t\t\tsw.style.backgroundPosition = 'center center';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjsc.setData(sw, {\r\n\t\t\t\t\t\tinstance: THIS,\r\n\t\t\t\t\t\tcontrol: 'palette-sample',\r\n\t\t\t\t\t\tcolor: sampleColor,\r\n\t\t\t\t\t})\r\n\t\t\t\t\tsw.addEventListener('click', jsc.onPaletteSampleClick, false);\r\n\t\t\t\t\tsw.appendChild(sc);\r\n\t\t\t\t\tp.pal.appendChild(sw);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// the Close button\r\n\t\t\tfunction setBtnBorder () {\r\n\t\t\t\tvar insetColors = THIS.controlBorderColor.split(/\\s+/);\r\n\t\t\t\tvar outsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];\r\n\t\t\t\tp.btn.style.borderColor = outsetColor;\r\n\t\t\t}\r\n\t\t\tvar btnPadding = 15; // px\r\n\t\t\tp.btn.className = 'jscolor-btn-close';\r\n\t\t\tp.btn.style.display = THIS.closeButton ? 'block' : 'none';\r\n\t\t\tp.btn.style.position = 'absolute';\r\n\t\t\tp.btn.style.left = THIS.padding + 'px';\r\n\t\t\tp.btn.style.bottom = THIS.padding + 'px';\r\n\t\t\tp.btn.style.padding = '0 ' + btnPadding + 'px';\r\n\t\t\tp.btn.style.maxWidth = (pickerDims.contentW - 2 * THIS.controlBorderWidth - 2 * btnPadding) + 'px';\r\n\t\t\tp.btn.style.overflow = 'hidden';\r\n\t\t\tp.btn.style.height = THIS.buttonHeight + 'px';\r\n\t\t\tp.btn.style.whiteSpace = 'nowrap';\r\n\t\t\tp.btn.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\tsetBtnBorder();\r\n\t\t\tp.btn.style.color = THIS.buttonColor;\r\n\t\t\tp.btn.style.font = '12px sans-serif';\r\n\t\t\tp.btn.style.textAlign = 'center';\r\n\t\t\tp.btn.style.cursor = 'pointer';\r\n\t\t\tp.btn.onmousedown = function () {\r\n\t\t\t\tTHIS.hide();\r\n\t\t\t};\r\n\t\t\tp.btnT.style.lineHeight = THIS.buttonHeight + 'px';\r\n\t\t\tp.btnT.innerHTML = '';\r\n\t\t\tp.btnT.appendChild(window.document.createTextNode(THIS.closeText));\r\n\r\n\t\t\t// reposition the pointers\r\n\t\t\tredrawPad();\r\n\t\t\tredrawSld();\r\n\t\t\tredrawASld();\r\n\r\n\t\t\t// If we are changing the owner without first closing the picker,\r\n\t\t\t// make sure to first deal with the old owner\r\n\t\t\tif (jsc.picker.owner && jsc.picker.owner !== THIS) {\r\n\t\t\t\tjsc.removeClass(jsc.picker.owner.targetElement, jsc.pub.activeClassName);\r\n\t\t\t}\r\n\r\n\t\t\t// Set a new picker owner\r\n\t\t\tjsc.picker.owner = THIS;\r\n\r\n\t\t\t// The redrawPosition() method needs picker.owner to be set, that's why we call it here,\r\n\t\t\t// after setting the owner\r\n\t\t\tif (THIS.container === window.document.body) {\r\n\t\t\t\tjsc.redrawPosition();\r\n\t\t\t} else {\r\n\t\t\t\tjsc._drawPosition(THIS, 0, 0, 'relative', false);\r\n\t\t\t}\r\n\r\n\t\t\tif (p.wrap.parentNode !== THIS.container) {\r\n\t\t\t\tTHIS.container.appendChild(p.wrap);\r\n\t\t\t}\r\n\r\n\t\t\tjsc.addClass(THIS.targetElement, jsc.pub.activeClassName);\r\n\t\t}\r\n\r\n\r\n\t\tfunction redrawPad () {\r\n\t\t\t// redraw the pad pointer\r\n\t\t\tvar yChannel = jsc.getPadYChannel(THIS);\r\n\t\t\tvar x = Math.round((THIS.channels.h / 360) * (THIS.width - 1));\r\n\t\t\tvar y = Math.round((1 - THIS.channels[yChannel] / 100) * (THIS.height - 1));\r\n\t\t\tvar crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);\r\n\t\t\tvar ofs = -Math.floor(crossOuterSize / 2);\r\n\t\t\tjsc.picker.cross.style.left = (x + ofs) + 'px';\r\n\t\t\tjsc.picker.cross.style.top = (y + ofs) + 'px';\r\n\r\n\t\t\t// redraw the slider\r\n\t\t\tswitch (jsc.getSliderChannel(THIS)) {\r\n\t\t\tcase 's':\r\n\t\t\t\tvar rgb1 = jsc.HSV_RGB(THIS.channels.h, 100, THIS.channels.v);\r\n\t\t\t\tvar rgb2 = jsc.HSV_RGB(THIS.channels.h, 0, THIS.channels.v);\r\n\t\t\t\tvar color1 = 'rgb(' +\r\n\t\t\t\t\tMath.round(rgb1[0]) + ',' +\r\n\t\t\t\t\tMath.round(rgb1[1]) + ',' +\r\n\t\t\t\t\tMath.round(rgb1[2]) + ')';\r\n\t\t\t\tvar color2 = 'rgb(' +\r\n\t\t\t\t\tMath.round(rgb2[0]) + ',' +\r\n\t\t\t\t\tMath.round(rgb2[1]) + ',' +\r\n\t\t\t\t\tMath.round(rgb2[2]) + ')';\r\n\t\t\t\tjsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'v':\r\n\t\t\t\tvar rgb = jsc.HSV_RGB(THIS.channels.h, THIS.channels.s, 100);\r\n\t\t\t\tvar color1 = 'rgb(' +\r\n\t\t\t\t\tMath.round(rgb[0]) + ',' +\r\n\t\t\t\t\tMath.round(rgb[1]) + ',' +\r\n\t\t\t\t\tMath.round(rgb[2]) + ')';\r\n\t\t\t\tvar color2 = '#000';\r\n\t\t\t\tjsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// redraw the alpha slider\r\n\t\t\tjsc.picker.asldGrad.draw(THIS.sliderSize, THIS.height, THIS.toHEXString());\r\n\t\t}\r\n\r\n\r\n\t\tfunction redrawSld () {\r\n\t\t\tvar sldChannel = jsc.getSliderChannel(THIS);\r\n\t\t\tif (sldChannel) {\r\n\t\t\t\t// redraw the slider pointer\r\n\t\t\t\tvar y = Math.round((1 - THIS.channels[sldChannel] / 100) * (THIS.height - 1));\r\n\t\t\t\tjsc.picker.sldPtrOB.style.top = (y - (2 * THIS.pointerBorderWidth + THIS.pointerThickness) - Math.floor(jsc.pub.sliderInnerSpace / 2)) + 'px';\r\n\t\t\t}\r\n\r\n\t\t\t// redraw the alpha slider\r\n\t\t\tjsc.picker.asldGrad.draw(THIS.sliderSize, THIS.height, THIS.toHEXString());\r\n\t\t}\r\n\r\n\r\n\t\tfunction redrawASld () {\r\n\t\t\tvar y = Math.round((1 - THIS.channels.a) * (THIS.height - 1));\r\n\t\t\tjsc.picker.asldPtrOB.style.top = (y - (2 * THIS.pointerBorderWidth + THIS.pointerThickness) - Math.floor(jsc.pub.sliderInnerSpace / 2)) + 'px';\r\n\t\t}\r\n\r\n\r\n\t\tfunction isPickerOwner () {\r\n\t\t\treturn jsc.picker && jsc.picker.owner === THIS;\r\n\t\t}\r\n\r\n\r\n\t\tfunction onValueKeyDown (ev) {\r\n\t\t\tif (jsc.eventKey(ev) === 'Enter') {\r\n\t\t\t\tif (THIS.valueElement) {\r\n\t\t\t\t\tTHIS.processValueInput(THIS.valueElement.value);\r\n\t\t\t\t}\r\n\t\t\t\tTHIS.tryHide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction onAlphaKeyDown (ev) {\r\n\t\t\tif (jsc.eventKey(ev) === 'Enter') {\r\n\t\t\t\tif (THIS.alphaElement) {\r\n\t\t\t\t\tTHIS.processAlphaInput(THIS.alphaElement.value);\r\n\t\t\t\t}\r\n\t\t\t\tTHIS.tryHide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction onValueChange (ev) {\r\n\t\t\tif (jsc.getData(ev, 'internal')) {\r\n\t\t\t\treturn; // skip if the event was internally triggered by jscolor\r\n\t\t\t}\r\n\r\n\t\t\tvar oldVal = THIS.valueElement.value;\r\n\r\n\t\t\tTHIS.processValueInput(THIS.valueElement.value); // this might change the value\r\n\r\n\t\t\tjsc.triggerCallback(THIS, 'onChange');\r\n\r\n\t\t\tif (THIS.valueElement.value !== oldVal) {\r\n\t\t\t\t// value was additionally changed -> let's trigger the change event again, even though it was natively dispatched\r\n\t\t\t\tjsc.triggerInputEvent(THIS.valueElement, 'change', true, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction onAlphaChange (ev) {\r\n\t\t\tif (jsc.getData(ev, 'internal')) {\r\n\t\t\t\treturn; // skip if the event was internally triggered by jscolor\r\n\t\t\t}\r\n\r\n\t\t\tvar oldVal = THIS.alphaElement.value;\r\n\r\n\t\t\tTHIS.processAlphaInput(THIS.alphaElement.value); // this might change the value\r\n\r\n\t\t\tjsc.triggerCallback(THIS, 'onChange');\r\n\r\n\t\t\t// triggering valueElement's onChange (because changing alpha changes the entire color, e.g. with rgba format)\r\n\t\t\tjsc.triggerInputEvent(THIS.valueElement, 'change', true, true);\r\n\r\n\t\t\tif (THIS.alphaElement.value !== oldVal) {\r\n\t\t\t\t// value was additionally changed -> let's trigger the change event again, even though it was natively dispatched\r\n\t\t\t\tjsc.triggerInputEvent(THIS.alphaElement, 'change', true, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction onValueInput (ev) {\r\n\t\t\tif (jsc.getData(ev, 'internal')) {\r\n\t\t\t\treturn; // skip if the event was internally triggered by jscolor\r\n\t\t\t}\r\n\r\n\t\t\tif (THIS.valueElement) {\r\n\t\t\t\tTHIS.fromString(THIS.valueElement.value, jsc.flags.leaveValue);\r\n\t\t\t}\r\n\r\n\t\t\tjsc.triggerCallback(THIS, 'onInput');\r\n\r\n\t\t\t// triggering valueElement's onInput\r\n\t\t\t// (not needed, it was dispatched normally by the browser)\r\n\t\t}\r\n\r\n\r\n\t\tfunction onAlphaInput (ev) {\r\n\t\t\tif (jsc.getData(ev, 'internal')) {\r\n\t\t\t\treturn; // skip if the event was internally triggered by jscolor\r\n\t\t\t}\r\n\r\n\t\t\tif (THIS.alphaElement) {\r\n\t\t\t\tTHIS.fromHSVA(null, null, null, parseFloat(THIS.alphaElement.value), jsc.flags.leaveAlpha);\r\n\t\t\t}\r\n\r\n\t\t\tjsc.triggerCallback(THIS, 'onInput');\r\n\r\n\t\t\t// triggering valueElement's onInput (because changing alpha changes the entire color, e.g. with rgba format)\r\n\t\t\tjsc.triggerInputEvent(THIS.valueElement, 'input', true, true);\r\n\t\t}\r\n\r\n\r\n\t\t// let's process the DEPRECATED 'options' property (this will be later removed)\r\n\t\tif (jsc.pub.options) {\r\n\t\t\t// let's set custom default options, if specified\r\n\t\t\tfor (var opt in jsc.pub.options) {\r\n\t\t\t\tif (jsc.pub.options.hasOwnProperty(opt)) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tsetOption(opt, jsc.pub.options[opt]);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// let's apply configuration presets\r\n\t\t//\r\n\t\tvar presetsArr = [];\r\n\r\n\t\tif (opts.preset) {\r\n\t\t\tif (typeof opts.preset === 'string') {\r\n\t\t\t\tpresetsArr = opts.preset.split(/\\s+/);\r\n\t\t\t} else if (Array.isArray(opts.preset)) {\r\n\t\t\t\tpresetsArr = opts.preset.slice(); // slice() to clone\r\n\t\t\t} else {\r\n\t\t\t\tconsole.warn('Unrecognized preset value');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// always use the 'default' preset. If it's not listed, append it to the end.\r\n\t\tif (presetsArr.indexOf('default') === -1) {\r\n\t\t\tpresetsArr.push('default');\r\n\t\t}\r\n\r\n\t\t// let's apply the presets in reverse order, so that should there be any overlapping options,\r\n\t\t// the formerly listed preset will override the latter\r\n\t\tfor (var i = presetsArr.length - 1; i >= 0; i -= 1) {\r\n\t\t\tvar pres = presetsArr[i];\r\n\t\t\tif (!pres) {\r\n\t\t\t\tcontinue; // preset is empty string\r\n\t\t\t}\r\n\t\t\tif (!jsc.pub.presets.hasOwnProperty(pres)) {\r\n\t\t\t\tconsole.warn('Unknown preset: %s', pres);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tfor (var opt in jsc.pub.presets[pres]) {\r\n\t\t\t\tif (jsc.pub.presets[pres].hasOwnProperty(opt)) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tsetOption(opt, jsc.pub.presets[pres][opt]);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// let's set specific options for this color picker\r\n\t\tvar nonProperties = [\r\n\t\t\t// these options won't be set as instance properties\r\n\t\t\t'preset',\r\n\t\t];\r\n\t\tfor (var opt in opts) {\r\n\t\t\tif (opts.hasOwnProperty(opt)) {\r\n\t\t\t\tif (nonProperties.indexOf(opt) === -1) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tsetOption(opt, opts[opt]);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t//\r\n\t\t// Install the color picker on chosen element(s)\r\n\t\t//\r\n\r\n\r\n\t\t// Determine picker's container element\r\n\t\tif (this.container === undefined) {\r\n\t\t\tthis.container = window.document.body; // default container is BODY element\r\n\r\n\t\t} else { // explicitly set to custom element\r\n\t\t\tthis.container = jsc.node(this.container);\r\n\t\t}\r\n\r\n\t\tif (!this.container) {\r\n\t\t\tthrow new Error('Cannot instantiate color picker without a container element');\r\n\t\t}\r\n\r\n\r\n\t\t// Fetch the target element\r\n\t\tthis.targetElement = jsc.node(targetElement);\r\n\r\n\t\tif (!this.targetElement) {\r\n\t\t\t// temporarily customized error message to help with migrating from versions prior to 2.2\r\n\t\t\tif (typeof targetElement === 'string' && /^[a-zA-Z][\\w:.-]*$/.test(targetElement)) {\r\n\t\t\t\t// targetElement looks like valid ID\r\n\t\t\t\tvar possiblyId = targetElement;\r\n\t\t\t\tthrow new Error('If \\'' + possiblyId + '\\' is supposed to be an ID, please use \\'#' + possiblyId + '\\' or any valid CSS selector.');\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error('Cannot instantiate color picker without a target element');\r\n\t\t}\r\n\r\n\t\tif (this.targetElement.jscolor && this.targetElement.jscolor instanceof jsc.pub) {\r\n\t\t\tthrow new Error('Color picker already installed on this element');\r\n\t\t}\r\n\r\n\r\n\t\t// link this instance with the target element\r\n\t\tthis.targetElement.jscolor = this;\r\n\t\tjsc.addClass(this.targetElement, jsc.pub.className);\r\n\r\n\t\t// register this instance\r\n\t\tjsc.instances.push(this);\r\n\r\n\r\n\t\t// if target is BUTTON\r\n\t\tif (jsc.isButton(this.targetElement)) {\r\n\r\n\t\t\tif (this.targetElement.type.toLowerCase() !== 'button') {\r\n\t\t\t\t// on buttons, always force type to be 'button', e.g. in situations the target