From 40c9d1a44898247a2904b1b0f064b0a83944bad4 Mon Sep 17 00:00:00 2001 From: Bubobubobubobubo Date: Sat, 21 Oct 2023 13:43:45 +0000 Subject: [PATCH] deploy: 7b31e94f8cd4d5f80bb2eb81c0443e3523196226 --- assets/index-24bd8005.css | 1 - assets/index-3a5dafe8.css | 1 + assets/{index-f71897c4.js => index-5847220a.js} | 2 +- index.html | 10 +++++----- 4 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 assets/index-24bd8005.css create mode 100644 assets/index-3a5dafe8.css rename assets/{index-f71897c4.js => index-5847220a.js} (99%) diff --git a/assets/index-24bd8005.css b/assets/index-24bd8005.css deleted file mode 100644 index fac2aa1..0000000 --- a/assets/index-24bd8005.css +++ /dev/null @@ -1 +0,0 @@ -.hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:700}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#800}.hljs-title,.hljs-section{color:#800;font-weight:700}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#bc6060}.hljs-literal{color:#78a960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.mx-16{margin-left:4rem;margin-right:4rem}.mx-48{margin-left:12rem;margin-right:12rem}.my-48{margin-top:12rem;margin-bottom:12rem}.my-8{margin-top:2rem;margin-bottom:2rem}.ml-8{margin-left:2rem}.mr-5{margin-right:1.25rem}.mt-12{margin-top:3rem}.mt-8{margin-top:2rem}.h-2{height:.5rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-60{width:15rem}.w-auto{width:auto}.max-w-sm{max-width:24rem}.flex-grow,.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-12{padding-left:3rem;padding-right:3rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.pb-96{padding-bottom:24rem}.align-middle{vertical-align:middle}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.tracking-tight{letter-spacing:-.025em}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-offset-gray-800{--tw-ring-offset-color: #1f2937}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}@media (prefers-reduced-motion: no-preference){@keyframes pulse{50%{opacity:.5}}.motion-safe\:animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}}@media (prefers-color-scheme: dark){.dark\:border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.dark\:bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.dark\:text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.dark\:text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:ring-offset-gray-800{--tw-ring-offset-color: #1f2937}.dark\:hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}}@media (min-width: 1024px){.lg\:w-1\/5{width:20%}.lg\:w-4\/5{width:80%}.lg\:flex-row{flex-direction:row}.lg\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1280px){.xl\:block{display:block}.xl\:hidden{display:none}}@font-face{font-family:IBM Plex Mono;src:url(/assets/IBMPlexMono-Regular-82ad22f5.woff2) format("woff2"),url(/assets/IBMPlexMono-Regular-06ba2f2e.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM PLex Mono;src:url(/assets/IBMPlexMono-Italic-30cb963d.woff2) format("woff2"),url(/assets/IBMPlexMono-Italic-fc3301da.woff) format("woff");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:IBM PLex Mono;src:url(/assets/IBMPlexMono-Bold-3152ee89.woff2) format("woff2"),url(/assets/IBMPlexMono-Bold-6bb3fd98.woff) format("woff");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/IBMPlexMono-BoldItalic-6f4d360c.woff2) format("woff2"),url(/assets/IBMPlexMono-BoldItalic-5cd662b9.woff) format("woff");font-weight:700;font-style:italic;font-display:swap}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.hljs{display:block;overflow-x:auto;padding:.5em;background:#2E3440}.hljs,.hljs-subst{color:#d8dee9}.hljs-selector-tag{color:#81a1c1}.hljs-selector-id{color:#8fbcbb;font-weight:700}.hljs-selector-class,.hljs-selector-attr{color:#8fbcbb}.hljs-selector-pseudo{color:#88c0d0}.hljs-addition{background-color:#a3be8c80}.hljs-deletion{background-color:#bf616a80}.hljs-built_in,.hljs-type,.hljs-class{color:#8fbcbb}.hljs-function{color:#88c0d0}.hljs-function>.hljs-title{color:#88c0d0}.hljs-keyword,.hljs-literal,.hljs-symbol{color:#81a1c1}.hljs-number{color:#b48ead}.hljs-regexp{color:#ebcb8b}.hljs-string{color:#a3be8c}.hljs-title{color:#8fbcbb}.hljs-params{color:#d8dee9}.hljs-bullet{color:#81a1c1}.hljs-code{color:#8fbcbb}.hljs-emphasis{font-style:italic}.hljs-formula{color:#8fbcbb}.hljs-strong{font-weight:700}.hljs-link:hover{text-decoration:underline}.hljs-quote{color:#4c566a}.hljs-comment: #FEFEFE; .hljs-doctag{color:#8fbcbb}.hljs-meta,.hljs-meta-keyword{color:#5e81ac}.hljs-meta-string{color:#a3be8c}.hljs-attr{color:#8fbcbb}.hljs-attribute{color:#d8dee9}.hljs-builtin-name,.hljs-name{color:#81a1c1}.hljs-section{color:#88c0d0}.hljs-tag{color:#81a1c1}.hljs-variable,.hljs-template-variable{color:#d8dee9}.hljs-template-tag{color:#5e81ac}.abnf .hljs-attribute{color:#88c0d0}.abnf .hljs-symbol{color:#ebcb8b}.apache .hljs-attribute{color:#88c0d0}.apache .hljs-section{color:#81a1c1}.arduino .hljs-built_in{color:#88c0d0}.aspectj .hljs-meta{color:#d08770}.aspectj>.hljs-title{color:#88c0d0}.bnf .hljs-attribute{color:#8fbcbb}.clojure .hljs-name{color:#88c0d0}.clojure .hljs-symbol{color:#ebcb8b}.coq .hljs-built_in{color:#88c0d0}.cpp .hljs-meta-string{color:#8fbcbb}.css .hljs-built_in{color:#88c0d0}.css .hljs-keyword{color:#d08770}.diff .hljs-meta,.ebnf .hljs-attribute{color:#8fbcbb}.glsl .hljs-built_in{color:#88c0d0}.groovy .hljs-meta:not(:first-child){color:#d08770}.haxe .hljs-meta,.java .hljs-meta{color:#d08770}.ldif .hljs-attribute{color:#8fbcbb}.lisp .hljs-name,.lua .hljs-built_in,.moonscript .hljs-built_in,.nginx .hljs-attribute{color:#88c0d0}.nginx .hljs-section{color:#5e81ac}.pf .hljs-built_in,.processing .hljs-built_in{color:#88c0d0}.scss .hljs-keyword,.stylus .hljs-keyword{color:#81a1c1}.swift .hljs-meta{color:#d08770}.vim .hljs-built_in{color:#88c0d0;font-style:italic}.yaml .hljs-meta{color:#d08770}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.\!sticky{position:sticky!important}.sticky{position:sticky}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-12{bottom:3rem}.bottom-2{bottom:.5rem}.bottom-2\.5{bottom:.625rem}.left-0{left:0}.right-0{right:0}.right-2{right:.5rem}.right-2\.5{right:.625rem}.top-0{top:0}.z-0{z-index:0}.col-span-1{grid-column:span 1 / span 1}.col-span-3{grid-column:span 3 / span 3}.mx-0{margin-left:0;margin-right:0}.mx-12{margin-left:3rem;margin-right:3rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-mt-2{margin-top:-.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-24{margin-bottom:6rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-screen{height:100vh}.max-h-96{max-height:24rem}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-32{width:8rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-screen{width:100vw}.flex-shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.border-spacing-y-4{--tw-border-spacing-y: 1rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-2{row-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.whitespace-pre{white-space:pre}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-neutral-500{--tw-border-opacity: 1;border-color:rgb(115 115 115 / var(--tw-border-opacity))}.border-neutral-800{--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-neutral-500{--tw-bg-opacity: 1;background-color:rgb(115 115 115 / var(--tw-bg-opacity))}.bg-neutral-600{--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity))}.bg-neutral-700{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.bg-neutral-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity: 1;background-color:rgb(253 186 116 / var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity: .5}.fill-current{fill:currentColor}.fill-orange-300{fill:#fdba74}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-16{padding-left:4rem;padding-right:4rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-32{padding-bottom:8rem}.pb-36{padding-bottom:9rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-normal{line-height:1.5}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity))}.text-orange-300{--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.outline{outline-style:solid}.outline-0{outline-width:0px}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.striped .col-span-3,.striped .col-span-2{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity))}.hover\:bg-neutral-500:hover{--tw-bg-opacity: 1;background-color:rgb(115 115 115 / var(--tw-bg-opacity))}.hover\:bg-neutral-600:hover{--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity))}.hover\:bg-neutral-700:hover{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity))}.hover\:bg-neutral-800:hover{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.hover\:bg-neutral-900:hover{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:fill-black:hover{fill:#000}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-4:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}:is([dir=rtl] .rtl\:border-l){border-left-width:1px}:is([dir=rtl] .rtl\:border-r-0){border-right-width:0px}@media (prefers-color-scheme: dark){.dark\:border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:border-neutral-700{--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity))}.dark\:bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.dark\:text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:ring-offset-gray-800{--tw-ring-offset-color: #1f2937}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.dark\:focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}}@media (min-width: 640px){.sm\:my-1{margin-top:.25rem;margin-bottom:.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width: 768px){.md\:bottom-0{bottom:0}.md\:top-0{top:0}}@media (min-width: 1024px){.lg\:mx-12{margin-left:3rem;margin-right:3rem}.lg\:mx-4{margin-left:1rem;margin-right:1rem}.lg\:mx-48{margin-left:12rem;margin-right:12rem}.lg\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.lg\:my-1{margin-top:.25rem;margin-bottom:.25rem}.lg\:my-12{margin-top:3rem;margin-bottom:3rem}.lg\:my-4{margin-top:1rem;margin-bottom:1rem}.lg\:mb-4{margin-bottom:1rem}.lg\:ml-12{margin-left:3rem}.lg\:ml-4{margin-left:1rem}.lg\:mt-12{margin-top:3rem}.lg\:mt-16{margin-top:4rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:h-8{height:2rem}.lg\:h-80{height:20rem}.lg\:w-1\/3{width:33.333333%}.lg\:w-8{width:2rem}.lg\:w-80{width:20rem}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-center{justify-content:center}.lg\:gap-4{gap:1rem}.lg\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.lg\:overflow-x-auto{overflow-x:auto}.lg\:overflow-y-auto{overflow-y:auto}.lg\:p-6{padding:1.5rem}.lg\:px-12{padding-left:3rem;padding-right:3rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-1{padding-top:.25rem;padding-bottom:.25rem}.lg\:py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.lg\:py-4{padding-top:1rem;padding-bottom:1rem}.lg\:pb-0{padding-bottom:0}.lg\:pb-2{padding-bottom:.5rem}.lg\:pb-4{padding-bottom:1rem}.lg\:pl-0{padding-left:0}.lg\:pl-6{padding-left:1.5rem}.lg\:pr-6{padding-right:1.5rem}.lg\:pt-2{padding-top:.5rem}.lg\:text-center{text-align:center}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:text-sm{font-size:.875rem;line-height:1.25rem}.lg\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1280px){.xl\:block{display:block}} diff --git a/assets/index-3a5dafe8.css b/assets/index-3a5dafe8.css new file mode 100644 index 0000000..f5cfbfc --- /dev/null +++ b/assets/index-3a5dafe8.css @@ -0,0 +1 @@ +.hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:700}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#800}.hljs-title,.hljs-section{color:#800;font-weight:700}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#bc6060}.hljs-literal{color:#78a960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.mx-16{margin-left:4rem;margin-right:4rem}.mx-48{margin-left:12rem;margin-right:12rem}.my-48{margin-top:12rem;margin-bottom:12rem}.my-8{margin-top:2rem;margin-bottom:2rem}.ml-8{margin-left:2rem}.mr-5{margin-right:1.25rem}.mt-12{margin-top:3rem}.mt-8{margin-top:2rem}.h-2{height:.5rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-60{width:15rem}.max-w-sm{max-width:24rem}.flex-grow,.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-12{padding-left:3rem;padding-right:3rem}.px-16{padding-left:4rem;padding-right:4rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.pb-96{padding-bottom:24rem}.align-middle{vertical-align:middle}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.tracking-tight{letter-spacing:-.025em}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-offset-gray-800{--tw-ring-offset-color: #1f2937}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}@media (prefers-reduced-motion: no-preference){@keyframes pulse{50%{opacity:.5}}.motion-safe\:animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}}@media (prefers-color-scheme: dark){.dark\:border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.dark\:bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.dark\:text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.dark\:text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:ring-offset-gray-800{--tw-ring-offset-color: #1f2937}.dark\:hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}}@media (min-width: 1024px){.lg\:w-1\/5{width:20%}.lg\:w-4\/5{width:80%}.lg\:flex-row{flex-direction:row}.lg\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1280px){.xl\:block{display:block}.xl\:hidden{display:none}}@font-face{font-family:IBM Plex Mono;src:url(/assets/IBMPlexMono-Regular-82ad22f5.woff2) format("woff2"),url(/assets/IBMPlexMono-Regular-06ba2f2e.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM PLex Mono;src:url(/assets/IBMPlexMono-Italic-30cb963d.woff2) format("woff2"),url(/assets/IBMPlexMono-Italic-fc3301da.woff) format("woff");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:IBM PLex Mono;src:url(/assets/IBMPlexMono-Bold-3152ee89.woff2) format("woff2"),url(/assets/IBMPlexMono-Bold-6bb3fd98.woff) format("woff");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/IBMPlexMono-BoldItalic-6f4d360c.woff2) format("woff2"),url(/assets/IBMPlexMono-BoldItalic-5cd662b9.woff) format("woff");font-weight:700;font-style:italic;font-display:swap}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.hljs{display:block;overflow-x:auto;padding:.5em;background:#2E3440}.hljs,.hljs-subst{color:#d8dee9}.hljs-selector-tag{color:#81a1c1}.hljs-selector-id{color:#8fbcbb;font-weight:700}.hljs-selector-class,.hljs-selector-attr{color:#8fbcbb}.hljs-selector-pseudo{color:#88c0d0}.hljs-addition{background-color:#a3be8c80}.hljs-deletion{background-color:#bf616a80}.hljs-built_in,.hljs-type,.hljs-class{color:#8fbcbb}.hljs-function{color:#88c0d0}.hljs-function>.hljs-title{color:#88c0d0}.hljs-keyword,.hljs-literal,.hljs-symbol{color:#81a1c1}.hljs-number{color:#b48ead}.hljs-regexp{color:#ebcb8b}.hljs-string{color:#a3be8c}.hljs-title{color:#8fbcbb}.hljs-params{color:#d8dee9}.hljs-bullet{color:#81a1c1}.hljs-code{color:#8fbcbb}.hljs-emphasis{font-style:italic}.hljs-formula{color:#8fbcbb}.hljs-strong{font-weight:700}.hljs-link:hover{text-decoration:underline}.hljs-quote{color:#4c566a}.hljs-comment: #FEFEFE; .hljs-doctag{color:#8fbcbb}.hljs-meta,.hljs-meta-keyword{color:#5e81ac}.hljs-meta-string{color:#a3be8c}.hljs-attr{color:#8fbcbb}.hljs-attribute{color:#d8dee9}.hljs-builtin-name,.hljs-name{color:#81a1c1}.hljs-section{color:#88c0d0}.hljs-tag{color:#81a1c1}.hljs-variable,.hljs-template-variable{color:#d8dee9}.hljs-template-tag{color:#5e81ac}.abnf .hljs-attribute{color:#88c0d0}.abnf .hljs-symbol{color:#ebcb8b}.apache .hljs-attribute{color:#88c0d0}.apache .hljs-section{color:#81a1c1}.arduino .hljs-built_in{color:#88c0d0}.aspectj .hljs-meta{color:#d08770}.aspectj>.hljs-title{color:#88c0d0}.bnf .hljs-attribute{color:#8fbcbb}.clojure .hljs-name{color:#88c0d0}.clojure .hljs-symbol{color:#ebcb8b}.coq .hljs-built_in{color:#88c0d0}.cpp .hljs-meta-string{color:#8fbcbb}.css .hljs-built_in{color:#88c0d0}.css .hljs-keyword{color:#d08770}.diff .hljs-meta,.ebnf .hljs-attribute{color:#8fbcbb}.glsl .hljs-built_in{color:#88c0d0}.groovy .hljs-meta:not(:first-child){color:#d08770}.haxe .hljs-meta,.java .hljs-meta{color:#d08770}.ldif .hljs-attribute{color:#8fbcbb}.lisp .hljs-name,.lua .hljs-built_in,.moonscript .hljs-built_in,.nginx .hljs-attribute{color:#88c0d0}.nginx .hljs-section{color:#5e81ac}.pf .hljs-built_in,.processing .hljs-built_in{color:#88c0d0}.scss .hljs-keyword,.stylus .hljs-keyword{color:#81a1c1}.swift .hljs-meta{color:#d08770}.vim .hljs-built_in{color:#88c0d0;font-style:italic}.yaml .hljs-meta{color:#d08770}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.\!sticky{position:sticky!important}.sticky{position:sticky}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-12{bottom:3rem}.bottom-2{bottom:.5rem}.bottom-2\.5{bottom:.625rem}.left-0{left:0}.right-0{right:0}.right-2{right:.5rem}.right-2\.5{right:.625rem}.top-0{top:0}.z-0{z-index:0}.col-span-1{grid-column:span 1 / span 1}.col-span-3{grid-column:span 3 / span 3}.mx-0{margin-left:0;margin-right:0}.mx-12{margin-left:3rem;margin-right:3rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-mt-2{margin-top:-.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-24{margin-bottom:6rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-4{height:1rem}.h-48{height:12rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-auto{height:auto}.h-screen{height:100vh}.max-h-96{max-height:24rem}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-32{width:8rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-screen{width:100vw}.flex-shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.border-spacing-y-4{--tw-border-spacing-y: 1rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-2{row-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.whitespace-pre{white-space:pre}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-neutral-500{--tw-border-opacity: 1;border-color:rgb(115 115 115 / var(--tw-border-opacity))}.border-neutral-800{--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-neutral-500{--tw-bg-opacity: 1;background-color:rgb(115 115 115 / var(--tw-bg-opacity))}.bg-neutral-600{--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity))}.bg-neutral-700{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.bg-neutral-900{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity: 1;background-color:rgb(253 186 116 / var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity: .5}.fill-current{fill:currentColor}.fill-orange-300{fill:#fdba74}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-32{padding-bottom:8rem}.pb-36{padding-bottom:9rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-normal{line-height:1.5}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity))}.text-orange-300{--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.outline{outline-style:solid}.outline-0{outline-width:0px}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.striped .col-span-3,.striped .col-span-2{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity))}.hover\:bg-neutral-500:hover{--tw-bg-opacity: 1;background-color:rgb(115 115 115 / var(--tw-bg-opacity))}.hover\:bg-neutral-600:hover{--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity))}.hover\:bg-neutral-700:hover{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity))}.hover\:bg-neutral-800:hover{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.hover\:bg-neutral-900:hover{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:fill-black:hover{fill:#000}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-4:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}:is([dir=rtl] .rtl\:border-l){border-left-width:1px}:is([dir=rtl] .rtl\:border-r-0){border-right-width:0px}@media (prefers-color-scheme: dark){.dark\:border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:border-neutral-700{--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity))}.dark\:bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.dark\:text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:ring-offset-gray-800{--tw-ring-offset-color: #1f2937}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.dark\:focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}}@media (min-width: 640px){.sm\:my-1{margin-top:.25rem;margin-bottom:.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width: 768px){.md\:bottom-0{bottom:0}.md\:top-0{top:0}}@media (min-width: 1024px){.lg\:mx-12{margin-left:3rem;margin-right:3rem}.lg\:mx-4{margin-left:1rem;margin-right:1rem}.lg\:mx-48{margin-left:12rem;margin-right:12rem}.lg\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.lg\:my-1{margin-top:.25rem;margin-bottom:.25rem}.lg\:my-12{margin-top:3rem;margin-bottom:3rem}.lg\:my-4{margin-top:1rem;margin-bottom:1rem}.lg\:mb-4{margin-bottom:1rem}.lg\:ml-12{margin-left:3rem}.lg\:ml-4{margin-left:1rem}.lg\:mt-12{margin-top:3rem}.lg\:mt-16{margin-top:4rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:h-8{height:2rem}.lg\:h-80{height:20rem}.lg\:h-auto{height:auto}.lg\:w-1\/3{width:33.333333%}.lg\:w-8{width:2rem}.lg\:w-80{width:20rem}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-center{justify-content:center}.lg\:gap-4{gap:1rem}.lg\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.lg\:overflow-x-auto{overflow-x:auto}.lg\:overflow-y-auto{overflow-y:auto}.lg\:p-6{padding:1.5rem}.lg\:px-12{padding-left:3rem;padding-right:3rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-1{padding-top:.25rem;padding-bottom:.25rem}.lg\:py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.lg\:py-4{padding-top:1rem;padding-bottom:1rem}.lg\:pb-0{padding-bottom:0}.lg\:pb-2{padding-bottom:.5rem}.lg\:pb-4{padding-bottom:1rem}.lg\:pl-0{padding-left:0}.lg\:pl-6{padding-left:1.5rem}.lg\:pr-6{padding-right:1.5rem}.lg\:pt-2{padding-top:.5rem}.lg\:pt-4{padding-top:1rem}.lg\:text-center{text-align:center}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:text-sm{font-size:.875rem;line-height:1.25rem}.lg\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1280px){.xl\:block{display:block}} diff --git a/assets/index-f71897c4.js b/assets/index-5847220a.js similarity index 99% rename from assets/index-f71897c4.js rename to assets/index-5847220a.js index d2b5547..1787c36 100644 --- a/assets/index-f71897c4.js +++ b/assets/index-5847220a.js @@ -2805,4 +2805,4 @@ https://github.com/highlightjs/highlight.js/issues/2277`),le=Q,ue=j),K===void 0& `+c.line+" | "+_+` `+m+" | "+t("",l.column-1," ")+t("",I,"^")}else a+=` at `+u}return a},e.buildMessage=function(i,a){var s={literal:function(_){return'"'+l(_.text)+'"'},class:function(_){var v=_.parts.map(function(I){return Array.isArray(I)?c(I[0])+"-"+c(I[1]):c(I)});return"["+(_.inverted?"^":"")+v.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(_){return _.description}};function o(_){return _.charCodeAt(0).toString(16).toUpperCase()}function l(_){return _.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(v){return"\\x0"+o(v)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(v){return"\\x"+o(v)})}function c(_){return _.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(v){return"\\x0"+o(v)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(v){return"\\x"+o(v)})}function u(_){return s[_.type](_)}function p(_){var v=_.map(u),I,R;if(v.sort(),v.length>0){for(I=1,R=1;I",R="@",x=":",$="/",Z="(",h=")",b="[:",S="]",N="[",k="{",L="}",M="+",G="*",te="%",ne="^",re="&",ee=">>",B="<<",Q="_",j="?",K="!",ue="r",le="#",be="b",De="iii",xe="ii",Ee="iv",Ne="i",ce="vii",Le="vi",Xe="v",Pe=/^[0-9]/,tt=/^[ \n\r\t]/,nt=/^[a-z]/,ht=/^[a-z_]/,vt=/^[a-z_0-9]/,mt=/^[mklpdcwyhnqaefsxtgujzo]/,At=/^[a-zA-Z0-9]/,Nt=/^[a-zA-Z0-9\-*+]/,Ir=/^[A-G]/,qe=/^[bs]/,nr=st("-",!1),Ze=Zr([["0","9"]],!1,!1),ke=st(".",!1),er=Hs("whitespace"),Zt=Zr([" ",` -`,"\r"," "],!1,!1),ir=st(",",!1),H=st("|",!1),fe=Zr([["a","z"]],!1,!1),Ie=Zr([["a","z"],"_"],!1,!1),we=Zr([["a","z"],"_",["0","9"]],!1,!1),Je=st("<",!1),ye=st(">",!1),Ht=st("@",!1),lt=st(":",!1),yt=Zr(["m","k","l","p","d","c","w","y","h","n","q","a","e","f","s","x","t","g","u","j","z","o"],!1,!1),Vr=st("/",!1),dt=st("(",!1),Kt=st(")",!1),Tt=st("[:",!1),Ue=st("]",!1),Ur=st("[",!1),Fn=st("{",!1),ct=st("}",!1),zr=st("+",!1),Rr=st("*",!1),Ii=st("%",!1),Nr=st("^",!1),Wt=st("&",!1),Cn=st(">>",!1),ta=st("<<",!1),oi=st("_",!1),ra=st("?",!1),cn=st("!",!1),li=st("r",!1),yn=Zr([["a","z"],["A","Z"],["0","9"]],!1,!1),jt=st("#",!1),ci=st("b",!1),ui=Zr([["a","z"],["A","Z"],["0","9"],"-","*","+"],!1,!1),q=Zr([["A","G"]],!1,!1),ie=Zr(["b","s"],!1,!1),de=st("iii",!1),_e=st("ii",!1),Ae=st("iv",!1),Qe=st("i",!1),Me=st("vii",!1),Ct=st("vi",!1),wr=st("v",!1),Hr=function(T){return T.filter(w=>w)},xa=function(){return parseFloat(Yr())},na=function(){return parseInt(Yr())},xs=function(){return parseInt(Yr())},Wr=function(){},ks=function(T){return Ut(S$,{sound:T})},ka=function(){return Yr()},La=function(T){return Ut(Io,{items:T})},Ls=function(T){return T},Ma=function(T,w){return Ut(O$,{item:T,sound:w})},Ms=function(T,w){return Ut(b$,{item:T,soundIndex:w})},Pa=function(T){return T},Fr=function(){return o$[Yr()]},Ps=function(T,w){return T/w},Bs=function(T){return T.filter(w=>w)},Ba=function(T){return Ut(Io,{items:T})},Ua=function(T,w){return w?Ut(lT,{item:T,times:w}):Ut(cT,{items:T})},Us=function(T){return T},Fa=function(T,w,P){return Ut(y$,{left:T,operation:w,right:P})},Fs=function(T,w){return Ut(C$,{items:T,times:w})},Ya=function(T){return Ut(eR,{items:T})},Ys=function(T){return T.map(w=>typeof w=="number"?w:void 0)},$s=function(){return Math.ceil(jI(Yr()))},un=function(T){var w=T.filter(P=>P).map(P=>Ut(ri,{pitch:P[0]},P.toString()));return Ut(cT,{items:w})},Ot=function(T){return T},Gs=function(T){return T},Ri=function(){},Qs=function(T){return Ut(Io,{items:T})},di=function(T){return Ut(v$,{octave:T})},qs=function(){return Yr().split("").reduce((T,w)=>T+(w==="^"?1:-1),0)},Ni=function(){return Ut($c,{seededRandom:a.seededRandom})},$a=function(T,w){return Ut($c,{min:T,max:w,seededRandom:a.seededRandom})},Ga=function(T,w){return Ut(lT,{item:T,times:w})},Vs=function(T){return Ut(T$,{duration:T})},wi=function(T){return T},Qa=function(T){return Ut(Km,{duration:T})},Di=function(T,w,P,X){const oe=T?a.nodeOptions.octave+T:a.nodeOptions.octave;return Ut(ri,{duration:w,pitch:X,pitchOctave:oe,add:P})},xi=function(T){return T.reduce((w,P)=>w+(P==="#"?1:-1),0)},qa=function(T,w,P){return Ut(Na,{pitches:[T].concat(w),inversion:P})},ia=function(){return Yr()},pi=function(T){return T},mr=function(){return Yr()},Va=function(T,w,P,X,oe){const ve=a.nodeOptions.scaleName?a.nodeOptions.scaleName:"MAJOR",ft=a.nodeOptions.key?a.nodeOptions.key:"C",fn=L$(X,P,ve,T,w),Ks=w||a.nodeOptions.duration,IR=T?a.nodeOptions.octave+T:a.nodeOptions.octave;return Ut(Na,{duration:Ks,chordOctave:IR,pitches:fn,chordName:X,inversion:oe,scaleName:ve,key:ft})},Xr=function(T,w,P){const X=a.nodeOptions.scaleName?a.nodeOptions.scaleName:"MAJOR",oe=a.nodeOptions.key?a.nodeOptions.key:"C";return Ut(E$,{roman:T,chordName:w,inversion:P,scaleName:X,key:oe})},aa=function(T){const w=a.nodeOptions.scaleName?a.nodeOptions.scaleName:"MAJOR",P=a.nodeOptions.key?a.nodeOptions.key:"C",X=Q$(T,P,w);return Ut(ri,{pitch:X.pc,add:X.add,scaleName:w,key:P})},A=0,He=0,za=[{line:1,column:1}],dn=0,zs=[],Oe=0,ge={},sa;if("startRule"in a){if(!(a.startRule in l))throw new Error(`Can't start parsing from rule "`+a.startRule+'".');c=l[a.startRule]}function Yr(){return i.substring(He,A)}function dl(){return d(He,A)}function st(T,w){return{type:"literal",text:T,ignoreCase:w}}function Zr(T,w,P){return{type:"class",parts:T,inverted:w,ignoreCase:P}}function pl(){return{type:"end"}}function Hs(T){return{type:"other",description:T}}function fl(T){var w=za[T],P;if(w)return w;for(P=T-1;!za[P];)P--;for(w=za[P],w={line:w.line,column:w.column};Pdn&&(dn=A,zs=[]),zs.push(T))}function g(T,w,P){return new e(e.buildMessage(T,w),T,w,P)}function O(){var T,w,P=A*56+0,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=Xt(),w!==s&&(He=T,w=Hr(w)),T=w,ge[P]={nextPos:A,result:T},T)}function C(){var T,w,P,X,oe,ve,ft,fn=A*56+1,Ks=ge[fn];if(Ks)return A=Ks.nextPos,Ks.result;for(T=A,w=A,i.charCodeAt(A)===45?(P=u,A++):(P=s,Oe===0&&f(nr)),P===s&&(P=null),X=[],Pe.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(Ze));oe!==s;)X.push(oe),Pe.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(Ze));if(i.charCodeAt(A)===46?(oe=p,A++):(oe=s,Oe===0&&f(ke)),oe!==s){if(ve=[],Pe.test(i.charAt(A))?(ft=i.charAt(A),A++):(ft=s,Oe===0&&f(Ze)),ft!==s)for(;ft!==s;)ve.push(ft),Pe.test(i.charAt(A))?(ft=i.charAt(A),A++):(ft=s,Oe===0&&f(Ze));else ve=s;ve!==s?(P=[P,X,oe,ve],w=P):(A=w,w=s)}else A=w,w=s;if(w===s)if(w=A,i.charCodeAt(A)===46?(P=p,A++):(P=s,Oe===0&&f(ke)),P!==s){if(X=[],Pe.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(Ze)),oe!==s)for(;oe!==s;)X.push(oe),Pe.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(Ze));else X=s;X!==s?(P=[P,X],w=P):(A=w,w=s)}else A=w,w=s;return w!==s&&(He=T,w=xa()),T=w,ge[fn]={nextPos:A,result:T},T}function y(){var T,w,P=A*56+2,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,i.charCodeAt(A)===45?A++:Oe===0&&f(nr),Pe.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(Ze)),w!==s?(He=T,T=na()):(A=T,T=s),ge[P]={nextPos:A,result:T},T)}function D(){var T,w,P,X=A*56+3,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,i.charCodeAt(A)===45?A++:Oe===0&&f(nr),w=[],Pe.test(i.charAt(A))?(P=i.charAt(A),A++):(P=s,Oe===0&&f(Ze)),P!==s)for(;P!==s;)w.push(P),Pe.test(i.charAt(A))?(P=i.charAt(A),A++):(P=s,Oe===0&&f(Ze));else w=s;return w!==s?(He=T,T=xs()):(A=T,T=s),ge[X]={nextPos:A,result:T},T}function F(){var T,w,P=A*56+4,X=ge[P];return X?(A=X.nextPos,X.result):(Oe++,T=A,tt.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(Zt)),w!==s&&(He=T,w=Wr()),T=w,Oe--,T===s&&(w=s,Oe===0&&f(er)),ge[P]={nextPos:A,result:T},T)}function U(){var T,w,P=A*56+8,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=W(),w!==s&&(He=T,w=ks(w)),T=w,ge[P]={nextPos:A,result:T},T)}function W(){var T,w,P,X,oe,ve=A*56+10,ft=ge[ve];if(ft)return A=ft.nextPos,ft.result;if(T=A,nt.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(fe)),w!==s){if(P=[],ht.test(i.charAt(A))?(X=i.charAt(A),A++):(X=s,Oe===0&&f(Ie)),X!==s)for(;X!==s;)P.push(X),ht.test(i.charAt(A))?(X=i.charAt(A),A++):(X=s,Oe===0&&f(Ie));else P=s;if(P!==s){for(X=[],vt.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(we));oe!==s;)X.push(oe),vt.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(we));He=T,T=ka()}else A=T,T=s}else A=T,T=s;return ge[ve]={nextPos:A,result:T},T}function z(){var T,w=A*56+11,P=ge[w];return P?(A=P.nextPos,P.result):(T=pe(),T===s&&(T=he()),ge[w]={nextPos:A,result:T},T)}function pe(){var T,w,P,X,oe=A*56+12,ve=ge[oe];if(ve)return A=ve.nextPos,ve.result;if(T=A,i.charCodeAt(A)===60?(w=v,A++):(w=s,Oe===0&&f(Je)),w!==s){if(P=[],X=z(),X!==s)for(;X!==s;)P.push(X),X=z();else P=s;P!==s?(i.charCodeAt(A)===62?(X=I,A++):(X=s,Oe===0&&f(ye)),X!==s?(He=T,T=La(P)):(A=T,T=s)):(A=T,T=s)}else A=T,T=s;return ge[oe]={nextPos:A,result:T},T}function he(){var T,w=A*56+13,P=ge[w];return P?(A=P.nextPos,P.result):(T=W(),T===s&&(T=pe(),T===s&&(T=F())),ge[w]={nextPos:A,result:T},T)}function se(){var T,w,P,X=A*56+14,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,i.charCodeAt(A)===64?(w=R,A++):(w=s,Oe===0&&f(Ht)),w!==s?(P=z(),P!==s?(He=T,T=Ls(P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function ae(){var T,w=A*56+15,P=ge[w];return P?(A=P.nextPos,P.result):(T=ar(),T===s&&(T=it(),T===s&&(T=qt(),T===s&&(T=du(),T===s&&(T=Qt())))),ge[w]={nextPos:A,result:T},T)}function Ce(){var T,w,P,X=A*56+16,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,w=ae(),w===s&&(w=Zs()),w!==s?(P=se(),P!==s?(He=T,T=Ma(w,P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function Se(){var T,w,P,X=A*56+17,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,w=Ce(),w===s&&(w=ae(),w===s&&(w=Zs())),w!==s?(P=Ve(),P!==s?(He=T,T=Ms(w,P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function Ve(){var T,w,P,X=A*56+18,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,i.charCodeAt(A)===58?(w=x,A++):(w=s,Oe===0&&f(lt)),w!==s?(P=wt(),P!==s?(He=T,T=Pa(P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function je(){var T,w,P=A*56+19,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,mt.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(yt)),w!==s&&(He=T,w=Fr()),T=w,ge[P]={nextPos:A,result:T},T)}function Fe(){var T,w=A*56+20,P=ge[w];return P?(A=P.nextPos,P.result):(T=It(),T===s&&(T=C(),T===s&&(T=je())),ge[w]={nextPos:A,result:T},T)}function It(){var T,w,P,X,oe=A*56+21,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,w=D(),w!==s?(i.charCodeAt(A)===47?(P=$,A++):(P=s,Oe===0&&f(Vr)),P!==s?(X=D(),X!==s?(He=T,T=Ps(w,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function Xt(){var T,w,P,X=A*56+22,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],P=R_(),P===s&&(P=Se(),P===s&&(P=Ce(),P===s&&(P=ar(),P===s&&(P=qt(),P===s&&(P=it(),P===s&&(P=Qt(),P===s&&(P=Zs(),P===s&&(P=du())))))))),P!==s)for(;P!==s;)w.push(P),P=R_(),P===s&&(P=Se(),P===s&&(P=Ce(),P===s&&(P=ar(),P===s&&(P=qt(),P===s&&(P=it(),P===s&&(P=Qt(),P===s&&(P=Zs(),P===s&&(P=du()))))))));else w=s;return w!==s&&(He=T,w=Bs(w)),T=w,ge[X]={nextPos:A,result:T},T}function wt(){var T,w=A*56+23,P=ge[w];return P?(A=P.nextPos,P.result):(T=F(),T===s&&(T=D(),T===s&&(T=I_(),T===s&&(T=fu(),T===s&&(T=tr(),T===s&&(T=y_()))))),ge[w]={nextPos:A,result:T},T)}function tr(){var T,w,P,X,oe=A*56+24,ve=ge[oe];if(ve)return A=ve.nextPos,ve.result;if(T=A,i.charCodeAt(A)===60?(w=v,A++):(w=s,Oe===0&&f(Je)),w!==s){if(P=[],X=wt(),X!==s)for(;X!==s;)P.push(X),X=wt();else P=s;P!==s?(i.charCodeAt(A)===62?(X=I,A++):(X=s,Oe===0&&f(ye)),X!==s?(He=T,T=Ba(P)):(A=T,T=s)):(A=T,T=s)}else A=T,T=s;return ge[oe]={nextPos:A,result:T},T}function it(){var T,w,P,X,oe,ve=A*56+25,ft=ge[ve];return ft?(A=ft.nextPos,ft.result):(T=A,i.charCodeAt(A)===40?(w=Z,A++):(w=s,Oe===0&&f(dt)),w!==s?(i.charCodeAt(A)===58?A++:Oe===0&&f(lt),P=Xt(),P!==s?(X=pt(),X===s&&(X=null),i.charCodeAt(A)===41?(oe=h,A++):(oe=s,Oe===0&&f(Kt)),oe!==s?(He=T,T=Ua(P,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[ve]={nextPos:A,result:T},T)}function pt(){var T,w,P,X=A*56+26,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,i.charCodeAt(A)===58?(w=x,A++):(w=s,Oe===0&&f(lt)),w!==s?(P=D(),P!==s?(He=T,T=Us(P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function ar(){var T,w,P,X,oe=A*56+27,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,w=it(),w!==s?(P=A_(),P!==s?(X=it(),X!==s?(He=T,T=Fa(w,P,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function Qt(){var T,w,P,X,oe,ve=A*56+28,ft=ge[ve];return ft?(A=ft.nextPos,ft.result):(T=A,i.substr(A,2)===b?(w=b,A+=2):(w=s,Oe===0&&f(Tt)),w!==s?(P=Xt(),P!==s?(X=pt(),X===s&&(X=null),i.charCodeAt(A)===93?(oe=S,A++):(oe=s,Oe===0&&f(Ue)),oe!==s?(He=T,T=Fs(P,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[ve]={nextPos:A,result:T},T)}function qt(){var T,w,P,X,oe=A*56+29,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.charCodeAt(A)===91?(w=N,A++):(w=s,Oe===0&&f(Ur)),w!==s?(P=Xt(),P!==s?(i.charCodeAt(A)===93?(X=S,A++):(X=s,Oe===0&&f(Ue)),X!==s?(He=T,T=Ya(P)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function pn(){var T,w=A*56+30,P=ge[w];return P?(A=P.nextPos,P.result):(T=D(),T===s&&(T=y()),ge[w]={nextPos:A,result:T},T)}function Ws(){var T,w,P,X=A*56+31,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],P=hl(),P===s&&(P=pn()),P!==s)for(;P!==s;)w.push(P),P=hl(),P===s&&(P=pn());else w=s;return w!==s&&(He=T,w=Ys(w)),T=w,ge[X]={nextPos:A,result:T},T}function hl(){var T,w,P,X,oe=A*56+32,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.charCodeAt(A)===40?A++:Oe===0&&f(dt),w=pn(),w!==s?(P=A_(),P!==s?(X=Ws(),X!==s?(i.charCodeAt(A)===41?A++:Oe===0&&f(Kt),He=T,T=$s()):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function Xs(){var T,w,P,X,oe=A*56+33,ve=ge[oe];if(ve)return A=ve.nextPos,ve.result;if(T=A,i.charCodeAt(A)===123?(w=k,A++):(w=s,Oe===0&&f(Fn)),w!==s){if(P=[],X=Ws(),X===s&&(X=F()),X!==s)for(;X!==s;)P.push(X),X=Ws(),X===s&&(X=F());else P=s;P!==s?(i.charCodeAt(A)===125?(X=L,A++):(X=s,Oe===0&&f(ct)),X!==s?(He=T,T=un(P)):(A=T,T=s)):(A=T,T=s)}else A=T,T=s;return ge[oe]={nextPos:A,result:T},T}function y_(){var T,w,P,X,oe=A*56+34,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.charCodeAt(A)===123?(w=k,A++):(w=s,Oe===0&&f(Fn)),w!==s?(P=D(),P===s&&(P=fu()),P!==s?(i.charCodeAt(A)===125?(X=L,A++):(X=s,Oe===0&&f(ct)),X!==s?(He=T,T=Ot(P)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function A_(){var T,w=A*56+35,P=ge[w];return P?(A=P.nextPos,P.result):(i.charCodeAt(A)===43?(T=M,A++):(T=s,Oe===0&&f(zr)),T===s&&(i.charCodeAt(A)===45?(T=u,A++):(T=s,Oe===0&&f(nr)),T===s&&(i.charCodeAt(A)===42?(T=G,A++):(T=s,Oe===0&&f(Rr)),T===s&&(i.charCodeAt(A)===47?(T=$,A++):(T=s,Oe===0&&f(Vr)),T===s&&(i.charCodeAt(A)===37?(T=te,A++):(T=s,Oe===0&&f(Ii)),T===s&&(i.charCodeAt(A)===94?(T=ne,A++):(T=s,Oe===0&&f(Nr)),T===s&&(i.charCodeAt(A)===124?(T=_,A++):(T=s,Oe===0&&f(H)),T===s&&(i.charCodeAt(A)===38?(T=re,A++):(T=s,Oe===0&&f(Wt)),T===s&&(i.substr(A,2)===ee?(T=ee,A+=2):(T=s,Oe===0&&f(Cn)),T===s&&(i.substr(A,2)===B?(T=B,A+=2):(T=s,Oe===0&&f(ta))))))))))),ge[w]={nextPos:A,result:T},T)}function Zs(){var T,w,P=A*56+36,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=ER(),w===s&&(w=yR(),w===s&&(w=CR(),w===s&&(w=AR(),w===s&&(w=U(),w===s&&(w=TR(),w===s&&(w=ml(),w===s&&(w=SR(),w===s&&(w=F(),w===s&&(w=OR(),w===s&&(w=it(),w===s&&(w=Xs(),w===s&&(w=_R())))))))))))),w!==s&&(He=T,w=Gs(w)),T=w,ge[P]={nextPos:A,result:T},T)}function _R(){var T,w,P=A*56+37,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,i.charCodeAt(A)===124?(w=_,A++):(w=s,Oe===0&&f(H)),w!==s&&(He=T,w=Ri()),T=w,ge[P]={nextPos:A,result:T},T)}function du(){var T,w,P,X,oe=A*56+38,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.charCodeAt(A)===60?(w=v,A++):(w=s,Oe===0&&f(Je)),w!==s?(P=Xt(),P!==s?(i.charCodeAt(A)===62?(X=I,A++):(X=s,Oe===0&&f(ye)),X!==s?(He=T,T=Qs(P)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function SR(){var T,w,P=A*56+39,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=pu(),w!==s&&(He=T,w=di(w)),T=w,ge[P]={nextPos:A,result:T},T)}function pu(){var T,w,P,X=A*56+40,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],i.charCodeAt(A)===94?(P=ne,A++):(P=s,Oe===0&&f(Nr)),P===s&&(i.charCodeAt(A)===95?(P=Q,A++):(P=s,Oe===0&&f(oi))),P!==s)for(;P!==s;)w.push(P),i.charCodeAt(A)===94?(P=ne,A++):(P=s,Oe===0&&f(Nr)),P===s&&(i.charCodeAt(A)===95?(P=Q,A++):(P=s,Oe===0&&f(oi)));else w=s;return w!==s&&(He=T,w=qs()),T=w,ge[X]={nextPos:A,result:T},T}function I_(){var T,w,P=A*56+41,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,i.charCodeAt(A)===63?(w=j,A++):(w=s,Oe===0&&f(ra)),w!==s&&(He=T,w=Ni()),T=w,ge[P]={nextPos:A,result:T},T)}function fu(){var T,w,P,X,oe,ve,ft=A*56+42,fn=ge[ft];return fn?(A=fn.nextPos,fn.result):(T=A,i.charCodeAt(A)===40?(w=Z,A++):(w=s,Oe===0&&f(dt)),w!==s?(P=D(),P!==s?(i.charCodeAt(A)===44?(X=m,A++):(X=s,Oe===0&&f(ir)),X!==s?(oe=D(),oe!==s?(i.charCodeAt(A)===41?(ve=h,A++):(ve=s,Oe===0&&f(Kt)),ve!==s?(He=T,T=$a(P,oe)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[ft]={nextPos:A,result:T},T)}function R_(){var T,w,P,X,oe=A*56+43,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,w=Se(),w===s&&(w=Ce(),w===s&&(w=ae(),w===s&&(w=Zs()))),w!==s?(i.charCodeAt(A)===33?(P=K,A++):(P=s,Oe===0&&f(cn)),P!==s?(X=D(),X!==s?(He=T,T=Ga(w,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function OR(){var T,w,P=A*56+44,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=Fe(),w!==s&&(He=T,w=Vs(w)),T=w,ge[P]={nextPos:A,result:T},T)}function bR(){var T,w,P,X=A*56+45,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,w=Fe(),w!==s?(i.charCodeAt(A)===94?(P=ne,A++):(P=s,Oe===0&&f(Nr)),P!==s?(He=T,T=wi(w)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function ER(){var T,w,P,X,oe,ve=A*56+46,ft=ge[ve];return ft?(A=ft.nextPos,ft.result):(T=A,w=bR(),w===s&&(w=null),i.charCodeAt(A)===114?(P=ue,A++):(P=s,Oe===0&&f(li)),P!==s?(X=A,Oe++,At.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(yn)),Oe--,oe===s?X=void 0:(A=X,X=s),X!==s?(He=T,T=Qa(w)):(A=T,T=s)):(A=T,T=s),ge[ve]={nextPos:A,result:T},T)}function ml(){var T,w,P,X,oe,ve=A*56+47,ft=ge[ve];return ft?(A=ft.nextPos,ft.result):(T=A,w=pu(),w===s&&(w=null),P=Fe(),P===s&&(P=null),X=vR(),X===s&&(X=null),oe=y(),oe===s&&(oe=I_(),oe===s&&(oe=fu(),oe===s&&(oe=y_()))),oe!==s?(He=T,T=Di(w,P,X,oe)):(A=T,T=s),ge[ve]={nextPos:A,result:T},T)}function vR(){var T,w,P,X=A*56+48,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],i.charCodeAt(A)===35?(P=le,A++):(P=s,Oe===0&&f(jt)),P===s&&(i.charCodeAt(A)===98?(P=be,A++):(P=s,Oe===0&&f(ci))),P!==s)for(;P!==s;)w.push(P),i.charCodeAt(A)===35?(P=le,A++):(P=s,Oe===0&&f(jt)),P===s&&(i.charCodeAt(A)===98?(P=be,A++):(P=s,Oe===0&&f(ci)));else w=s;return w!==s&&(He=T,w=xi(w)),T=w,ge[X]={nextPos:A,result:T},T}function TR(){var T,w,P,X,oe=A*56+49,ve=ge[oe];if(ve)return A=ve.nextPos,ve.result;if(T=A,w=ml(),w!==s){if(P=[],X=ml(),X!==s)for(;X!==s;)P.push(X),X=ml();else P=s;P!==s?(X=hu(),X===s&&(X=null),He=T,T=qa(w,P,X)):(A=T,T=s)}else A=T,T=s;return ge[oe]={nextPos:A,result:T},T}function N_(){var T,w,P,X=A*56+50,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],Nt.test(i.charAt(A))?(P=i.charAt(A),A++):(P=s,Oe===0&&f(ui)),P!==s)for(;P!==s;)w.push(P),Nt.test(i.charAt(A))?(P=i.charAt(A),A++):(P=s,Oe===0&&f(ui));else w=s;return w!==s&&(He=T,w=ia()),T=w,ge[X]={nextPos:A,result:T},T}function hu(){var T,w,P,X=A*56+51,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,i.charCodeAt(A)===37?(w=te,A++):(w=s,Oe===0&&f(Ii)),w!==s?(P=D(),P!==s?(He=T,T=pi(P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function w_(){var T,w,P=A*56+52,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,Ir.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(q)),w!==s?(qe.test(i.charAt(A))?(i.charAt(A),A++):Oe===0&&f(ie),He=T,T=mr()):(A=T,T=s),ge[P]={nextPos:A,result:T},T)}function CR(){var T,w,P,X,oe,ve,ft=A*56+53,fn=ge[ft];return fn?(A=fn.nextPos,fn.result):(T=A,w=pu(),w===s&&(w=null),P=Fe(),P===s&&(P=null),X=w_(),X!==s?(i.charCodeAt(A)===94?A++:Oe===0&&f(Nr),oe=N_(),oe!==s?(ve=hu(),ve===s&&(ve=null),He=T,T=Va(w,P,X,oe,ve)):(A=T,T=s)):(A=T,T=s),ge[ft]={nextPos:A,result:T},T)}function yR(){var T,w,P,X,oe=A*56+54,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.substr(A,3)===De?(w=De,A+=3):(w=s,Oe===0&&f(de)),w===s&&(i.substr(A,2)===xe?(w=xe,A+=2):(w=s,Oe===0&&f(_e)),w===s&&(i.substr(A,2)===Ee?(w=Ee,A+=2):(w=s,Oe===0&&f(Ae)),w===s&&(i.charCodeAt(A)===105?(w=Ne,A++):(w=s,Oe===0&&f(Qe)),w===s&&(i.substr(A,3)===ce?(w=ce,A+=3):(w=s,Oe===0&&f(Me)),w===s&&(i.substr(A,2)===Le?(w=Le,A+=2):(w=s,Oe===0&&f(Ct)),w===s&&(i.charCodeAt(A)===118?(w=Xe,A++):(w=s,Oe===0&&f(wr)))))))),w!==s?(i.charCodeAt(A)===94?A++:Oe===0&&f(Nr),P=N_(),P===s&&(P=null),X=hu(),X===s&&(X=null),He=T,T=Xr(w,P,X)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function AR(){var T,w,P=A*56+55,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=w_(),w!==s&&(He=T,w=aa(w)),T=w,ge[P]={nextPos:A,result:T},T)}var D_=a.nodeOptions||{};function Ut(T,w,P=void 0){w.text=P||Yr(),w.location=dl();for(var X in D_)(w[X]===void 0||w[X]===null)&&(w[X]=D_[X]);return new T(w)}if(sa=c(),sa!==s&&A===i.length)return sa;throw sa!==s&&Ae.collect("pitch"))}notes(){return this.evaluated.map(e=>e.collect("note"))}sounds(){return this.evaluated.map(e=>e.collect("sound"))}indices(){return this.evaluated.map(e=>e.collect("soundIndex"))}freqs(){return this.evaluated.map(e=>e.collect("freq"))}durations(){return this.evaluated.map(e=>e.collect("duration"))}octaves(){return this.evaluated.map(e=>e.collect("octave"))}retrograde(){return this.evaluated=this.evaluated.reverse(),this}scale(e){return this.applyOptions({scale:e}),this}key(e){return this.applyOptions({key:e}),this}octave(e){return this.applyOptions({octave:e}),this}invert(e){return this.applyOptions({inversion:e}),this}isInOptions(e,t){return this.options.nodeOptions&&this.options.nodeOptions[e]===t}atLast(){return this.index+1>=this.evaluated.length*this.redo}clone(){return ti(this)}notStarted(){return this.index<0}peek(){return this.evaluated[this.index-1||0]}hasStarted(){return this.index>=0}next(){this.index<0&&(this.index=0);const e=this.evaluated[this.index%this.evaluated.length];return this.index++,this.counter++,this.redo>0&&this.index>=this.evaluated.length*this.redo&&(this.index=0,this.evaluated=this.evaluate(this.values)),e}applyOptions(e={}){this.evaluated=this.evaluate(this.evaluated,e),this.applyTransformations()}applyTransformations(){var e;(e=this.globalOptions)!=null&&e.retrograde&&(this.evaluated=this.evaluated.reverse())}update(){return this.evaluated=this.evaluate(this.values),this.applyTransformations(),this}evaluate(e,t={}){let r=e.map(i=>i.evaluate(t)).flat(1/0).filter(i=>i!==void 0);return t.subdivisions&&(r=oR(r)),r}totalDuration(){return this.evaluated.reduce((t,r)=>t+r.collect("duration"),0)}lead(){let e=this.evaluated.findIndex(t=>t instanceof Na);if(e>=0){for(let t=e+1;t<=this.evaluated.length;t++)if(this.evaluated[t]instanceof Na){const r=this.evaluated[e],i=this.evaluated[t],a=V$(r.notes(),i.notes()),s=ti(i);s.voiceLeadFromNotes(a,this.options.nodeOptions),this.evaluated[t]=s,e=t}}return this}}const oR=(n,e=void 0)=>n.map(r=>{if(r instanceof eR){const i=r.evaluated.length,a=(e||r.duration)/i;return oR(r.evaluated,a)}else return r.duration=e||r.duration,r}).flat(1/0),W$=n=>{let e={};return _$.forEach(t=>{if(n[t]!==void 0){const r=n[t];e[t]=r,delete n[t]}}),e};class X${constructor(e,t){E(this,"api");E(this,"settings");E(this,"midiAccess",null);E(this,"midiOutputs",[]);E(this,"currentOutputIndex",0);E(this,"scheduledNotes",{});E(this,"midiInputs",[]);E(this,"currentInputIndex");E(this,"bufferLength",512);E(this,"noteInputBuffer",[]);E(this,"ccInputBuffer",[]);E(this,"activeNotes",[]);E(this,"stickyNotes",[]);E(this,"lastNote");E(this,"lastCC",{});E(this,"lastNoteInChannel",{});E(this,"lastCCInChannel",{});E(this,"midiClockInputIndex");E(this,"midiClockInput");E(this,"lastTimestamp",0);E(this,"midiClockDelta",0);E(this,"lastBPM");E(this,"roundedBPM",0);E(this,"clockBuffer",[]);E(this,"clockBufferLength",24);E(this,"clockTicks",0);E(this,"clockErrorCount",0);E(this,"skipOnError",0);this.api=e,this.settings=t,this.lastBPM=e.bpm(),this.roundedBPM=this.lastBPM,this.initializeMidiAccess()}async initializeMidiAccess(){try{this.midiAccess=await navigator.requestMIDIAccess(),this.midiOutputs=Array.from(this.midiAccess.outputs.values()),this.midiOutputs.length===0&&(console.warn("No MIDI outputs available."),this.currentOutputIndex=-1),this.midiInputs=Array.from(this.midiAccess.inputs.values()),this.midiInputs.length===0?console.warn("No MIDI inputs available."):this.updateInputSelects()}catch(e){console.error("Failed to initialize MIDI:",e)}}getCurrentMidiPort(){return this.midiOutputs.length>0&&this.currentOutputIndex>=0&&this.currentOutputIndex0&&this.currentOutputIndex>=0&&this.currentOutputIndex0){const e=document.getElementById("midi-clock-input"),t=document.getElementById("default-midi-input");e.innerHTML="",t.innerHTML="";const r=document.createElement("option");r.value="-1",r.text="Internal",e.appendChild(r);const i=document.createElement("option");if(i.value="-1",i.text="None",t.appendChild(i),this.midiInputs.forEach((a,s)=>{const o=document.createElement("option");o.value=s.toString(),o.text=a.name||s.toString(),e.appendChild(o),t.appendChild(o.cloneNode(!0))}),this.settings.midi_clock_input){const a=this.getMidiInputIndex(this.settings.midi_clock_input);e.value=a.toString(),a>0&&(this.midiClockInput=this.midiInputs[a],this.registerMidiInputListener(a))}else e.value="-1";if(this.settings.default_midi_input){const a=this.getMidiInputIndex(this.settings.default_midi_input);t.value=a.toString(),a>0&&(this.currentInputIndex=a,this.registerMidiInputListener(a))}else t.value="-1";e.addEventListener("change",a=>{const s=a.target.value;if(s==="-1")this.midiClockInput&&this.midiClockInputIndex!=this.currentInputIndex&&(this.midiClockInput.onmidimessage=null),this.midiClockInput=void 0,this.settings.midi_clock_input=void 0;else{const o=parseInt(s);this.midiClockInputIndex=o,this.midiClockInput&&this.midiClockInputIndex!=this.currentInputIndex&&(this.midiClockInput.onmidimessage=null),this.midiClockInput=this.midiInputs[o],this.registerMidiInputListener(o),this.settings.midi_clock_input=this.midiClockInput.name||void 0}}),t.addEventListener("change",a=>{const s=a.target.value;s==="-1"?(this.currentInputIndex&&this.currentInputIndex!=this.midiClockInputIndex&&this.unregisterMidiInputListener(this.currentInputIndex),this.currentInputIndex=void 0,this.settings.default_midi_input=void 0):(this.currentInputIndex&&this.currentInputIndex!=this.midiClockInputIndex&&this.unregisterMidiInputListener(this.currentInputIndex),this.currentInputIndex=parseInt(s),this.registerMidiInputListener(this.currentInputIndex),this.settings.default_midi_input=this.midiInputs[this.currentInputIndex].name||void 0)})}}registerMidiInputListener(e){if(e!==void 0){const t=this.midiInputs[e];t&&!t.onmidimessage&&(t.onmidimessage=r=>{const i=r;if(t.name===this.settings.midi_clock_input&&(i.data[0]===248?this.skipOnError>0?this.skipOnError-=1:this.onMidiClock(r.timeStamp):i.data[0]===250?(console.log("MIDI start received"),this.api.stop(),this.api.play()):i.data[0]===252?(console.log("MIDI stop received"),this.api.pause()):i.data[0]===251?(console.log("MIDI continue received"),this.api.play()):i.data[0]===254&&console.log("MIDI active sensing received")),t.name===this.settings.default_midi_input){if(i.data[0]>=144&&i.data[0]<=159){const a=i.data[0]-144+1,s=i.data[1],o=i.data[2];this.lastNote={note:s,velocity:o,channel:a,timestamp:r.timeStamp},this.lastNoteInChannel[a]={note:s,velocity:o,channel:a,timestamp:r.timeStamp},this.settings.midi_channels_scripts&&this.api.script(a),this.pushToMidiInputBuffer({note:s,velocity:o,channel:a,timestamp:r.timeStamp}),this.activeNotes.push({note:s,velocity:o,channel:a,timestamp:r.timeStamp}),this.removeFromStickyNotes(s,a)||this.stickyNotes.push({note:s,velocity:o,channel:a,timestamp:r.timeStamp})}if(i.data[0]>=128&&i.data[0]<=143){const a=i.data[0]-128+1,s=i.data[1];this.removeFromActiveNotes(s,a)}if(i.data[0]>=176&&i.data[0]<=191){const a=i.data[0]-176+1,s=i.data[1],o=i.data[2];this.lastCC[s]=o,this.lastCCInChannel[a]?this.lastCCInChannel[a][s]=o:(this.lastCCInChannel[a]={},this.lastCCInChannel[a][s]=o),this.pushToMidiCCBuffer({control:s,value:o,channel:a,timestamp:r.timeStamp})}}})}}removeFromActiveNotes(e,t){const r=this.activeNotes.findIndex(i=>i.note===e&&i.channel===t);r>=0&&this.activeNotes.splice(r,1)}removeFromStickyNotes(e,t){const r=this.stickyNotes.findIndex(i=>i.note===e&&i.channel===t);return r>=0?(this.stickyNotes.splice(r,1),!0):!1}stickyNotesFromChannel(e){return this.stickyNotes.filter(t=>t.channel===e)}activeNotesFromChannel(e){return this.activeNotes.filter(t=>t.channel===e)}killActiveNotes(){this.activeNotes=[]}killActiveNotesFromChannel(e){this.activeNotes=this.activeNotes.filter(t=>t.channel!==e)}pushToMidiInputBuffer(e){this.noteInputBuffer.push(e),this.noteInputBuffer.length>this.bufferLength&&this.noteInputBuffer.shift()}pushToMidiCCBuffer(e){this.ccInputBuffer.push(e),this.ccInputBuffer.length>this.bufferLength&&this.ccInputBuffer.shift()}findNoteFromBufferInChannel(e){const t=this.noteInputBuffer.findIndex(r=>r.channel===e);if(t>=0){const r=this.noteInputBuffer[t];return this.noteInputBuffer.splice(t,1),r}else return}findCCFromBufferInChannel(e){const t=this.ccInputBuffer.findIndex(r=>r.channel===e);if(t>=0){const r=this.ccInputBuffer[t];return this.ccInputBuffer.splice(t,1),r}else return}unregisterMidiInputListener(e){if(e!==void 0){const t=this.midiInputs[e];t&&(t.onmidimessage=null)}}onMidiClock(e){if(this.clockTicks+=1,this.lastTimestamp>0)if(this.lastTimestamp===e)this.clockErrorCount+=1;else if(this.clockErrorCount>0)console.log("Timestamp error count: ",this.clockErrorCount),console.log("Current timestamp: ",e),console.log("Last timestamp: ",this.lastTimestamp),console.log("Last delta: ",this.midiClockDelta),console.log("Current delta: ",e-this.lastTimestamp),console.log("BPMs",this.clockBuffer),this.clockErrorCount=0,this.skipOnError=this.settings.midi_clock_ppqn/4,e=0;else{this.midiClockDelta=e-this.lastTimestamp,this.lastBPM=60*(1e3/this.midiClockDelta/this.settings.midi_clock_ppqn),this.clockBuffer.push(this.lastBPM),this.clockBuffer.length>this.clockBufferLength&&this.clockBuffer.shift();const t=this.estimatedBPM();t!==this.roundedBPM&&(console.log("Estimated BPM: ",t),this.api.bpm(t),this.roundedBPM=t)}this.lastTimestamp=e}estimatedBPM(){const e=this.clockBuffer.reduce((t,r)=>t+r);return Math.round(e/this.clockBuffer.length)}sendMidiClock(){if(!this.midiClockInput){const e=this.midiOutputs[this.currentOutputIndex];e&&e.send([248])}}switchMidiOutput(e){const t=this.getMidiOutputIndex(e);return t!==-1?(this.currentOutputIndex=t,!0):!1}getMidiOutputIndex(e){if(typeof e=="number")return e<0||e>=this.midiOutputs.length?(console.error(`Invalid MIDI output index. Index must be in the range 0-${this.midiOutputs.length-1}.`),this.currentOutputIndex):e;{const t=this.midiOutputs.findIndex(r=>r.name===e);return t!==-1?t:(console.error(`MIDI output "${e}" not found.`),this.currentOutputIndex)}}getMidiInputIndex(e){if(typeof e=="number")return e<0||e>=this.midiInputs.length?(console.error(`Invalid MIDI input index. Index must be in the range 0-${this.midiInputs.length-1}.`),-1):e;{const t=this.midiInputs.findIndex(r=>r.name===e);return t!==-1?t:(console.error(`MIDI input "${e}" not found.`),-1)}}listMidiOutputs(){let e="Available MIDI Outputs: ";return this.midiOutputs.forEach((t,r)=>{e+=`(${r+1}) ${t.name} `}),e}sendMidiNote(e,t,r,i,a=this.currentOutputIndex,s=void 0){typeof a=="string"&&(a=this.getMidiOutputIndex(a));const o=this.midiOutputs[a];if(e=Math.min(Math.max(e,0),127),o){const l=[144+t,e,r],c=[128+t,e,0];o.send(l),s&&this.sendPitchBend(s,t,a);const u=setTimeout(()=>{o.send(c),s&&this.sendPitchBend(8192,t,a),delete this.scheduledNotes[e]},(i-.02)*1e3);this.scheduledNotes[e]=u}else console.error("MIDI output not available.")}sendMidiOn(e,t,r,i=this.currentOutputIndex){typeof i=="string"&&(i=this.getMidiOutputIndex(i));const a=this.midiOutputs[i];if(e=Math.min(Math.max(e,0),127),a){const s=[144+t,e,r];a.send(s)}else console.error("MIDI output not available.")}sendMidiOff(e,t,r=this.currentOutputIndex){typeof r=="string"&&(r=this.getMidiOutputIndex(r));const i=this.midiOutputs[r];if(e=Math.min(Math.max(e,0),127),i){const a=[128+t,e,0];i.send(a)}else console.error("MIDI output not available.")}sendAllNotesOff(e,t=this.currentOutputIndex){typeof t=="string"&&(t=this.getMidiOutputIndex(t));const r=this.midiOutputs[t];if(r){const i=[176+e,123,0];r.send(i)}else console.error("MIDI output not available.")}sendAllSoundOff(e,t=this.currentOutputIndex){typeof t=="string"&&(t=this.getMidiOutputIndex(t));const r=this.midiOutputs[t];if(r){const i=[176+e,120,0];r.send(i)}else console.error("MIDI output not available.")}sendSysExMessage(e){const t=this.midiOutputs[this.currentOutputIndex];t?t.send(e):console.error("MIDI output not available.")}sendPitchBend(e,t,r=this.currentOutputIndex){(e<0||e>16383)&&console.error("Invalid pitch bend value. Value must be in the range 0-16383."),(t<0||t>15)&&console.error("Invalid MIDI channel. Channel must be in the range 0-15."),typeof r=="string"&&(r=this.getMidiOutputIndex(r));const i=this.midiOutputs[r];if(i){const a=e&127,s=e>>7&127;i.send([224|t,a,s])}else console.error("MIDI output not available.")}sendProgramChange(e,t){const r=this.midiOutputs[this.currentOutputIndex];r?r.send([192+t,e]):console.error("MIDI output not available.")}sendMidiControlChange(e,t,r){const i=this.midiOutputs[this.currentOutputIndex];i?i.send([176+r,e,t]):console.error("MIDI output not available.")}panic(){const e=this.midiOutputs[this.currentOutputIndex];if(e){for(const t in this.scheduledNotes){const r=this.scheduledNotes[t];clearTimeout(r),e.send([128,parseInt(t),0])}this.scheduledNotes={}}else console.error("MIDI output not available.")}}class Z${constructor(e,t,r){E(this,"min");E(this,"max");E(this,"wrap");E(this,"position");this.min=e,this.max=t,this.wrap=r,this.position=0}step(){const e=Math.floor(Math.random()*3)-1;this.position+=e,this.wrap?this.position>this.max?this.position=this.min:this.positionthis.max&&(this.position=this.max)}getPosition(){return this.position}toggleWrap(e){this.wrap=e}}class S_{constructor(e){E(this,"seedValue");E(this,"randomGen",Math.random);E(this,"app");E(this,"values",{});E(this,"evenbar",e=>this.app.clock.time_position.bar%2===0?this.modify(e):this);E(this,"even",e=>this.app.clock.time_position.beat%2===0?this.modify(e):this);E(this,"odd",e=>this.app.clock.time_position.beat%2!==0?this.modify(e):this);E(this,"odds",(e,t)=>this.randomGen()this);E(this,"almostNever",e=>this.odds(.025,e));E(this,"rarely",e=>this.odds(.1,e));E(this,"scarcely",e=>this.odds(.25,e));E(this,"sometimes",e=>this.odds(.5,e));E(this,"often",e=>this.odds(.75,e));E(this,"frequently",e=>this.odds(.9,e));E(this,"almostAlways",e=>this.odds(.985,e));E(this,"always",e=>this.modify(e));E(this,"modify",e=>e(this));E(this,"seed",e=>(this.seedValue=e.toString(),this.randomGen=this.app.api.localSeededRandom(this.seedValue),this));E(this,"clear",()=>(this.app.api.clearLocalSeed(this.seedValue),this));E(this,"apply",e=>this.modify(e));E(this,"length",e=>(this.values.length=e,this));this.app=e,this.app.api.currentSeed&&(this.randomGen=this.app.api.randomGen)}}class lR extends S_{constructor(t){super(t);E(this,"octave",t=>(this.values.octave=t,this.update(),this));E(this,"key",t=>(this.values.key=t,this.update(),this));E(this,"scale",t=>(h_(t)?(this.values.scaleName=t,this.values.parsedScale=vi(t)):this.values.parsedScale=m_(t),this.update(),this));E(this,"freq",t=>{this.values.freq=t;const r=A$(t);return r%1!==0?(this.values.note=Math.floor(r),this.values.bend=tR(r)[1]):this.values.note=r,this});E(this,"update",()=>{})}}let xr=[],K$=(n,e)=>{let t,r=[],i={lc:0,l:e||0,value:n,set(a){i.value=a,i.notify()},get(){return i.lc||i.listen(()=>{})(),i.value},notify(a){t=r;let s=!xr.length;for(let o=0;o{r===t&&(r=r.slice());let o=r.indexOf(a);~o&&(r.splice(o,2),i.lc--,i.lc||i.off())}},subscribe(a,s){let o=i.listen(a,s);return a(i.value),o},off(){}};return i},j$=(n={})=>{let e=K$(n);return e.setKey=function(t,r){typeof r>"u"?t in e.value&&(e.value={...e.value},delete e.value[t],e.notify(t)):e.value[t]!==r&&(e.value={...e.value,[t]:r},e.notify(t))},e};if(typeof DelayNode<"u"){class n extends DelayNode{constructor(t,r,i,a){super(t),r=Math.abs(r),this.delayTime.value=i;const s=t.createGain();s.gain.value=Math.min(Math.abs(a),.995),this.feedback=s.gain;const o=t.createGain();return o.gain.value=r,this.delayGain=o,this.connect(s),this.connect(o),s.connect(this),this.connect=l=>o.connect(l),this}start(t){this.delayGain.gain.setValueAtTime(this.delayGain.gain.value,t+this.delayTime.value)}}AudioContext.prototype.createFeedbackDelay=function(e,t,r){return new n(this,e,t,r)}}var O_={};O_.generateReverb=function(n,e){for(var t=n.audioContext||new AudioContext,r=t.sampleRate,i=n.numChannels||2,a=n.decayTime*1.5,s=Math.round(n.decayTime*r),o=Math.round(a*r),l=Math.round((n.fadeInTime||0)*r),c=Math.pow(1/1e3,1/s),u=t.createBuffer(i,o,r),p=0;p{O_.generateReverb({audioContext:this,numChannels:2,decayTime:a,fadeInTime:s,lpFreqStart:o,lpFreqEnd:l},c=>{i.buffer=c}),i.duration=a,i.fade=s,i.lp=o,i.dim=l},i.generate(n,e,t,r),i});var uT={a:{freqs:[660,1120,2750,3e3,3350],gains:[1,.5012,.0708,.0631,.0126],qs:[80,90,120,130,140]},e:{freqs:[440,1800,2700,3e3,3300],gains:[1,.1995,.1259,.1,.1],qs:[70,80,100,120,120]},i:{freqs:[270,1850,2900,3350,3590],gains:[1,.0631,.0631,.0158,.0158],qs:[40,90,100,120,120]},o:{freqs:[430,820,2700,3e3,3300],gains:[1,.3162,.0501,.0794,.01995],qs:[40,80,100,120,120]},u:{freqs:[370,630,2750,3e3,3400],gains:[1,.1,.0708,.0316,.01995],qs:[40,60,100,120,120]}};if(typeof GainNode<"u"){class n extends GainNode{constructor(t,r){if(super(t),!uT[r])throw new Error("vowel: unknown vowel "+r);const{gains:i,qs:a,freqs:s}=uT[r],o=t.createGain();for(let l=0;l<5;l++){const c=t.createGain();c.gain.value=i[l];const u=t.createBiquadFilter();u.type="bandpass",u.Q.value=a[l],u.frequency.value=s[l],this.connect(u),u.connect(c),c.connect(o)}return o.gain.value=8,this.connect=l=>o.connect(l),this}}AudioContext.prototype.createVowelFilter=function(e){return new n(this,e)}}const rG=n=>{var i;if(typeof n!="string")return[];const[e,t="",r]=((i=n.match(/^([a-gA-G])([#bsf]*)([0-9]*)$/))==null?void 0:i.slice(1))||[];return e?[e,t,r?Number(r):void 0]:[]},nG={c:0,d:2,e:4,f:5,g:7,a:9,b:11},iG={"#":1,b:-1,s:1,f:-1},uu=(n,e=3)=>{const[t,r,i=e]=rG(n);if(!t)throw new Error('not a note: "'+n+'"');const a=nG[t.toLowerCase()],s=(r==null?void 0:r.split("").reduce((o,l)=>o+iG[l],0))||0;return(Number(i)+1)*12+a+s},cR=n=>Math.pow(2,(n-69)/12)*440,Jm=(n,e,t)=>Math.min(Math.max(n,e),t),aG=n=>12*Math.log(n/440)/Math.LN2+69,sG=(n,e)=>{if(typeof n!="object")throw new Error("valueToMidi: expected object value");let{freq:t,note:r}=n;if(typeof t=="number")return aG(t);if(typeof r=="string")return uu(r);if(typeof r=="number")return r;if(!e)throw new Error("valueToMidi: expected freq or note to be set");return e},oG="data:application/javascript;base64,Ly8gTElDRU5TRSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2My4wIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGt0cjAvV2ViRGlydC9ibG9iL21haW4vTElDRU5TRQovLyBhbGwgdGhlIGNyZWRpdCBnb2VzIHRvIGRrdHIwJ3Mgd2ViZGlydDogaHR0cHM6Ly9naXRodWIuY29tL2RrdHIwL1dlYkRpcnQvYmxvYi81Y2UzZDY5ODM2MmM1NGQ2ZTFiNjhhY2M0N2ViMjk1NWFjNjJjNzkzL2Rpc3QvQXVkaW9Xb3JrbGV0cy5qcwovLyA8MwoKY2xhc3MgQ29hcnNlUHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgcmV0dXJuIFt7IG5hbWU6ICdjb2Fyc2UnLCBkZWZhdWx0VmFsdWU6IDEgfV07CiAgfQoKICBjb25zdHJ1Y3RvcigpIHsKICAgIHN1cGVyKCk7CiAgICB0aGlzLm5vdFN0YXJ0ZWQgPSB0cnVlOwogIH0KCiAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdOwogICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXTsKICAgIGNvbnN0IGNvYXJzZSA9IHBhcmFtZXRlcnMuY29hcnNlOwogICAgY29uc3QgYmxvY2tTaXplID0gMTI4OwogICAgY29uc3QgaGFzSW5wdXQgPSAhKGlucHV0WzBdID09PSB1bmRlZmluZWQpOwogICAgaWYgKGhhc0lucHV0KSB7CiAgICAgIHRoaXMubm90U3RhcnRlZCA9IGZhbHNlOwogICAgICBvdXRwdXRbMF1bMF0gPSBpbnB1dFswXVswXTsKICAgICAgZm9yIChsZXQgbiA9IDE7IG4gPCBibG9ja1NpemU7IG4rKykgewogICAgICAgIGZvciAobGV0IG8gPSAwOyBvIDwgb3V0cHV0Lmxlbmd0aDsgbysrKSB7CiAgICAgICAgICBvdXRwdXRbb11bbl0gPSBuICUgY29hcnNlID09IDAgPyBpbnB1dFswXVtuXSA6IG91dHB1dFtvXVtuIC0gMV07CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQoKcmVnaXN0ZXJQcm9jZXNzb3IoJ2NvYXJzZS1wcm9jZXNzb3InLCBDb2Fyc2VQcm9jZXNzb3IpOwoKY2xhc3MgQ3J1c2hQcm9jZXNzb3IgZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgewogIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICByZXR1cm4gW3sgbmFtZTogJ2NydXNoJywgZGVmYXVsdFZhbHVlOiAwIH1dOwogIH0KCiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpOwogICAgdGhpcy5ub3RTdGFydGVkID0gdHJ1ZTsKICB9CgogIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXTsKICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07CiAgICBjb25zdCBjcnVzaCA9IHBhcmFtZXRlcnMuY3J1c2g7CiAgICBjb25zdCBibG9ja1NpemUgPSAxMjg7CiAgICBjb25zdCBoYXNJbnB1dCA9ICEoaW5wdXRbMF0gPT09IHVuZGVmaW5lZCk7CiAgICBpZiAoaGFzSW5wdXQpIHsKICAgICAgdGhpcy5ub3RTdGFydGVkID0gZmFsc2U7CiAgICAgIGlmIChjcnVzaC5sZW5ndGggPT09IDEpIHsKICAgICAgICBjb25zdCB4ID0gTWF0aC5wb3coMiwgY3J1c2hbMF0gLSAxKTsKICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJsb2NrU2l6ZTsgbisrKSB7CiAgICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGgucm91bmQoaW5wdXRbMF1bbl0gKiB4KSAvIHg7CiAgICAgICAgICBmb3IgKGxldCBvID0gMDsgbyA8IG91dHB1dC5sZW5ndGg7IG8rKykgewogICAgICAgICAgICBvdXRwdXRbb11bbl0gPSB2YWx1ZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBibG9ja1NpemU7IG4rKykgewogICAgICAgICAgbGV0IHggPSBNYXRoLnBvdygyLCBjcnVzaFtuXSAtIDEpOwogICAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLnJvdW5kKGlucHV0WzBdW25dICogeCkgLyB4OwogICAgICAgICAgZm9yIChsZXQgbyA9IDA7IG8gPCBvdXRwdXQubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgb3V0cHV0W29dW25dID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQpyZWdpc3RlclByb2Nlc3NvcignY3J1c2gtcHJvY2Vzc29yJywgQ3J1c2hQcm9jZXNzb3IpOwoKY2xhc3MgU2hhcGVQcm9jZXNzb3IgZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgewogIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICByZXR1cm4gW3sgbmFtZTogJ3NoYXBlJywgZGVmYXVsdFZhbHVlOiAwIH1dOwogIH0KCiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpOwogICAgdGhpcy5ub3RTdGFydGVkID0gdHJ1ZTsKICB9CgogIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXTsKICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07CiAgICBjb25zdCBzaGFwZTAgPSBwYXJhbWV0ZXJzLnNoYXBlWzBdOwogICAgY29uc3Qgc2hhcGUxID0gc2hhcGUwIDwgMSA/IHNoYXBlMCA6IDEuMCAtIDRlLTEwOwogICAgY29uc3Qgc2hhcGUgPSAoMi4wICogc2hhcGUxKSAvICgxLjAgLSBzaGFwZTEpOwogICAgY29uc3QgYmxvY2tTaXplID0gMTI4OwogICAgY29uc3QgaGFzSW5wdXQgPSAhKGlucHV0WzBdID09PSB1bmRlZmluZWQpOwogICAgaWYgKGhhc0lucHV0KSB7CiAgICAgIHRoaXMubm90U3RhcnRlZCA9IGZhbHNlOwogICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJsb2NrU2l6ZTsgbisrKSB7CiAgICAgICAgY29uc3QgdmFsdWUgPSAoKDEgKyBzaGFwZSkgKiBpbnB1dFswXVtuXSkgLyAoMSArIHNoYXBlICogTWF0aC5hYnMoaW5wdXRbMF1bbl0pKTsKICAgICAgICBmb3IgKGxldCBvID0gMDsgbyA8IG91dHB1dC5sZW5ndGg7IG8rKykgewogICAgICAgICAgb3V0cHV0W29dW25dID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQoKcmVnaXN0ZXJQcm9jZXNzb3IoJ3NoYXBlLXByb2Nlc3NvcicsIFNoYXBlUHJvY2Vzc29yKTsK";function Gc(n){const e=Bt().createGain();return e.gain.value=n,e}const b_=(n,e,t,r,i,a)=>{const s=Bt().createGain();return s.gain.setValueAtTime(0,a),s.gain.linearRampToValueAtTime(i,a+n),s.gain.linearRampToValueAtTime(t*i,a+n+e),{node:s,stop:o=>{s.gain.setValueAtTime(t*i,o),s.gain.linearRampToValueAtTime(0,o+r)}}},lG=(n,e,t,r,i,a)=>{t=Math.max(.001,t),i=Math.max(.001,i);const s=Bt().createGain();return s.gain.setValueAtTime(1e-4,a),s.gain.exponentialRampToValueAtTime(i,a+n),s.gain.exponentialRampToValueAtTime(t*i,a+n+e),{node:s,stop:o=>{s.gain.exponentialRampToValueAtTime(1e-4,o+r)}}},cG=(n,e,t,r,i,a,s,o,l)=>{const c=s-a,u=a+c,p=a+r*c;n.setValueAtTime(a,o),n.linearRampToValueAtTime(u,o+e),n.linearRampToValueAtTime(p,o+e+t),n.setValueAtTime(p,l),n.linearRampToValueAtTime(a,l+Math.max(i,.1))};function uG(n,e,t,r,i,a){const s={threshold:e??-3,ratio:t??10,knee:r??10,attack:i??.005,release:a??.05};return new DynamicsCompressorNode(n,s)}function Ph(n,e,t,r,i,a,s,o,l,c,u,p=.5){const m=n.createBiquadFilter();if(m.type=e,m.Q.value=r,m.frequency.value=t,!isNaN(l)&&l!==0){const _=l*p,v=Jm(2**-_*t,0,2e4),I=Jm(2**(l-_)*t,0,2e4);return cG(m.frequency,i,a,s,o,v,I,c,u),m}return m}let dT=n=>n<.5?1:1-(n-.5)/.5;function dG(n,e,t=0){const r=Bt();if(!t)return n;let i=r.createGain(),a=r.createGain();n.connect(i),e.connect(a),i.gain.value=dT(t),a.gain.value=dT(1-t);let s=r.createGain();return i.connect(s),a.connect(s),s}let pG=n=>console.log(n);const As=(...n)=>pG(...n),E_=j$();function v_(n,e,t={}){E_.setKey(n,{onTrigger:e,data:t})}function pT(n){return E_.get()[n]}let Bh;const Bt=()=>(Bh||(Bh=new AudioContext),Bh);let Yl;const T_=()=>{const n=Bt();return Yl||(Yl=n.createGain(),Yl.connect(n.destination)),Yl};let Uh;function fG(){return Uh||(Uh=Bt().audioWorklet.addModule(oG),Uh)}function Fh(n,e,t){const r=new AudioWorkletNode(n,e);return Object.entries(t).forEach(([i,a])=>{r.parameters.get(i).value=a}),r}async function hG(n={}){const{disableWorklets:e=!1}=n;typeof window<"u"&&(await Bt().resume(),e?console.log("disableWorklets: AudioWorklet effects coarse, crush and shape are skipped!"):await fG().catch(t=>{console.warn("could not load AudioWorklet effects coarse, crush and shape",t)}))}async function mG(n){return new Promise(e=>{document.addEventListener("click",async function t(){await hG(n),e(),document.removeEventListener("click",t)})})}let ca={};function gG(n,e,t,r){var i;if(t=Jm(t,0,.98),!ca[n]){const a=Bt().createFeedbackDelay(1,e,t);(i=a.start)==null||i.call(a,r),a.connect(T_()),ca[n]=a}return ca[n].delayTime.value!==e&&ca[n].delayTime.setValueAtTime(e,r),ca[n].feedback.value!==t&&ca[n].feedback.setValueAtTime(t,r),ca[n]}let Mi={},$l=(n,e)=>n!==void 0&&n!==e;function _G(n,e,t,r,i){if(!Mi[n]){const a=Bt().createReverb(e,t,r,i);a.connect(T_()),Mi[n]=a}return($l(e,Mi[n].duration)||$l(t,Mi[n].fade)||$l(r,Mi[n].lp)||$l(i,Mi[n].dim))&&Mi[n].generate(e,t,r,i),Mi[n]}let ua;function SG(n=2048){if(!ua){const e=Bt().createAnalyser();e.fftSize=n,ua=e,new Float32Array(ua.frequencyBinCount)}return ua.fftSize!==n&&(ua.fftSize=n,new Float32Array(ua.frequencyBinCount)),ua}function Yh(n,e,t){const r=Gc(t);return n.connect(r),r.connect(e),r}const fT=async(n,e,t)=>{const r=Bt();if(typeof n!="object")throw new Error(`expected hap.value to be an object, but got "${n}". Hint: append .note() or .s() to the end`,"error");n.duration=t;let i=r.currentTime+e,{s:a="triangle",bank:s,source:o,gain:l=.8,postgain:c=1,ftype:u="12db",fanchor:p=.5,cutoff:m,lpenv:_,lpattack:v=.01,lpdecay:I=.01,lpsustain:R=1,lprelease:x=.01,resonance:$=1,hpenv:Z,hcutoff:h,hpattack:b=.01,hpdecay:S=.01,hpsustain:N=1,hprelease:k=.01,hresonance:L=1,bpenv:M,bandf:G,bpattack:te=.01,bpdecay:ne=.01,bpsustain:re=1,bprelease:ee=.01,bandq:B=1,coarse:Q,crush:j,shape:K,pan:ue,vowel:le,delay:be=0,delayfeedback:De=.5,delaytime:xe=.25,orbit:Ee=1,room:Ne,roomfade:ce,roomlp:Le,roomdim:Xe,roomsize:Pe,velocity:tt=1,analyze:nt,fft:ht=8,compressor:vt,compressorRatio:mt,compressorKnee:At,compressorAttack:Nt,compressorRelease:Ir}=n;l*=tt;let qe=[];const nr=()=>{qe.forEach(fe=>fe==null?void 0:fe.disconnect())};s&&a&&(a=`${s}_${a}`);let Ze;if(o)Ze=o(i,n,t);else if(pT(a)){const{onTrigger:fe}=pT(a),Ie=await fe(i,n,nr);Ie&&(Ze=Ie.node,Ie.stop(i+t))}else throw new Error(`sound ${a} not found! Is it loaded?`);if(!Ze)return;if(r.currentTime>i){As("[webaudio] skip hap: still loading",r.currentTime-i);return}const ke=[];if(ke.push(Ze),ke.push(Gc(l)),m!==void 0){let fe=()=>Ph(r,"lowpass",m,$,v,I,R,x,_,i,i+t,p);ke.push(fe()),u==="24db"&&ke.push(fe())}if(h!==void 0){let fe=()=>Ph(r,"highpass",h,L,b,S,N,k,Z,i,i+t,p);ke.push(fe()),u==="24db"&&ke.push(fe())}if(G!==void 0){let fe=()=>Ph(r,"bandpass",G,B,te,ne,re,ee,M,i,i+t,p);ke.push(fe()),u==="24db"&&ke.push(fe())}if(le!==void 0){const fe=r.createVowelFilter(le);ke.push(fe)}if(Q!==void 0&&ke.push(Fh(r,"coarse-processor",{coarse:Q})),j!==void 0&&ke.push(Fh(r,"crush-processor",{crush:j})),K!==void 0&&ke.push(Fh(r,"shape-processor",{shape:K})),vt!==void 0&&ke.push(uG(r,vt,mt,At,Nt,Ir)),ue!==void 0){const fe=r.createStereoPanner();fe.pan.value=2*ue-1,ke.push(fe)}const er=Gc(c);ke.push(er),er.connect(T_());let Zt;if(be>0&&xe>0&&De>0){const fe=gG(Ee,xe,De,i);Zt=Yh(er,fe,be)}let ir;if(Ne>0){const fe=_G(Ee,Pe,ce,Le,Xe);ir=Yh(er,fe,Ne)}let H;if(nt){const fe=SG(2**(ht+5));H=Yh(er,fe,nt)}ke.slice(1).reduce((fe,Ie)=>fe.connect(Ie),ke[0]),qe=ke.concat([Zt,ir,H])},$h={};function OG(n,e){var t=e?1e3:1024;if(n=t);return n.toFixed(1)+" "+r[i]}const bG=async(n,e,t,r,i,a,s)=>{let o=0;i!==void 0&&t!==void 0&&As("[sampler] hap has note and freq. ignoring note","warning");let l=sG({freq:i,note:t},36);o=l-36;const c=Bt();let u;if(Array.isArray(a))u=a[e%a.length];else{const v=R=>uu(R)-l,I=Object.keys(a).filter(R=>!R.startsWith("_")).reduce((R,x,$)=>!R||Math.abs(v(x)){const i=t?`sound "${t}:${r}"`:"sample";if(n=n.replace("#","%23"),!$h[n]){As(`[sampler] load ${i}..`,"load-sample",{url:n});const a=Date.now();$h[n]=fetch(n).then(s=>s.arrayBuffer()).then(async s=>{const o=Date.now()-a,l=OG(s.byteLength);return As(`[sampler] load ${i}... done! loaded ${l} in ${o}ms`,"loaded-sample",{url:n}),await e.decodeAudioData(s)})}return $h[n]};function vG(n){const e=Bt(),t=e.createBuffer(n.numberOfChannels,n.length,e.sampleRate);for(let r=0;rObject.entries(n).forEach(([r,i])=>{if(typeof i=="string"&&(i=[i]),typeof i!="object")throw new Error("wrong sample map format for "+r);t=i._base||t;const a=s=>(t+s).replace("github:","https://raw.githubusercontent.com/");Array.isArray(i)?i=i.map(a):i=Object.fromEntries(Object.entries(i).map(([s,o])=>[s,(typeof o=="string"?[o]:o).map(a)])),e(r,i)});let CG={};function yG(n){const e=Object.entries(CG).find(([t])=>n.startsWith(t));if(e)return e[1]}const Gi=async(n,e=n._base||"",t={})=>{if(typeof n=="string"){const a=yG(n);if(a)return a(n);if(n.startsWith("github:")){let[o,l]=n.split("github:");l=l.endsWith("/")?l.slice(0,-1):l,n=`https://raw.githubusercontent.com/${l}/strudel.json`}if(typeof fetch!="function")return;const s=n.split("/").slice(0,-1).join("/");return typeof fetch>"u"?void 0:fetch(n).then(o=>o.json()).then(o=>Gi(o,e||o._base||s,t)).catch(o=>{throw console.error(o),new Error(`error loading "${n}"`)})}const{prebake:r,tag:i}=t;TG(n,(a,s)=>v_(a,(o,l,c)=>AG(o,l,c,s),{type:"sample",samples:s,baseUrl:e,prebake:r,tag:i}),e)},hT=[];async function AG(n,e,t,r,i){let{s:a,freq:s,unit:o,nudge:l=0,cut:c,loop:u,clip:p=void 0,n:m=0,note:_,speed:v=1,loopBegin:I=0,begin:R=0,loopEnd:x=1,end:$=1}=e;if(v===0)return;u=a.startsWith("wt_")?1:e.loop;const Z=Bt(),{attack:h=.001,decay:b=.001,sustain:S=1,release:N=.001}=e,k=n+l,L=await bG(a,m,_,v,s,r,i);if(Z.currentTime>n){As(`[sampler] still loading sound "${a}:${m}"`,"highlight");return}if(!L){As(`[sampler] could not load "${a}:${m}"`,"error");return}L.playbackRate.value=Math.abs(v)*L.playbackRate.value,o==="c"&&(L.playbackRate.value=L.playbackRate.value*L.buffer.duration*1);const M=R*L.buffer.duration;u&&(L.loop=!0,L.loopStart=I*L.buffer.duration-M,L.loopEnd=x*L.buffer.duration-M),L.start(k,M);const{node:G,stop:te}=b_(h,b,S,N,1,n);L.connect(G);const ne=Z.createGain();G.connect(ne),L.onended=function(){L.disconnect(),G.disconnect(),ne.disconnect(),t()};const re={node:ne,bufferSource:L,stop:(ee,B=p===void 0&&u===void 0)=>{let Q=ee;if(B){const j=L.buffer.duration/L.playbackRate.value;Q=n+($-R)*j}L.stop(Q+N),te(Q)}};if(c!==void 0){const ee=hT[c];ee&&(ee.node.gain.setValueAtTime(1,k),ee.node.gain.linearRampToValueAtTime(0,k+.01)),hT[c]=re}return re}let Gh={};function IG(n){const e=Bt();if(Gh[n])return Gh[n];const t=2*e.sampleRate,r=e.createBuffer(1,t,e.sampleRate),i=r.getChannelData(0);let a=0,s,o,l,c,u,p,m;s=o=l=c=u=p=m=0;for(let _=0;_t.stop(r)}}function RG(n,e,t){const r=uR("pink",t);return{node:dG(n,r.node,e),stop:i=>r==null?void 0:r.stop(i)}}const NG=(n,e=1,t="sine")=>{const r=Bt(),i=r.createOscillator();i.type=t,i.frequency.value=n,i.start();const a=new GainNode(r,{gain:e});return i.connect(a),{node:a,stop:s=>i.stop(s)}},wG=(n,e,t,r="sine")=>{const i=n.frequency.value*e,a=i*t;return NG(i,a,r)},mT=["sine","square","triangle","sawtooth"],DG=["pink","white","brown"];function xG(){[...mT,...DG].forEach(n=>{v_(n,(e,t,r)=>{let{attack:i=.001,decay:a=.05,sustain:s=.6,release:o=.01}=t,l;mT.includes(n)?l=LG(n,e,t):l=uR(n,e);let{node:c,stop:u,triggerRelease:p}=l;const m=Gc(.3),{node:_,stop:v}=b_(i,a,s,o,1,e);return c.onended=()=>{c.disconnect(),m.disconnect(),r()},{node:c.connect(m).connect(_),stop:I=>{v(I),p==null||p(I);let R=I+o;u(R)}}},{type:"synth",prebake:!0})})}function kG(n,e){const t=new Float32Array(n+1),r=new Float32Array(n+1),i=Bt(),a=i.createOscillator(),s={sawtooth:c=>1/c,square:c=>c%2===0?0:1/c,triangle:c=>c%2===0?0:1/(c*c)};if(!s[e])throw new Error(`unknown wave type ${e}`);t[0]=0,r[0]=0;let o=1;for(;o<=n;)t[o]=s[e](o),r[o]=0,o++;const l=i.createPeriodicWave(t,r);return a.setPeriodicWave(l),a}function LG(n,e,{n:t,note:r,freq:i,vib:a=0,vibmod:s=.5,noise:o=0,fmh:l=1,fmi:c,fmenv:u="lin",fmattack:p,fmdecay:m,fmsustain:_,fmrelease:v,fmvelocity:I,fmwave:R="sine"}){Bt();let x;!t||n==="sine"?(x=Bt().createOscillator(),x.type=n||"triangle"):x=kG(t,n),r=r||36,typeof r=="string"&&(r=uu(r)),!i&&typeof r=="number"&&(i=cR(r)),x.frequency.value=Number(i),x.start(e);let $,Z;if(c){const{node:S,stop:N}=wG(x,l,c,R);[p,m,_,v,I].find(k=>k!==void 0)?(p=p??.001,m=m??.001,_=_??1,v=v??.001,I=I??1,Z=b_(p,m,_,v,I,e),u==="exp"&&(Z=lG(p,m,_,v,I,e),Z.node.maxValue=c*2,Z.node.minValue=1e-5),S.connect(Z.node),Z.node.connect(x.frequency)):S.connect(x.frequency),$=N}let h;if(a>0){h=Bt().createOscillator(),h.frequency.value=a;const S=Bt().createGain();S.gain.value=s*100,h.connect(S),S.connect(x.detune),h.start(e)}let b;return o&&(b=RG(x,o,e)),{node:(b==null?void 0:b.node)||x,stop:S=>{h==null||h.stop(S),b==null||b.stop(S),$==null||$(S),x.stop(S)},triggerRelease:S=>{Z==null||Z.stop(S)}}}function MG(n=1,e=.05,t=220,r=0,i=0,a=.1,s=0,o=1,l=0,c=0,u=0,p=0,m=0,_=0,v=0,I=0,R=0,x=1,$=0,Z=0){let h=Math.PI*2,b=Bt().sampleRate,S=K=>K>0?1:-1,N=l*=500*h/b/b,k=t*=(1+e*2*Math.random()-e)*h/b,L=[],M=0,G=0,te=0,ne=1,re=0,ee=0,B=0,Q,j;for(r=r*b+9,$*=b,i*=b,a*=b,R*=b,c*=500*h/b**3,v*=h/b,u*=h/b,p*=b,m=m*b|0,j=r+$+i+a+R|0;te1?s>2?s>3?Math.sin((M%h)**3):Math.max(Math.min(Math.tan(M),1),-1):1-(2*M/h%2+2)%2:1-4*Math.abs(Math.round(M/h)-M/h):Math.sin(M),B=(m?1-Z+Z*Math.sin(h*te/m):1)*S(B)*Math.abs(B)**o*n*1*(tete?0:(tep&&(t+=u,k+=u,ne=0),m&&!(++re%m)&&(t=k,l=N,ne||(ne=1));return L}const PG=(n,e)=>{let{s:t,note:r=36,freq:i,zrand:a=0,attack:s=0,decay:o=0,sustain:l=.8,release:c=.1,curve:u=1,slide:p=0,deltaSlide:m=0,pitchJump:_=0,pitchJumpTime:v=0,lfo:I=0,znoise:R=0,zmod:x=0,zcrush:$=0,zdelay:Z=0,tremolo:h=0,duration:b=.2,zzfx:S}=n;const N=Math.max(b-s-o,0);typeof r=="string"&&(r=uu(r)),!i&&typeof r=="number"&&(i=cR(r)),t=t.replace("z_","");const k=["sine","triangle","sawtooth","tan","noise"].indexOf(t)||0;u=t==="square"?0:u;const L=MG(...S||[.25,a,i,s,N,c,k,u,p,m,_,v,I,R,x,$,Z,l,o,h]),M=Bt(),G=M.createBuffer(1,L.length,M.sampleRate);G.getChannelData(0).set(L);const te=Bt().createBufferSource();return te.buffer=G,te.start(e),{node:te}};function BG(){["zzfx","z_sine","z_sawtooth","z_triangle","z_square","z_tan","z_noise"].forEach(n=>{v_(n,(e,t,r)=>{const{node:i}=PG({s:n,...t},e);return i.onended=()=>{i.disconnect(),r()},{node:i,stop:()=>{}}},{type:"synth",prebake:!0})})}let Qh;const UG=()=>{};typeof window<"u"&&window.addEventListener("message",n=>{var e;n.data==="strudel-stop"?UG():(e=n.data)!=null&&e.dough&&(Qh==null||Qh.node.port.postMessage(n.data))});class eg extends lR{constructor(t,r){super(r);E(this,"nudge");E(this,"volume",t=>this.updateValue("volume",t));E(this,"vol",this.volume);E(this,"zrand",t=>this.updateValue("zrand",t));E(this,"curve",t=>this.updateValue("curve",t));E(this,"slide",t=>this.updateValue("slide",t));E(this,"sld",this.slide);E(this,"deltaSlide",t=>this.updateValue("deltaSlide",t));E(this,"dslide",this.deltaSlide);E(this,"pitchJump",t=>this.updateValue("pitchJump",t));E(this,"pj",this.pitchJump);E(this,"pitchJumpTime",t=>this.updateValue("pitchJumpTime",t));E(this,"pjt",this.pitchJumpTime);E(this,"lfo",t=>this.updateValue("lfo",t));E(this,"znoise",t=>this.updateValue("znoise",t));E(this,"noise",t=>this.updateValue("noise",t));E(this,"zmod",t=>this.updateValue("zmod",t));E(this,"zcrush",t=>this.updateValue("zcrush",t));E(this,"zdelay",t=>this.updateValue("zdelay",t));E(this,"sustainVolume",t=>this.updateValue("sustainVolume",t));E(this,"tremolo",t=>this.updateValue("tremolo",t));E(this,"dur",t=>this.updateValue("dur",t));E(this,"zzfx",t=>this.updateValue("zzfx",t));E(this,"fmi",t=>this.updateValue("fmi",t));E(this,"fmh",t=>this.updateValue("fmh",t));E(this,"fmenv",t=>this.updateValue("fmenv",t));E(this,"fmattack",t=>this.updateValue("fmattack",t));E(this,"fmatk",this.fmattack);E(this,"fmdecay",t=>this.updateValue("fmdecay",t));E(this,"fmdec",this.fmdecay);E(this,"fmsustain",t=>this.updateValue("fmsustain",t));E(this,"fmsus",this.fmsustain);E(this,"fmrelease",t=>this.updateValue("fmrelease",t));E(this,"fmrel",this.fmrelease);E(this,"fmvelocity",t=>this.updateValue("fmvelocity",t));E(this,"fmvel",this.fmvelocity);E(this,"fmwave",t=>this.updateValue("fmwave",t));E(this,"fmw",this.fmwave);E(this,"ftype",t=>this.updateValue("ftype",t));E(this,"fanchor",t=>this.updateValue("fanchor",t));E(this,"attack",t=>this.updateValue("attack",t));E(this,"atk",this.attack);E(this,"decay",t=>this.updateValue("decay",t));E(this,"dec",this.decay);E(this,"sustain",t=>this.updateValue("sustain",t));E(this,"sus",this.sustain);E(this,"release",t=>this.updateValue("release",t));E(this,"rel",this.release);E(this,"adsr",(t,r,i,a)=>(this.attack(t),this.decay(r),this.sustain(i),this.release(a),this));E(this,"ad",(t,r)=>(this.attack(t),this.decay(r),this.sustain(0),this.release(0),this));E(this,"lpenv",t=>this.updateValue("lpenv",t));E(this,"lpe",t=>this.updateValue("lpenv",t));E(this,"lpattack",t=>this.updateValue("lpattack",t));E(this,"lpa",this.lpattack);E(this,"lpdecay",t=>this.updateValue("lpdecay",t));E(this,"lpd",this.lpdecay);E(this,"lpsustain",t=>this.updateValue("lpsustain",t));E(this,"lps",this.lpsustain);E(this,"lprelease",t=>this.updateValue("lprelease",t));E(this,"lpr",this.lprelease);E(this,"cutoff",t=>this.updateValue("cutoff",t));E(this,"lpf",this.cutoff);E(this,"resonance",t=>this.updateValue("resonance",Math.min(Math.max(t,0),50)));E(this,"lpq",this.resonance);E(this,"lpadsr",(t,r,i,a,s)=>(this.lpenv(t),this.lpattack(r),this.lpdecay(i),this.lpsustain(a),this.lprelease(s),this));E(this,"hpenv",t=>this.updateValue("hpenv",t));E(this,"hpe",t=>this.updateValue("hpe",t));E(this,"hpattack",t=>this.updateValue("hpattack",t));E(this,"hpa",this.hpattack);E(this,"hpdecay",t=>this.updateValue("hpdecay",t));E(this,"hpd",this.hpdecay);E(this,"hpsustain",t=>this.updateValue("hpsustain",t));E(this,"hpsus",this.hpsustain);E(this,"hprelease",t=>this.updateValue("hprelease",t));E(this,"hpr",this.hprelease);E(this,"hcutoff",t=>this.updateValue("hcutoff",t));E(this,"hpf",this.hcutoff);E(this,"hresonance",t=>this.updateValue("hresonance",t));E(this,"hpq",this.hresonance);E(this,"hpadsr",(t,r,i,a,s)=>(this.hpenv(t),this.hpattack(r),this.hpdecay(i),this.hpsustain(a),this.hprelease(s),this));E(this,"bpenv",t=>this.updateValue("bpenv",t));E(this,"bpe",t=>this.updateValue("bpe",t));E(this,"bpattack",t=>this.updateValue("bpattack",t));E(this,"bpa",this.bpattack);E(this,"bpdecay",t=>this.updateValue("bpdecay",t));E(this,"bpd",this.bpdecay);E(this,"bpsustain",t=>this.updateValue("bpsustain",t));E(this,"bps",this.bpsustain);E(this,"bprelease",t=>this.updateValue("bprelease",t));E(this,"bpr",this.bprelease);E(this,"bandf",t=>this.updateValue("bandf",t));E(this,"bpf",this.bandf);E(this,"bandq",t=>this.updateValue("bandq",t));E(this,"bpq",this.bandq);E(this,"bpadsr",(t,r,i,a,s)=>(this.bpenv(t),this.bpattack(r),this.bpdecay(i),this.bpsustain(a),this.bprelease(s),this));E(this,"freq",t=>this.updateValue("freq",t));E(this,"f",this.freq);E(this,"vib",t=>this.updateValue("vib",t));E(this,"vibmod",t=>this.updateValue("vibmod",t));E(this,"fm",t=>{if(typeof t=="number")this.values.fmi=t;else{let r=t.split(":");this.values.fmi=parseFloat(r[0]),r.length>1&&(this.values.fmh=parseFloat(r[1]))}return this});E(this,"loop",t=>this.updateValue("loop",t));E(this,"loopBegin",t=>this.updateValue("loopBegin",t));E(this,"loopEnd",t=>this.updateValue("loopEnd",t));E(this,"begin",t=>this.updateValue("begin",t));E(this,"end",t=>this.updateValue("end",t));E(this,"gain",t=>this.updateValue("gain",t));E(this,"dbgain",t=>this.updateValue("gain",Math.min(Math.pow(10,t/20),10)));E(this,"db",this.dbgain);E(this,"velocity",t=>this.updateValue("velocity",t));E(this,"vel",this.velocity);E(this,"pan",t=>this.updateValue("pan",t));E(this,"sound",t=>this.updateValue("s",t));E(this,"chord",(t,...r)=>(typeof t=="string"?t=U$(t).map(a=>({note:a,freq:Zn(a)})):t instanceof Array&&typeof t[0]=="number"?t=t.map(i=>({note:i,freq:Zn(i)})):typeof t=="number"&&r.length>0&&(t=[t,...r].map(i=>({note:i,freq:Zn(i)}))),this.updateValue("chord",t)));E(this,"invert",(t=0)=>{if(this.values.chord){let r=this.values.chord.map(a=>a.note);r=t<0?[...r].reverse():r;for(let a=0;a({note:a,freq:Zn(a)}));return this.updateValue("chord",i)}else return this});E(this,"snd",this.sound);E(this,"cut",t=>this.updateValue("cut",t));E(this,"clip",t=>this.updateValue("clip",t));E(this,"n",t=>this.updateValue("n",t));E(this,"note",t=>typeof t=="string"?this.updateValue("note",Un(t)):typeof t==null||t==null?this.updateValue("note",0).updateValue("gain",0):this.updateValue("note",t));E(this,"speed",t=>this.updateValue("speed",t));E(this,"spd",this.speed);E(this,"coarse",t=>this.updateValue("coarse",t));E(this,"crush",t=>this.updateValue("crush",t));E(this,"shape",t=>this.updateValue("shape",t));E(this,"vowel",t=>this.updateValue("vowel",t));E(this,"vow",this.vowel);E(this,"delay",t=>this.updateValue("delay",t));E(this,"del",this.delay);E(this,"delayfeedback",t=>this.updateValue("delayfeedback",t));E(this,"delayfb",this.delayfeedback);E(this,"delaytime",t=>this.updateValue("delaytime",t));E(this,"delayt",this.delaytime);E(this,"orbit",t=>this.updateValue("orbit",t));E(this,"o",this.orbit);E(this,"room",t=>this.updateValue("room",t));E(this,"rm",this.room);E(this,"roomfade",t=>this.updateValue("roomfade",t));E(this,"rfade",this.roomfade);E(this,"roomlp",t=>this.updateValue("roomlp",t));E(this,"rlp",this.roomlp);E(this,"roomdim",t=>this.updateValue("roomdim",t));E(this,"rdim",this.roomdim);E(this,"size",t=>this.updateValue("roomsize",t));E(this,"sz",this.size);E(this,"comp",t=>this.updateValue("compressor",t));E(this,"cmp",this.comp);E(this,"ratio",t=>this.updateValue("compressorRatio",t));E(this,"rt",this.ratio);E(this,"knee",t=>this.updateValue("compressorKnee",t));E(this,"kn",this.knee);E(this,"compAttack",t=>this.updateValue("compressorAttack",t));E(this,"cmpa",this.compAttack);E(this,"compRelease",t=>this.updateValue("compressorRelease",t));E(this,"cmpr",this.compRelease);E(this,"stretch",t=>(this.updateValue("unit","c"),this.updateValue("speed",1/t),this.updateValue("cut",t),this));E(this,"modify",t=>{const r=t(this);return r instanceof Object?r:(t(this.values),this.update(),this)});E(this,"update",()=>{const[t,r]=g_(this.values.key||"C4",this.values.pitch||0,this.values.parsedScale||"MAJOR",this.values.octave||0);this.values.freq=Zn(t)});E(this,"out",()=>{this.values.chord?this.values.chord.forEach(t=>{const r={...this.values};r.freq=t.freq,fT(r,this.nudge,this.values.dur)}):fT(this.values,this.nudge,this.values.dur)});this.app=r,this.nudge=r.dough_nudge/100,typeof t=="string"?t.includes(":")?this.values={s:t.split(":")[0],n:t.split(":")[1],dur:r.clock.convertPulseToSecond(r.clock.ppqn)}:this.values={s:t,dur:.5}:this.values=t}updateValue(t,r){return this.values[t]=r,this}}class tg extends lR{constructor(t,r){super(r);E(this,"midiConnection");E(this,"chord",t=>(this.values.chord=t,this));E(this,"note",t=>(this.values.note=t,this));E(this,"sustain",t=>(this.values.sustain=t,this));E(this,"channel",t=>(this.values.channel=t,this));E(this,"port",t=>(this.values.port=this.midiConnection.getMidiOutputIndex(t),this));E(this,"add",t=>(this.values.note+=t,this));E(this,"modify",t=>{const r=t(this);return r instanceof Object?r:(t(this.values),this.update(),this)});E(this,"bend",t=>(this.values.bend=t,this));E(this,"random",(t=0,r=127)=>(t=Math.min(Math.max(t,0),127),r=Math.min(Math.max(r,0),127),this.values.note=Math.floor(this.randomGen()*(r-t+1))+t,this));E(this,"update",()=>{const[t,r]=g_(this.values.key||"C4",this.values.pitch||0,this.values.parsedScale||"MAJOR",this.values.octave||0);this.values.note=t,this.values.freq=Zn(t),r&&(this.values.bend=r)});E(this,"out",()=>{function t(r,i){const a=i&&i.channel?i.channel:0,s=r.values.channel?r.values.channel:a,o=r.values.velocity?r.values.velocity:100,l=i&&i.note?i.note:60,c=r.values.note?r.values.note:l,u=r.values.sustain?r.values.sustain*r.app.clock.pulse_duration*r.app.api.ppqn():r.app.clock.pulse_duration*r.app.api.ppqn(),p=r.values.bend?r.values.bend:void 0,m=r.values.port?r.midiConnection.getMidiOutputIndex(r.values.port):r.midiConnection.getCurrentMidiPortIndex();r.midiConnection.sendMidiNote(c,s,o,u,m,p)}this.values.chord?this.values.chord.forEach(r=>{t(this,r)}):t(this)});this.app=r,typeof t=="number"?this.values.note=t:this.values=t,this.midiConnection=r.api.MidiConnection}}const po=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,dR=new Set,rg=typeof process=="object"&&process?process:{},pR=(n,e,t,r)=>{typeof rg.emitWarning=="function"?rg.emitWarning(n,e,t,r):console.error(`[${t}] ${e}: ${n}`)};let Qc=globalThis.AbortController,gT=globalThis.AbortSignal;var _T;if(typeof Qc>"u"){gT=class{constructor(){E(this,"onabort");E(this,"_onabort",[]);E(this,"reason");E(this,"aborted",!1)}addEventListener(r,i){this._onabort.push(i)}},Qc=class{constructor(){E(this,"signal",new gT);e()}abort(r){var i,a;if(!this.signal.aborted){this.signal.reason=r,this.signal.aborted=!0;for(const s of this.signal._onabort)s(r);(a=(i=this.signal).onabort)==null||a.call(i,r)}}};let n=((_T=rg.env)==null?void 0:_T.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,pR("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const FG=n=>!dR.has(n),Bi=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),fR=n=>Bi(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?nc:null:null;class nc extends Array{constructor(e){super(e),this.fill(0)}}var cs;const fa=class fa{constructor(e,t){E(this,"heap");E(this,"length");if(!V(fa,cs))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}static create(e){const t=fR(e);if(!t)return[];We(fa,cs,!0);const r=new fa(e,t);return We(fa,cs,!1),r}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};cs=new WeakMap,at(fa,cs,!1);let ng=fa;var Rn,Jr,Nn,wn,us,sr,Dn,or,Lt,rt,kr,en,Tr,fr,xn,hr,gi,_i,kn,Ln,qi,Lr,jo,ag,Oa,Si,Jo,tn,zc,hR,ba,ds,el,qn,Ui,Vn,Fi,tl,sg,ps,ic,fs,ac,Dt,Ft,rl,og,Ea,bo;const C_=class C_{constructor(e){at(this,jo);at(this,zc);at(this,qn);at(this,Vn);at(this,tl);at(this,ps);at(this,fs);at(this,Dt);at(this,rl);at(this,Ea);at(this,Rn,void 0);at(this,Jr,void 0);at(this,Nn,void 0);at(this,wn,void 0);at(this,us,void 0);E(this,"ttl");E(this,"ttlResolution");E(this,"ttlAutopurge");E(this,"updateAgeOnGet");E(this,"updateAgeOnHas");E(this,"allowStale");E(this,"noDisposeOnSet");E(this,"noUpdateTTL");E(this,"maxEntrySize");E(this,"sizeCalculation");E(this,"noDeleteOnFetchRejection");E(this,"noDeleteOnStaleGet");E(this,"allowStaleOnFetchAbort");E(this,"allowStaleOnFetchRejection");E(this,"ignoreFetchAbort");at(this,sr,void 0);at(this,Dn,void 0);at(this,or,void 0);at(this,Lt,void 0);at(this,rt,void 0);at(this,kr,void 0);at(this,en,void 0);at(this,Tr,void 0);at(this,fr,void 0);at(this,xn,void 0);at(this,hr,void 0);at(this,gi,void 0);at(this,_i,void 0);at(this,kn,void 0);at(this,Ln,void 0);at(this,qi,void 0);at(this,Lr,void 0);at(this,Oa,()=>{});at(this,Si,()=>{});at(this,Jo,()=>{});at(this,tn,()=>!1);at(this,ba,e=>{});at(this,ds,(e,t,r)=>{});at(this,el,(e,t,r,i)=>{if(r||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});const{max:t=0,ttl:r,ttlResolution:i=1,ttlAutopurge:a,updateAgeOnGet:s,updateAgeOnHas:o,allowStale:l,dispose:c,disposeAfter:u,noDisposeOnSet:p,noUpdateTTL:m,maxSize:_=0,maxEntrySize:v=0,sizeCalculation:I,fetchMethod:R,noDeleteOnFetchRejection:x,noDeleteOnStaleGet:$,allowStaleOnFetchRejection:Z,allowStaleOnFetchAbort:h,ignoreFetchAbort:b}=e;if(t!==0&&!Bi(t))throw new TypeError("max option must be a nonnegative integer");const S=t?fR(t):Array;if(!S)throw new Error("invalid max value: "+t);if(We(this,Rn,t),We(this,Jr,_),this.maxEntrySize=v||V(this,Jr),this.sizeCalculation=I,this.sizeCalculation){if(!V(this,Jr)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(R!==void 0&&typeof R!="function")throw new TypeError("fetchMethod must be a function if specified");if(We(this,us,R),We(this,qi,!!R),We(this,or,new Map),We(this,Lt,new Array(t).fill(void 0)),We(this,rt,new Array(t).fill(void 0)),We(this,kr,new S(t)),We(this,en,new S(t)),We(this,Tr,0),We(this,fr,0),We(this,xn,ng.create(t)),We(this,sr,0),We(this,Dn,0),typeof c=="function"&&We(this,Nn,c),typeof u=="function"?(We(this,wn,u),We(this,hr,[])):(We(this,wn,void 0),We(this,hr,void 0)),We(this,Ln,!!V(this,Nn)),We(this,Lr,!!V(this,wn)),this.noDisposeOnSet=!!p,this.noUpdateTTL=!!m,this.noDeleteOnFetchRejection=!!x,this.allowStaleOnFetchRejection=!!Z,this.allowStaleOnFetchAbort=!!h,this.ignoreFetchAbort=!!b,this.maxEntrySize!==0){if(V(this,Jr)!==0&&!Bi(V(this,Jr)))throw new TypeError("maxSize must be a positive integer if specified");if(!Bi(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");ze(this,zc,hR).call(this)}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!$,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!o,this.ttlResolution=Bi(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||0,this.ttl){if(!Bi(this.ttl))throw new TypeError("ttl must be a positive integer if specified");ze(this,jo,ag).call(this)}if(V(this,Rn)===0&&this.ttl===0&&V(this,Jr)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!V(this,Rn)&&!V(this,Jr)){const N="LRU_CACHE_UNBOUNDED";FG(N)&&(dR.add(N),pR("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",N,C_))}}static unsafeExposeInternals(e){return{starts:V(e,_i),ttls:V(e,kn),sizes:V(e,gi),keyMap:V(e,or),keyList:V(e,Lt),valList:V(e,rt),next:V(e,kr),prev:V(e,en),get head(){return V(e,Tr)},get tail(){return V(e,fr)},free:V(e,xn),isBackgroundFetch:t=>{var r;return ze(r=e,Dt,Ft).call(r,t)},backgroundFetch:(t,r,i,a)=>{var s;return ze(s=e,fs,ac).call(s,t,r,i,a)},moveToTail:t=>{var r;return ze(r=e,Ea,bo).call(r,t)},indexes:t=>{var r;return ze(r=e,qn,Ui).call(r,t)},rindexes:t=>{var r;return ze(r=e,Vn,Fi).call(r,t)},isStale:t=>{var r;return V(r=e,tn).call(r,t)}}}get max(){return V(this,Rn)}get maxSize(){return V(this,Jr)}get calculatedSize(){return V(this,Dn)}get size(){return V(this,sr)}get fetchMethod(){return V(this,us)}get dispose(){return V(this,Nn)}get disposeAfter(){return V(this,wn)}getRemainingTTL(e){return V(this,or).has(e)?1/0:0}*entries(){for(const e of ze(this,qn,Ui).call(this))V(this,rt)[e]!==void 0&&V(this,Lt)[e]!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield[V(this,Lt)[e],V(this,rt)[e]])}*rentries(){for(const e of ze(this,Vn,Fi).call(this))V(this,rt)[e]!==void 0&&V(this,Lt)[e]!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield[V(this,Lt)[e],V(this,rt)[e]])}*keys(){for(const e of ze(this,qn,Ui).call(this)){const t=V(this,Lt)[e];t!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield t)}}*rkeys(){for(const e of ze(this,Vn,Fi).call(this)){const t=V(this,Lt)[e];t!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield t)}}*values(){for(const e of ze(this,qn,Ui).call(this))V(this,rt)[e]!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield V(this,rt)[e])}*rvalues(){for(const e of ze(this,Vn,Fi).call(this))V(this,rt)[e]!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield V(this,rt)[e])}[Symbol.iterator](){return this.entries()}find(e,t={}){for(const r of ze(this,qn,Ui).call(this)){const i=V(this,rt)[r],a=ze(this,Dt,Ft).call(this,i)?i.__staleWhileFetching:i;if(a!==void 0&&e(a,V(this,Lt)[r],this))return this.get(V(this,Lt)[r],t)}}forEach(e,t=this){for(const r of ze(this,qn,Ui).call(this)){const i=V(this,rt)[r],a=ze(this,Dt,Ft).call(this,i)?i.__staleWhileFetching:i;a!==void 0&&e.call(t,a,V(this,Lt)[r],this)}}rforEach(e,t=this){for(const r of ze(this,Vn,Fi).call(this)){const i=V(this,rt)[r],a=ze(this,Dt,Ft).call(this,i)?i.__staleWhileFetching:i;a!==void 0&&e.call(t,a,V(this,Lt)[r],this)}}purgeStale(){let e=!1;for(const t of ze(this,Vn,Fi).call(this,{allowStale:!0}))V(this,tn).call(this,t)&&(this.delete(V(this,Lt)[t]),e=!0);return e}dump(){const e=[];for(const t of ze(this,qn,Ui).call(this,{allowStale:!0})){const r=V(this,Lt)[t],i=V(this,rt)[t],a=ze(this,Dt,Ft).call(this,i)?i.__staleWhileFetching:i;if(a===void 0||r===void 0)continue;const s={value:a};if(V(this,kn)&&V(this,_i)){s.ttl=V(this,kn)[t];const o=po.now()-V(this,_i)[t];s.start=Math.floor(Date.now()-o)}V(this,gi)&&(s.size=V(this,gi)[t]),e.unshift([r,s])}return e}load(e){this.clear();for(const[t,r]of e){if(r.start){const i=Date.now()-r.start;r.start=po.now()-i}this.set(t,r.value,r)}}set(e,t,r={}){var m,_,v,I,R;if(t===void 0)return this.delete(e),this;const{ttl:i=this.ttl,start:a,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:l}=r;let{noUpdateTTL:c=this.noUpdateTTL}=r;const u=V(this,el).call(this,e,t,r.size||0,o);if(this.maxEntrySize&&u>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),this.delete(e),this;let p=V(this,sr)===0?void 0:V(this,or).get(e);if(p===void 0)p=V(this,sr)===0?V(this,fr):V(this,xn).length!==0?V(this,xn).pop():V(this,sr)===V(this,Rn)?ze(this,ps,ic).call(this,!1):V(this,sr),V(this,Lt)[p]=e,V(this,rt)[p]=t,V(this,or).set(e,p),V(this,kr)[V(this,fr)]=p,V(this,en)[p]=V(this,fr),We(this,fr,p),gl(this,sr)._++,V(this,ds).call(this,p,u,l),l&&(l.set="add"),c=!1;else{ze(this,Ea,bo).call(this,p);const x=V(this,rt)[p];if(t!==x){if(V(this,qi)&&ze(this,Dt,Ft).call(this,x)){x.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:$}=x;$!==void 0&&!s&&(V(this,Ln)&&((m=V(this,Nn))==null||m.call(this,$,e,"set")),V(this,Lr)&&((_=V(this,hr))==null||_.push([$,e,"set"])))}else s||(V(this,Ln)&&((v=V(this,Nn))==null||v.call(this,x,e,"set")),V(this,Lr)&&((I=V(this,hr))==null||I.push([x,e,"set"])));if(V(this,ba).call(this,p),V(this,ds).call(this,p,u,l),V(this,rt)[p]=t,l){l.set="replace";const $=x&&ze(this,Dt,Ft).call(this,x)?x.__staleWhileFetching:x;$!==void 0&&(l.oldValue=$)}}else l&&(l.set="update")}if(i!==0&&!V(this,kn)&&ze(this,jo,ag).call(this),V(this,kn)&&(c||V(this,Jo).call(this,p,i,a),l&&V(this,Si).call(this,l,p)),!s&&V(this,Lr)&&V(this,hr)){const x=V(this,hr);let $;for(;$=x==null?void 0:x.shift();)(R=V(this,wn))==null||R.call(this,...$)}return this}pop(){var e;try{for(;V(this,sr);){const t=V(this,rt)[V(this,Tr)];if(ze(this,ps,ic).call(this,!0),ze(this,Dt,Ft).call(this,t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(V(this,Lr)&&V(this,hr)){const t=V(this,hr);let r;for(;r=t==null?void 0:t.shift();)(e=V(this,wn))==null||e.call(this,...r)}}}has(e,t={}){const{updateAgeOnHas:r=this.updateAgeOnHas,status:i}=t,a=V(this,or).get(e);if(a!==void 0){const s=V(this,rt)[a];if(ze(this,Dt,Ft).call(this,s)&&s.__staleWhileFetching===void 0)return!1;if(V(this,tn).call(this,a))i&&(i.has="stale",V(this,Si).call(this,i,a));else return r&&V(this,Oa).call(this,a),i&&(i.has="hit",V(this,Si).call(this,i,a)),!0}else i&&(i.has="miss");return!1}peek(e,t={}){const{allowStale:r=this.allowStale}=t,i=V(this,or).get(e);if(i!==void 0&&(r||!V(this,tn).call(this,i))){const a=V(this,rt)[i];return ze(this,Dt,Ft).call(this,a)?a.__staleWhileFetching:a}}async fetch(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:a=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:l=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:p=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:m=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:v=this.allowStaleOnFetchAbort,context:I,forceRefresh:R=!1,status:x,signal:$}=t;if(!V(this,qi))return x&&(x.fetch="get"),this.get(e,{allowStale:r,updateAgeOnGet:i,noDeleteOnStaleGet:a,status:x});const Z={allowStale:r,updateAgeOnGet:i,noDeleteOnStaleGet:a,ttl:s,noDisposeOnSet:o,size:l,sizeCalculation:c,noUpdateTTL:u,noDeleteOnFetchRejection:p,allowStaleOnFetchRejection:m,allowStaleOnFetchAbort:v,ignoreFetchAbort:_,status:x,signal:$};let h=V(this,or).get(e);if(h===void 0){x&&(x.fetch="miss");const b=ze(this,fs,ac).call(this,e,h,Z,I);return b.__returned=b}else{const b=V(this,rt)[h];if(ze(this,Dt,Ft).call(this,b)){const M=r&&b.__staleWhileFetching!==void 0;return x&&(x.fetch="inflight",M&&(x.returnedStale=!0)),M?b.__staleWhileFetching:b.__returned=b}const S=V(this,tn).call(this,h);if(!R&&!S)return x&&(x.fetch="hit"),ze(this,Ea,bo).call(this,h),i&&V(this,Oa).call(this,h),x&&V(this,Si).call(this,x,h),b;const N=ze(this,fs,ac).call(this,e,h,Z,I),L=N.__staleWhileFetching!==void 0&&r;return x&&(x.fetch=S?"stale":"refresh",L&&S&&(x.returnedStale=!0)),L?N.__staleWhileFetching:N.__returned=N}}get(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:a=this.noDeleteOnStaleGet,status:s}=t,o=V(this,or).get(e);if(o!==void 0){const l=V(this,rt)[o],c=ze(this,Dt,Ft).call(this,l);return s&&V(this,Si).call(this,s,o),V(this,tn).call(this,o)?(s&&(s.get="stale"),c?(s&&r&&l.__staleWhileFetching!==void 0&&(s.returnedStale=!0),r?l.__staleWhileFetching:void 0):(a||this.delete(e),s&&r&&(s.returnedStale=!0),r?l:void 0)):(s&&(s.get="hit"),c?l.__staleWhileFetching:(ze(this,Ea,bo).call(this,o),i&&V(this,Oa).call(this,o),l))}else s&&(s.get="miss")}delete(e){var r,i,a,s;let t=!1;if(V(this,sr)!==0){const o=V(this,or).get(e);if(o!==void 0)if(t=!0,V(this,sr)===1)this.clear();else{V(this,ba).call(this,o);const l=V(this,rt)[o];ze(this,Dt,Ft).call(this,l)?l.__abortController.abort(new Error("deleted")):(V(this,Ln)||V(this,Lr))&&(V(this,Ln)&&((r=V(this,Nn))==null||r.call(this,l,e,"delete")),V(this,Lr)&&((i=V(this,hr))==null||i.push([l,e,"delete"]))),V(this,or).delete(e),V(this,Lt)[o]=void 0,V(this,rt)[o]=void 0,o===V(this,fr)?We(this,fr,V(this,en)[o]):o===V(this,Tr)?We(this,Tr,V(this,kr)[o]):(V(this,kr)[V(this,en)[o]]=V(this,kr)[o],V(this,en)[V(this,kr)[o]]=V(this,en)[o]),gl(this,sr)._--,V(this,xn).push(o)}}if(V(this,Lr)&&((a=V(this,hr))!=null&&a.length)){const o=V(this,hr);let l;for(;l=o==null?void 0:o.shift();)(s=V(this,wn))==null||s.call(this,...l)}return t}clear(){var e,t,r;for(const i of ze(this,Vn,Fi).call(this,{allowStale:!0})){const a=V(this,rt)[i];if(ze(this,Dt,Ft).call(this,a))a.__abortController.abort(new Error("deleted"));else{const s=V(this,Lt)[i];V(this,Ln)&&((e=V(this,Nn))==null||e.call(this,a,s,"delete")),V(this,Lr)&&((t=V(this,hr))==null||t.push([a,s,"delete"]))}}if(V(this,or).clear(),V(this,rt).fill(void 0),V(this,Lt).fill(void 0),V(this,kn)&&V(this,_i)&&(V(this,kn).fill(0),V(this,_i).fill(0)),V(this,gi)&&V(this,gi).fill(0),We(this,Tr,0),We(this,fr,0),V(this,xn).length=0,We(this,Dn,0),We(this,sr,0),V(this,Lr)&&V(this,hr)){const i=V(this,hr);let a;for(;a=i==null?void 0:i.shift();)(r=V(this,wn))==null||r.call(this,...a)}}};Rn=new WeakMap,Jr=new WeakMap,Nn=new WeakMap,wn=new WeakMap,us=new WeakMap,sr=new WeakMap,Dn=new WeakMap,or=new WeakMap,Lt=new WeakMap,rt=new WeakMap,kr=new WeakMap,en=new WeakMap,Tr=new WeakMap,fr=new WeakMap,xn=new WeakMap,hr=new WeakMap,gi=new WeakMap,_i=new WeakMap,kn=new WeakMap,Ln=new WeakMap,qi=new WeakMap,Lr=new WeakMap,jo=new WeakSet,ag=function(){const e=new nc(V(this,Rn)),t=new nc(V(this,Rn));We(this,kn,e),We(this,_i,t),We(this,Jo,(a,s,o=po.now())=>{if(t[a]=s!==0?o:0,e[a]=s,s!==0&&this.ttlAutopurge){const l=setTimeout(()=>{V(this,tn).call(this,a)&&this.delete(V(this,Lt)[a])},s+1);l.unref&&l.unref()}}),We(this,Oa,a=>{t[a]=e[a]!==0?po.now():0}),We(this,Si,(a,s)=>{if(e[s]){const o=e[s],l=t[s];a.ttl=o,a.start=l,a.now=r||i();const c=a.now-l;a.remainingTTL=o-c}});let r=0;const i=()=>{const a=po.now();if(this.ttlResolution>0){r=a;const s=setTimeout(()=>r=0,this.ttlResolution);s.unref&&s.unref()}return a};this.getRemainingTTL=a=>{const s=V(this,or).get(a);if(s===void 0)return 0;const o=e[s],l=t[s];if(o===0||l===0)return 1/0;const c=(r||i())-l;return o-c},We(this,tn,a=>e[a]!==0&&t[a]!==0&&(r||i())-t[a]>e[a])},Oa=new WeakMap,Si=new WeakMap,Jo=new WeakMap,tn=new WeakMap,zc=new WeakSet,hR=function(){const e=new nc(V(this,Rn));We(this,Dn,0),We(this,gi,e),We(this,ba,t=>{We(this,Dn,V(this,Dn)-e[t]),e[t]=0}),We(this,el,(t,r,i,a)=>{if(ze(this,Dt,Ft).call(this,r))return 0;if(!Bi(i))if(a){if(typeof a!="function")throw new TypeError("sizeCalculation must be a function");if(i=a(r,t),!Bi(i))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return i}),We(this,ds,(t,r,i)=>{if(e[t]=r,V(this,Jr)){const a=V(this,Jr)-e[t];for(;V(this,Dn)>a;)ze(this,ps,ic).call(this,!0)}We(this,Dn,V(this,Dn)+e[t]),i&&(i.entrySize=r,i.totalCalculatedSize=V(this,Dn))})},ba=new WeakMap,ds=new WeakMap,el=new WeakMap,qn=new WeakSet,Ui=function*({allowStale:e=this.allowStale}={}){if(V(this,sr))for(let t=V(this,fr);!(!ze(this,tl,sg).call(this,t)||((e||!V(this,tn).call(this,t))&&(yield t),t===V(this,Tr)));)t=V(this,en)[t]},Vn=new WeakSet,Fi=function*({allowStale:e=this.allowStale}={}){if(V(this,sr))for(let t=V(this,Tr);!(!ze(this,tl,sg).call(this,t)||((e||!V(this,tn).call(this,t))&&(yield t),t===V(this,fr)));)t=V(this,kr)[t]},tl=new WeakSet,sg=function(e){return e!==void 0&&V(this,or).get(V(this,Lt)[e])===e},ps=new WeakSet,ic=function(e){var a,s;const t=V(this,Tr),r=V(this,Lt)[t],i=V(this,rt)[t];return V(this,qi)&&ze(this,Dt,Ft).call(this,i)?i.__abortController.abort(new Error("evicted")):(V(this,Ln)||V(this,Lr))&&(V(this,Ln)&&((a=V(this,Nn))==null||a.call(this,i,r,"evict")),V(this,Lr)&&((s=V(this,hr))==null||s.push([i,r,"evict"]))),V(this,ba).call(this,t),e&&(V(this,Lt)[t]=void 0,V(this,rt)[t]=void 0,V(this,xn).push(t)),V(this,sr)===1?(We(this,Tr,We(this,fr,0)),V(this,xn).length=0):We(this,Tr,V(this,kr)[t]),V(this,or).delete(r),gl(this,sr)._--,t},fs=new WeakSet,ac=function(e,t,r,i){const a=t===void 0?void 0:V(this,rt)[t];if(ze(this,Dt,Ft).call(this,a))return a;const s=new Qc,{signal:o}=r;o==null||o.addEventListener("abort",()=>s.abort(o.reason),{signal:s.signal});const l={signal:s.signal,options:r,context:i},c=(I,R=!1)=>{const{aborted:x}=s.signal,$=r.ignoreFetchAbort&&I!==void 0;if(r.status&&(x&&!R?(r.status.fetchAborted=!0,r.status.fetchError=s.signal.reason,$&&(r.status.fetchAbortIgnored=!0)):r.status.fetchResolved=!0),x&&!$&&!R)return p(s.signal.reason);const Z=_;return V(this,rt)[t]===_&&(I===void 0?Z.__staleWhileFetching?V(this,rt)[t]=Z.__staleWhileFetching:this.delete(e):(r.status&&(r.status.fetchUpdated=!0),this.set(e,I,l.options))),I},u=I=>(r.status&&(r.status.fetchRejected=!0,r.status.fetchError=I),p(I)),p=I=>{const{aborted:R}=s.signal,x=R&&r.allowStaleOnFetchAbort,$=x||r.allowStaleOnFetchRejection,Z=$||r.noDeleteOnFetchRejection,h=_;if(V(this,rt)[t]===_&&(!Z||h.__staleWhileFetching===void 0?this.delete(e):x||(V(this,rt)[t]=h.__staleWhileFetching)),$)return r.status&&h.__staleWhileFetching!==void 0&&(r.status.returnedStale=!0),h.__staleWhileFetching;if(h.__returned===h)throw I},m=(I,R)=>{var $;const x=($=V(this,us))==null?void 0:$.call(this,e,a,l);x&&x instanceof Promise&&x.then(Z=>I(Z===void 0?void 0:Z),R),s.signal.addEventListener("abort",()=>{(!r.ignoreFetchAbort||r.allowStaleOnFetchAbort)&&(I(void 0),r.allowStaleOnFetchAbort&&(I=Z=>c(Z,!0)))})};r.status&&(r.status.fetchDispatched=!0);const _=new Promise(m).then(c,u),v=Object.assign(_,{__abortController:s,__staleWhileFetching:a,__returned:void 0});return t===void 0?(this.set(e,v,{...l.options,status:void 0}),t=V(this,or).get(e)):V(this,rt)[t]=v,v},Dt=new WeakSet,Ft=function(e){if(!V(this,qi))return!1;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof Qc},rl=new WeakSet,og=function(e,t){V(this,en)[t]=e,V(this,kr)[e]=t},Ea=new WeakSet,bo=function(e){e!==V(this,fr)&&(e===V(this,Tr)?We(this,Tr,V(this,kr)[e]):ze(this,rl,og).call(this,V(this,en)[e],V(this,kr)[e]),ze(this,rl,og).call(this,V(this,fr),e),We(this,fr,e))};let ig=C_;const Ro=class Ro{constructor(){E(this,"_fallbackMethod",()=>Ro.createSkipProxy());E(this,"out",()=>{})}};E(Ro,"createSkipProxy",()=>{const e=new Ro;return new Proxy(e,{get(t,r,i){return typeof t[r]>"u"?t._fallbackMethod:t[r]},set(t,r,i,a){return!1}})});let qc=Ro;const No=class No extends S_{constructor(t,r){super(r);E(this,"_fallbackMethod",()=>No.createRestProxy(this.values.length,this.app));E(this,"out",()=>{});this.values.length=t}};E(No,"createRestProxy",(t,r)=>{const i=new No(t,r);return new Proxy(i,{get(a,s,o){return typeof a[s]>"u"?a._fallbackMethod:a[s]},set(a,s,o,l){return!1}})});let Vc=No;class YG extends S_{constructor(t,r,i){super(i);E(this,"input");E(this,"ziffers");E(this,"initCallTime",0);E(this,"startCallTime",0);E(this,"lastCallTime",0);E(this,"waitTime",0);E(this,"startBeat",0);E(this,"played",!1);E(this,"current");E(this,"retro",!1);E(this,"index",-1);E(this,"zid","");E(this,"options",{});E(this,"skipIndex",0);E(this,"endTime",0);E(this,"next",()=>(this.current=this.ziffers.next(),this.played=!0,this.current));E(this,"pulseToSecond",t=>this.app.clock.convertPulseToSecond(t));E(this,"firstRun",()=>this.notStarted());E(this,"atTheBeginning",()=>this.skipIndex===0&&this.ziffers.index<=0);E(this,"origin",()=>this.app.clock.pulses_since_origin+1);E(this,"pulse",()=>this.app.clock.time_position.pulse);E(this,"beat",()=>this.app.clock.time_position.beat);E(this,"nextBeat",()=>this.app.clock.next_beat_in_ticks);E(this,"nextBeatInTicks",()=>this.app.clock.next_beat_in_ticks);E(this,"areWeThereYet",()=>{this.app.clock.pulses_since_origin=this.nextBeatInTicks())&&this.origin()>=this.waitTime,r=this.current&&this.pulseToSecond(this.origin())>=this.pulseToSecond(this.lastCallTime)+this.pulseToSecond(this.current.duration*4*this.app.clock.ppqn)&&this.origin()>=this.waitTime,i=t||r;return this.skipIndex=i?0:this.skipIndex+1,this.index=i?this.index+1:this.index,i&&this.notStarted()&&(this.initCallTime=this.app.clock.pulses_since_origin),this.atTheBeginning()&&(this.startCallTime=this.app.clock.pulses_since_origin),i});E(this,"lead",()=>this.voiceleading());E(this,"invert",t=>(this.atTheBeginning()&&this.ziffers.invert(t),this));E(this,"out",()=>{});this.app=i,this.input=t,this.options=r,this.ziffers=new H$(t,r)}get ticks(){return this.ziffers.duration*4*this.app.clock.ppqn}nextEndTime(){return this.startCallTime+this.ticks}updateLastCallTime(){(this.notStarted()||this.played)&&(this.lastCallTime=this.app.clock.pulses_since_origin,this.played=!1)}notStarted(){return this.ziffers.notStarted()}sound(t){if(this.areWeThereYet()){const r=this.next(),i=this.app.clock.convertPulseToSecond(r.duration*4*this.app.clock.ppqn);if(r instanceof ri){const a=r.getExisting("freq","pitch","key","scale","octave","parsedScale");return r.sound&&(t=r.sound),r.soundIndex&&(a.n=r.soundIndex),a.dur=i,new eg(a,this.app).sound(t||"sine")}else if(r instanceof Na){const a=r.pitches.map(o=>o.getExisting("freq","pitch","key","scale","octave","parsedScale")),s={dur:i};return t&&(s.s=t),new eg(s,this.app).chord(a)}else if(r instanceof Km)return Vc.createRestProxy(r.duration,this.app)}else return qc.createSkipProxy()}midi(t=void 0){if(this.areWeThereYet()){const r=this.next(),i=r.getExisting("note","pitch","bend","key","scale","octave","parsedScale");if(r instanceof ri){r.soundIndex&&(i.channel=r.soundIndex);const a=new tg(i,this.app);return t?a.note(t):a}else{if(r instanceof Km)return Vc.createRestProxy(r.duration,this.app);if(r instanceof Na){const a=r.midiChord();return new tg(i,this.app).chord(a)}}}else return qc.createSkipProxy()}scale(t){return this.atTheBeginning()&&this.ziffers.scale(t),this}key(t){return this.atTheBeginning()&&this.ziffers.key(t),this}octave(t){return this.atTheBeginning()&&this.ziffers.octave(t),this}voiceleading(){return this.atTheBeginning()&&this.ziffers.lead(),this}retrograde(){return this.atTheBeginning()&&this.ziffers.retrograde(),this}wait(t){if(this.atTheBeginning()){if(typeof t=="function"){const r=this.app.api.patternCache.get(t.name);return r&&(this.waitTime=r.nextEndTime()),this}this.waitTime=this.origin()+Math.ceil(t*4*this.app.clock.ppqn)}return this}sync(t){if(this.atTheBeginning()&&this.notStarted()){const r=this.app.clock.pulses_since_origin,i=typeof t=="function"?t.name:t;if(r>0){const a=this.app.api.patternCache.get(i);if(a){const s=a.ziffers.duration,o=a.startCallTime,l=s*4*this.app.clock.ppqn;this.waitTime=o+l}}}return this}}const $G=n=>n[0]==="{"&&n[n.length-1]==="}",fo=(n,e)=>{if($G(n)){const t=JSON.parse(n);return JSON.stringify({...t,...e})}else return JSON.stringify({...e,text:n})},GG=n=>{String.prototype.speak=function(){const e=JSON.parse(this.valueOf());new mR({...e,text:e.text}).speak().then(()=>{}).catch(t=>{console.log("Error speaking:",t)})},String.prototype.rate=function(e){return fo(this.valueOf(),{rate:e})},String.prototype.pitch=function(e){return fo(this.valueOf(),{pitch:e})},String.prototype.lang=function(e){return fo(this.valueOf(),{lang:e})},String.prototype.volume=function(e){return fo(this.valueOf(),{volume:e})},String.prototype.voice=function(e){return fo(this.valueOf(),{voice:e})},String.prototype.z=function(e={}){return n.z(this.valueOf(),e)},String.prototype.z0=function(e={}){return n.z0(this.valueOf(),e)},String.prototype.z1=function(e={}){return n.z1(this.valueOf(),e)},String.prototype.z2=function(e={}){return n.z2(this.valueOf(),e)},String.prototype.z3=function(e={}){return n.z3(this.valueOf(),e)},String.prototype.z4=function(e={}){return n.z4(this.valueOf(),e)},String.prototype.z5=function(e={}){return n.z5(this.valueOf(),e)},String.prototype.z6=function(e={}){return n.z6(this.valueOf(),e)},String.prototype.z7=function(e={}){return n.z7(this.valueOf(),e)},String.prototype.z8=function(e={}){return n.z8(this.valueOf(),e)},String.prototype.z9=function(e={}){return n.z9(this.valueOf(),e)},String.prototype.z10=function(e={}){return n.z10(this.valueOf(),e)},String.prototype.z11=function(e={}){return n.z11(this.valueOf(),e)},String.prototype.z12=function(e={}){return n.z12(this.valueOf(),e)},String.prototype.z13=function(e={}){return n.z13(this.valueOf(),e)},String.prototype.z14=function(e={}){return n.z14(this.valueOf(),e)},String.prototype.z15=function(e={}){return n.z15(this.valueOf(),e)},String.prototype.z16=function(e={}){return n.z16(this.valueOf(),e)},String.prototype.note=function(){try{return parseInt(this.valueOf())}catch{return Un(this.valueOf())}}};let qh;class mR{constructor(e){E(this,"speak",()=>new Promise((e,t)=>{if(this.options.text){const r=window.speechSynthesis;r.speaking&&r.cancel();const i=new SpeechSynthesisUtterance(this.options.text);i.rate=this.options.rate||1,i.pitch=this.options.pitch||1,i.volume=this.options.volume||1,this.options.voice&&(i.voice=r.getVoices()[this.options.voice]),this.options.lang&&(this.options.lang.length===2?i.lang=`${this.options.lang}-${this.options.lang.toUpperCase()}`:this.options.lang.length===5?i.lang=this.options.lang:i.lang="en-US"),i.onend=()=>{e()},i.onerror=a=>{t(a)},r.speaking?(r.cancel(),qh&&clearTimeout(qh),qh=setTimeout(()=>{r.speak(i)},200)):r.speak(i)}else t("No text provided")}));this.options=e}}async function gR(){return Promise.all([mG(),Gi("github:tidalcycles/Dirt-Samples/master").then(()=>xG()),BG(),Gi("github:Bubobubobubobubo/Dough-Fox/main"),Gi("github:Bubobubobubobubo/Dough-Samples/main"),Gi("github:Bubobubobubobubo/Dough-Amiga/main"),Gi("github:Bubobubobubobubo/Dough-Amen/main"),Gi("github:Bubobubobubobubo/Dough-Waveforms/main")])}class QG{constructor(e){E(this,"variables",{});E(this,"codeExamples",{});E(this,"counters",{});E(this,"_drunk",new Z$(-100,100,!1));E(this,"randomGen",Math.random);E(this,"currentSeed");E(this,"localSeeds",new Map);E(this,"patternCache",new ig({max:1e3,ttl:1e3*60*5}));E(this,"errorTimeoutID",0);E(this,"printTimeoutID",0);E(this,"MidiConnection");E(this,"scale_aid");E(this,"load");E(this,"_loadUniverseFromInterface",e=>{wc(this.app,e),Dc()});E(this,"_deleteUniverseFromInterface",e=>{delete this.app.universes[e],this.app.settings.saveApplicationToLocalStorage(this.app.universes,this.app.settings),this.app.updateKnownUniversesView()});E(this,"_playDocExample",e=>{let t=this.app.universes[this.app.selected_universe];this.app.exampleIsPlaying=!0,t.example?t.example.candidate=e||this.app.selectedExample:(t.example={candidate:"",committed:"",evaluations:0},t.example.candidate=e||this.app.selectedExample),this.play()});E(this,"_stopDocExample",()=>{let e=this.app.universes[this.app.selected_universe];(e==null?void 0:e.example)!==void 0&&(this.app.exampleIsPlaying=!1,e.example.candidate="",e.example.committed=""),this.pause()});E(this,"_playDocExampleOnce",e=>{let t=this.app.universes[this.app.selected_universe];(t==null?void 0:t.example)!==void 0&&(t.example.candidate="",t.example.committed=""),this.play(),this.app.exampleIsPlaying=!0,AL(this.app,e)});E(this,"_all_samples",()=>E_.get());E(this,"_reportError",e=>{console.log(e),clearTimeout(this.errorTimeoutID),clearTimeout(this.printTimeoutID),this.app.interface.error_line.innerHTML=e,this.app.interface.error_line.style.color="color-red-800",this.app.interface.error_line.classList.remove("hidden"),this.errorTimeoutID=setTimeout(()=>this.app.interface.error_line.classList.add("hidden"),2e3)});E(this,"_logMessage",e=>{console.log(e),clearTimeout(this.printTimeoutID),clearTimeout(this.errorTimeoutID),this.app.interface.error_line.innerHTML=e,this.app.interface.error_line.style.color="white",this.app.interface.error_line.classList.remove("hidden"),this.printTimeoutID=setTimeout(()=>this.app.interface.error_line.classList.add("hidden"),4e3)});E(this,"time",()=>this.app.audioContext.currentTime);E(this,"play",()=>{this.app.setButtonHighlighting("play",!0),this.MidiConnection.sendStartMessage(),this.app.clock.start()});E(this,"pause",()=>{this.app.setButtonHighlighting("pause",!0),this.MidiConnection.sendStopMessage(),this.app.clock.pause()});E(this,"stop",()=>{this.app.setButtonHighlighting("stop",!0),this.MidiConnection.sendStopMessage(),this.app.clock.stop()});E(this,"silence",this.stop);E(this,"hush",this.stop);E(this,"warp",e=>{this.app.clock.tick=e,this.app.clock.time_position=this.app.clock.convertTicksToTimeposition(e)});E(this,"beat_warp",e=>{this.app.clock.tick=e*this.app.clock.ppqn,this.app.clock.time_position=this.app.clock.convertTicksToTimeposition(e*this.app.clock.ppqn)});E(this,"onmousemove",e=>{this.app._mouseX=e.pageX,this.app._mouseY=e.pageY});E(this,"mouseX",()=>this.app._mouseX);E(this,"mouseY",()=>this.app._mouseY);E(this,"noteX",()=>Math.floor(this.app._mouseX/document.body.clientWidth*127));E(this,"noteY",()=>Math.floor(this.app._mouseY/document.body.clientHeight*127));E(this,"script",(...e)=>{e.forEach(t=>{Ra(this.app,this.app.universes[this.app.selected_universe].locals[t])})});E(this,"s",this.script);E(this,"delete_script",e=>{this.app.universes[this.app.selected_universe].locals[e]={candidate:"",committed:"",evaluations:0}});E(this,"cs",this.delete_script);E(this,"copy_script",(e,t)=>{this.app.universes[this.app.selected_universe].locals[t]={...this.app.universes[this.app.selected_universe].locals[e]}});E(this,"cps",this.copy_script);E(this,"copy_universe",(e,t)=>{this.app.universes[t]={...this.app.universes[e]}});E(this,"delete_universe",e=>{this.app.selected_universe===e&&(this.app.selected_universe="Default"),delete this.app.universes[e],this.app.settings.saveApplicationToLocalStorage(this.app.universes,this.app.settings),this.app.updateKnownUniversesView()});E(this,"big_bang",()=>{confirm("Are you sure you want to delete all universes?")&&(this.app.universes={...Xo},this.app.settings.saveApplicationToLocalStorage(this.app.universes,this.app.settings)),this.app.selected_universe="Default",this.app.updateKnownUniversesView()});E(this,"midi_outputs",()=>{this._logMessage(this.MidiConnection.listMidiOutputs())});E(this,"midi_output",e=>{e?this.MidiConnection.switchMidiOutput(e):console.log(this.MidiConnection.getCurrentMidiPort())});E(this,"midi",(e=60,t,r)=>(t!==void 0&&(typeof e=="number"&&(e={note:e}),e.velocity=t),r!==void 0&&(typeof e=="number"&&(e={note:e}),e.channel=r),new tg(e,this.app)));E(this,"sysex",e=>{this.MidiConnection.sendSysExMessage(e)});E(this,"pitch_bend",(e,t)=>{this.MidiConnection.sendPitchBend(e,t)});E(this,"program_change",(e,t)=>{this.MidiConnection.sendProgramChange(e,t)});E(this,"midi_clock",()=>{this.MidiConnection.sendMidiClock()});E(this,"control_change",({control:e=20,value:t=0,channel:r=0})=>{this.MidiConnection.sendMidiControlChange(e,t,r)});E(this,"midi_panic",()=>{this.MidiConnection.panic()});E(this,"active_note_events",e=>{let t;if(e?t=this.MidiConnection.activeNotesFromChannel(e):t=this.MidiConnection.activeNotes,t.length>0)return t});E(this,"active_notes",e=>{const t=this.active_note_events(e);if(t&&t.length>0)return t.map(r=>r.note)});E(this,"kill_active_notes",()=>{this.MidiConnection.activeNotes=[]});E(this,"sticky_notes",e=>{let t;if(e?t=this.MidiConnection.stickyNotesFromChannel(e):t=this.MidiConnection.stickyNotes,t.length>0)return t.map(r=>r.note)});E(this,"kill_sticky_notes",()=>{this.MidiConnection.stickyNotes=[]});E(this,"buffer",e=>e?this.MidiConnection.findNoteFromBufferInChannel(e)!==void 0:this.MidiConnection.noteInputBuffer.length>0);E(this,"buffer_event",e=>e?this.MidiConnection.findNoteFromBufferInChannel(e):this.MidiConnection.noteInputBuffer.shift());E(this,"buffer_note",e=>{const t=this.buffer_event(e);return t?t.note:void 0});E(this,"last_note_event",e=>e?this.MidiConnection.lastNoteInChannel[e]:this.MidiConnection.lastNote);E(this,"last_note",e=>{const t=this.last_note_event(e);return t?t.note:60});E(this,"last_cc",(e,t)=>t?this.MidiConnection.lastCCInChannel[t]?this.MidiConnection.lastCCInChannel[t][e]:0:this.MidiConnection.lastCC[e]||0);E(this,"has_cc",e=>e?this.MidiConnection.findCCFromBufferInChannel(e)!==void 0:this.MidiConnection.ccInputBuffer.length>0);E(this,"buffer_cc",e=>e?this.MidiConnection.findCCFromBufferInChannel(e):this.MidiConnection.ccInputBuffer.shift());E(this,"show_scale",(e,t,r=0,i=this.MidiConnection.currentOutputIndex||0,a=!1)=>{(!this.scale_aid||t!==this.scale_aid)&&(this.hide_scale(e,t,r,i),M$(t,e).forEach(o=>{this.MidiConnection.sendMidiOn(o,r,1,i),a&&this.MidiConnection.sendAllSoundOff(r,i)}),this.scale_aid=t)});E(this,"hide_scale",(e=0,t=0,r=0,i=this.MidiConnection.currentOutputIndex||0)=>{Array.from(Array(128).keys()).forEach(s=>{this.MidiConnection.sendMidiOff(s,r,i)}),this.scale_aid=void 0});E(this,"midi_notes_off",(e=0,t=this.MidiConnection.currentOutputIndex||0)=>{this.MidiConnection.sendAllNotesOff(e,t)});E(this,"midi_sound_off",(e=0,t=this.MidiConnection.currentOutputIndex||0)=>{this.MidiConnection.sendAllSoundOff(e,t)});E(this,"generateCacheKey",(...e)=>e.map(t=>JSON.stringify(t)).join(","));E(this,"z",(e,t={},r="")=>{const i="z"+r.toString(),a=r===""?this.generateCacheKey(e,t):i;let s;return this.app.api.patternCache.has(a)&&(s=this.app.api.patternCache.get(a),s.input!==e&&(s=void 0)),s||(s=new YG(e,t,this.app),this.app.api.patternCache.set(a,s)),typeof r=="number"&&(s.zid=i),s.updateLastCallTime(),r!==""&&s.sync("z0"),s});E(this,"z0",(e,t={})=>this.z(e,t,0));E(this,"z1",(e,t={})=>this.z(e,t,1));E(this,"z2",(e,t={})=>this.z(e,t,2));E(this,"z3",(e,t={})=>this.z(e,t,3));E(this,"z4",(e,t={})=>this.z(e,t,4));E(this,"z5",(e,t={})=>this.z(e,t,5));E(this,"z6",(e,t={})=>this.z(e,t,6));E(this,"z7",(e,t={})=>this.z(e,t,7));E(this,"z8",(e,t={})=>this.z(e,t,8));E(this,"z9",(e,t={})=>this.z(e,t,9));E(this,"z10",(e,t={})=>this.z(e,t,10));E(this,"z11",(e,t={})=>this.z(e,t,11));E(this,"z12",(e,t={})=>this.z(e,t,12));E(this,"z13",(e,t={})=>this.z(e,t,13));E(this,"z14",(e,t={})=>this.z(e,t,14));E(this,"z15",(e,t={})=>this.z(e,t,15));E(this,"z16",(e,t={})=>this.z(e,t,16));E(this,"counter",(e,t,r)=>(e in this.counters?(this.counters[e].limit!==t&&(this.counters[e].value=0,this.counters[e].limit=t),this.counters[e].step!==r&&(this.counters[e].step=r??this.counters[e].step),this.counters[e].value+=this.counters[e].step,this.counters[e].limit!==void 0&&this.counters[e].value>this.counters[e].limit&&(this.counters[e].value=0)):this.counters[e]={value:0,step:r??1,limit:t},this.counters[e].value));E(this,"$",this.counter);E(this,"i",e=>e!==void 0?(this.app.universes[this.app.selected_universe].global.evaluations=e,this.app.universes[this.app.selected_universe]):this.app.universes[this.app.selected_universe].global.evaluations);E(this,"drunk",e=>e!==void 0?(this._drunk.position=e,this._drunk.getPosition()):(this._drunk.step(),this._drunk.getPosition()));E(this,"drunk_max",e=>{this._drunk.max=e});E(this,"drunk_min",e=>{this._drunk.min=e});E(this,"drunk_wrap",e=>{this._drunk.toggleWrap(e)});E(this,"variable",(e,t)=>typeof e=="string"&&t===void 0?this.variables[e]:(this.variables[e]=t,this.variables[e]));E(this,"v",this.variable);E(this,"delete_variable",e=>{delete this.variables[e]});E(this,"dv",this.delete_variable);E(this,"clear_variables",()=>{this.variables={}});E(this,"cv",this.clear_variables);E(this,"randI",(e,t)=>Math.floor(this.randomGen()*(t-e+1))+e);E(this,"rand",(e,t)=>this.randomGen()*(t-e)+e);E(this,"irand",this.randI);E(this,"rI",this.randI);E(this,"r",this.rand);E(this,"ir",this.randI);E(this,"seed",e=>{typeof e=="number"&&(e=e.toString()),this.currentSeed!==e&&(this.currentSeed=e,this.randomGen=Zm(e))});E(this,"localSeededRandom",e=>{if(typeof e=="number"&&(e=e.toString()),this.localSeeds.has(e))return this.localSeeds.get(e);const t=Zm(e);return this.localSeeds.set(e,t),t});E(this,"clearLocalSeed",(e=void 0)=>{e&&this.localSeeds.delete(e.toString()),this.localSeeds.clear()});E(this,"quantize",(e,t)=>{if(t.length===0)return e;let r=t[0];return t.forEach(i=>{Math.abs(i-e)Math.min(Math.max(e,t),r));E(this,"cmp",this.clamp);E(this,"nudge",e=>(e&&(this.app.clock.nudge=e),this.app.clock.nudge));E(this,"bpm",e=>e===void 0?this.app.clock.bpm:((e<1||e>500)&&console.log(`Setting bpm to ${e}`),this.app.clock.bpm=e,e));E(this,"tempo",this.bpm);E(this,"bpb",e=>e===void 0?this.app.clock.time_signature[0]:(e<1&&console.log(`Setting bpb to ${e}`),this.app.clock.time_signature[0]=e,e));E(this,"ppqn",e=>e===void 0?this.app.clock.ppqn:(e<1&&console.log(`Setting ppqn to ${e}`),this.app.clock.ppqn=e,e));E(this,"time_signature",(e,t)=>{this.app.clock.time_signature=[e,t]});E(this,"prob",e=>this.randomGen()*100this.randomGen()>.5);E(this,"odds",(e,t=1)=>this.randomGen()!1);E(this,"almostNever",(e=1)=>this.randomGen()<.025*this.ppqn()/(this.ppqn()*e));E(this,"rarely",(e=1)=>this.randomGen()<.1*this.ppqn()/(this.ppqn()*e));E(this,"scarcely",(e=1)=>this.randomGen()<.25*this.ppqn()/(this.ppqn()*e));E(this,"sometimes",(e=1)=>this.randomGen()<.5*this.ppqn()/(this.ppqn()*e));E(this,"often",(e=1)=>this.randomGen()<.75*this.ppqn()/(this.ppqn()*e));E(this,"frequently",(e=1)=>this.randomGen()<.9*this.ppqn()/(this.ppqn()*e));E(this,"almostAlways",(e=1)=>this.randomGen()<.985*this.ppqn()/(this.ppqn()*e));E(this,"always",(e=1)=>!0);E(this,"dice",e=>Math.floor(this.randomGen()*e)+1);E(this,"cbar",()=>this.app.clock.time_position.bar+1);E(this,"ctick",()=>this.app.clock.tick+1);E(this,"cpulse",()=>this.app.clock.time_position.pulse+1);E(this,"cbeat",()=>this.app.clock.time_position.beat+1);E(this,"ebeat",()=>this.app.clock.beats_since_origin+1);E(this,"epulse",()=>this.app.clock.pulses_since_origin+1);E(this,"nominator",()=>this.app.clock.time_signature[0]);E(this,"meter",()=>this.app.clock.time_signature[1]);E(this,"denominator",this.meter);E(this,"fill",()=>this.app.fill);E(this,"beat",(e=1,t=0)=>(Array.isArray(e)?e:[e]).map(a=>(this.app.clock.pulses_since_origin-Math.floor(t*this.ppqn()))%Math.floor(a*this.ppqn())===0).some(a=>a===!0));E(this,"b",this.beat);E(this,"bar",(e=1,t=0)=>{const r=Array.isArray(e)?e:[e],i=this.app.clock.time_signature[1]*this.ppqn(),a=Math.floor(t*i);return r.map(o=>(this.app.clock.pulses_since_origin-a)%Math.floor(o*i)===0).some(o=>o===!0)});E(this,"B",this.bar);E(this,"pulse",(e=1,t=0)=>(Array.isArray(e)?e:[e]).map(a=>(this.app.clock.pulses_since_origin-t)%a===0).some(a=>a===!0));E(this,"p",this.pulse);E(this,"tick",(e,t=0)=>(Array.isArray(e)?e:[e]).map(a=>this.app.clock.time_position.pulse===a+t).some(a=>a===!0));E(this,"flip",(e,t=50)=>{let r=e*2;const i=this.app.clock.pulses_since_origin,a=Math.floor(r*this.ppqn()),s=Math.floor(t/100*a);return i%a{let t=e*2;const r=this.app.clock.time_position.bar;return Math.floor(r/t)%2===0});E(this,"onbar",(e,t=this.app.clock.time_signature[0])=>{let r=this.app.clock.time_position.bar%t+1;return typeof e=="number"?e===r:e.some(i=>i==r)});E(this,"onbeat",(...e)=>{let t=[];return e.forEach(r=>{let i=r%this.nominator()||this.nominator(),a=Math.floor(i);a=a==0?this.nominator():a;let s=Math.floor((i-a)*this.ppqn()+1);s<=0&&(s=s+this.ppqn()*this.nominator()),t.push(a===this.cbeat()&&this.cpulse()===s)}),t.some(r=>r==!0)});E(this,"oncount",(e,t)=>{typeof e=="number"&&(e=[e]);const r=this.app.clock.pulses_since_origin;let i=[];return e.forEach(a=>{a=a<1?0:a-1;const s=Math.ceil(a*this.ppqn()),o=r%(this.ppqn()*t);return i.push(o===s)}),i.some(a=>a==!0)});E(this,"oneuclid",(e,t,r=0)=>{const a=this._euclidean_cycle(e,t,r).reduce((s,o,l)=>(o&&s.push(l+1),s),[]);return this.oncount(a,t)});E(this,"delay",(e,t)=>{setTimeout(t,e)});E(this,"delayr",(e,t,r)=>{[...Array(t).keys()].map(a=>e*a).forEach((a,s)=>{setTimeout(r,a)})});E(this,"euclid",(e,t,r,i=0)=>this._euclidean_cycle(t,r,i)[e%r]);E(this,"ec",this.euclid);E(this,"rhythm",(e,t,r,i=0)=>this.beat(e)&&this._euclidean_cycle(t,r,i).beat(e));E(this,"bin",(e,t)=>{let i=t.toString(2).split("").map(a=>a==="1");return i[e%i.length]});E(this,"binrhythm",(e,t)=>{let i=t.toString(2).split("").map(a=>a==="1");return this.beat(e)&&i.beat(e)});E(this,"line",(e,t,r=1)=>{const i=[];if(t>e&&r>0||t(Math.sin(this.app.clock.ctx.currentTime*Math.PI*2*e)+r)*t);E(this,"usine",(e=1,t=1,r=0)=>(this.sine(e,r)+1)/2*t);E(this,"saw",(e=1,t=1,r=0)=>(this.app.clock.ctx.currentTime*e%1*2-1+r)*t);E(this,"usaw",(e=1,t=1,r=0)=>(this.saw(e,r)+1)/2*t);E(this,"triangle",(e=1,t=1,r=0)=>(Math.abs(this.saw(e,r))*2-1)*t);E(this,"utriangle",(e=1,t=1,r=0)=>(this.triangle(e,r)+1)/2*t);E(this,"square",(e=1,t=1,r=0,i=.5)=>{const a=1/e;return((Date.now()/1e3+r)%a/a(this.square(e,r,i)+1)/2*t);E(this,"noise",(e=1)=>(this.randomGen()*2-1)*e);E(this,"min",(...e)=>Math.min(...e));E(this,"max",(...e)=>Math.max(...e));E(this,"mean",(...e)=>e.reduce((r,i)=>r+i,0)/e.length);E(this,"range",(e,t,r,i,a)=>(e-t)/(r-t)*(a-i)+i);E(this,"limit",(e,t,r)=>Math.min(Math.max(e,t),r));E(this,"abs",Math.abs);E(this,"speak",(e,t="en-US",r=0,i=1,a=1)=>{new mR({text:e,lang:t,voice:r,rate:i,pitch:a}).speak().then(()=>{}).catch(o=>{console.log(o)})});E(this,"stop_hydra",()=>{this.app.hydra.hush()});E(this,"sound",e=>new eg(e,this.app));E(this,"snd",this.sound);E(this,"samples",Gi);E(this,"log",e=>{console.log(e),this._logMessage(e)});E(this,"scale",__);E(this,"rate",e=>{});E(this,"divseq",(...e)=>{const t=e[0],r=e.slice(1),i=this.app.clock.pulses_since_origin,a=Math.floor(i/Math.floor(t*this.ppqn()));return r[a%r.length]});E(this,"seqbeat",(...e)=>e[this.app.clock.time_position.beat%e.length]);E(this,"seqbar",(...e)=>e[(this.app.clock.time_position.bar+1)%e.length]);E(this,"shuffle",e=>e.sort(()=>this.randomGen()-.5));E(this,"reverse",e=>e.reverse());E(this,"rotate",e=>t=>t.slice(e,t.length).concat(t.slice(0,e)));E(this,"repeat",e=>t=>t.flatMap(r=>Array(e).fill(r)));E(this,"repeatOdd",e=>t=>t.flatMap((r,i)=>i%2===0?Array(e).fill(r):r));E(this,"repeatEven",e=>t=>t.flatMap((r,i)=>i%2!==0?Array(e).fill(r):r));E(this,"palindrome",e=>e.concat(e.slice(0,e.length-1).reverse()));this.app=e,this.MidiConnection=new X$(this,e.settings)}transmission(){return this.MidiConnection.activeNotes.length>0}_euclidean_cycle(e,t,r=0){if(e==t)return Array.from({length:t},()=>!0);function i(o,l){const c=o.length,u=(l+1)%c;return o[l]>o[u]}if(e>=t)return[!0];const a=Array.from({length:t},(o,l)=>(e*(l-1)%t+t)%t);let s=a.map((o,l)=>i(a,l));return r!=0&&(s=s.slice(r).concat(s.slice(0,r))),s}}const qG=n=>{Array.prototype.square=function(){return this.map(e=>e*e)},Array.prototype.sometimes=function(e){return n.randomGen()<.5?e(this):this},Array.prototype.apply=function(e){return e(this)},Array.prototype.sqrt=function(){if(this.some(e=>e<0))throw new Error("Cannot take square root of negative number");return this.map(e=>Math.sqrt(e))},Array.prototype.add=function(e){return this.map(t=>t+e)},Array.prototype.sub=function(e){return this.map(t=>t-e)},Array.prototype.mult=function(e){return this.map(t=>t*e)},Array.prototype.div=function(e){if(e===0)throw new Error("Division by zero");return this.map(t=>t/e)},Array.prototype.pick=function(){return this[Math.floor(n.randomGen()*this.length)]},Array.prototype.gen=function(e,t,r){return r<1?[]:Array.from({length:r},()=>Math.floor(n.randomGen()*(t-e+1))+e)},Array.prototype.bar=function(e=1){return e===1?this[n.app.clock.time_position.bar%this.length]:this[Math.floor(n.app.clock.time_position.bar/e)%this.length]},Array.prototype.beat=function(e=1){const t=e,r=n.app.clock.pulses_since_origin,i=Math.floor(r/Math.floor(t*n.ppqn()));return this[i%this.length]},Array.prototype.b=Array.prototype.beat,Array.prototype.shuffle=function(){let e=this.length,t;for(;e!==0;)t=Math.floor(n.randomGen()*e),e--,[this[e],this[t]]=[this[t],this[e]];return this},Array.prototype.rotate=function(e){const t=this.length;if(e<0)e=t+e%t;else if(e>0)e=e%t;else return this;const r=this.splice(-e,e);return this.unshift(...r),this},Array.prototype.unique=function(){const e=new Set;let t=0;for(let r=0;r100)throw new Error("Amount should be between 0 and 100");if(this.length<=1)return this;for(let t=0;t1)this.splice(t,1);else return this;else t++;return this},Array.prototype.repeat=function(e=1){if(e<1)throw new Error("Amount should be at least 1");let t=[];for(let r=0;r(i%a+a)%a,r=nR(Ds(n));return this.map(i=>{const a=Math.floor(i/r.length)*12;return r[t(i,r.length)]+e+a})};Array.prototype.scaleArp=function(n="major",e=0){const t=nR(Ds(n));let r=[];e=e>t.length?t.length:e,e=e==0?t.length:e;for(let i=0;i{n.interface.line_numbers_checkbox.checked=n.settings.line_numbers,n.interface.time_position_checkbox.checked=n.settings.time_position,n.interface.tips_checkbox.checked=n.settings.tips,n.interface.midi_clock_checkbox.checked=n.settings.send_clock,n.interface.midi_channels_scripts.checked=n.settings.midi_channels_scripts,n.interface.midi_clock_ppqn.value=n.settings.midi_clock_ppqn.toString(),n.settings.time_position||n.interface.timeviewer.classList.add("hidden"),n.interface.load_demo_songs.checked=n.settings.load_demo_songs;const e=document.querySelectorAll('[id^="tab-"]');for(let t=0;t{e[t].classList.add("bg-orange-300");for(let s=0;s{hi(),n.updateKnownUniversesView(),Dc()}),n.buttonElements.play_buttons.forEach(t=>{t.addEventListener("click",()=>{n.isPlaying?(n.setButtonHighlighting("pause",!0),n.isPlaying=!n.isPlaying,n.clock.pause(),n.api.MidiConnection.sendStopMessage()):(n.setButtonHighlighting("play",!0),n.isPlaying=!n.isPlaying,n.clock.start(),n.api.MidiConnection.sendStartMessage())})}),n.buttonElements.clear_buttons.forEach(t=>{t.addEventListener("click",()=>{n.setButtonHighlighting("clear",!0),confirm("Do you want to reset the current universe?")&&(n.universes[n.selected_universe]=structuredClone(Xg),n.updateEditorView())})}),n.interface.documentation_button.addEventListener("click",()=>{QI(n)}),n.interface.destroy_universes_button.addEventListener("click",()=>{confirm("Do you want to destroy all universes?")&&(n.universes={...Xo},n.updateKnownUniversesView())}),n.interface.audio_nudge_range.addEventListener("input",()=>{n.clock.nudge=parseInt(n.interface.audio_nudge_range.value)}),n.interface.dough_nudge_range.addEventListener("input",()=>{n.dough_nudge=parseInt(n.interface.dough_nudge_range.value)}),n.interface.upload_universe_button.addEventListener("click",()=>{const t=document.createElement("input");t.type="file",t.accept=".json",t.addEventListener("change",r=>{var s;const a=(s=r.target.files)==null?void 0:s[0];if(a){const o=new FileReader;o.readAsText(a,"UTF-8"),o.onload=l=>{const c=JSON.parse(l.target.result);for(const[u,p]of Object.entries(c))n.universes[u]=p},o.onerror=l=>{console.error("An error occurred reading the file:",l)}}}),document.body.appendChild(t),t.click(),document.body.removeChild(t)}),n.interface.download_universe_button.addEventListener("click",()=>{n.settings.saveApplicationToLocalStorage(n.universes,n.settings);let t=`topos-universes-${Date.now()}.json`;const r=new Blob([JSON.stringify(n.settings.universes)],{type:"application/json"}),i=URL.createObjectURL(r),a=document.createElement("a");a.href=i,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}),n.interface.load_universe_button.addEventListener("click",()=>{let t=n.interface.buffer_search.value;t.length>2&&t.length<20&&!t.includes(" ")&&(wc(n,t),n.settings.selected_universe=t,n.interface.buffer_search.value="",Qm(),n.view.focus(),kA())}),n.interface.eval_button.addEventListener("click",()=>{n.currentFile().candidate=n.view.state.doc.toString(),n.flashBackground("#404040",200)}),n.buttonElements.stop_buttons.forEach(t=>{t.addEventListener("click",()=>{n.setButtonHighlighting("stop",!0),n.isPlaying=!1,n.clock.stop()})}),n.interface.local_button.addEventListener("click",()=>n.changeModeFromInterface("local")),n.interface.global_button.addEventListener("click",()=>n.changeModeFromInterface("global")),n.interface.init_button.addEventListener("click",()=>n.changeModeFromInterface("init")),n.interface.note_button.addEventListener("click",()=>n.changeModeFromInterface("notes")),n.interface.font_family_selector.addEventListener("change",()=>{n.interface.font_family_selector.value}),n.interface.font_size_input.addEventListener("input",()=>{let t=n.interface.font_size_input.value;n.settings.font_size=parseInt(t)}),n.interface.settings_button.addEventListener("click",()=>{const t=n.interface.dough_nudge_range;t.value=n.dough_nudge.toString();const r=document.getElementById("doughnumber");r.value=n.dough_nudge.toString(),n.interface.font_family_selector.value=n.settings.font,n.settings.font_size===null&&(n.settings.font_size=12);const i=n.interface.font_size_input;i.value=n.settings.font_size.toString();const a=n.interface.line_numbers_checkbox;a.checked=n.settings.line_numbers;const s=n.interface.time_position_checkbox;s.checked=n.settings.time_position;const o=n.interface.tips_checkbox;o.checked=n.settings.tips;const l=n.interface.midi_clock_checkbox;l.checked=n.settings.send_clock;const c=n.interface.midi_channels_scripts;c.checked=n.settings.midi_channels_scripts;const u=n.interface.midi_clock_ppqn;u.value=n.settings.midi_clock_ppqn.toString();const p=n.interface.load_demo_songs;p.checked=n.settings.load_demo_songs;const m=n.interface.vim_mode_checkbox;m.checked=n.settings.vimMode;let _=document.getElementById("modal-settings"),v=document.getElementById("editor");_==null||_.classList.remove("invisible"),v==null||v.classList.add("invisible")}),n.interface.close_settings_button.addEventListener("click",()=>{let t=document.getElementById("modal-settings"),r=document.getElementById("editor");t==null||t.classList.add("invisible"),r==null||r.classList.remove("invisible"),n.view.dispatch({effects:n.fontSize.reconfigure(Be.theme({"&":{fontSize:n.settings.font_size+"px"},"&content":{fontFamily:n.settings.font,fontSize:n.settings.font_size+"px"},".cm-gutters":{fontSize:n.settings.font_size+"px"}}))})}),n.interface.close_universes_button.addEventListener("click",()=>{Dc()}),n.interface.share_button.addEventListener("click",async()=>{n.currentFile().candidate=n.view.state.doc.toString(),n.currentFile().committed=n.view.state.doc.toString(),n.settings.saveApplicationToLocalStorage(n.universes,n.settings),await NL(n)}),n.interface.vim_mode_checkbox.addEventListener("change",()=>{let t=!!n.interface.vim_mode_checkbox.checked;n.settings.vimMode=t,n.view.dispatch({effects:n.vimModeCompartment.reconfigure(t?o_():[])})}),n.interface.line_numbers_checkbox.addEventListener("change",()=>{let r=!!n.interface.line_numbers_checkbox.checked;n.settings.line_numbers=r,n.view.dispatch({effects:n.withLineNumbers.reconfigure(r?[WC()]:[])})}),n.interface.time_position_checkbox.addEventListener("change",()=>{let t=document.getElementById("timeviewer"),r=!!n.interface.time_position_checkbox.checked;n.settings.time_position=r,r?t.classList.remove("hidden"):t.classList.add("hidden")}),n.interface.tips_checkbox.addEventListener("change",()=>{let t=!!n.interface.tips_checkbox.checked;n.settings.tips=t,n.view.dispatch({effects:n.hoveringCompartment.reconfigure(t?KI:[])})}),n.interface.midi_clock_checkbox.addEventListener("change",()=>{let t=!!n.interface.midi_clock_checkbox.checked;n.settings.send_clock=t}),n.interface.midi_channels_scripts.addEventListener("change",()=>{let t=!!n.interface.midi_channels_scripts.checked;n.settings.midi_channels_scripts=t}),n.interface.midi_clock_ppqn.addEventListener("change",()=>{let t=parseInt(n.interface.midi_clock_ppqn.value);n.settings.midi_clock_ppqn=t}),n.interface.load_demo_songs.addEventListener("change",()=>{let t=!!n.interface.load_demo_songs.checked;n.settings.load_demo_songs=t}),n.interface.universe_creator.addEventListener("submit",t=>{t.preventDefault();let i=new FormData(n.interface.universe_creator).get("universe");i&&i.length>2&&i.length<20&&(wc(n,i),n.settings.selected_universe=i,n.interface.buffer_search.value="",Qm(),n.view.focus())}),Ra(n,n.universes[n.selected_universe.toString()].init),["introduction","interface","interaction","code","time","sound","samples","synths","chaining","patterns","ziffers","midi","functions","lfos","probabilities","variables","shortcuts","about","bonus"].forEach(t=>{let r="docs_"+t;document.getElementById(r).addEventListener("click",async()=>{r!=="docs_samples"?(n.currentDocumentationPane=t,Xm(n)):(console.log("Loading samples!"),await gR().then(()=>{n.docs=GI(n),n.currentDocumentationPane=t,Xm(n)}))})})},zG=(n,e,t=!1)=>{e.addEventListener("beforeunload",()=>(event.preventDefault(),n.currentFile().candidate=n.view.state.doc.toString(),n.currentFile().committed=n.view.state.doc.toString(),n.settings.saveApplicationToLocalStorage(n.universes,n.settings),n.clock.stop(),null)),t&&(localStorage.openpages=Date.now(),e.addEventListener("storage",function(r){r.key=="openpages"&&(localStorage.page_available=Date.now()),r.key=="page_available"&&(document.getElementById("all").classList.add("invisible"),alert("Topos is already opened in another tab. Close this tab now to prevent data loss."))},!1))};class HG{constructor(){E(this,"settings",new IL);E(this,"universes",Xo);E(this,"selected_universe","Welcome");E(this,"fill",!1);E(this,"local_index",1);E(this,"editor_mode","global");E(this,"fontSize");E(this,"withLineNumbers");E(this,"vimModeCompartment");E(this,"hoveringCompartment");E(this,"chosenLanguage");E(this,"dynamicPlugins");E(this,"currentDocumentationPane","introduction");E(this,"exampleCounter",0);E(this,"exampleIsPlaying",!1);E(this,"editorExtensions",[]);E(this,"userPlugins",[]);E(this,"state");E(this,"view");E(this,"selectedExample","");E(this,"docs",{});E(this,"_mouseX",0);E(this,"_mouseY",0);E(this,"show_error",!1);E(this,"buttonElements",{});E(this,"interface",{});E(this,"api");E(this,"audioContext");E(this,"clock");E(this,"dough_nudge",20);E(this,"manualPlay",!1);E(this,"isPlaying",!1);E(this,"hydra_backend");E(this,"hydra");E(this,"updateKnownUniversesView",()=>{let e=document.getElementById("ui-known-universe-item-template");if(!e){console.warn("Missing template #ui-known-universe-item-template");return}let t=document.getElementById("existing-universes");if(!t){console.warn("Missing element #existing-universes");return}let r=document.createElement("ul");r.className="lg:h-80 lg:w-80 lg:pb-2 lg:pt-2 overflow-y-scroll text-white lg:mb-4 border rounded-lg bg-neutral-800",r.append(...Object.keys(this.universes).map(i=>{var o,l;let a=e.content.cloneNode(!0),s=window;return a.querySelector(".universe-name").textContent=i,(o=a.querySelector(".load-universe"))==null||o.addEventListener("click",()=>s._loadUniverseFromInterface(i)),(l=a.querySelector(".delete-universe"))==null||l.addEventListener("click",()=>s._deleteUniverseFromInterface(i)),a})),t.innerHTML="",t.append(r)});this.initializeElements(),this.initializeButtonGroups(),this.initializeHydra(),this.universes={...this.settings.universes,...Xo},RL(this),this.audioContext=new AudioContext({latencyHint:"playback"}),this.clock=new i$(this,this.audioContext),this.api=new QG(this),qG(this.api),GG(this.api),Object.entries(this.api).forEach(([t,r])=>{globalThis[t]=r}),(async()=>{await gR()})(),this.docs=GI(this),NY(this),wY(this),VG(this),t$(this),Ra(this,this.universes[this.selected_universe.toString()].init),this.changeModeFromInterface("global"),wL(this)}getBuffer(e){const t=this.universes[this.selected_universe.toString()];return e==="locals"?t[e][this.local_index]:t[e]}get note_buffer(){return this.getBuffer("notes")}get example_buffer(){return this.getBuffer("example")}get global_buffer(){return this.getBuffer("global")}get init_buffer(){return this.getBuffer("init")}get local_buffer(){return this.getBuffer("locals")}changeToLocalBuffer(e){const t=document.querySelectorAll('[id^="tab-"]'),r=t[e];r.classList.add("bg-orange-300");for(let a=0;a{t.forEach(a=>{let s=a.children[0];s.classList.contains("text-orange-300")&&(s.classList.remove("text-orange-300"),a.classList.remove("text-orange-300"))}),i.children[0].classList.remove("text-white"),i.children[0].classList.add("text-orange-300"),i.classList.add("text-orange-300"),i.classList.add("fill-orange-300")};switch(e){case"local":this.interface.local_script_tabs.classList.contains("hidden")&&this.interface.local_script_tabs.classList.remove("hidden"),this.editor_mode="local",this.local_index=0,document.getElementById("editor").style.height="calc(100% - 100px)",this.changeToLocalBuffer(this.local_index),r(this.interface.local_button);break;case"global":this.interface.local_script_tabs.classList.contains("hidden")||this.interface.local_script_tabs.classList.add("hidden"),this.editor_mode="global",document.getElementById("editor").style.height="100%",r(this.interface.global_button);break;case"init":this.interface.local_script_tabs.classList.contains("hidden")||this.interface.local_script_tabs.classList.add("hidden"),this.editor_mode="init",r(this.interface.init_button);break;case"notes":this.interface.local_script_tabs.classList.contains("hidden")||this.interface.local_script_tabs.classList.add("hidden"),this.editor_mode="notes",r(this.interface.note_button);break}this.view.dispatch({effects:this.chosenLanguage.reconfigure(this.editor_mode=="notes"?[qk()]:[Pg()])}),this.updateEditorView()}setButtonHighlighting(e,t){document.getElementById("play-label").textContent=e!=="pause"?"Pause":"Play",e!=="pause"?(document.getElementById("pause-icon").classList.remove("hidden"),document.getElementById("play-icon").classList.add("hidden")):(document.getElementById("pause-icon").classList.add("hidden"),document.getElementById("play-icon").classList.remove("hidden")),e==="stop"&&(this.isPlaying==!1,document.getElementById("play-label").textContent="Play",document.getElementById("pause-icon").classList.add("hidden"),document.getElementById("play-icon").classList.remove("hidden")),this.flashBackground("#404040",200);const r=['[id^="play-button-"]','[id^="clear-button-"]','[id^="stop-button-"]'];let i;switch(e){case"play":i=0;break;case"pause":i=1;break;case"clear":i=2;break;case"stop":i=3;break}document.querySelectorAll(r[i]).forEach(a=>{t&&a.children[0].classList.add("animate-pulse")}),document.querySelectorAll(r.filter((a,s)=>s!=i).join(",")).forEach(a=>{a.children[0].classList.remove("animate-pulse"),a.children[1].classList.remove("animate-pulse")})}unfocusPlayButtons(){document.querySelectorAll('[id^="play-button-"]').forEach(e=>{e.children[0].classList.remove("fill-orange-300"),e.children[0].classList.remove("animate-pulse")})}updateEditorView(){this.view.dispatch({changes:{from:0,to:this.view.state.doc.toString().length,insert:this.currentFile().candidate}})}currentFile(){switch(this.editor_mode){case"global":return this.global_buffer;case"local":return this.local_buffer;case"init":return this.init_buffer;case"notes":return this.note_buffer}}flashBackground(e,t){this.view.dom.style.backgroundColor=e;const r=this.view.dom.getElementsByClassName("cm-gutter");Array.from(r).forEach(i=>i.style.backgroundColor=e),setTimeout(()=>{this.view.dom.style.backgroundColor="",Array.from(r).forEach(i=>i.style.backgroundColor="")},t)}initializeElements(){for(const[e,t]of Object.entries(kL))this.interface[e]=document.getElementById(t)}initializeButtonGroups(){for(const[e,t]of Object.entries(LL))this.buttonElements[e]=t.map(r=>document.getElementById(r))}initializeHydra(){this.hydra_backend=new Hydra({canvas:this.interface.hydra_canvas,detectAudio:!1,enableStreamCapture:!1}),this.hydra=this.hydra_backend.synth}}let WG=new HG;zG(WG,window,!1); +`,"\r"," "],!1,!1),ir=st(",",!1),H=st("|",!1),fe=Zr([["a","z"]],!1,!1),Ie=Zr([["a","z"],"_"],!1,!1),we=Zr([["a","z"],"_",["0","9"]],!1,!1),Je=st("<",!1),ye=st(">",!1),Ht=st("@",!1),lt=st(":",!1),yt=Zr(["m","k","l","p","d","c","w","y","h","n","q","a","e","f","s","x","t","g","u","j","z","o"],!1,!1),Vr=st("/",!1),dt=st("(",!1),Kt=st(")",!1),Tt=st("[:",!1),Ue=st("]",!1),Ur=st("[",!1),Fn=st("{",!1),ct=st("}",!1),zr=st("+",!1),Rr=st("*",!1),Ii=st("%",!1),Nr=st("^",!1),Wt=st("&",!1),Cn=st(">>",!1),ta=st("<<",!1),oi=st("_",!1),ra=st("?",!1),cn=st("!",!1),li=st("r",!1),yn=Zr([["a","z"],["A","Z"],["0","9"]],!1,!1),jt=st("#",!1),ci=st("b",!1),ui=Zr([["a","z"],["A","Z"],["0","9"],"-","*","+"],!1,!1),q=Zr([["A","G"]],!1,!1),ie=Zr(["b","s"],!1,!1),de=st("iii",!1),_e=st("ii",!1),Ae=st("iv",!1),Qe=st("i",!1),Me=st("vii",!1),Ct=st("vi",!1),wr=st("v",!1),Hr=function(T){return T.filter(w=>w)},xa=function(){return parseFloat(Yr())},na=function(){return parseInt(Yr())},xs=function(){return parseInt(Yr())},Wr=function(){},ks=function(T){return Ut(S$,{sound:T})},ka=function(){return Yr()},La=function(T){return Ut(Io,{items:T})},Ls=function(T){return T},Ma=function(T,w){return Ut(O$,{item:T,sound:w})},Ms=function(T,w){return Ut(b$,{item:T,soundIndex:w})},Pa=function(T){return T},Fr=function(){return o$[Yr()]},Ps=function(T,w){return T/w},Bs=function(T){return T.filter(w=>w)},Ba=function(T){return Ut(Io,{items:T})},Ua=function(T,w){return w?Ut(lT,{item:T,times:w}):Ut(cT,{items:T})},Us=function(T){return T},Fa=function(T,w,P){return Ut(y$,{left:T,operation:w,right:P})},Fs=function(T,w){return Ut(C$,{items:T,times:w})},Ya=function(T){return Ut(eR,{items:T})},Ys=function(T){return T.map(w=>typeof w=="number"?w:void 0)},$s=function(){return Math.ceil(jI(Yr()))},un=function(T){var w=T.filter(P=>P).map(P=>Ut(ri,{pitch:P[0]},P.toString()));return Ut(cT,{items:w})},Ot=function(T){return T},Gs=function(T){return T},Ri=function(){},Qs=function(T){return Ut(Io,{items:T})},di=function(T){return Ut(v$,{octave:T})},qs=function(){return Yr().split("").reduce((T,w)=>T+(w==="^"?1:-1),0)},Ni=function(){return Ut($c,{seededRandom:a.seededRandom})},$a=function(T,w){return Ut($c,{min:T,max:w,seededRandom:a.seededRandom})},Ga=function(T,w){return Ut(lT,{item:T,times:w})},Vs=function(T){return Ut(T$,{duration:T})},wi=function(T){return T},Qa=function(T){return Ut(Km,{duration:T})},Di=function(T,w,P,X){const oe=T?a.nodeOptions.octave+T:a.nodeOptions.octave;return Ut(ri,{duration:w,pitch:X,pitchOctave:oe,add:P})},xi=function(T){return T.reduce((w,P)=>w+(P==="#"?1:-1),0)},qa=function(T,w,P){return Ut(Na,{pitches:[T].concat(w),inversion:P})},ia=function(){return Yr()},pi=function(T){return T},mr=function(){return Yr()},Va=function(T,w,P,X,oe){const ve=a.nodeOptions.scaleName?a.nodeOptions.scaleName:"MAJOR",ft=a.nodeOptions.key?a.nodeOptions.key:"C",fn=L$(X,P,ve,T,w),Ks=w||a.nodeOptions.duration,IR=T?a.nodeOptions.octave+T:a.nodeOptions.octave;return Ut(Na,{duration:Ks,chordOctave:IR,pitches:fn,chordName:X,inversion:oe,scaleName:ve,key:ft})},Xr=function(T,w,P){const X=a.nodeOptions.scaleName?a.nodeOptions.scaleName:"MAJOR",oe=a.nodeOptions.key?a.nodeOptions.key:"C";return Ut(E$,{roman:T,chordName:w,inversion:P,scaleName:X,key:oe})},aa=function(T){const w=a.nodeOptions.scaleName?a.nodeOptions.scaleName:"MAJOR",P=a.nodeOptions.key?a.nodeOptions.key:"C",X=Q$(T,P,w);return Ut(ri,{pitch:X.pc,add:X.add,scaleName:w,key:P})},A=0,He=0,za=[{line:1,column:1}],dn=0,zs=[],Oe=0,ge={},sa;if("startRule"in a){if(!(a.startRule in l))throw new Error(`Can't start parsing from rule "`+a.startRule+'".');c=l[a.startRule]}function Yr(){return i.substring(He,A)}function dl(){return d(He,A)}function st(T,w){return{type:"literal",text:T,ignoreCase:w}}function Zr(T,w,P){return{type:"class",parts:T,inverted:w,ignoreCase:P}}function pl(){return{type:"end"}}function Hs(T){return{type:"other",description:T}}function fl(T){var w=za[T],P;if(w)return w;for(P=T-1;!za[P];)P--;for(w=za[P],w={line:w.line,column:w.column};Pdn&&(dn=A,zs=[]),zs.push(T))}function g(T,w,P){return new e(e.buildMessage(T,w),T,w,P)}function O(){var T,w,P=A*56+0,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=Xt(),w!==s&&(He=T,w=Hr(w)),T=w,ge[P]={nextPos:A,result:T},T)}function C(){var T,w,P,X,oe,ve,ft,fn=A*56+1,Ks=ge[fn];if(Ks)return A=Ks.nextPos,Ks.result;for(T=A,w=A,i.charCodeAt(A)===45?(P=u,A++):(P=s,Oe===0&&f(nr)),P===s&&(P=null),X=[],Pe.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(Ze));oe!==s;)X.push(oe),Pe.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(Ze));if(i.charCodeAt(A)===46?(oe=p,A++):(oe=s,Oe===0&&f(ke)),oe!==s){if(ve=[],Pe.test(i.charAt(A))?(ft=i.charAt(A),A++):(ft=s,Oe===0&&f(Ze)),ft!==s)for(;ft!==s;)ve.push(ft),Pe.test(i.charAt(A))?(ft=i.charAt(A),A++):(ft=s,Oe===0&&f(Ze));else ve=s;ve!==s?(P=[P,X,oe,ve],w=P):(A=w,w=s)}else A=w,w=s;if(w===s)if(w=A,i.charCodeAt(A)===46?(P=p,A++):(P=s,Oe===0&&f(ke)),P!==s){if(X=[],Pe.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(Ze)),oe!==s)for(;oe!==s;)X.push(oe),Pe.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(Ze));else X=s;X!==s?(P=[P,X],w=P):(A=w,w=s)}else A=w,w=s;return w!==s&&(He=T,w=xa()),T=w,ge[fn]={nextPos:A,result:T},T}function y(){var T,w,P=A*56+2,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,i.charCodeAt(A)===45?A++:Oe===0&&f(nr),Pe.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(Ze)),w!==s?(He=T,T=na()):(A=T,T=s),ge[P]={nextPos:A,result:T},T)}function D(){var T,w,P,X=A*56+3,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,i.charCodeAt(A)===45?A++:Oe===0&&f(nr),w=[],Pe.test(i.charAt(A))?(P=i.charAt(A),A++):(P=s,Oe===0&&f(Ze)),P!==s)for(;P!==s;)w.push(P),Pe.test(i.charAt(A))?(P=i.charAt(A),A++):(P=s,Oe===0&&f(Ze));else w=s;return w!==s?(He=T,T=xs()):(A=T,T=s),ge[X]={nextPos:A,result:T},T}function F(){var T,w,P=A*56+4,X=ge[P];return X?(A=X.nextPos,X.result):(Oe++,T=A,tt.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(Zt)),w!==s&&(He=T,w=Wr()),T=w,Oe--,T===s&&(w=s,Oe===0&&f(er)),ge[P]={nextPos:A,result:T},T)}function U(){var T,w,P=A*56+8,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=W(),w!==s&&(He=T,w=ks(w)),T=w,ge[P]={nextPos:A,result:T},T)}function W(){var T,w,P,X,oe,ve=A*56+10,ft=ge[ve];if(ft)return A=ft.nextPos,ft.result;if(T=A,nt.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(fe)),w!==s){if(P=[],ht.test(i.charAt(A))?(X=i.charAt(A),A++):(X=s,Oe===0&&f(Ie)),X!==s)for(;X!==s;)P.push(X),ht.test(i.charAt(A))?(X=i.charAt(A),A++):(X=s,Oe===0&&f(Ie));else P=s;if(P!==s){for(X=[],vt.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(we));oe!==s;)X.push(oe),vt.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(we));He=T,T=ka()}else A=T,T=s}else A=T,T=s;return ge[ve]={nextPos:A,result:T},T}function z(){var T,w=A*56+11,P=ge[w];return P?(A=P.nextPos,P.result):(T=pe(),T===s&&(T=he()),ge[w]={nextPos:A,result:T},T)}function pe(){var T,w,P,X,oe=A*56+12,ve=ge[oe];if(ve)return A=ve.nextPos,ve.result;if(T=A,i.charCodeAt(A)===60?(w=v,A++):(w=s,Oe===0&&f(Je)),w!==s){if(P=[],X=z(),X!==s)for(;X!==s;)P.push(X),X=z();else P=s;P!==s?(i.charCodeAt(A)===62?(X=I,A++):(X=s,Oe===0&&f(ye)),X!==s?(He=T,T=La(P)):(A=T,T=s)):(A=T,T=s)}else A=T,T=s;return ge[oe]={nextPos:A,result:T},T}function he(){var T,w=A*56+13,P=ge[w];return P?(A=P.nextPos,P.result):(T=W(),T===s&&(T=pe(),T===s&&(T=F())),ge[w]={nextPos:A,result:T},T)}function se(){var T,w,P,X=A*56+14,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,i.charCodeAt(A)===64?(w=R,A++):(w=s,Oe===0&&f(Ht)),w!==s?(P=z(),P!==s?(He=T,T=Ls(P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function ae(){var T,w=A*56+15,P=ge[w];return P?(A=P.nextPos,P.result):(T=ar(),T===s&&(T=it(),T===s&&(T=qt(),T===s&&(T=du(),T===s&&(T=Qt())))),ge[w]={nextPos:A,result:T},T)}function Ce(){var T,w,P,X=A*56+16,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,w=ae(),w===s&&(w=Zs()),w!==s?(P=se(),P!==s?(He=T,T=Ma(w,P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function Se(){var T,w,P,X=A*56+17,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,w=Ce(),w===s&&(w=ae(),w===s&&(w=Zs())),w!==s?(P=Ve(),P!==s?(He=T,T=Ms(w,P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function Ve(){var T,w,P,X=A*56+18,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,i.charCodeAt(A)===58?(w=x,A++):(w=s,Oe===0&&f(lt)),w!==s?(P=wt(),P!==s?(He=T,T=Pa(P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function je(){var T,w,P=A*56+19,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,mt.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(yt)),w!==s&&(He=T,w=Fr()),T=w,ge[P]={nextPos:A,result:T},T)}function Fe(){var T,w=A*56+20,P=ge[w];return P?(A=P.nextPos,P.result):(T=It(),T===s&&(T=C(),T===s&&(T=je())),ge[w]={nextPos:A,result:T},T)}function It(){var T,w,P,X,oe=A*56+21,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,w=D(),w!==s?(i.charCodeAt(A)===47?(P=$,A++):(P=s,Oe===0&&f(Vr)),P!==s?(X=D(),X!==s?(He=T,T=Ps(w,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function Xt(){var T,w,P,X=A*56+22,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],P=R_(),P===s&&(P=Se(),P===s&&(P=Ce(),P===s&&(P=ar(),P===s&&(P=qt(),P===s&&(P=it(),P===s&&(P=Qt(),P===s&&(P=Zs(),P===s&&(P=du())))))))),P!==s)for(;P!==s;)w.push(P),P=R_(),P===s&&(P=Se(),P===s&&(P=Ce(),P===s&&(P=ar(),P===s&&(P=qt(),P===s&&(P=it(),P===s&&(P=Qt(),P===s&&(P=Zs(),P===s&&(P=du()))))))));else w=s;return w!==s&&(He=T,w=Bs(w)),T=w,ge[X]={nextPos:A,result:T},T}function wt(){var T,w=A*56+23,P=ge[w];return P?(A=P.nextPos,P.result):(T=F(),T===s&&(T=D(),T===s&&(T=I_(),T===s&&(T=fu(),T===s&&(T=tr(),T===s&&(T=y_()))))),ge[w]={nextPos:A,result:T},T)}function tr(){var T,w,P,X,oe=A*56+24,ve=ge[oe];if(ve)return A=ve.nextPos,ve.result;if(T=A,i.charCodeAt(A)===60?(w=v,A++):(w=s,Oe===0&&f(Je)),w!==s){if(P=[],X=wt(),X!==s)for(;X!==s;)P.push(X),X=wt();else P=s;P!==s?(i.charCodeAt(A)===62?(X=I,A++):(X=s,Oe===0&&f(ye)),X!==s?(He=T,T=Ba(P)):(A=T,T=s)):(A=T,T=s)}else A=T,T=s;return ge[oe]={nextPos:A,result:T},T}function it(){var T,w,P,X,oe,ve=A*56+25,ft=ge[ve];return ft?(A=ft.nextPos,ft.result):(T=A,i.charCodeAt(A)===40?(w=Z,A++):(w=s,Oe===0&&f(dt)),w!==s?(i.charCodeAt(A)===58?A++:Oe===0&&f(lt),P=Xt(),P!==s?(X=pt(),X===s&&(X=null),i.charCodeAt(A)===41?(oe=h,A++):(oe=s,Oe===0&&f(Kt)),oe!==s?(He=T,T=Ua(P,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[ve]={nextPos:A,result:T},T)}function pt(){var T,w,P,X=A*56+26,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,i.charCodeAt(A)===58?(w=x,A++):(w=s,Oe===0&&f(lt)),w!==s?(P=D(),P!==s?(He=T,T=Us(P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function ar(){var T,w,P,X,oe=A*56+27,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,w=it(),w!==s?(P=A_(),P!==s?(X=it(),X!==s?(He=T,T=Fa(w,P,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function Qt(){var T,w,P,X,oe,ve=A*56+28,ft=ge[ve];return ft?(A=ft.nextPos,ft.result):(T=A,i.substr(A,2)===b?(w=b,A+=2):(w=s,Oe===0&&f(Tt)),w!==s?(P=Xt(),P!==s?(X=pt(),X===s&&(X=null),i.charCodeAt(A)===93?(oe=S,A++):(oe=s,Oe===0&&f(Ue)),oe!==s?(He=T,T=Fs(P,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[ve]={nextPos:A,result:T},T)}function qt(){var T,w,P,X,oe=A*56+29,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.charCodeAt(A)===91?(w=N,A++):(w=s,Oe===0&&f(Ur)),w!==s?(P=Xt(),P!==s?(i.charCodeAt(A)===93?(X=S,A++):(X=s,Oe===0&&f(Ue)),X!==s?(He=T,T=Ya(P)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function pn(){var T,w=A*56+30,P=ge[w];return P?(A=P.nextPos,P.result):(T=D(),T===s&&(T=y()),ge[w]={nextPos:A,result:T},T)}function Ws(){var T,w,P,X=A*56+31,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],P=hl(),P===s&&(P=pn()),P!==s)for(;P!==s;)w.push(P),P=hl(),P===s&&(P=pn());else w=s;return w!==s&&(He=T,w=Ys(w)),T=w,ge[X]={nextPos:A,result:T},T}function hl(){var T,w,P,X,oe=A*56+32,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.charCodeAt(A)===40?A++:Oe===0&&f(dt),w=pn(),w!==s?(P=A_(),P!==s?(X=Ws(),X!==s?(i.charCodeAt(A)===41?A++:Oe===0&&f(Kt),He=T,T=$s()):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function Xs(){var T,w,P,X,oe=A*56+33,ve=ge[oe];if(ve)return A=ve.nextPos,ve.result;if(T=A,i.charCodeAt(A)===123?(w=k,A++):(w=s,Oe===0&&f(Fn)),w!==s){if(P=[],X=Ws(),X===s&&(X=F()),X!==s)for(;X!==s;)P.push(X),X=Ws(),X===s&&(X=F());else P=s;P!==s?(i.charCodeAt(A)===125?(X=L,A++):(X=s,Oe===0&&f(ct)),X!==s?(He=T,T=un(P)):(A=T,T=s)):(A=T,T=s)}else A=T,T=s;return ge[oe]={nextPos:A,result:T},T}function y_(){var T,w,P,X,oe=A*56+34,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.charCodeAt(A)===123?(w=k,A++):(w=s,Oe===0&&f(Fn)),w!==s?(P=D(),P===s&&(P=fu()),P!==s?(i.charCodeAt(A)===125?(X=L,A++):(X=s,Oe===0&&f(ct)),X!==s?(He=T,T=Ot(P)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function A_(){var T,w=A*56+35,P=ge[w];return P?(A=P.nextPos,P.result):(i.charCodeAt(A)===43?(T=M,A++):(T=s,Oe===0&&f(zr)),T===s&&(i.charCodeAt(A)===45?(T=u,A++):(T=s,Oe===0&&f(nr)),T===s&&(i.charCodeAt(A)===42?(T=G,A++):(T=s,Oe===0&&f(Rr)),T===s&&(i.charCodeAt(A)===47?(T=$,A++):(T=s,Oe===0&&f(Vr)),T===s&&(i.charCodeAt(A)===37?(T=te,A++):(T=s,Oe===0&&f(Ii)),T===s&&(i.charCodeAt(A)===94?(T=ne,A++):(T=s,Oe===0&&f(Nr)),T===s&&(i.charCodeAt(A)===124?(T=_,A++):(T=s,Oe===0&&f(H)),T===s&&(i.charCodeAt(A)===38?(T=re,A++):(T=s,Oe===0&&f(Wt)),T===s&&(i.substr(A,2)===ee?(T=ee,A+=2):(T=s,Oe===0&&f(Cn)),T===s&&(i.substr(A,2)===B?(T=B,A+=2):(T=s,Oe===0&&f(ta))))))))))),ge[w]={nextPos:A,result:T},T)}function Zs(){var T,w,P=A*56+36,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=ER(),w===s&&(w=yR(),w===s&&(w=CR(),w===s&&(w=AR(),w===s&&(w=U(),w===s&&(w=TR(),w===s&&(w=ml(),w===s&&(w=SR(),w===s&&(w=F(),w===s&&(w=OR(),w===s&&(w=it(),w===s&&(w=Xs(),w===s&&(w=_R())))))))))))),w!==s&&(He=T,w=Gs(w)),T=w,ge[P]={nextPos:A,result:T},T)}function _R(){var T,w,P=A*56+37,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,i.charCodeAt(A)===124?(w=_,A++):(w=s,Oe===0&&f(H)),w!==s&&(He=T,w=Ri()),T=w,ge[P]={nextPos:A,result:T},T)}function du(){var T,w,P,X,oe=A*56+38,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.charCodeAt(A)===60?(w=v,A++):(w=s,Oe===0&&f(Je)),w!==s?(P=Xt(),P!==s?(i.charCodeAt(A)===62?(X=I,A++):(X=s,Oe===0&&f(ye)),X!==s?(He=T,T=Qs(P)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function SR(){var T,w,P=A*56+39,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=pu(),w!==s&&(He=T,w=di(w)),T=w,ge[P]={nextPos:A,result:T},T)}function pu(){var T,w,P,X=A*56+40,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],i.charCodeAt(A)===94?(P=ne,A++):(P=s,Oe===0&&f(Nr)),P===s&&(i.charCodeAt(A)===95?(P=Q,A++):(P=s,Oe===0&&f(oi))),P!==s)for(;P!==s;)w.push(P),i.charCodeAt(A)===94?(P=ne,A++):(P=s,Oe===0&&f(Nr)),P===s&&(i.charCodeAt(A)===95?(P=Q,A++):(P=s,Oe===0&&f(oi)));else w=s;return w!==s&&(He=T,w=qs()),T=w,ge[X]={nextPos:A,result:T},T}function I_(){var T,w,P=A*56+41,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,i.charCodeAt(A)===63?(w=j,A++):(w=s,Oe===0&&f(ra)),w!==s&&(He=T,w=Ni()),T=w,ge[P]={nextPos:A,result:T},T)}function fu(){var T,w,P,X,oe,ve,ft=A*56+42,fn=ge[ft];return fn?(A=fn.nextPos,fn.result):(T=A,i.charCodeAt(A)===40?(w=Z,A++):(w=s,Oe===0&&f(dt)),w!==s?(P=D(),P!==s?(i.charCodeAt(A)===44?(X=m,A++):(X=s,Oe===0&&f(ir)),X!==s?(oe=D(),oe!==s?(i.charCodeAt(A)===41?(ve=h,A++):(ve=s,Oe===0&&f(Kt)),ve!==s?(He=T,T=$a(P,oe)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[ft]={nextPos:A,result:T},T)}function R_(){var T,w,P,X,oe=A*56+43,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,w=Se(),w===s&&(w=Ce(),w===s&&(w=ae(),w===s&&(w=Zs()))),w!==s?(i.charCodeAt(A)===33?(P=K,A++):(P=s,Oe===0&&f(cn)),P!==s?(X=D(),X!==s?(He=T,T=Ga(w,X)):(A=T,T=s)):(A=T,T=s)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function OR(){var T,w,P=A*56+44,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=Fe(),w!==s&&(He=T,w=Vs(w)),T=w,ge[P]={nextPos:A,result:T},T)}function bR(){var T,w,P,X=A*56+45,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,w=Fe(),w!==s?(i.charCodeAt(A)===94?(P=ne,A++):(P=s,Oe===0&&f(Nr)),P!==s?(He=T,T=wi(w)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function ER(){var T,w,P,X,oe,ve=A*56+46,ft=ge[ve];return ft?(A=ft.nextPos,ft.result):(T=A,w=bR(),w===s&&(w=null),i.charCodeAt(A)===114?(P=ue,A++):(P=s,Oe===0&&f(li)),P!==s?(X=A,Oe++,At.test(i.charAt(A))?(oe=i.charAt(A),A++):(oe=s,Oe===0&&f(yn)),Oe--,oe===s?X=void 0:(A=X,X=s),X!==s?(He=T,T=Qa(w)):(A=T,T=s)):(A=T,T=s),ge[ve]={nextPos:A,result:T},T)}function ml(){var T,w,P,X,oe,ve=A*56+47,ft=ge[ve];return ft?(A=ft.nextPos,ft.result):(T=A,w=pu(),w===s&&(w=null),P=Fe(),P===s&&(P=null),X=vR(),X===s&&(X=null),oe=y(),oe===s&&(oe=I_(),oe===s&&(oe=fu(),oe===s&&(oe=y_()))),oe!==s?(He=T,T=Di(w,P,X,oe)):(A=T,T=s),ge[ve]={nextPos:A,result:T},T)}function vR(){var T,w,P,X=A*56+48,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],i.charCodeAt(A)===35?(P=le,A++):(P=s,Oe===0&&f(jt)),P===s&&(i.charCodeAt(A)===98?(P=be,A++):(P=s,Oe===0&&f(ci))),P!==s)for(;P!==s;)w.push(P),i.charCodeAt(A)===35?(P=le,A++):(P=s,Oe===0&&f(jt)),P===s&&(i.charCodeAt(A)===98?(P=be,A++):(P=s,Oe===0&&f(ci)));else w=s;return w!==s&&(He=T,w=xi(w)),T=w,ge[X]={nextPos:A,result:T},T}function TR(){var T,w,P,X,oe=A*56+49,ve=ge[oe];if(ve)return A=ve.nextPos,ve.result;if(T=A,w=ml(),w!==s){if(P=[],X=ml(),X!==s)for(;X!==s;)P.push(X),X=ml();else P=s;P!==s?(X=hu(),X===s&&(X=null),He=T,T=qa(w,P,X)):(A=T,T=s)}else A=T,T=s;return ge[oe]={nextPos:A,result:T},T}function N_(){var T,w,P,X=A*56+50,oe=ge[X];if(oe)return A=oe.nextPos,oe.result;if(T=A,w=[],Nt.test(i.charAt(A))?(P=i.charAt(A),A++):(P=s,Oe===0&&f(ui)),P!==s)for(;P!==s;)w.push(P),Nt.test(i.charAt(A))?(P=i.charAt(A),A++):(P=s,Oe===0&&f(ui));else w=s;return w!==s&&(He=T,w=ia()),T=w,ge[X]={nextPos:A,result:T},T}function hu(){var T,w,P,X=A*56+51,oe=ge[X];return oe?(A=oe.nextPos,oe.result):(T=A,i.charCodeAt(A)===37?(w=te,A++):(w=s,Oe===0&&f(Ii)),w!==s?(P=D(),P!==s?(He=T,T=pi(P)):(A=T,T=s)):(A=T,T=s),ge[X]={nextPos:A,result:T},T)}function w_(){var T,w,P=A*56+52,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,Ir.test(i.charAt(A))?(w=i.charAt(A),A++):(w=s,Oe===0&&f(q)),w!==s?(qe.test(i.charAt(A))?(i.charAt(A),A++):Oe===0&&f(ie),He=T,T=mr()):(A=T,T=s),ge[P]={nextPos:A,result:T},T)}function CR(){var T,w,P,X,oe,ve,ft=A*56+53,fn=ge[ft];return fn?(A=fn.nextPos,fn.result):(T=A,w=pu(),w===s&&(w=null),P=Fe(),P===s&&(P=null),X=w_(),X!==s?(i.charCodeAt(A)===94?A++:Oe===0&&f(Nr),oe=N_(),oe!==s?(ve=hu(),ve===s&&(ve=null),He=T,T=Va(w,P,X,oe,ve)):(A=T,T=s)):(A=T,T=s),ge[ft]={nextPos:A,result:T},T)}function yR(){var T,w,P,X,oe=A*56+54,ve=ge[oe];return ve?(A=ve.nextPos,ve.result):(T=A,i.substr(A,3)===De?(w=De,A+=3):(w=s,Oe===0&&f(de)),w===s&&(i.substr(A,2)===xe?(w=xe,A+=2):(w=s,Oe===0&&f(_e)),w===s&&(i.substr(A,2)===Ee?(w=Ee,A+=2):(w=s,Oe===0&&f(Ae)),w===s&&(i.charCodeAt(A)===105?(w=Ne,A++):(w=s,Oe===0&&f(Qe)),w===s&&(i.substr(A,3)===ce?(w=ce,A+=3):(w=s,Oe===0&&f(Me)),w===s&&(i.substr(A,2)===Le?(w=Le,A+=2):(w=s,Oe===0&&f(Ct)),w===s&&(i.charCodeAt(A)===118?(w=Xe,A++):(w=s,Oe===0&&f(wr)))))))),w!==s?(i.charCodeAt(A)===94?A++:Oe===0&&f(Nr),P=N_(),P===s&&(P=null),X=hu(),X===s&&(X=null),He=T,T=Xr(w,P,X)):(A=T,T=s),ge[oe]={nextPos:A,result:T},T)}function AR(){var T,w,P=A*56+55,X=ge[P];return X?(A=X.nextPos,X.result):(T=A,w=w_(),w!==s&&(He=T,w=aa(w)),T=w,ge[P]={nextPos:A,result:T},T)}var D_=a.nodeOptions||{};function Ut(T,w,P=void 0){w.text=P||Yr(),w.location=dl();for(var X in D_)(w[X]===void 0||w[X]===null)&&(w[X]=D_[X]);return new T(w)}if(sa=c(),sa!==s&&A===i.length)return sa;throw sa!==s&&Ae.collect("pitch"))}notes(){return this.evaluated.map(e=>e.collect("note"))}sounds(){return this.evaluated.map(e=>e.collect("sound"))}indices(){return this.evaluated.map(e=>e.collect("soundIndex"))}freqs(){return this.evaluated.map(e=>e.collect("freq"))}durations(){return this.evaluated.map(e=>e.collect("duration"))}octaves(){return this.evaluated.map(e=>e.collect("octave"))}retrograde(){return this.evaluated=this.evaluated.reverse(),this}scale(e){return this.applyOptions({scale:e}),this}key(e){return this.applyOptions({key:e}),this}octave(e){return this.applyOptions({octave:e}),this}invert(e){return this.applyOptions({inversion:e}),this}isInOptions(e,t){return this.options.nodeOptions&&this.options.nodeOptions[e]===t}atLast(){return this.index+1>=this.evaluated.length*this.redo}clone(){return ti(this)}notStarted(){return this.index<0}peek(){return this.evaluated[this.index-1||0]}hasStarted(){return this.index>=0}next(){this.index<0&&(this.index=0);const e=this.evaluated[this.index%this.evaluated.length];return this.index++,this.counter++,this.redo>0&&this.index>=this.evaluated.length*this.redo&&(this.index=0,this.evaluated=this.evaluate(this.values)),e}applyOptions(e={}){this.evaluated=this.evaluate(this.evaluated,e),this.applyTransformations()}applyTransformations(){var e;(e=this.globalOptions)!=null&&e.retrograde&&(this.evaluated=this.evaluated.reverse())}update(){return this.evaluated=this.evaluate(this.values),this.applyTransformations(),this}evaluate(e,t={}){let r=e.map(i=>i.evaluate(t)).flat(1/0).filter(i=>i!==void 0);return t.subdivisions&&(r=oR(r)),r}totalDuration(){return this.evaluated.reduce((t,r)=>t+r.collect("duration"),0)}lead(){let e=this.evaluated.findIndex(t=>t instanceof Na);if(e>=0){for(let t=e+1;t<=this.evaluated.length;t++)if(this.evaluated[t]instanceof Na){const r=this.evaluated[e],i=this.evaluated[t],a=V$(r.notes(),i.notes()),s=ti(i);s.voiceLeadFromNotes(a,this.options.nodeOptions),this.evaluated[t]=s,e=t}}return this}}const oR=(n,e=void 0)=>n.map(r=>{if(r instanceof eR){const i=r.evaluated.length,a=(e||r.duration)/i;return oR(r.evaluated,a)}else return r.duration=e||r.duration,r}).flat(1/0),W$=n=>{let e={};return _$.forEach(t=>{if(n[t]!==void 0){const r=n[t];e[t]=r,delete n[t]}}),e};class X${constructor(e,t){E(this,"api");E(this,"settings");E(this,"midiAccess",null);E(this,"midiOutputs",[]);E(this,"currentOutputIndex",0);E(this,"scheduledNotes",{});E(this,"midiInputs",[]);E(this,"currentInputIndex");E(this,"bufferLength",512);E(this,"noteInputBuffer",[]);E(this,"ccInputBuffer",[]);E(this,"activeNotes",[]);E(this,"stickyNotes",[]);E(this,"lastNote");E(this,"lastCC",{});E(this,"lastNoteInChannel",{});E(this,"lastCCInChannel",{});E(this,"midiClockInputIndex");E(this,"midiClockInput");E(this,"lastTimestamp",0);E(this,"midiClockDelta",0);E(this,"lastBPM");E(this,"roundedBPM",0);E(this,"clockBuffer",[]);E(this,"clockBufferLength",24);E(this,"clockTicks",0);E(this,"clockErrorCount",0);E(this,"skipOnError",0);this.api=e,this.settings=t,this.lastBPM=e.bpm(),this.roundedBPM=this.lastBPM,this.initializeMidiAccess()}async initializeMidiAccess(){try{this.midiAccess=await navigator.requestMIDIAccess(),this.midiOutputs=Array.from(this.midiAccess.outputs.values()),this.midiOutputs.length===0&&(console.warn("No MIDI outputs available."),this.currentOutputIndex=-1),this.midiInputs=Array.from(this.midiAccess.inputs.values()),this.midiInputs.length===0?console.warn("No MIDI inputs available."):this.updateInputSelects()}catch(e){console.error("Failed to initialize MIDI:",e)}}getCurrentMidiPort(){return this.midiOutputs.length>0&&this.currentOutputIndex>=0&&this.currentOutputIndex0&&this.currentOutputIndex>=0&&this.currentOutputIndex0){const e=document.getElementById("midi-clock-input"),t=document.getElementById("default-midi-input");e.innerHTML="",t.innerHTML="";const r=document.createElement("option");r.value="-1",r.text="Internal",e.appendChild(r);const i=document.createElement("option");if(i.value="-1",i.text="None",t.appendChild(i),this.midiInputs.forEach((a,s)=>{const o=document.createElement("option");o.value=s.toString(),o.text=a.name||s.toString(),e.appendChild(o),t.appendChild(o.cloneNode(!0))}),this.settings.midi_clock_input){const a=this.getMidiInputIndex(this.settings.midi_clock_input);e.value=a.toString(),a>0&&(this.midiClockInput=this.midiInputs[a],this.registerMidiInputListener(a))}else e.value="-1";if(this.settings.default_midi_input){const a=this.getMidiInputIndex(this.settings.default_midi_input);t.value=a.toString(),a>0&&(this.currentInputIndex=a,this.registerMidiInputListener(a))}else t.value="-1";e.addEventListener("change",a=>{const s=a.target.value;if(s==="-1")this.midiClockInput&&this.midiClockInputIndex!=this.currentInputIndex&&(this.midiClockInput.onmidimessage=null),this.midiClockInput=void 0,this.settings.midi_clock_input=void 0;else{const o=parseInt(s);this.midiClockInputIndex=o,this.midiClockInput&&this.midiClockInputIndex!=this.currentInputIndex&&(this.midiClockInput.onmidimessage=null),this.midiClockInput=this.midiInputs[o],this.registerMidiInputListener(o),this.settings.midi_clock_input=this.midiClockInput.name||void 0}}),t.addEventListener("change",a=>{const s=a.target.value;s==="-1"?(this.currentInputIndex&&this.currentInputIndex!=this.midiClockInputIndex&&this.unregisterMidiInputListener(this.currentInputIndex),this.currentInputIndex=void 0,this.settings.default_midi_input=void 0):(this.currentInputIndex&&this.currentInputIndex!=this.midiClockInputIndex&&this.unregisterMidiInputListener(this.currentInputIndex),this.currentInputIndex=parseInt(s),this.registerMidiInputListener(this.currentInputIndex),this.settings.default_midi_input=this.midiInputs[this.currentInputIndex].name||void 0)})}}registerMidiInputListener(e){if(e!==void 0){const t=this.midiInputs[e];t&&!t.onmidimessage&&(t.onmidimessage=r=>{const i=r;if(t.name===this.settings.midi_clock_input&&(i.data[0]===248?this.skipOnError>0?this.skipOnError-=1:this.onMidiClock(r.timeStamp):i.data[0]===250?(console.log("MIDI start received"),this.api.stop(),this.api.play()):i.data[0]===252?(console.log("MIDI stop received"),this.api.pause()):i.data[0]===251?(console.log("MIDI continue received"),this.api.play()):i.data[0]===254&&console.log("MIDI active sensing received")),t.name===this.settings.default_midi_input){if(i.data[0]>=144&&i.data[0]<=159){const a=i.data[0]-144+1,s=i.data[1],o=i.data[2];this.lastNote={note:s,velocity:o,channel:a,timestamp:r.timeStamp},this.lastNoteInChannel[a]={note:s,velocity:o,channel:a,timestamp:r.timeStamp},this.settings.midi_channels_scripts&&this.api.script(a),this.pushToMidiInputBuffer({note:s,velocity:o,channel:a,timestamp:r.timeStamp}),this.activeNotes.push({note:s,velocity:o,channel:a,timestamp:r.timeStamp}),this.removeFromStickyNotes(s,a)||this.stickyNotes.push({note:s,velocity:o,channel:a,timestamp:r.timeStamp})}if(i.data[0]>=128&&i.data[0]<=143){const a=i.data[0]-128+1,s=i.data[1];this.removeFromActiveNotes(s,a)}if(i.data[0]>=176&&i.data[0]<=191){const a=i.data[0]-176+1,s=i.data[1],o=i.data[2];this.lastCC[s]=o,this.lastCCInChannel[a]?this.lastCCInChannel[a][s]=o:(this.lastCCInChannel[a]={},this.lastCCInChannel[a][s]=o),this.pushToMidiCCBuffer({control:s,value:o,channel:a,timestamp:r.timeStamp})}}})}}removeFromActiveNotes(e,t){const r=this.activeNotes.findIndex(i=>i.note===e&&i.channel===t);r>=0&&this.activeNotes.splice(r,1)}removeFromStickyNotes(e,t){const r=this.stickyNotes.findIndex(i=>i.note===e&&i.channel===t);return r>=0?(this.stickyNotes.splice(r,1),!0):!1}stickyNotesFromChannel(e){return this.stickyNotes.filter(t=>t.channel===e)}activeNotesFromChannel(e){return this.activeNotes.filter(t=>t.channel===e)}killActiveNotes(){this.activeNotes=[]}killActiveNotesFromChannel(e){this.activeNotes=this.activeNotes.filter(t=>t.channel!==e)}pushToMidiInputBuffer(e){this.noteInputBuffer.push(e),this.noteInputBuffer.length>this.bufferLength&&this.noteInputBuffer.shift()}pushToMidiCCBuffer(e){this.ccInputBuffer.push(e),this.ccInputBuffer.length>this.bufferLength&&this.ccInputBuffer.shift()}findNoteFromBufferInChannel(e){const t=this.noteInputBuffer.findIndex(r=>r.channel===e);if(t>=0){const r=this.noteInputBuffer[t];return this.noteInputBuffer.splice(t,1),r}else return}findCCFromBufferInChannel(e){const t=this.ccInputBuffer.findIndex(r=>r.channel===e);if(t>=0){const r=this.ccInputBuffer[t];return this.ccInputBuffer.splice(t,1),r}else return}unregisterMidiInputListener(e){if(e!==void 0){const t=this.midiInputs[e];t&&(t.onmidimessage=null)}}onMidiClock(e){if(this.clockTicks+=1,this.lastTimestamp>0)if(this.lastTimestamp===e)this.clockErrorCount+=1;else if(this.clockErrorCount>0)console.log("Timestamp error count: ",this.clockErrorCount),console.log("Current timestamp: ",e),console.log("Last timestamp: ",this.lastTimestamp),console.log("Last delta: ",this.midiClockDelta),console.log("Current delta: ",e-this.lastTimestamp),console.log("BPMs",this.clockBuffer),this.clockErrorCount=0,this.skipOnError=this.settings.midi_clock_ppqn/4,e=0;else{this.midiClockDelta=e-this.lastTimestamp,this.lastBPM=60*(1e3/this.midiClockDelta/this.settings.midi_clock_ppqn),this.clockBuffer.push(this.lastBPM),this.clockBuffer.length>this.clockBufferLength&&this.clockBuffer.shift();const t=this.estimatedBPM();t!==this.roundedBPM&&(console.log("Estimated BPM: ",t),this.api.bpm(t),this.roundedBPM=t)}this.lastTimestamp=e}estimatedBPM(){const e=this.clockBuffer.reduce((t,r)=>t+r);return Math.round(e/this.clockBuffer.length)}sendMidiClock(){if(!this.midiClockInput){const e=this.midiOutputs[this.currentOutputIndex];e&&e.send([248])}}switchMidiOutput(e){const t=this.getMidiOutputIndex(e);return t!==-1?(this.currentOutputIndex=t,!0):!1}getMidiOutputIndex(e){if(typeof e=="number")return e<0||e>=this.midiOutputs.length?(console.error(`Invalid MIDI output index. Index must be in the range 0-${this.midiOutputs.length-1}.`),this.currentOutputIndex):e;{const t=this.midiOutputs.findIndex(r=>r.name===e);return t!==-1?t:(console.error(`MIDI output "${e}" not found.`),this.currentOutputIndex)}}getMidiInputIndex(e){if(typeof e=="number")return e<0||e>=this.midiInputs.length?(console.error(`Invalid MIDI input index. Index must be in the range 0-${this.midiInputs.length-1}.`),-1):e;{const t=this.midiInputs.findIndex(r=>r.name===e);return t!==-1?t:(console.error(`MIDI input "${e}" not found.`),-1)}}listMidiOutputs(){let e="Available MIDI Outputs: ";return this.midiOutputs.forEach((t,r)=>{e+=`(${r+1}) ${t.name} `}),e}sendMidiNote(e,t,r,i,a=this.currentOutputIndex,s=void 0){typeof a=="string"&&(a=this.getMidiOutputIndex(a));const o=this.midiOutputs[a];if(e=Math.min(Math.max(e,0),127),o){const l=[144+t,e,r],c=[128+t,e,0];o.send(l),s&&this.sendPitchBend(s,t,a);const u=setTimeout(()=>{o.send(c),s&&this.sendPitchBend(8192,t,a),delete this.scheduledNotes[e]},(i-.02)*1e3);this.scheduledNotes[e]=u}else console.error("MIDI output not available.")}sendMidiOn(e,t,r,i=this.currentOutputIndex){typeof i=="string"&&(i=this.getMidiOutputIndex(i));const a=this.midiOutputs[i];if(e=Math.min(Math.max(e,0),127),a){const s=[144+t,e,r];a.send(s)}else console.error("MIDI output not available.")}sendMidiOff(e,t,r=this.currentOutputIndex){typeof r=="string"&&(r=this.getMidiOutputIndex(r));const i=this.midiOutputs[r];if(e=Math.min(Math.max(e,0),127),i){const a=[128+t,e,0];i.send(a)}else console.error("MIDI output not available.")}sendAllNotesOff(e,t=this.currentOutputIndex){typeof t=="string"&&(t=this.getMidiOutputIndex(t));const r=this.midiOutputs[t];if(r){const i=[176+e,123,0];r.send(i)}else console.error("MIDI output not available.")}sendAllSoundOff(e,t=this.currentOutputIndex){typeof t=="string"&&(t=this.getMidiOutputIndex(t));const r=this.midiOutputs[t];if(r){const i=[176+e,120,0];r.send(i)}else console.error("MIDI output not available.")}sendSysExMessage(e){const t=this.midiOutputs[this.currentOutputIndex];t?t.send(e):console.error("MIDI output not available.")}sendPitchBend(e,t,r=this.currentOutputIndex){(e<0||e>16383)&&console.error("Invalid pitch bend value. Value must be in the range 0-16383."),(t<0||t>15)&&console.error("Invalid MIDI channel. Channel must be in the range 0-15."),typeof r=="string"&&(r=this.getMidiOutputIndex(r));const i=this.midiOutputs[r];if(i){const a=e&127,s=e>>7&127;i.send([224|t,a,s])}else console.error("MIDI output not available.")}sendProgramChange(e,t){const r=this.midiOutputs[this.currentOutputIndex];r?r.send([192+t,e]):console.error("MIDI output not available.")}sendMidiControlChange(e,t,r){const i=this.midiOutputs[this.currentOutputIndex];i?i.send([176+r,e,t]):console.error("MIDI output not available.")}panic(){const e=this.midiOutputs[this.currentOutputIndex];if(e){for(const t in this.scheduledNotes){const r=this.scheduledNotes[t];clearTimeout(r),e.send([128,parseInt(t),0])}this.scheduledNotes={}}else console.error("MIDI output not available.")}}class Z${constructor(e,t,r){E(this,"min");E(this,"max");E(this,"wrap");E(this,"position");this.min=e,this.max=t,this.wrap=r,this.position=0}step(){const e=Math.floor(Math.random()*3)-1;this.position+=e,this.wrap?this.position>this.max?this.position=this.min:this.positionthis.max&&(this.position=this.max)}getPosition(){return this.position}toggleWrap(e){this.wrap=e}}class S_{constructor(e){E(this,"seedValue");E(this,"randomGen",Math.random);E(this,"app");E(this,"values",{});E(this,"evenbar",e=>this.app.clock.time_position.bar%2===0?this.modify(e):this);E(this,"even",e=>this.app.clock.time_position.beat%2===0?this.modify(e):this);E(this,"odd",e=>this.app.clock.time_position.beat%2!==0?this.modify(e):this);E(this,"odds",(e,t)=>this.randomGen()this);E(this,"almostNever",e=>this.odds(.025,e));E(this,"rarely",e=>this.odds(.1,e));E(this,"scarcely",e=>this.odds(.25,e));E(this,"sometimes",e=>this.odds(.5,e));E(this,"often",e=>this.odds(.75,e));E(this,"frequently",e=>this.odds(.9,e));E(this,"almostAlways",e=>this.odds(.985,e));E(this,"always",e=>this.modify(e));E(this,"modify",e=>e(this));E(this,"seed",e=>(this.seedValue=e.toString(),this.randomGen=this.app.api.localSeededRandom(this.seedValue),this));E(this,"clear",()=>(this.app.api.clearLocalSeed(this.seedValue),this));E(this,"apply",e=>this.modify(e));E(this,"length",e=>(this.values.length=e,this));this.app=e,this.app.api.currentSeed&&(this.randomGen=this.app.api.randomGen)}}class lR extends S_{constructor(t){super(t);E(this,"octave",t=>(this.values.octave=t,this.update(),this));E(this,"key",t=>(this.values.key=t,this.update(),this));E(this,"scale",t=>(h_(t)?(this.values.scaleName=t,this.values.parsedScale=vi(t)):this.values.parsedScale=m_(t),this.update(),this));E(this,"freq",t=>{this.values.freq=t;const r=A$(t);return r%1!==0?(this.values.note=Math.floor(r),this.values.bend=tR(r)[1]):this.values.note=r,this});E(this,"update",()=>{})}}let xr=[],K$=(n,e)=>{let t,r=[],i={lc:0,l:e||0,value:n,set(a){i.value=a,i.notify()},get(){return i.lc||i.listen(()=>{})(),i.value},notify(a){t=r;let s=!xr.length;for(let o=0;o{r===t&&(r=r.slice());let o=r.indexOf(a);~o&&(r.splice(o,2),i.lc--,i.lc||i.off())}},subscribe(a,s){let o=i.listen(a,s);return a(i.value),o},off(){}};return i},j$=(n={})=>{let e=K$(n);return e.setKey=function(t,r){typeof r>"u"?t in e.value&&(e.value={...e.value},delete e.value[t],e.notify(t)):e.value[t]!==r&&(e.value={...e.value,[t]:r},e.notify(t))},e};if(typeof DelayNode<"u"){class n extends DelayNode{constructor(t,r,i,a){super(t),r=Math.abs(r),this.delayTime.value=i;const s=t.createGain();s.gain.value=Math.min(Math.abs(a),.995),this.feedback=s.gain;const o=t.createGain();return o.gain.value=r,this.delayGain=o,this.connect(s),this.connect(o),s.connect(this),this.connect=l=>o.connect(l),this}start(t){this.delayGain.gain.setValueAtTime(this.delayGain.gain.value,t+this.delayTime.value)}}AudioContext.prototype.createFeedbackDelay=function(e,t,r){return new n(this,e,t,r)}}var O_={};O_.generateReverb=function(n,e){for(var t=n.audioContext||new AudioContext,r=t.sampleRate,i=n.numChannels||2,a=n.decayTime*1.5,s=Math.round(n.decayTime*r),o=Math.round(a*r),l=Math.round((n.fadeInTime||0)*r),c=Math.pow(1/1e3,1/s),u=t.createBuffer(i,o,r),p=0;p{O_.generateReverb({audioContext:this,numChannels:2,decayTime:a,fadeInTime:s,lpFreqStart:o,lpFreqEnd:l},c=>{i.buffer=c}),i.duration=a,i.fade=s,i.lp=o,i.dim=l},i.generate(n,e,t,r),i});var uT={a:{freqs:[660,1120,2750,3e3,3350],gains:[1,.5012,.0708,.0631,.0126],qs:[80,90,120,130,140]},e:{freqs:[440,1800,2700,3e3,3300],gains:[1,.1995,.1259,.1,.1],qs:[70,80,100,120,120]},i:{freqs:[270,1850,2900,3350,3590],gains:[1,.0631,.0631,.0158,.0158],qs:[40,90,100,120,120]},o:{freqs:[430,820,2700,3e3,3300],gains:[1,.3162,.0501,.0794,.01995],qs:[40,80,100,120,120]},u:{freqs:[370,630,2750,3e3,3400],gains:[1,.1,.0708,.0316,.01995],qs:[40,60,100,120,120]}};if(typeof GainNode<"u"){class n extends GainNode{constructor(t,r){if(super(t),!uT[r])throw new Error("vowel: unknown vowel "+r);const{gains:i,qs:a,freqs:s}=uT[r],o=t.createGain();for(let l=0;l<5;l++){const c=t.createGain();c.gain.value=i[l];const u=t.createBiquadFilter();u.type="bandpass",u.Q.value=a[l],u.frequency.value=s[l],this.connect(u),u.connect(c),c.connect(o)}return o.gain.value=8,this.connect=l=>o.connect(l),this}}AudioContext.prototype.createVowelFilter=function(e){return new n(this,e)}}const rG=n=>{var i;if(typeof n!="string")return[];const[e,t="",r]=((i=n.match(/^([a-gA-G])([#bsf]*)([0-9]*)$/))==null?void 0:i.slice(1))||[];return e?[e,t,r?Number(r):void 0]:[]},nG={c:0,d:2,e:4,f:5,g:7,a:9,b:11},iG={"#":1,b:-1,s:1,f:-1},uu=(n,e=3)=>{const[t,r,i=e]=rG(n);if(!t)throw new Error('not a note: "'+n+'"');const a=nG[t.toLowerCase()],s=(r==null?void 0:r.split("").reduce((o,l)=>o+iG[l],0))||0;return(Number(i)+1)*12+a+s},cR=n=>Math.pow(2,(n-69)/12)*440,Jm=(n,e,t)=>Math.min(Math.max(n,e),t),aG=n=>12*Math.log(n/440)/Math.LN2+69,sG=(n,e)=>{if(typeof n!="object")throw new Error("valueToMidi: expected object value");let{freq:t,note:r}=n;if(typeof t=="number")return aG(t);if(typeof r=="string")return uu(r);if(typeof r=="number")return r;if(!e)throw new Error("valueToMidi: expected freq or note to be set");return e},oG="data:application/javascript;base64,Ly8gTElDRU5TRSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2My4wIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGt0cjAvV2ViRGlydC9ibG9iL21haW4vTElDRU5TRQovLyBhbGwgdGhlIGNyZWRpdCBnb2VzIHRvIGRrdHIwJ3Mgd2ViZGlydDogaHR0cHM6Ly9naXRodWIuY29tL2RrdHIwL1dlYkRpcnQvYmxvYi81Y2UzZDY5ODM2MmM1NGQ2ZTFiNjhhY2M0N2ViMjk1NWFjNjJjNzkzL2Rpc3QvQXVkaW9Xb3JrbGV0cy5qcwovLyA8MwoKY2xhc3MgQ29hcnNlUHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgcmV0dXJuIFt7IG5hbWU6ICdjb2Fyc2UnLCBkZWZhdWx0VmFsdWU6IDEgfV07CiAgfQoKICBjb25zdHJ1Y3RvcigpIHsKICAgIHN1cGVyKCk7CiAgICB0aGlzLm5vdFN0YXJ0ZWQgPSB0cnVlOwogIH0KCiAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdOwogICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXTsKICAgIGNvbnN0IGNvYXJzZSA9IHBhcmFtZXRlcnMuY29hcnNlOwogICAgY29uc3QgYmxvY2tTaXplID0gMTI4OwogICAgY29uc3QgaGFzSW5wdXQgPSAhKGlucHV0WzBdID09PSB1bmRlZmluZWQpOwogICAgaWYgKGhhc0lucHV0KSB7CiAgICAgIHRoaXMubm90U3RhcnRlZCA9IGZhbHNlOwogICAgICBvdXRwdXRbMF1bMF0gPSBpbnB1dFswXVswXTsKICAgICAgZm9yIChsZXQgbiA9IDE7IG4gPCBibG9ja1NpemU7IG4rKykgewogICAgICAgIGZvciAobGV0IG8gPSAwOyBvIDwgb3V0cHV0Lmxlbmd0aDsgbysrKSB7CiAgICAgICAgICBvdXRwdXRbb11bbl0gPSBuICUgY29hcnNlID09IDAgPyBpbnB1dFswXVtuXSA6IG91dHB1dFtvXVtuIC0gMV07CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQoKcmVnaXN0ZXJQcm9jZXNzb3IoJ2NvYXJzZS1wcm9jZXNzb3InLCBDb2Fyc2VQcm9jZXNzb3IpOwoKY2xhc3MgQ3J1c2hQcm9jZXNzb3IgZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgewogIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICByZXR1cm4gW3sgbmFtZTogJ2NydXNoJywgZGVmYXVsdFZhbHVlOiAwIH1dOwogIH0KCiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpOwogICAgdGhpcy5ub3RTdGFydGVkID0gdHJ1ZTsKICB9CgogIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXTsKICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07CiAgICBjb25zdCBjcnVzaCA9IHBhcmFtZXRlcnMuY3J1c2g7CiAgICBjb25zdCBibG9ja1NpemUgPSAxMjg7CiAgICBjb25zdCBoYXNJbnB1dCA9ICEoaW5wdXRbMF0gPT09IHVuZGVmaW5lZCk7CiAgICBpZiAoaGFzSW5wdXQpIHsKICAgICAgdGhpcy5ub3RTdGFydGVkID0gZmFsc2U7CiAgICAgIGlmIChjcnVzaC5sZW5ndGggPT09IDEpIHsKICAgICAgICBjb25zdCB4ID0gTWF0aC5wb3coMiwgY3J1c2hbMF0gLSAxKTsKICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJsb2NrU2l6ZTsgbisrKSB7CiAgICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGgucm91bmQoaW5wdXRbMF1bbl0gKiB4KSAvIHg7CiAgICAgICAgICBmb3IgKGxldCBvID0gMDsgbyA8IG91dHB1dC5sZW5ndGg7IG8rKykgewogICAgICAgICAgICBvdXRwdXRbb11bbl0gPSB2YWx1ZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBibG9ja1NpemU7IG4rKykgewogICAgICAgICAgbGV0IHggPSBNYXRoLnBvdygyLCBjcnVzaFtuXSAtIDEpOwogICAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLnJvdW5kKGlucHV0WzBdW25dICogeCkgLyB4OwogICAgICAgICAgZm9yIChsZXQgbyA9IDA7IG8gPCBvdXRwdXQubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgb3V0cHV0W29dW25dID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQpyZWdpc3RlclByb2Nlc3NvcignY3J1c2gtcHJvY2Vzc29yJywgQ3J1c2hQcm9jZXNzb3IpOwoKY2xhc3MgU2hhcGVQcm9jZXNzb3IgZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgewogIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICByZXR1cm4gW3sgbmFtZTogJ3NoYXBlJywgZGVmYXVsdFZhbHVlOiAwIH1dOwogIH0KCiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpOwogICAgdGhpcy5ub3RTdGFydGVkID0gdHJ1ZTsKICB9CgogIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXTsKICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07CiAgICBjb25zdCBzaGFwZTAgPSBwYXJhbWV0ZXJzLnNoYXBlWzBdOwogICAgY29uc3Qgc2hhcGUxID0gc2hhcGUwIDwgMSA/IHNoYXBlMCA6IDEuMCAtIDRlLTEwOwogICAgY29uc3Qgc2hhcGUgPSAoMi4wICogc2hhcGUxKSAvICgxLjAgLSBzaGFwZTEpOwogICAgY29uc3QgYmxvY2tTaXplID0gMTI4OwogICAgY29uc3QgaGFzSW5wdXQgPSAhKGlucHV0WzBdID09PSB1bmRlZmluZWQpOwogICAgaWYgKGhhc0lucHV0KSB7CiAgICAgIHRoaXMubm90U3RhcnRlZCA9IGZhbHNlOwogICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJsb2NrU2l6ZTsgbisrKSB7CiAgICAgICAgY29uc3QgdmFsdWUgPSAoKDEgKyBzaGFwZSkgKiBpbnB1dFswXVtuXSkgLyAoMSArIHNoYXBlICogTWF0aC5hYnMoaW5wdXRbMF1bbl0pKTsKICAgICAgICBmb3IgKGxldCBvID0gMDsgbyA8IG91dHB1dC5sZW5ndGg7IG8rKykgewogICAgICAgICAgb3V0cHV0W29dW25dID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQoKcmVnaXN0ZXJQcm9jZXNzb3IoJ3NoYXBlLXByb2Nlc3NvcicsIFNoYXBlUHJvY2Vzc29yKTsK";function Gc(n){const e=Bt().createGain();return e.gain.value=n,e}const b_=(n,e,t,r,i,a)=>{const s=Bt().createGain();return s.gain.setValueAtTime(0,a),s.gain.linearRampToValueAtTime(i,a+n),s.gain.linearRampToValueAtTime(t*i,a+n+e),{node:s,stop:o=>{s.gain.setValueAtTime(t*i,o),s.gain.linearRampToValueAtTime(0,o+r)}}},lG=(n,e,t,r,i,a)=>{t=Math.max(.001,t),i=Math.max(.001,i);const s=Bt().createGain();return s.gain.setValueAtTime(1e-4,a),s.gain.exponentialRampToValueAtTime(i,a+n),s.gain.exponentialRampToValueAtTime(t*i,a+n+e),{node:s,stop:o=>{s.gain.exponentialRampToValueAtTime(1e-4,o+r)}}},cG=(n,e,t,r,i,a,s,o,l)=>{const c=s-a,u=a+c,p=a+r*c;n.setValueAtTime(a,o),n.linearRampToValueAtTime(u,o+e),n.linearRampToValueAtTime(p,o+e+t),n.setValueAtTime(p,l),n.linearRampToValueAtTime(a,l+Math.max(i,.1))};function uG(n,e,t,r,i,a){const s={threshold:e??-3,ratio:t??10,knee:r??10,attack:i??.005,release:a??.05};return new DynamicsCompressorNode(n,s)}function Ph(n,e,t,r,i,a,s,o,l,c,u,p=.5){const m=n.createBiquadFilter();if(m.type=e,m.Q.value=r,m.frequency.value=t,!isNaN(l)&&l!==0){const _=l*p,v=Jm(2**-_*t,0,2e4),I=Jm(2**(l-_)*t,0,2e4);return cG(m.frequency,i,a,s,o,v,I,c,u),m}return m}let dT=n=>n<.5?1:1-(n-.5)/.5;function dG(n,e,t=0){const r=Bt();if(!t)return n;let i=r.createGain(),a=r.createGain();n.connect(i),e.connect(a),i.gain.value=dT(t),a.gain.value=dT(1-t);let s=r.createGain();return i.connect(s),a.connect(s),s}let pG=n=>console.log(n);const As=(...n)=>pG(...n),E_=j$();function v_(n,e,t={}){E_.setKey(n,{onTrigger:e,data:t})}function pT(n){return E_.get()[n]}let Bh;const Bt=()=>(Bh||(Bh=new AudioContext),Bh);let Yl;const T_=()=>{const n=Bt();return Yl||(Yl=n.createGain(),Yl.connect(n.destination)),Yl};let Uh;function fG(){return Uh||(Uh=Bt().audioWorklet.addModule(oG),Uh)}function Fh(n,e,t){const r=new AudioWorkletNode(n,e);return Object.entries(t).forEach(([i,a])=>{r.parameters.get(i).value=a}),r}async function hG(n={}){const{disableWorklets:e=!1}=n;typeof window<"u"&&(await Bt().resume(),e?console.log("disableWorklets: AudioWorklet effects coarse, crush and shape are skipped!"):await fG().catch(t=>{console.warn("could not load AudioWorklet effects coarse, crush and shape",t)}))}async function mG(n){return new Promise(e=>{document.addEventListener("click",async function t(){await hG(n),e(),document.removeEventListener("click",t)})})}let ca={};function gG(n,e,t,r){var i;if(t=Jm(t,0,.98),!ca[n]){const a=Bt().createFeedbackDelay(1,e,t);(i=a.start)==null||i.call(a,r),a.connect(T_()),ca[n]=a}return ca[n].delayTime.value!==e&&ca[n].delayTime.setValueAtTime(e,r),ca[n].feedback.value!==t&&ca[n].feedback.setValueAtTime(t,r),ca[n]}let Mi={},$l=(n,e)=>n!==void 0&&n!==e;function _G(n,e,t,r,i){if(!Mi[n]){const a=Bt().createReverb(e,t,r,i);a.connect(T_()),Mi[n]=a}return($l(e,Mi[n].duration)||$l(t,Mi[n].fade)||$l(r,Mi[n].lp)||$l(i,Mi[n].dim))&&Mi[n].generate(e,t,r,i),Mi[n]}let ua;function SG(n=2048){if(!ua){const e=Bt().createAnalyser();e.fftSize=n,ua=e,new Float32Array(ua.frequencyBinCount)}return ua.fftSize!==n&&(ua.fftSize=n,new Float32Array(ua.frequencyBinCount)),ua}function Yh(n,e,t){const r=Gc(t);return n.connect(r),r.connect(e),r}const fT=async(n,e,t)=>{const r=Bt();if(typeof n!="object")throw new Error(`expected hap.value to be an object, but got "${n}". Hint: append .note() or .s() to the end`,"error");n.duration=t;let i=r.currentTime+e,{s:a="triangle",bank:s,source:o,gain:l=.8,postgain:c=1,ftype:u="12db",fanchor:p=.5,cutoff:m,lpenv:_,lpattack:v=.01,lpdecay:I=.01,lpsustain:R=1,lprelease:x=.01,resonance:$=1,hpenv:Z,hcutoff:h,hpattack:b=.01,hpdecay:S=.01,hpsustain:N=1,hprelease:k=.01,hresonance:L=1,bpenv:M,bandf:G,bpattack:te=.01,bpdecay:ne=.01,bpsustain:re=1,bprelease:ee=.01,bandq:B=1,coarse:Q,crush:j,shape:K,pan:ue,vowel:le,delay:be=0,delayfeedback:De=.5,delaytime:xe=.25,orbit:Ee=1,room:Ne,roomfade:ce,roomlp:Le,roomdim:Xe,roomsize:Pe,velocity:tt=1,analyze:nt,fft:ht=8,compressor:vt,compressorRatio:mt,compressorKnee:At,compressorAttack:Nt,compressorRelease:Ir}=n;l*=tt;let qe=[];const nr=()=>{qe.forEach(fe=>fe==null?void 0:fe.disconnect())};s&&a&&(a=`${s}_${a}`);let Ze;if(o)Ze=o(i,n,t);else if(pT(a)){const{onTrigger:fe}=pT(a),Ie=await fe(i,n,nr);Ie&&(Ze=Ie.node,Ie.stop(i+t))}else throw new Error(`sound ${a} not found! Is it loaded?`);if(!Ze)return;if(r.currentTime>i){As("[webaudio] skip hap: still loading",r.currentTime-i);return}const ke=[];if(ke.push(Ze),ke.push(Gc(l)),m!==void 0){let fe=()=>Ph(r,"lowpass",m,$,v,I,R,x,_,i,i+t,p);ke.push(fe()),u==="24db"&&ke.push(fe())}if(h!==void 0){let fe=()=>Ph(r,"highpass",h,L,b,S,N,k,Z,i,i+t,p);ke.push(fe()),u==="24db"&&ke.push(fe())}if(G!==void 0){let fe=()=>Ph(r,"bandpass",G,B,te,ne,re,ee,M,i,i+t,p);ke.push(fe()),u==="24db"&&ke.push(fe())}if(le!==void 0){const fe=r.createVowelFilter(le);ke.push(fe)}if(Q!==void 0&&ke.push(Fh(r,"coarse-processor",{coarse:Q})),j!==void 0&&ke.push(Fh(r,"crush-processor",{crush:j})),K!==void 0&&ke.push(Fh(r,"shape-processor",{shape:K})),vt!==void 0&&ke.push(uG(r,vt,mt,At,Nt,Ir)),ue!==void 0){const fe=r.createStereoPanner();fe.pan.value=2*ue-1,ke.push(fe)}const er=Gc(c);ke.push(er),er.connect(T_());let Zt;if(be>0&&xe>0&&De>0){const fe=gG(Ee,xe,De,i);Zt=Yh(er,fe,be)}let ir;if(Ne>0){const fe=_G(Ee,Pe,ce,Le,Xe);ir=Yh(er,fe,Ne)}let H;if(nt){const fe=SG(2**(ht+5));H=Yh(er,fe,nt)}ke.slice(1).reduce((fe,Ie)=>fe.connect(Ie),ke[0]),qe=ke.concat([Zt,ir,H])},$h={};function OG(n,e){var t=e?1e3:1024;if(n=t);return n.toFixed(1)+" "+r[i]}const bG=async(n,e,t,r,i,a,s)=>{let o=0;i!==void 0&&t!==void 0&&As("[sampler] hap has note and freq. ignoring note","warning");let l=sG({freq:i,note:t},36);o=l-36;const c=Bt();let u;if(Array.isArray(a))u=a[e%a.length];else{const v=R=>uu(R)-l,I=Object.keys(a).filter(R=>!R.startsWith("_")).reduce((R,x,$)=>!R||Math.abs(v(x)){const i=t?`sound "${t}:${r}"`:"sample";if(n=n.replace("#","%23"),!$h[n]){As(`[sampler] load ${i}..`,"load-sample",{url:n});const a=Date.now();$h[n]=fetch(n).then(s=>s.arrayBuffer()).then(async s=>{const o=Date.now()-a,l=OG(s.byteLength);return As(`[sampler] load ${i}... done! loaded ${l} in ${o}ms`,"loaded-sample",{url:n}),await e.decodeAudioData(s)})}return $h[n]};function vG(n){const e=Bt(),t=e.createBuffer(n.numberOfChannels,n.length,e.sampleRate);for(let r=0;rObject.entries(n).forEach(([r,i])=>{if(typeof i=="string"&&(i=[i]),typeof i!="object")throw new Error("wrong sample map format for "+r);t=i._base||t;const a=s=>(t+s).replace("github:","https://raw.githubusercontent.com/");Array.isArray(i)?i=i.map(a):i=Object.fromEntries(Object.entries(i).map(([s,o])=>[s,(typeof o=="string"?[o]:o).map(a)])),e(r,i)});let CG={};function yG(n){const e=Object.entries(CG).find(([t])=>n.startsWith(t));if(e)return e[1]}const Gi=async(n,e=n._base||"",t={})=>{if(typeof n=="string"){const a=yG(n);if(a)return a(n);if(n.startsWith("github:")){let[o,l]=n.split("github:");l=l.endsWith("/")?l.slice(0,-1):l,n=`https://raw.githubusercontent.com/${l}/strudel.json`}if(typeof fetch!="function")return;const s=n.split("/").slice(0,-1).join("/");return typeof fetch>"u"?void 0:fetch(n).then(o=>o.json()).then(o=>Gi(o,e||o._base||s,t)).catch(o=>{throw console.error(o),new Error(`error loading "${n}"`)})}const{prebake:r,tag:i}=t;TG(n,(a,s)=>v_(a,(o,l,c)=>AG(o,l,c,s),{type:"sample",samples:s,baseUrl:e,prebake:r,tag:i}),e)},hT=[];async function AG(n,e,t,r,i){let{s:a,freq:s,unit:o,nudge:l=0,cut:c,loop:u,clip:p=void 0,n:m=0,note:_,speed:v=1,loopBegin:I=0,begin:R=0,loopEnd:x=1,end:$=1}=e;if(v===0)return;u=a.startsWith("wt_")?1:e.loop;const Z=Bt(),{attack:h=.001,decay:b=.001,sustain:S=1,release:N=.001}=e,k=n+l,L=await bG(a,m,_,v,s,r,i);if(Z.currentTime>n){As(`[sampler] still loading sound "${a}:${m}"`,"highlight");return}if(!L){As(`[sampler] could not load "${a}:${m}"`,"error");return}L.playbackRate.value=Math.abs(v)*L.playbackRate.value,o==="c"&&(L.playbackRate.value=L.playbackRate.value*L.buffer.duration*1);const M=R*L.buffer.duration;u&&(L.loop=!0,L.loopStart=I*L.buffer.duration-M,L.loopEnd=x*L.buffer.duration-M),L.start(k,M);const{node:G,stop:te}=b_(h,b,S,N,1,n);L.connect(G);const ne=Z.createGain();G.connect(ne),L.onended=function(){L.disconnect(),G.disconnect(),ne.disconnect(),t()};const re={node:ne,bufferSource:L,stop:(ee,B=p===void 0&&u===void 0)=>{let Q=ee;if(B){const j=L.buffer.duration/L.playbackRate.value;Q=n+($-R)*j}L.stop(Q+N),te(Q)}};if(c!==void 0){const ee=hT[c];ee&&(ee.node.gain.setValueAtTime(1,k),ee.node.gain.linearRampToValueAtTime(0,k+.01)),hT[c]=re}return re}let Gh={};function IG(n){const e=Bt();if(Gh[n])return Gh[n];const t=2*e.sampleRate,r=e.createBuffer(1,t,e.sampleRate),i=r.getChannelData(0);let a=0,s,o,l,c,u,p,m;s=o=l=c=u=p=m=0;for(let _=0;_t.stop(r)}}function RG(n,e,t){const r=uR("pink",t);return{node:dG(n,r.node,e),stop:i=>r==null?void 0:r.stop(i)}}const NG=(n,e=1,t="sine")=>{const r=Bt(),i=r.createOscillator();i.type=t,i.frequency.value=n,i.start();const a=new GainNode(r,{gain:e});return i.connect(a),{node:a,stop:s=>i.stop(s)}},wG=(n,e,t,r="sine")=>{const i=n.frequency.value*e,a=i*t;return NG(i,a,r)},mT=["sine","square","triangle","sawtooth"],DG=["pink","white","brown"];function xG(){[...mT,...DG].forEach(n=>{v_(n,(e,t,r)=>{let{attack:i=.001,decay:a=.05,sustain:s=.6,release:o=.01}=t,l;mT.includes(n)?l=LG(n,e,t):l=uR(n,e);let{node:c,stop:u,triggerRelease:p}=l;const m=Gc(.3),{node:_,stop:v}=b_(i,a,s,o,1,e);return c.onended=()=>{c.disconnect(),m.disconnect(),r()},{node:c.connect(m).connect(_),stop:I=>{v(I),p==null||p(I);let R=I+o;u(R)}}},{type:"synth",prebake:!0})})}function kG(n,e){const t=new Float32Array(n+1),r=new Float32Array(n+1),i=Bt(),a=i.createOscillator(),s={sawtooth:c=>1/c,square:c=>c%2===0?0:1/c,triangle:c=>c%2===0?0:1/(c*c)};if(!s[e])throw new Error(`unknown wave type ${e}`);t[0]=0,r[0]=0;let o=1;for(;o<=n;)t[o]=s[e](o),r[o]=0,o++;const l=i.createPeriodicWave(t,r);return a.setPeriodicWave(l),a}function LG(n,e,{n:t,note:r,freq:i,vib:a=0,vibmod:s=.5,noise:o=0,fmh:l=1,fmi:c,fmenv:u="lin",fmattack:p,fmdecay:m,fmsustain:_,fmrelease:v,fmvelocity:I,fmwave:R="sine"}){Bt();let x;!t||n==="sine"?(x=Bt().createOscillator(),x.type=n||"triangle"):x=kG(t,n),r=r||36,typeof r=="string"&&(r=uu(r)),!i&&typeof r=="number"&&(i=cR(r)),x.frequency.value=Number(i),x.start(e);let $,Z;if(c){const{node:S,stop:N}=wG(x,l,c,R);[p,m,_,v,I].find(k=>k!==void 0)?(p=p??.001,m=m??.001,_=_??1,v=v??.001,I=I??1,Z=b_(p,m,_,v,I,e),u==="exp"&&(Z=lG(p,m,_,v,I,e),Z.node.maxValue=c*2,Z.node.minValue=1e-5),S.connect(Z.node),Z.node.connect(x.frequency)):S.connect(x.frequency),$=N}let h;if(a>0){h=Bt().createOscillator(),h.frequency.value=a;const S=Bt().createGain();S.gain.value=s*100,h.connect(S),S.connect(x.detune),h.start(e)}let b;return o&&(b=RG(x,o,e)),{node:(b==null?void 0:b.node)||x,stop:S=>{h==null||h.stop(S),b==null||b.stop(S),$==null||$(S),x.stop(S)},triggerRelease:S=>{Z==null||Z.stop(S)}}}function MG(n=1,e=.05,t=220,r=0,i=0,a=.1,s=0,o=1,l=0,c=0,u=0,p=0,m=0,_=0,v=0,I=0,R=0,x=1,$=0,Z=0){let h=Math.PI*2,b=Bt().sampleRate,S=K=>K>0?1:-1,N=l*=500*h/b/b,k=t*=(1+e*2*Math.random()-e)*h/b,L=[],M=0,G=0,te=0,ne=1,re=0,ee=0,B=0,Q,j;for(r=r*b+9,$*=b,i*=b,a*=b,R*=b,c*=500*h/b**3,v*=h/b,u*=h/b,p*=b,m=m*b|0,j=r+$+i+a+R|0;te1?s>2?s>3?Math.sin((M%h)**3):Math.max(Math.min(Math.tan(M),1),-1):1-(2*M/h%2+2)%2:1-4*Math.abs(Math.round(M/h)-M/h):Math.sin(M),B=(m?1-Z+Z*Math.sin(h*te/m):1)*S(B)*Math.abs(B)**o*n*1*(tete?0:(tep&&(t+=u,k+=u,ne=0),m&&!(++re%m)&&(t=k,l=N,ne||(ne=1));return L}const PG=(n,e)=>{let{s:t,note:r=36,freq:i,zrand:a=0,attack:s=0,decay:o=0,sustain:l=.8,release:c=.1,curve:u=1,slide:p=0,deltaSlide:m=0,pitchJump:_=0,pitchJumpTime:v=0,lfo:I=0,znoise:R=0,zmod:x=0,zcrush:$=0,zdelay:Z=0,tremolo:h=0,duration:b=.2,zzfx:S}=n;const N=Math.max(b-s-o,0);typeof r=="string"&&(r=uu(r)),!i&&typeof r=="number"&&(i=cR(r)),t=t.replace("z_","");const k=["sine","triangle","sawtooth","tan","noise"].indexOf(t)||0;u=t==="square"?0:u;const L=MG(...S||[.25,a,i,s,N,c,k,u,p,m,_,v,I,R,x,$,Z,l,o,h]),M=Bt(),G=M.createBuffer(1,L.length,M.sampleRate);G.getChannelData(0).set(L);const te=Bt().createBufferSource();return te.buffer=G,te.start(e),{node:te}};function BG(){["zzfx","z_sine","z_sawtooth","z_triangle","z_square","z_tan","z_noise"].forEach(n=>{v_(n,(e,t,r)=>{const{node:i}=PG({s:n,...t},e);return i.onended=()=>{i.disconnect(),r()},{node:i,stop:()=>{}}},{type:"synth",prebake:!0})})}let Qh;const UG=()=>{};typeof window<"u"&&window.addEventListener("message",n=>{var e;n.data==="strudel-stop"?UG():(e=n.data)!=null&&e.dough&&(Qh==null||Qh.node.port.postMessage(n.data))});class eg extends lR{constructor(t,r){super(r);E(this,"nudge");E(this,"volume",t=>this.updateValue("volume",t));E(this,"vol",this.volume);E(this,"zrand",t=>this.updateValue("zrand",t));E(this,"curve",t=>this.updateValue("curve",t));E(this,"slide",t=>this.updateValue("slide",t));E(this,"sld",this.slide);E(this,"deltaSlide",t=>this.updateValue("deltaSlide",t));E(this,"dslide",this.deltaSlide);E(this,"pitchJump",t=>this.updateValue("pitchJump",t));E(this,"pj",this.pitchJump);E(this,"pitchJumpTime",t=>this.updateValue("pitchJumpTime",t));E(this,"pjt",this.pitchJumpTime);E(this,"lfo",t=>this.updateValue("lfo",t));E(this,"znoise",t=>this.updateValue("znoise",t));E(this,"noise",t=>this.updateValue("noise",t));E(this,"zmod",t=>this.updateValue("zmod",t));E(this,"zcrush",t=>this.updateValue("zcrush",t));E(this,"zdelay",t=>this.updateValue("zdelay",t));E(this,"sustainVolume",t=>this.updateValue("sustainVolume",t));E(this,"tremolo",t=>this.updateValue("tremolo",t));E(this,"dur",t=>this.updateValue("dur",t));E(this,"zzfx",t=>this.updateValue("zzfx",t));E(this,"fmi",t=>this.updateValue("fmi",t));E(this,"fmh",t=>this.updateValue("fmh",t));E(this,"fmenv",t=>this.updateValue("fmenv",t));E(this,"fmattack",t=>this.updateValue("fmattack",t));E(this,"fmatk",this.fmattack);E(this,"fmdecay",t=>this.updateValue("fmdecay",t));E(this,"fmdec",this.fmdecay);E(this,"fmsustain",t=>this.updateValue("fmsustain",t));E(this,"fmsus",this.fmsustain);E(this,"fmrelease",t=>this.updateValue("fmrelease",t));E(this,"fmrel",this.fmrelease);E(this,"fmvelocity",t=>this.updateValue("fmvelocity",t));E(this,"fmvel",this.fmvelocity);E(this,"fmwave",t=>this.updateValue("fmwave",t));E(this,"fmw",this.fmwave);E(this,"ftype",t=>this.updateValue("ftype",t));E(this,"fanchor",t=>this.updateValue("fanchor",t));E(this,"attack",t=>this.updateValue("attack",t));E(this,"atk",this.attack);E(this,"decay",t=>this.updateValue("decay",t));E(this,"dec",this.decay);E(this,"sustain",t=>this.updateValue("sustain",t));E(this,"sus",this.sustain);E(this,"release",t=>this.updateValue("release",t));E(this,"rel",this.release);E(this,"adsr",(t,r,i,a)=>(this.attack(t),this.decay(r),this.sustain(i),this.release(a),this));E(this,"ad",(t,r)=>(this.attack(t),this.decay(r),this.sustain(0),this.release(0),this));E(this,"lpenv",t=>this.updateValue("lpenv",t));E(this,"lpe",t=>this.updateValue("lpenv",t));E(this,"lpattack",t=>this.updateValue("lpattack",t));E(this,"lpa",this.lpattack);E(this,"lpdecay",t=>this.updateValue("lpdecay",t));E(this,"lpd",this.lpdecay);E(this,"lpsustain",t=>this.updateValue("lpsustain",t));E(this,"lps",this.lpsustain);E(this,"lprelease",t=>this.updateValue("lprelease",t));E(this,"lpr",this.lprelease);E(this,"cutoff",t=>this.updateValue("cutoff",t));E(this,"lpf",this.cutoff);E(this,"resonance",t=>this.updateValue("resonance",Math.min(Math.max(t,0),50)));E(this,"lpq",this.resonance);E(this,"lpadsr",(t,r,i,a,s)=>(this.lpenv(t),this.lpattack(r),this.lpdecay(i),this.lpsustain(a),this.lprelease(s),this));E(this,"hpenv",t=>this.updateValue("hpenv",t));E(this,"hpe",t=>this.updateValue("hpe",t));E(this,"hpattack",t=>this.updateValue("hpattack",t));E(this,"hpa",this.hpattack);E(this,"hpdecay",t=>this.updateValue("hpdecay",t));E(this,"hpd",this.hpdecay);E(this,"hpsustain",t=>this.updateValue("hpsustain",t));E(this,"hpsus",this.hpsustain);E(this,"hprelease",t=>this.updateValue("hprelease",t));E(this,"hpr",this.hprelease);E(this,"hcutoff",t=>this.updateValue("hcutoff",t));E(this,"hpf",this.hcutoff);E(this,"hresonance",t=>this.updateValue("hresonance",t));E(this,"hpq",this.hresonance);E(this,"hpadsr",(t,r,i,a,s)=>(this.hpenv(t),this.hpattack(r),this.hpdecay(i),this.hpsustain(a),this.hprelease(s),this));E(this,"bpenv",t=>this.updateValue("bpenv",t));E(this,"bpe",t=>this.updateValue("bpe",t));E(this,"bpattack",t=>this.updateValue("bpattack",t));E(this,"bpa",this.bpattack);E(this,"bpdecay",t=>this.updateValue("bpdecay",t));E(this,"bpd",this.bpdecay);E(this,"bpsustain",t=>this.updateValue("bpsustain",t));E(this,"bps",this.bpsustain);E(this,"bprelease",t=>this.updateValue("bprelease",t));E(this,"bpr",this.bprelease);E(this,"bandf",t=>this.updateValue("bandf",t));E(this,"bpf",this.bandf);E(this,"bandq",t=>this.updateValue("bandq",t));E(this,"bpq",this.bandq);E(this,"bpadsr",(t,r,i,a,s)=>(this.bpenv(t),this.bpattack(r),this.bpdecay(i),this.bpsustain(a),this.bprelease(s),this));E(this,"freq",t=>this.updateValue("freq",t));E(this,"f",this.freq);E(this,"vib",t=>this.updateValue("vib",t));E(this,"vibmod",t=>this.updateValue("vibmod",t));E(this,"fm",t=>{if(typeof t=="number")this.values.fmi=t;else{let r=t.split(":");this.values.fmi=parseFloat(r[0]),r.length>1&&(this.values.fmh=parseFloat(r[1]))}return this});E(this,"loop",t=>this.updateValue("loop",t));E(this,"loopBegin",t=>this.updateValue("loopBegin",t));E(this,"loopEnd",t=>this.updateValue("loopEnd",t));E(this,"begin",t=>this.updateValue("begin",t));E(this,"end",t=>this.updateValue("end",t));E(this,"gain",t=>this.updateValue("gain",t));E(this,"dbgain",t=>this.updateValue("gain",Math.min(Math.pow(10,t/20),10)));E(this,"db",this.dbgain);E(this,"velocity",t=>this.updateValue("velocity",t));E(this,"vel",this.velocity);E(this,"pan",t=>this.updateValue("pan",t));E(this,"sound",t=>this.updateValue("s",t));E(this,"chord",(t,...r)=>(typeof t=="string"?t=U$(t).map(a=>({note:a,freq:Zn(a)})):t instanceof Array&&typeof t[0]=="number"?t=t.map(i=>({note:i,freq:Zn(i)})):typeof t=="number"&&r.length>0&&(t=[t,...r].map(i=>({note:i,freq:Zn(i)}))),this.updateValue("chord",t)));E(this,"invert",(t=0)=>{if(this.values.chord){let r=this.values.chord.map(a=>a.note);r=t<0?[...r].reverse():r;for(let a=0;a({note:a,freq:Zn(a)}));return this.updateValue("chord",i)}else return this});E(this,"snd",this.sound);E(this,"cut",t=>this.updateValue("cut",t));E(this,"clip",t=>this.updateValue("clip",t));E(this,"n",t=>this.updateValue("n",t));E(this,"note",t=>typeof t=="string"?this.updateValue("note",Un(t)):typeof t==null||t==null?this.updateValue("note",0).updateValue("gain",0):this.updateValue("note",t));E(this,"speed",t=>this.updateValue("speed",t));E(this,"spd",this.speed);E(this,"coarse",t=>this.updateValue("coarse",t));E(this,"crush",t=>this.updateValue("crush",t));E(this,"shape",t=>this.updateValue("shape",t));E(this,"vowel",t=>this.updateValue("vowel",t));E(this,"vow",this.vowel);E(this,"delay",t=>this.updateValue("delay",t));E(this,"del",this.delay);E(this,"delayfeedback",t=>this.updateValue("delayfeedback",t));E(this,"delayfb",this.delayfeedback);E(this,"delaytime",t=>this.updateValue("delaytime",t));E(this,"delayt",this.delaytime);E(this,"orbit",t=>this.updateValue("orbit",t));E(this,"o",this.orbit);E(this,"room",t=>this.updateValue("room",t));E(this,"rm",this.room);E(this,"roomfade",t=>this.updateValue("roomfade",t));E(this,"rfade",this.roomfade);E(this,"roomlp",t=>this.updateValue("roomlp",t));E(this,"rlp",this.roomlp);E(this,"roomdim",t=>this.updateValue("roomdim",t));E(this,"rdim",this.roomdim);E(this,"size",t=>this.updateValue("roomsize",t));E(this,"sz",this.size);E(this,"comp",t=>this.updateValue("compressor",t));E(this,"cmp",this.comp);E(this,"ratio",t=>this.updateValue("compressorRatio",t));E(this,"rt",this.ratio);E(this,"knee",t=>this.updateValue("compressorKnee",t));E(this,"kn",this.knee);E(this,"compAttack",t=>this.updateValue("compressorAttack",t));E(this,"cmpa",this.compAttack);E(this,"compRelease",t=>this.updateValue("compressorRelease",t));E(this,"cmpr",this.compRelease);E(this,"stretch",t=>(this.updateValue("unit","c"),this.updateValue("speed",1/t),this.updateValue("cut",t),this));E(this,"modify",t=>{const r=t(this);return r instanceof Object?r:(t(this.values),this.update(),this)});E(this,"update",()=>{const[t,r]=g_(this.values.key||"C4",this.values.pitch||0,this.values.parsedScale||"MAJOR",this.values.octave||0);this.values.freq=Zn(t)});E(this,"out",()=>{this.values.chord?this.values.chord.forEach(t=>{const r={...this.values};r.freq=t.freq,fT(r,this.nudge,this.values.dur)}):fT(this.values,this.nudge,this.values.dur)});this.app=r,this.nudge=r.dough_nudge/100,typeof t=="string"?t.includes(":")?this.values={s:t.split(":")[0],n:t.split(":")[1],dur:r.clock.convertPulseToSecond(r.clock.ppqn)}:this.values={s:t,dur:.5}:this.values=t}updateValue(t,r){return this.values[t]=r,this}}class tg extends lR{constructor(t,r){super(r);E(this,"midiConnection");E(this,"chord",t=>(this.values.chord=t,this));E(this,"note",t=>(this.values.note=t,this));E(this,"sustain",t=>(this.values.sustain=t,this));E(this,"channel",t=>(this.values.channel=t,this));E(this,"port",t=>(this.values.port=this.midiConnection.getMidiOutputIndex(t),this));E(this,"add",t=>(this.values.note+=t,this));E(this,"modify",t=>{const r=t(this);return r instanceof Object?r:(t(this.values),this.update(),this)});E(this,"bend",t=>(this.values.bend=t,this));E(this,"random",(t=0,r=127)=>(t=Math.min(Math.max(t,0),127),r=Math.min(Math.max(r,0),127),this.values.note=Math.floor(this.randomGen()*(r-t+1))+t,this));E(this,"update",()=>{const[t,r]=g_(this.values.key||"C4",this.values.pitch||0,this.values.parsedScale||"MAJOR",this.values.octave||0);this.values.note=t,this.values.freq=Zn(t),r&&(this.values.bend=r)});E(this,"out",()=>{function t(r,i){const a=i&&i.channel?i.channel:0,s=r.values.channel?r.values.channel:a,o=r.values.velocity?r.values.velocity:100,l=i&&i.note?i.note:60,c=r.values.note?r.values.note:l,u=r.values.sustain?r.values.sustain*r.app.clock.pulse_duration*r.app.api.ppqn():r.app.clock.pulse_duration*r.app.api.ppqn(),p=r.values.bend?r.values.bend:void 0,m=r.values.port?r.midiConnection.getMidiOutputIndex(r.values.port):r.midiConnection.getCurrentMidiPortIndex();r.midiConnection.sendMidiNote(c,s,o,u,m,p)}this.values.chord?this.values.chord.forEach(r=>{t(this,r)}):t(this)});this.app=r,typeof t=="number"?this.values.note=t:this.values=t,this.midiConnection=r.api.MidiConnection}}const po=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,dR=new Set,rg=typeof process=="object"&&process?process:{},pR=(n,e,t,r)=>{typeof rg.emitWarning=="function"?rg.emitWarning(n,e,t,r):console.error(`[${t}] ${e}: ${n}`)};let Qc=globalThis.AbortController,gT=globalThis.AbortSignal;var _T;if(typeof Qc>"u"){gT=class{constructor(){E(this,"onabort");E(this,"_onabort",[]);E(this,"reason");E(this,"aborted",!1)}addEventListener(r,i){this._onabort.push(i)}},Qc=class{constructor(){E(this,"signal",new gT);e()}abort(r){var i,a;if(!this.signal.aborted){this.signal.reason=r,this.signal.aborted=!0;for(const s of this.signal._onabort)s(r);(a=(i=this.signal).onabort)==null||a.call(i,r)}}};let n=((_T=rg.env)==null?void 0:_T.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,pR("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const FG=n=>!dR.has(n),Bi=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),fR=n=>Bi(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?nc:null:null;class nc extends Array{constructor(e){super(e),this.fill(0)}}var cs;const fa=class fa{constructor(e,t){E(this,"heap");E(this,"length");if(!V(fa,cs))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}static create(e){const t=fR(e);if(!t)return[];We(fa,cs,!0);const r=new fa(e,t);return We(fa,cs,!1),r}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};cs=new WeakMap,at(fa,cs,!1);let ng=fa;var Rn,Jr,Nn,wn,us,sr,Dn,or,Lt,rt,kr,en,Tr,fr,xn,hr,gi,_i,kn,Ln,qi,Lr,jo,ag,Oa,Si,Jo,tn,zc,hR,ba,ds,el,qn,Ui,Vn,Fi,tl,sg,ps,ic,fs,ac,Dt,Ft,rl,og,Ea,bo;const C_=class C_{constructor(e){at(this,jo);at(this,zc);at(this,qn);at(this,Vn);at(this,tl);at(this,ps);at(this,fs);at(this,Dt);at(this,rl);at(this,Ea);at(this,Rn,void 0);at(this,Jr,void 0);at(this,Nn,void 0);at(this,wn,void 0);at(this,us,void 0);E(this,"ttl");E(this,"ttlResolution");E(this,"ttlAutopurge");E(this,"updateAgeOnGet");E(this,"updateAgeOnHas");E(this,"allowStale");E(this,"noDisposeOnSet");E(this,"noUpdateTTL");E(this,"maxEntrySize");E(this,"sizeCalculation");E(this,"noDeleteOnFetchRejection");E(this,"noDeleteOnStaleGet");E(this,"allowStaleOnFetchAbort");E(this,"allowStaleOnFetchRejection");E(this,"ignoreFetchAbort");at(this,sr,void 0);at(this,Dn,void 0);at(this,or,void 0);at(this,Lt,void 0);at(this,rt,void 0);at(this,kr,void 0);at(this,en,void 0);at(this,Tr,void 0);at(this,fr,void 0);at(this,xn,void 0);at(this,hr,void 0);at(this,gi,void 0);at(this,_i,void 0);at(this,kn,void 0);at(this,Ln,void 0);at(this,qi,void 0);at(this,Lr,void 0);at(this,Oa,()=>{});at(this,Si,()=>{});at(this,Jo,()=>{});at(this,tn,()=>!1);at(this,ba,e=>{});at(this,ds,(e,t,r)=>{});at(this,el,(e,t,r,i)=>{if(r||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});const{max:t=0,ttl:r,ttlResolution:i=1,ttlAutopurge:a,updateAgeOnGet:s,updateAgeOnHas:o,allowStale:l,dispose:c,disposeAfter:u,noDisposeOnSet:p,noUpdateTTL:m,maxSize:_=0,maxEntrySize:v=0,sizeCalculation:I,fetchMethod:R,noDeleteOnFetchRejection:x,noDeleteOnStaleGet:$,allowStaleOnFetchRejection:Z,allowStaleOnFetchAbort:h,ignoreFetchAbort:b}=e;if(t!==0&&!Bi(t))throw new TypeError("max option must be a nonnegative integer");const S=t?fR(t):Array;if(!S)throw new Error("invalid max value: "+t);if(We(this,Rn,t),We(this,Jr,_),this.maxEntrySize=v||V(this,Jr),this.sizeCalculation=I,this.sizeCalculation){if(!V(this,Jr)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(R!==void 0&&typeof R!="function")throw new TypeError("fetchMethod must be a function if specified");if(We(this,us,R),We(this,qi,!!R),We(this,or,new Map),We(this,Lt,new Array(t).fill(void 0)),We(this,rt,new Array(t).fill(void 0)),We(this,kr,new S(t)),We(this,en,new S(t)),We(this,Tr,0),We(this,fr,0),We(this,xn,ng.create(t)),We(this,sr,0),We(this,Dn,0),typeof c=="function"&&We(this,Nn,c),typeof u=="function"?(We(this,wn,u),We(this,hr,[])):(We(this,wn,void 0),We(this,hr,void 0)),We(this,Ln,!!V(this,Nn)),We(this,Lr,!!V(this,wn)),this.noDisposeOnSet=!!p,this.noUpdateTTL=!!m,this.noDeleteOnFetchRejection=!!x,this.allowStaleOnFetchRejection=!!Z,this.allowStaleOnFetchAbort=!!h,this.ignoreFetchAbort=!!b,this.maxEntrySize!==0){if(V(this,Jr)!==0&&!Bi(V(this,Jr)))throw new TypeError("maxSize must be a positive integer if specified");if(!Bi(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");ze(this,zc,hR).call(this)}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!$,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!o,this.ttlResolution=Bi(i)||i===0?i:1,this.ttlAutopurge=!!a,this.ttl=r||0,this.ttl){if(!Bi(this.ttl))throw new TypeError("ttl must be a positive integer if specified");ze(this,jo,ag).call(this)}if(V(this,Rn)===0&&this.ttl===0&&V(this,Jr)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!V(this,Rn)&&!V(this,Jr)){const N="LRU_CACHE_UNBOUNDED";FG(N)&&(dR.add(N),pR("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",N,C_))}}static unsafeExposeInternals(e){return{starts:V(e,_i),ttls:V(e,kn),sizes:V(e,gi),keyMap:V(e,or),keyList:V(e,Lt),valList:V(e,rt),next:V(e,kr),prev:V(e,en),get head(){return V(e,Tr)},get tail(){return V(e,fr)},free:V(e,xn),isBackgroundFetch:t=>{var r;return ze(r=e,Dt,Ft).call(r,t)},backgroundFetch:(t,r,i,a)=>{var s;return ze(s=e,fs,ac).call(s,t,r,i,a)},moveToTail:t=>{var r;return ze(r=e,Ea,bo).call(r,t)},indexes:t=>{var r;return ze(r=e,qn,Ui).call(r,t)},rindexes:t=>{var r;return ze(r=e,Vn,Fi).call(r,t)},isStale:t=>{var r;return V(r=e,tn).call(r,t)}}}get max(){return V(this,Rn)}get maxSize(){return V(this,Jr)}get calculatedSize(){return V(this,Dn)}get size(){return V(this,sr)}get fetchMethod(){return V(this,us)}get dispose(){return V(this,Nn)}get disposeAfter(){return V(this,wn)}getRemainingTTL(e){return V(this,or).has(e)?1/0:0}*entries(){for(const e of ze(this,qn,Ui).call(this))V(this,rt)[e]!==void 0&&V(this,Lt)[e]!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield[V(this,Lt)[e],V(this,rt)[e]])}*rentries(){for(const e of ze(this,Vn,Fi).call(this))V(this,rt)[e]!==void 0&&V(this,Lt)[e]!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield[V(this,Lt)[e],V(this,rt)[e]])}*keys(){for(const e of ze(this,qn,Ui).call(this)){const t=V(this,Lt)[e];t!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield t)}}*rkeys(){for(const e of ze(this,Vn,Fi).call(this)){const t=V(this,Lt)[e];t!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield t)}}*values(){for(const e of ze(this,qn,Ui).call(this))V(this,rt)[e]!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield V(this,rt)[e])}*rvalues(){for(const e of ze(this,Vn,Fi).call(this))V(this,rt)[e]!==void 0&&!ze(this,Dt,Ft).call(this,V(this,rt)[e])&&(yield V(this,rt)[e])}[Symbol.iterator](){return this.entries()}find(e,t={}){for(const r of ze(this,qn,Ui).call(this)){const i=V(this,rt)[r],a=ze(this,Dt,Ft).call(this,i)?i.__staleWhileFetching:i;if(a!==void 0&&e(a,V(this,Lt)[r],this))return this.get(V(this,Lt)[r],t)}}forEach(e,t=this){for(const r of ze(this,qn,Ui).call(this)){const i=V(this,rt)[r],a=ze(this,Dt,Ft).call(this,i)?i.__staleWhileFetching:i;a!==void 0&&e.call(t,a,V(this,Lt)[r],this)}}rforEach(e,t=this){for(const r of ze(this,Vn,Fi).call(this)){const i=V(this,rt)[r],a=ze(this,Dt,Ft).call(this,i)?i.__staleWhileFetching:i;a!==void 0&&e.call(t,a,V(this,Lt)[r],this)}}purgeStale(){let e=!1;for(const t of ze(this,Vn,Fi).call(this,{allowStale:!0}))V(this,tn).call(this,t)&&(this.delete(V(this,Lt)[t]),e=!0);return e}dump(){const e=[];for(const t of ze(this,qn,Ui).call(this,{allowStale:!0})){const r=V(this,Lt)[t],i=V(this,rt)[t],a=ze(this,Dt,Ft).call(this,i)?i.__staleWhileFetching:i;if(a===void 0||r===void 0)continue;const s={value:a};if(V(this,kn)&&V(this,_i)){s.ttl=V(this,kn)[t];const o=po.now()-V(this,_i)[t];s.start=Math.floor(Date.now()-o)}V(this,gi)&&(s.size=V(this,gi)[t]),e.unshift([r,s])}return e}load(e){this.clear();for(const[t,r]of e){if(r.start){const i=Date.now()-r.start;r.start=po.now()-i}this.set(t,r.value,r)}}set(e,t,r={}){var m,_,v,I,R;if(t===void 0)return this.delete(e),this;const{ttl:i=this.ttl,start:a,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:l}=r;let{noUpdateTTL:c=this.noUpdateTTL}=r;const u=V(this,el).call(this,e,t,r.size||0,o);if(this.maxEntrySize&&u>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),this.delete(e),this;let p=V(this,sr)===0?void 0:V(this,or).get(e);if(p===void 0)p=V(this,sr)===0?V(this,fr):V(this,xn).length!==0?V(this,xn).pop():V(this,sr)===V(this,Rn)?ze(this,ps,ic).call(this,!1):V(this,sr),V(this,Lt)[p]=e,V(this,rt)[p]=t,V(this,or).set(e,p),V(this,kr)[V(this,fr)]=p,V(this,en)[p]=V(this,fr),We(this,fr,p),gl(this,sr)._++,V(this,ds).call(this,p,u,l),l&&(l.set="add"),c=!1;else{ze(this,Ea,bo).call(this,p);const x=V(this,rt)[p];if(t!==x){if(V(this,qi)&&ze(this,Dt,Ft).call(this,x)){x.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:$}=x;$!==void 0&&!s&&(V(this,Ln)&&((m=V(this,Nn))==null||m.call(this,$,e,"set")),V(this,Lr)&&((_=V(this,hr))==null||_.push([$,e,"set"])))}else s||(V(this,Ln)&&((v=V(this,Nn))==null||v.call(this,x,e,"set")),V(this,Lr)&&((I=V(this,hr))==null||I.push([x,e,"set"])));if(V(this,ba).call(this,p),V(this,ds).call(this,p,u,l),V(this,rt)[p]=t,l){l.set="replace";const $=x&&ze(this,Dt,Ft).call(this,x)?x.__staleWhileFetching:x;$!==void 0&&(l.oldValue=$)}}else l&&(l.set="update")}if(i!==0&&!V(this,kn)&&ze(this,jo,ag).call(this),V(this,kn)&&(c||V(this,Jo).call(this,p,i,a),l&&V(this,Si).call(this,l,p)),!s&&V(this,Lr)&&V(this,hr)){const x=V(this,hr);let $;for(;$=x==null?void 0:x.shift();)(R=V(this,wn))==null||R.call(this,...$)}return this}pop(){var e;try{for(;V(this,sr);){const t=V(this,rt)[V(this,Tr)];if(ze(this,ps,ic).call(this,!0),ze(this,Dt,Ft).call(this,t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(V(this,Lr)&&V(this,hr)){const t=V(this,hr);let r;for(;r=t==null?void 0:t.shift();)(e=V(this,wn))==null||e.call(this,...r)}}}has(e,t={}){const{updateAgeOnHas:r=this.updateAgeOnHas,status:i}=t,a=V(this,or).get(e);if(a!==void 0){const s=V(this,rt)[a];if(ze(this,Dt,Ft).call(this,s)&&s.__staleWhileFetching===void 0)return!1;if(V(this,tn).call(this,a))i&&(i.has="stale",V(this,Si).call(this,i,a));else return r&&V(this,Oa).call(this,a),i&&(i.has="hit",V(this,Si).call(this,i,a)),!0}else i&&(i.has="miss");return!1}peek(e,t={}){const{allowStale:r=this.allowStale}=t,i=V(this,or).get(e);if(i!==void 0&&(r||!V(this,tn).call(this,i))){const a=V(this,rt)[i];return ze(this,Dt,Ft).call(this,a)?a.__staleWhileFetching:a}}async fetch(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:a=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:l=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:p=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:m=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:v=this.allowStaleOnFetchAbort,context:I,forceRefresh:R=!1,status:x,signal:$}=t;if(!V(this,qi))return x&&(x.fetch="get"),this.get(e,{allowStale:r,updateAgeOnGet:i,noDeleteOnStaleGet:a,status:x});const Z={allowStale:r,updateAgeOnGet:i,noDeleteOnStaleGet:a,ttl:s,noDisposeOnSet:o,size:l,sizeCalculation:c,noUpdateTTL:u,noDeleteOnFetchRejection:p,allowStaleOnFetchRejection:m,allowStaleOnFetchAbort:v,ignoreFetchAbort:_,status:x,signal:$};let h=V(this,or).get(e);if(h===void 0){x&&(x.fetch="miss");const b=ze(this,fs,ac).call(this,e,h,Z,I);return b.__returned=b}else{const b=V(this,rt)[h];if(ze(this,Dt,Ft).call(this,b)){const M=r&&b.__staleWhileFetching!==void 0;return x&&(x.fetch="inflight",M&&(x.returnedStale=!0)),M?b.__staleWhileFetching:b.__returned=b}const S=V(this,tn).call(this,h);if(!R&&!S)return x&&(x.fetch="hit"),ze(this,Ea,bo).call(this,h),i&&V(this,Oa).call(this,h),x&&V(this,Si).call(this,x,h),b;const N=ze(this,fs,ac).call(this,e,h,Z,I),L=N.__staleWhileFetching!==void 0&&r;return x&&(x.fetch=S?"stale":"refresh",L&&S&&(x.returnedStale=!0)),L?N.__staleWhileFetching:N.__returned=N}}get(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:a=this.noDeleteOnStaleGet,status:s}=t,o=V(this,or).get(e);if(o!==void 0){const l=V(this,rt)[o],c=ze(this,Dt,Ft).call(this,l);return s&&V(this,Si).call(this,s,o),V(this,tn).call(this,o)?(s&&(s.get="stale"),c?(s&&r&&l.__staleWhileFetching!==void 0&&(s.returnedStale=!0),r?l.__staleWhileFetching:void 0):(a||this.delete(e),s&&r&&(s.returnedStale=!0),r?l:void 0)):(s&&(s.get="hit"),c?l.__staleWhileFetching:(ze(this,Ea,bo).call(this,o),i&&V(this,Oa).call(this,o),l))}else s&&(s.get="miss")}delete(e){var r,i,a,s;let t=!1;if(V(this,sr)!==0){const o=V(this,or).get(e);if(o!==void 0)if(t=!0,V(this,sr)===1)this.clear();else{V(this,ba).call(this,o);const l=V(this,rt)[o];ze(this,Dt,Ft).call(this,l)?l.__abortController.abort(new Error("deleted")):(V(this,Ln)||V(this,Lr))&&(V(this,Ln)&&((r=V(this,Nn))==null||r.call(this,l,e,"delete")),V(this,Lr)&&((i=V(this,hr))==null||i.push([l,e,"delete"]))),V(this,or).delete(e),V(this,Lt)[o]=void 0,V(this,rt)[o]=void 0,o===V(this,fr)?We(this,fr,V(this,en)[o]):o===V(this,Tr)?We(this,Tr,V(this,kr)[o]):(V(this,kr)[V(this,en)[o]]=V(this,kr)[o],V(this,en)[V(this,kr)[o]]=V(this,en)[o]),gl(this,sr)._--,V(this,xn).push(o)}}if(V(this,Lr)&&((a=V(this,hr))!=null&&a.length)){const o=V(this,hr);let l;for(;l=o==null?void 0:o.shift();)(s=V(this,wn))==null||s.call(this,...l)}return t}clear(){var e,t,r;for(const i of ze(this,Vn,Fi).call(this,{allowStale:!0})){const a=V(this,rt)[i];if(ze(this,Dt,Ft).call(this,a))a.__abortController.abort(new Error("deleted"));else{const s=V(this,Lt)[i];V(this,Ln)&&((e=V(this,Nn))==null||e.call(this,a,s,"delete")),V(this,Lr)&&((t=V(this,hr))==null||t.push([a,s,"delete"]))}}if(V(this,or).clear(),V(this,rt).fill(void 0),V(this,Lt).fill(void 0),V(this,kn)&&V(this,_i)&&(V(this,kn).fill(0),V(this,_i).fill(0)),V(this,gi)&&V(this,gi).fill(0),We(this,Tr,0),We(this,fr,0),V(this,xn).length=0,We(this,Dn,0),We(this,sr,0),V(this,Lr)&&V(this,hr)){const i=V(this,hr);let a;for(;a=i==null?void 0:i.shift();)(r=V(this,wn))==null||r.call(this,...a)}}};Rn=new WeakMap,Jr=new WeakMap,Nn=new WeakMap,wn=new WeakMap,us=new WeakMap,sr=new WeakMap,Dn=new WeakMap,or=new WeakMap,Lt=new WeakMap,rt=new WeakMap,kr=new WeakMap,en=new WeakMap,Tr=new WeakMap,fr=new WeakMap,xn=new WeakMap,hr=new WeakMap,gi=new WeakMap,_i=new WeakMap,kn=new WeakMap,Ln=new WeakMap,qi=new WeakMap,Lr=new WeakMap,jo=new WeakSet,ag=function(){const e=new nc(V(this,Rn)),t=new nc(V(this,Rn));We(this,kn,e),We(this,_i,t),We(this,Jo,(a,s,o=po.now())=>{if(t[a]=s!==0?o:0,e[a]=s,s!==0&&this.ttlAutopurge){const l=setTimeout(()=>{V(this,tn).call(this,a)&&this.delete(V(this,Lt)[a])},s+1);l.unref&&l.unref()}}),We(this,Oa,a=>{t[a]=e[a]!==0?po.now():0}),We(this,Si,(a,s)=>{if(e[s]){const o=e[s],l=t[s];a.ttl=o,a.start=l,a.now=r||i();const c=a.now-l;a.remainingTTL=o-c}});let r=0;const i=()=>{const a=po.now();if(this.ttlResolution>0){r=a;const s=setTimeout(()=>r=0,this.ttlResolution);s.unref&&s.unref()}return a};this.getRemainingTTL=a=>{const s=V(this,or).get(a);if(s===void 0)return 0;const o=e[s],l=t[s];if(o===0||l===0)return 1/0;const c=(r||i())-l;return o-c},We(this,tn,a=>e[a]!==0&&t[a]!==0&&(r||i())-t[a]>e[a])},Oa=new WeakMap,Si=new WeakMap,Jo=new WeakMap,tn=new WeakMap,zc=new WeakSet,hR=function(){const e=new nc(V(this,Rn));We(this,Dn,0),We(this,gi,e),We(this,ba,t=>{We(this,Dn,V(this,Dn)-e[t]),e[t]=0}),We(this,el,(t,r,i,a)=>{if(ze(this,Dt,Ft).call(this,r))return 0;if(!Bi(i))if(a){if(typeof a!="function")throw new TypeError("sizeCalculation must be a function");if(i=a(r,t),!Bi(i))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return i}),We(this,ds,(t,r,i)=>{if(e[t]=r,V(this,Jr)){const a=V(this,Jr)-e[t];for(;V(this,Dn)>a;)ze(this,ps,ic).call(this,!0)}We(this,Dn,V(this,Dn)+e[t]),i&&(i.entrySize=r,i.totalCalculatedSize=V(this,Dn))})},ba=new WeakMap,ds=new WeakMap,el=new WeakMap,qn=new WeakSet,Ui=function*({allowStale:e=this.allowStale}={}){if(V(this,sr))for(let t=V(this,fr);!(!ze(this,tl,sg).call(this,t)||((e||!V(this,tn).call(this,t))&&(yield t),t===V(this,Tr)));)t=V(this,en)[t]},Vn=new WeakSet,Fi=function*({allowStale:e=this.allowStale}={}){if(V(this,sr))for(let t=V(this,Tr);!(!ze(this,tl,sg).call(this,t)||((e||!V(this,tn).call(this,t))&&(yield t),t===V(this,fr)));)t=V(this,kr)[t]},tl=new WeakSet,sg=function(e){return e!==void 0&&V(this,or).get(V(this,Lt)[e])===e},ps=new WeakSet,ic=function(e){var a,s;const t=V(this,Tr),r=V(this,Lt)[t],i=V(this,rt)[t];return V(this,qi)&&ze(this,Dt,Ft).call(this,i)?i.__abortController.abort(new Error("evicted")):(V(this,Ln)||V(this,Lr))&&(V(this,Ln)&&((a=V(this,Nn))==null||a.call(this,i,r,"evict")),V(this,Lr)&&((s=V(this,hr))==null||s.push([i,r,"evict"]))),V(this,ba).call(this,t),e&&(V(this,Lt)[t]=void 0,V(this,rt)[t]=void 0,V(this,xn).push(t)),V(this,sr)===1?(We(this,Tr,We(this,fr,0)),V(this,xn).length=0):We(this,Tr,V(this,kr)[t]),V(this,or).delete(r),gl(this,sr)._--,t},fs=new WeakSet,ac=function(e,t,r,i){const a=t===void 0?void 0:V(this,rt)[t];if(ze(this,Dt,Ft).call(this,a))return a;const s=new Qc,{signal:o}=r;o==null||o.addEventListener("abort",()=>s.abort(o.reason),{signal:s.signal});const l={signal:s.signal,options:r,context:i},c=(I,R=!1)=>{const{aborted:x}=s.signal,$=r.ignoreFetchAbort&&I!==void 0;if(r.status&&(x&&!R?(r.status.fetchAborted=!0,r.status.fetchError=s.signal.reason,$&&(r.status.fetchAbortIgnored=!0)):r.status.fetchResolved=!0),x&&!$&&!R)return p(s.signal.reason);const Z=_;return V(this,rt)[t]===_&&(I===void 0?Z.__staleWhileFetching?V(this,rt)[t]=Z.__staleWhileFetching:this.delete(e):(r.status&&(r.status.fetchUpdated=!0),this.set(e,I,l.options))),I},u=I=>(r.status&&(r.status.fetchRejected=!0,r.status.fetchError=I),p(I)),p=I=>{const{aborted:R}=s.signal,x=R&&r.allowStaleOnFetchAbort,$=x||r.allowStaleOnFetchRejection,Z=$||r.noDeleteOnFetchRejection,h=_;if(V(this,rt)[t]===_&&(!Z||h.__staleWhileFetching===void 0?this.delete(e):x||(V(this,rt)[t]=h.__staleWhileFetching)),$)return r.status&&h.__staleWhileFetching!==void 0&&(r.status.returnedStale=!0),h.__staleWhileFetching;if(h.__returned===h)throw I},m=(I,R)=>{var $;const x=($=V(this,us))==null?void 0:$.call(this,e,a,l);x&&x instanceof Promise&&x.then(Z=>I(Z===void 0?void 0:Z),R),s.signal.addEventListener("abort",()=>{(!r.ignoreFetchAbort||r.allowStaleOnFetchAbort)&&(I(void 0),r.allowStaleOnFetchAbort&&(I=Z=>c(Z,!0)))})};r.status&&(r.status.fetchDispatched=!0);const _=new Promise(m).then(c,u),v=Object.assign(_,{__abortController:s,__staleWhileFetching:a,__returned:void 0});return t===void 0?(this.set(e,v,{...l.options,status:void 0}),t=V(this,or).get(e)):V(this,rt)[t]=v,v},Dt=new WeakSet,Ft=function(e){if(!V(this,qi))return!1;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof Qc},rl=new WeakSet,og=function(e,t){V(this,en)[t]=e,V(this,kr)[e]=t},Ea=new WeakSet,bo=function(e){e!==V(this,fr)&&(e===V(this,Tr)?We(this,Tr,V(this,kr)[e]):ze(this,rl,og).call(this,V(this,en)[e],V(this,kr)[e]),ze(this,rl,og).call(this,V(this,fr),e),We(this,fr,e))};let ig=C_;const Ro=class Ro{constructor(){E(this,"_fallbackMethod",()=>Ro.createSkipProxy());E(this,"out",()=>{})}};E(Ro,"createSkipProxy",()=>{const e=new Ro;return new Proxy(e,{get(t,r,i){return typeof t[r]>"u"?t._fallbackMethod:t[r]},set(t,r,i,a){return!1}})});let qc=Ro;const No=class No extends S_{constructor(t,r){super(r);E(this,"_fallbackMethod",()=>No.createRestProxy(this.values.length,this.app));E(this,"out",()=>{});this.values.length=t}};E(No,"createRestProxy",(t,r)=>{const i=new No(t,r);return new Proxy(i,{get(a,s,o){return typeof a[s]>"u"?a._fallbackMethod:a[s]},set(a,s,o,l){return!1}})});let Vc=No;class YG extends S_{constructor(t,r,i){super(i);E(this,"input");E(this,"ziffers");E(this,"initCallTime",0);E(this,"startCallTime",0);E(this,"lastCallTime",0);E(this,"waitTime",0);E(this,"startBeat",0);E(this,"played",!1);E(this,"current");E(this,"retro",!1);E(this,"index",-1);E(this,"zid","");E(this,"options",{});E(this,"skipIndex",0);E(this,"endTime",0);E(this,"next",()=>(this.current=this.ziffers.next(),this.played=!0,this.current));E(this,"pulseToSecond",t=>this.app.clock.convertPulseToSecond(t));E(this,"firstRun",()=>this.notStarted());E(this,"atTheBeginning",()=>this.skipIndex===0&&this.ziffers.index<=0);E(this,"origin",()=>this.app.clock.pulses_since_origin+1);E(this,"pulse",()=>this.app.clock.time_position.pulse);E(this,"beat",()=>this.app.clock.time_position.beat);E(this,"nextBeat",()=>this.app.clock.next_beat_in_ticks);E(this,"nextBeatInTicks",()=>this.app.clock.next_beat_in_ticks);E(this,"areWeThereYet",()=>{this.app.clock.pulses_since_origin=this.nextBeatInTicks())&&this.origin()>=this.waitTime,r=this.current&&this.pulseToSecond(this.origin())>=this.pulseToSecond(this.lastCallTime)+this.pulseToSecond(this.current.duration*4*this.app.clock.ppqn)&&this.origin()>=this.waitTime,i=t||r;return this.skipIndex=i?0:this.skipIndex+1,this.index=i?this.index+1:this.index,i&&this.notStarted()&&(this.initCallTime=this.app.clock.pulses_since_origin),this.atTheBeginning()&&(this.startCallTime=this.app.clock.pulses_since_origin),i});E(this,"lead",()=>this.voiceleading());E(this,"invert",t=>(this.atTheBeginning()&&this.ziffers.invert(t),this));E(this,"out",()=>{});this.app=i,this.input=t,this.options=r,this.ziffers=new H$(t,r)}get ticks(){return this.ziffers.duration*4*this.app.clock.ppqn}nextEndTime(){return this.startCallTime+this.ticks}updateLastCallTime(){(this.notStarted()||this.played)&&(this.lastCallTime=this.app.clock.pulses_since_origin,this.played=!1)}notStarted(){return this.ziffers.notStarted()}sound(t){if(this.areWeThereYet()){const r=this.next(),i=this.app.clock.convertPulseToSecond(r.duration*4*this.app.clock.ppqn);if(r instanceof ri){const a=r.getExisting("freq","pitch","key","scale","octave","parsedScale");return r.sound&&(t=r.sound),r.soundIndex&&(a.n=r.soundIndex),a.dur=i,new eg(a,this.app).sound(t||"sine")}else if(r instanceof Na){const a=r.pitches.map(o=>o.getExisting("freq","pitch","key","scale","octave","parsedScale")),s={dur:i};return t&&(s.s=t),new eg(s,this.app).chord(a)}else if(r instanceof Km)return Vc.createRestProxy(r.duration,this.app)}else return qc.createSkipProxy()}midi(t=void 0){if(this.areWeThereYet()){const r=this.next(),i=r.getExisting("note","pitch","bend","key","scale","octave","parsedScale");if(r instanceof ri){r.soundIndex&&(i.channel=r.soundIndex);const a=new tg(i,this.app);return t?a.note(t):a}else{if(r instanceof Km)return Vc.createRestProxy(r.duration,this.app);if(r instanceof Na){const a=r.midiChord();return new tg(i,this.app).chord(a)}}}else return qc.createSkipProxy()}scale(t){return this.atTheBeginning()&&this.ziffers.scale(t),this}key(t){return this.atTheBeginning()&&this.ziffers.key(t),this}octave(t){return this.atTheBeginning()&&this.ziffers.octave(t),this}voiceleading(){return this.atTheBeginning()&&this.ziffers.lead(),this}retrograde(){return this.atTheBeginning()&&this.ziffers.retrograde(),this}wait(t){if(this.atTheBeginning()){if(typeof t=="function"){const r=this.app.api.patternCache.get(t.name);return r&&(this.waitTime=r.nextEndTime()),this}this.waitTime=this.origin()+Math.ceil(t*4*this.app.clock.ppqn)}return this}sync(t){if(this.atTheBeginning()&&this.notStarted()){const r=this.app.clock.pulses_since_origin,i=typeof t=="function"?t.name:t;if(r>0){const a=this.app.api.patternCache.get(i);if(a){const s=a.ziffers.duration,o=a.startCallTime,l=s*4*this.app.clock.ppqn;this.waitTime=o+l}}}return this}}const $G=n=>n[0]==="{"&&n[n.length-1]==="}",fo=(n,e)=>{if($G(n)){const t=JSON.parse(n);return JSON.stringify({...t,...e})}else return JSON.stringify({...e,text:n})},GG=n=>{String.prototype.speak=function(){const e=JSON.parse(this.valueOf());new mR({...e,text:e.text}).speak().then(()=>{}).catch(t=>{console.log("Error speaking:",t)})},String.prototype.rate=function(e){return fo(this.valueOf(),{rate:e})},String.prototype.pitch=function(e){return fo(this.valueOf(),{pitch:e})},String.prototype.lang=function(e){return fo(this.valueOf(),{lang:e})},String.prototype.volume=function(e){return fo(this.valueOf(),{volume:e})},String.prototype.voice=function(e){return fo(this.valueOf(),{voice:e})},String.prototype.z=function(e={}){return n.z(this.valueOf(),e)},String.prototype.z0=function(e={}){return n.z0(this.valueOf(),e)},String.prototype.z1=function(e={}){return n.z1(this.valueOf(),e)},String.prototype.z2=function(e={}){return n.z2(this.valueOf(),e)},String.prototype.z3=function(e={}){return n.z3(this.valueOf(),e)},String.prototype.z4=function(e={}){return n.z4(this.valueOf(),e)},String.prototype.z5=function(e={}){return n.z5(this.valueOf(),e)},String.prototype.z6=function(e={}){return n.z6(this.valueOf(),e)},String.prototype.z7=function(e={}){return n.z7(this.valueOf(),e)},String.prototype.z8=function(e={}){return n.z8(this.valueOf(),e)},String.prototype.z9=function(e={}){return n.z9(this.valueOf(),e)},String.prototype.z10=function(e={}){return n.z10(this.valueOf(),e)},String.prototype.z11=function(e={}){return n.z11(this.valueOf(),e)},String.prototype.z12=function(e={}){return n.z12(this.valueOf(),e)},String.prototype.z13=function(e={}){return n.z13(this.valueOf(),e)},String.prototype.z14=function(e={}){return n.z14(this.valueOf(),e)},String.prototype.z15=function(e={}){return n.z15(this.valueOf(),e)},String.prototype.z16=function(e={}){return n.z16(this.valueOf(),e)},String.prototype.note=function(){try{return parseInt(this.valueOf())}catch{return Un(this.valueOf())}}};let qh;class mR{constructor(e){E(this,"speak",()=>new Promise((e,t)=>{if(this.options.text){const r=window.speechSynthesis;r.speaking&&r.cancel();const i=new SpeechSynthesisUtterance(this.options.text);i.rate=this.options.rate||1,i.pitch=this.options.pitch||1,i.volume=this.options.volume||1,this.options.voice&&(i.voice=r.getVoices()[this.options.voice]),this.options.lang&&(this.options.lang.length===2?i.lang=`${this.options.lang}-${this.options.lang.toUpperCase()}`:this.options.lang.length===5?i.lang=this.options.lang:i.lang="en-US"),i.onend=()=>{e()},i.onerror=a=>{t(a)},r.speaking?(r.cancel(),qh&&clearTimeout(qh),qh=setTimeout(()=>{r.speak(i)},200)):r.speak(i)}else t("No text provided")}));this.options=e}}async function gR(){return Promise.all([mG(),Gi("github:tidalcycles/Dirt-Samples/master").then(()=>xG()),BG(),Gi("github:Bubobubobubobubo/Dough-Fox/main"),Gi("github:Bubobubobubobubo/Dough-Samples/main"),Gi("github:Bubobubobubobubo/Dough-Amiga/main"),Gi("github:Bubobubobubobubo/Dough-Amen/main"),Gi("github:Bubobubobubobubo/Dough-Waveforms/main")])}class QG{constructor(e){E(this,"variables",{});E(this,"codeExamples",{});E(this,"counters",{});E(this,"_drunk",new Z$(-100,100,!1));E(this,"randomGen",Math.random);E(this,"currentSeed");E(this,"localSeeds",new Map);E(this,"patternCache",new ig({max:1e3,ttl:1e3*60*5}));E(this,"errorTimeoutID",0);E(this,"printTimeoutID",0);E(this,"MidiConnection");E(this,"scale_aid");E(this,"load");E(this,"_loadUniverseFromInterface",e=>{wc(this.app,e),Dc()});E(this,"_deleteUniverseFromInterface",e=>{delete this.app.universes[e],this.app.settings.saveApplicationToLocalStorage(this.app.universes,this.app.settings),this.app.updateKnownUniversesView()});E(this,"_playDocExample",e=>{let t=this.app.universes[this.app.selected_universe];this.app.exampleIsPlaying=!0,t.example?t.example.candidate=e||this.app.selectedExample:(t.example={candidate:"",committed:"",evaluations:0},t.example.candidate=e||this.app.selectedExample),this.play()});E(this,"_stopDocExample",()=>{let e=this.app.universes[this.app.selected_universe];(e==null?void 0:e.example)!==void 0&&(this.app.exampleIsPlaying=!1,e.example.candidate="",e.example.committed=""),this.pause()});E(this,"_playDocExampleOnce",e=>{let t=this.app.universes[this.app.selected_universe];(t==null?void 0:t.example)!==void 0&&(t.example.candidate="",t.example.committed=""),this.play(),this.app.exampleIsPlaying=!0,AL(this.app,e)});E(this,"_all_samples",()=>E_.get());E(this,"_reportError",e=>{console.log(e),clearTimeout(this.errorTimeoutID),clearTimeout(this.printTimeoutID),this.app.interface.error_line.innerHTML=e,this.app.interface.error_line.style.color="color-red-800",this.app.interface.error_line.classList.remove("hidden"),this.errorTimeoutID=setTimeout(()=>this.app.interface.error_line.classList.add("hidden"),2e3)});E(this,"_logMessage",e=>{console.log(e),clearTimeout(this.printTimeoutID),clearTimeout(this.errorTimeoutID),this.app.interface.error_line.innerHTML=e,this.app.interface.error_line.style.color="white",this.app.interface.error_line.classList.remove("hidden"),this.printTimeoutID=setTimeout(()=>this.app.interface.error_line.classList.add("hidden"),4e3)});E(this,"time",()=>this.app.audioContext.currentTime);E(this,"play",()=>{this.app.setButtonHighlighting("play",!0),this.MidiConnection.sendStartMessage(),this.app.clock.start()});E(this,"pause",()=>{this.app.setButtonHighlighting("pause",!0),this.MidiConnection.sendStopMessage(),this.app.clock.pause()});E(this,"stop",()=>{this.app.setButtonHighlighting("stop",!0),this.MidiConnection.sendStopMessage(),this.app.clock.stop()});E(this,"silence",this.stop);E(this,"hush",this.stop);E(this,"warp",e=>{this.app.clock.tick=e,this.app.clock.time_position=this.app.clock.convertTicksToTimeposition(e)});E(this,"beat_warp",e=>{this.app.clock.tick=e*this.app.clock.ppqn,this.app.clock.time_position=this.app.clock.convertTicksToTimeposition(e*this.app.clock.ppqn)});E(this,"onmousemove",e=>{this.app._mouseX=e.pageX,this.app._mouseY=e.pageY});E(this,"mouseX",()=>this.app._mouseX);E(this,"mouseY",()=>this.app._mouseY);E(this,"noteX",()=>Math.floor(this.app._mouseX/document.body.clientWidth*127));E(this,"noteY",()=>Math.floor(this.app._mouseY/document.body.clientHeight*127));E(this,"script",(...e)=>{e.forEach(t=>{Ra(this.app,this.app.universes[this.app.selected_universe].locals[t])})});E(this,"s",this.script);E(this,"delete_script",e=>{this.app.universes[this.app.selected_universe].locals[e]={candidate:"",committed:"",evaluations:0}});E(this,"cs",this.delete_script);E(this,"copy_script",(e,t)=>{this.app.universes[this.app.selected_universe].locals[t]={...this.app.universes[this.app.selected_universe].locals[e]}});E(this,"cps",this.copy_script);E(this,"copy_universe",(e,t)=>{this.app.universes[t]={...this.app.universes[e]}});E(this,"delete_universe",e=>{this.app.selected_universe===e&&(this.app.selected_universe="Default"),delete this.app.universes[e],this.app.settings.saveApplicationToLocalStorage(this.app.universes,this.app.settings),this.app.updateKnownUniversesView()});E(this,"big_bang",()=>{confirm("Are you sure you want to delete all universes?")&&(this.app.universes={...Xo},this.app.settings.saveApplicationToLocalStorage(this.app.universes,this.app.settings)),this.app.selected_universe="Default",this.app.updateKnownUniversesView()});E(this,"midi_outputs",()=>{this._logMessage(this.MidiConnection.listMidiOutputs())});E(this,"midi_output",e=>{e?this.MidiConnection.switchMidiOutput(e):console.log(this.MidiConnection.getCurrentMidiPort())});E(this,"midi",(e=60,t,r)=>(t!==void 0&&(typeof e=="number"&&(e={note:e}),e.velocity=t),r!==void 0&&(typeof e=="number"&&(e={note:e}),e.channel=r),new tg(e,this.app)));E(this,"sysex",e=>{this.MidiConnection.sendSysExMessage(e)});E(this,"pitch_bend",(e,t)=>{this.MidiConnection.sendPitchBend(e,t)});E(this,"program_change",(e,t)=>{this.MidiConnection.sendProgramChange(e,t)});E(this,"midi_clock",()=>{this.MidiConnection.sendMidiClock()});E(this,"control_change",({control:e=20,value:t=0,channel:r=0})=>{this.MidiConnection.sendMidiControlChange(e,t,r)});E(this,"midi_panic",()=>{this.MidiConnection.panic()});E(this,"active_note_events",e=>{let t;if(e?t=this.MidiConnection.activeNotesFromChannel(e):t=this.MidiConnection.activeNotes,t.length>0)return t});E(this,"active_notes",e=>{const t=this.active_note_events(e);if(t&&t.length>0)return t.map(r=>r.note)});E(this,"kill_active_notes",()=>{this.MidiConnection.activeNotes=[]});E(this,"sticky_notes",e=>{let t;if(e?t=this.MidiConnection.stickyNotesFromChannel(e):t=this.MidiConnection.stickyNotes,t.length>0)return t.map(r=>r.note)});E(this,"kill_sticky_notes",()=>{this.MidiConnection.stickyNotes=[]});E(this,"buffer",e=>e?this.MidiConnection.findNoteFromBufferInChannel(e)!==void 0:this.MidiConnection.noteInputBuffer.length>0);E(this,"buffer_event",e=>e?this.MidiConnection.findNoteFromBufferInChannel(e):this.MidiConnection.noteInputBuffer.shift());E(this,"buffer_note",e=>{const t=this.buffer_event(e);return t?t.note:void 0});E(this,"last_note_event",e=>e?this.MidiConnection.lastNoteInChannel[e]:this.MidiConnection.lastNote);E(this,"last_note",e=>{const t=this.last_note_event(e);return t?t.note:60});E(this,"last_cc",(e,t)=>t?this.MidiConnection.lastCCInChannel[t]?this.MidiConnection.lastCCInChannel[t][e]:0:this.MidiConnection.lastCC[e]||0);E(this,"has_cc",e=>e?this.MidiConnection.findCCFromBufferInChannel(e)!==void 0:this.MidiConnection.ccInputBuffer.length>0);E(this,"buffer_cc",e=>e?this.MidiConnection.findCCFromBufferInChannel(e):this.MidiConnection.ccInputBuffer.shift());E(this,"show_scale",(e,t,r=0,i=this.MidiConnection.currentOutputIndex||0,a=!1)=>{(!this.scale_aid||t!==this.scale_aid)&&(this.hide_scale(e,t,r,i),M$(t,e).forEach(o=>{this.MidiConnection.sendMidiOn(o,r,1,i),a&&this.MidiConnection.sendAllSoundOff(r,i)}),this.scale_aid=t)});E(this,"hide_scale",(e=0,t=0,r=0,i=this.MidiConnection.currentOutputIndex||0)=>{Array.from(Array(128).keys()).forEach(s=>{this.MidiConnection.sendMidiOff(s,r,i)}),this.scale_aid=void 0});E(this,"midi_notes_off",(e=0,t=this.MidiConnection.currentOutputIndex||0)=>{this.MidiConnection.sendAllNotesOff(e,t)});E(this,"midi_sound_off",(e=0,t=this.MidiConnection.currentOutputIndex||0)=>{this.MidiConnection.sendAllSoundOff(e,t)});E(this,"generateCacheKey",(...e)=>e.map(t=>JSON.stringify(t)).join(","));E(this,"z",(e,t={},r="")=>{const i="z"+r.toString(),a=r===""?this.generateCacheKey(e,t):i;let s;return this.app.api.patternCache.has(a)&&(s=this.app.api.patternCache.get(a),s.input!==e&&(s=void 0)),s||(s=new YG(e,t,this.app),this.app.api.patternCache.set(a,s)),typeof r=="number"&&(s.zid=i),s.updateLastCallTime(),r!==""&&s.sync("z0"),s});E(this,"z0",(e,t={})=>this.z(e,t,0));E(this,"z1",(e,t={})=>this.z(e,t,1));E(this,"z2",(e,t={})=>this.z(e,t,2));E(this,"z3",(e,t={})=>this.z(e,t,3));E(this,"z4",(e,t={})=>this.z(e,t,4));E(this,"z5",(e,t={})=>this.z(e,t,5));E(this,"z6",(e,t={})=>this.z(e,t,6));E(this,"z7",(e,t={})=>this.z(e,t,7));E(this,"z8",(e,t={})=>this.z(e,t,8));E(this,"z9",(e,t={})=>this.z(e,t,9));E(this,"z10",(e,t={})=>this.z(e,t,10));E(this,"z11",(e,t={})=>this.z(e,t,11));E(this,"z12",(e,t={})=>this.z(e,t,12));E(this,"z13",(e,t={})=>this.z(e,t,13));E(this,"z14",(e,t={})=>this.z(e,t,14));E(this,"z15",(e,t={})=>this.z(e,t,15));E(this,"z16",(e,t={})=>this.z(e,t,16));E(this,"counter",(e,t,r)=>(e in this.counters?(this.counters[e].limit!==t&&(this.counters[e].value=0,this.counters[e].limit=t),this.counters[e].step!==r&&(this.counters[e].step=r??this.counters[e].step),this.counters[e].value+=this.counters[e].step,this.counters[e].limit!==void 0&&this.counters[e].value>this.counters[e].limit&&(this.counters[e].value=0)):this.counters[e]={value:0,step:r??1,limit:t},this.counters[e].value));E(this,"$",this.counter);E(this,"i",e=>e!==void 0?(this.app.universes[this.app.selected_universe].global.evaluations=e,this.app.universes[this.app.selected_universe]):this.app.universes[this.app.selected_universe].global.evaluations);E(this,"drunk",e=>e!==void 0?(this._drunk.position=e,this._drunk.getPosition()):(this._drunk.step(),this._drunk.getPosition()));E(this,"drunk_max",e=>{this._drunk.max=e});E(this,"drunk_min",e=>{this._drunk.min=e});E(this,"drunk_wrap",e=>{this._drunk.toggleWrap(e)});E(this,"variable",(e,t)=>typeof e=="string"&&t===void 0?this.variables[e]:(this.variables[e]=t,this.variables[e]));E(this,"v",this.variable);E(this,"delete_variable",e=>{delete this.variables[e]});E(this,"dv",this.delete_variable);E(this,"clear_variables",()=>{this.variables={}});E(this,"cv",this.clear_variables);E(this,"randI",(e,t)=>Math.floor(this.randomGen()*(t-e+1))+e);E(this,"rand",(e,t)=>this.randomGen()*(t-e)+e);E(this,"irand",this.randI);E(this,"rI",this.randI);E(this,"r",this.rand);E(this,"ir",this.randI);E(this,"seed",e=>{typeof e=="number"&&(e=e.toString()),this.currentSeed!==e&&(this.currentSeed=e,this.randomGen=Zm(e))});E(this,"localSeededRandom",e=>{if(typeof e=="number"&&(e=e.toString()),this.localSeeds.has(e))return this.localSeeds.get(e);const t=Zm(e);return this.localSeeds.set(e,t),t});E(this,"clearLocalSeed",(e=void 0)=>{e&&this.localSeeds.delete(e.toString()),this.localSeeds.clear()});E(this,"quantize",(e,t)=>{if(t.length===0)return e;let r=t[0];return t.forEach(i=>{Math.abs(i-e)Math.min(Math.max(e,t),r));E(this,"cmp",this.clamp);E(this,"nudge",e=>(e&&(this.app.clock.nudge=e),this.app.clock.nudge));E(this,"bpm",e=>e===void 0?this.app.clock.bpm:((e<1||e>500)&&console.log(`Setting bpm to ${e}`),this.app.clock.bpm=e,e));E(this,"tempo",this.bpm);E(this,"bpb",e=>e===void 0?this.app.clock.time_signature[0]:(e<1&&console.log(`Setting bpb to ${e}`),this.app.clock.time_signature[0]=e,e));E(this,"ppqn",e=>e===void 0?this.app.clock.ppqn:(e<1&&console.log(`Setting ppqn to ${e}`),this.app.clock.ppqn=e,e));E(this,"time_signature",(e,t)=>{this.app.clock.time_signature=[e,t]});E(this,"prob",e=>this.randomGen()*100this.randomGen()>.5);E(this,"odds",(e,t=1)=>this.randomGen()!1);E(this,"almostNever",(e=1)=>this.randomGen()<.025*this.ppqn()/(this.ppqn()*e));E(this,"rarely",(e=1)=>this.randomGen()<.1*this.ppqn()/(this.ppqn()*e));E(this,"scarcely",(e=1)=>this.randomGen()<.25*this.ppqn()/(this.ppqn()*e));E(this,"sometimes",(e=1)=>this.randomGen()<.5*this.ppqn()/(this.ppqn()*e));E(this,"often",(e=1)=>this.randomGen()<.75*this.ppqn()/(this.ppqn()*e));E(this,"frequently",(e=1)=>this.randomGen()<.9*this.ppqn()/(this.ppqn()*e));E(this,"almostAlways",(e=1)=>this.randomGen()<.985*this.ppqn()/(this.ppqn()*e));E(this,"always",(e=1)=>!0);E(this,"dice",e=>Math.floor(this.randomGen()*e)+1);E(this,"cbar",()=>this.app.clock.time_position.bar+1);E(this,"ctick",()=>this.app.clock.tick+1);E(this,"cpulse",()=>this.app.clock.time_position.pulse+1);E(this,"cbeat",()=>this.app.clock.time_position.beat+1);E(this,"ebeat",()=>this.app.clock.beats_since_origin+1);E(this,"epulse",()=>this.app.clock.pulses_since_origin+1);E(this,"nominator",()=>this.app.clock.time_signature[0]);E(this,"meter",()=>this.app.clock.time_signature[1]);E(this,"denominator",this.meter);E(this,"fill",()=>this.app.fill);E(this,"beat",(e=1,t=0)=>(Array.isArray(e)?e:[e]).map(a=>(this.app.clock.pulses_since_origin-Math.floor(t*this.ppqn()))%Math.floor(a*this.ppqn())===0).some(a=>a===!0));E(this,"b",this.beat);E(this,"bar",(e=1,t=0)=>{const r=Array.isArray(e)?e:[e],i=this.app.clock.time_signature[1]*this.ppqn(),a=Math.floor(t*i);return r.map(o=>(this.app.clock.pulses_since_origin-a)%Math.floor(o*i)===0).some(o=>o===!0)});E(this,"B",this.bar);E(this,"pulse",(e=1,t=0)=>(Array.isArray(e)?e:[e]).map(a=>(this.app.clock.pulses_since_origin-t)%a===0).some(a=>a===!0));E(this,"p",this.pulse);E(this,"tick",(e,t=0)=>(Array.isArray(e)?e:[e]).map(a=>this.app.clock.time_position.pulse===a+t).some(a=>a===!0));E(this,"flip",(e,t=50)=>{let r=e*2;const i=this.app.clock.pulses_since_origin,a=Math.floor(r*this.ppqn()),s=Math.floor(t/100*a);return i%a{let t=e*2;const r=this.app.clock.time_position.bar;return Math.floor(r/t)%2===0});E(this,"onbar",(e,t=this.app.clock.time_signature[0])=>{let r=this.app.clock.time_position.bar%t+1;return typeof e=="number"?e===r:e.some(i=>i==r)});E(this,"onbeat",(...e)=>{let t=[];return e.forEach(r=>{let i=r%this.nominator()||this.nominator(),a=Math.floor(i);a=a==0?this.nominator():a;let s=Math.floor((i-a)*this.ppqn()+1);s<=0&&(s=s+this.ppqn()*this.nominator()),t.push(a===this.cbeat()&&this.cpulse()===s)}),t.some(r=>r==!0)});E(this,"oncount",(e,t)=>{typeof e=="number"&&(e=[e]);const r=this.app.clock.pulses_since_origin;let i=[];return e.forEach(a=>{a=a<1?0:a-1;const s=Math.ceil(a*this.ppqn()),o=r%(this.ppqn()*t);return i.push(o===s)}),i.some(a=>a==!0)});E(this,"oneuclid",(e,t,r=0)=>{const a=this._euclidean_cycle(e,t,r).reduce((s,o,l)=>(o&&s.push(l+1),s),[]);return this.oncount(a,t)});E(this,"delay",(e,t)=>{setTimeout(t,e)});E(this,"delayr",(e,t,r)=>{[...Array(t).keys()].map(a=>e*a).forEach((a,s)=>{setTimeout(r,a)})});E(this,"euclid",(e,t,r,i=0)=>this._euclidean_cycle(t,r,i)[e%r]);E(this,"ec",this.euclid);E(this,"rhythm",(e,t,r,i=0)=>this.beat(e)&&this._euclidean_cycle(t,r,i).beat(e));E(this,"bin",(e,t)=>{let i=t.toString(2).split("").map(a=>a==="1");return i[e%i.length]});E(this,"binrhythm",(e,t)=>{let i=t.toString(2).split("").map(a=>a==="1");return this.beat(e)&&i.beat(e)});E(this,"line",(e,t,r=1)=>{const i=[];if(t>e&&r>0||t(Math.sin(this.app.clock.ctx.currentTime*Math.PI*2*e)+r)*t);E(this,"usine",(e=1,t=1,r=0)=>(this.sine(e,r)+1)/2*t);E(this,"saw",(e=1,t=1,r=0)=>(this.app.clock.ctx.currentTime*e%1*2-1+r)*t);E(this,"usaw",(e=1,t=1,r=0)=>(this.saw(e,r)+1)/2*t);E(this,"triangle",(e=1,t=1,r=0)=>(Math.abs(this.saw(e,r))*2-1)*t);E(this,"utriangle",(e=1,t=1,r=0)=>(this.triangle(e,r)+1)/2*t);E(this,"square",(e=1,t=1,r=0,i=.5)=>{const a=1/e;return((Date.now()/1e3+r)%a/a(this.square(e,r,i)+1)/2*t);E(this,"noise",(e=1)=>(this.randomGen()*2-1)*e);E(this,"min",(...e)=>Math.min(...e));E(this,"max",(...e)=>Math.max(...e));E(this,"mean",(...e)=>e.reduce((r,i)=>r+i,0)/e.length);E(this,"range",(e,t,r,i,a)=>(e-t)/(r-t)*(a-i)+i);E(this,"limit",(e,t,r)=>Math.min(Math.max(e,t),r));E(this,"abs",Math.abs);E(this,"speak",(e,t="en-US",r=0,i=1,a=1)=>{new mR({text:e,lang:t,voice:r,rate:i,pitch:a}).speak().then(()=>{}).catch(o=>{console.log(o)})});E(this,"stop_hydra",()=>{this.app.hydra.hush()});E(this,"sound",e=>new eg(e,this.app));E(this,"snd",this.sound);E(this,"samples",Gi);E(this,"log",e=>{console.log(e),this._logMessage(e)});E(this,"scale",__);E(this,"rate",e=>{});E(this,"divseq",(...e)=>{const t=e[0],r=e.slice(1),i=this.app.clock.pulses_since_origin,a=Math.floor(i/Math.floor(t*this.ppqn()));return r[a%r.length]});E(this,"seqbeat",(...e)=>e[this.app.clock.time_position.beat%e.length]);E(this,"seqbar",(...e)=>e[(this.app.clock.time_position.bar+1)%e.length]);E(this,"shuffle",e=>e.sort(()=>this.randomGen()-.5));E(this,"reverse",e=>e.reverse());E(this,"rotate",e=>t=>t.slice(e,t.length).concat(t.slice(0,e)));E(this,"repeat",e=>t=>t.flatMap(r=>Array(e).fill(r)));E(this,"repeatOdd",e=>t=>t.flatMap((r,i)=>i%2===0?Array(e).fill(r):r));E(this,"repeatEven",e=>t=>t.flatMap((r,i)=>i%2!==0?Array(e).fill(r):r));E(this,"palindrome",e=>e.concat(e.slice(0,e.length-1).reverse()));this.app=e,this.MidiConnection=new X$(this,e.settings)}transmission(){return this.MidiConnection.activeNotes.length>0}_euclidean_cycle(e,t,r=0){if(e==t)return Array.from({length:t},()=>!0);function i(o,l){const c=o.length,u=(l+1)%c;return o[l]>o[u]}if(e>=t)return[!0];const a=Array.from({length:t},(o,l)=>(e*(l-1)%t+t)%t);let s=a.map((o,l)=>i(a,l));return r!=0&&(s=s.slice(r).concat(s.slice(0,r))),s}}const qG=n=>{Array.prototype.square=function(){return this.map(e=>e*e)},Array.prototype.sometimes=function(e){return n.randomGen()<.5?e(this):this},Array.prototype.apply=function(e){return e(this)},Array.prototype.sqrt=function(){if(this.some(e=>e<0))throw new Error("Cannot take square root of negative number");return this.map(e=>Math.sqrt(e))},Array.prototype.add=function(e){return this.map(t=>t+e)},Array.prototype.sub=function(e){return this.map(t=>t-e)},Array.prototype.mult=function(e){return this.map(t=>t*e)},Array.prototype.div=function(e){if(e===0)throw new Error("Division by zero");return this.map(t=>t/e)},Array.prototype.pick=function(){return this[Math.floor(n.randomGen()*this.length)]},Array.prototype.gen=function(e,t,r){return r<1?[]:Array.from({length:r},()=>Math.floor(n.randomGen()*(t-e+1))+e)},Array.prototype.bar=function(e=1){return e===1?this[n.app.clock.time_position.bar%this.length]:this[Math.floor(n.app.clock.time_position.bar/e)%this.length]},Array.prototype.beat=function(e=1){const t=e,r=n.app.clock.pulses_since_origin,i=Math.floor(r/Math.floor(t*n.ppqn()));return this[i%this.length]},Array.prototype.b=Array.prototype.beat,Array.prototype.shuffle=function(){let e=this.length,t;for(;e!==0;)t=Math.floor(n.randomGen()*e),e--,[this[e],this[t]]=[this[t],this[e]];return this},Array.prototype.rotate=function(e){const t=this.length;if(e<0)e=t+e%t;else if(e>0)e=e%t;else return this;const r=this.splice(-e,e);return this.unshift(...r),this},Array.prototype.unique=function(){const e=new Set;let t=0;for(let r=0;r100)throw new Error("Amount should be between 0 and 100");if(this.length<=1)return this;for(let t=0;t1)this.splice(t,1);else return this;else t++;return this},Array.prototype.repeat=function(e=1){if(e<1)throw new Error("Amount should be at least 1");let t=[];for(let r=0;r(i%a+a)%a,r=nR(Ds(n));return this.map(i=>{const a=Math.floor(i/r.length)*12;return r[t(i,r.length)]+e+a})};Array.prototype.scaleArp=function(n="major",e=0){const t=nR(Ds(n));let r=[];e=e>t.length?t.length:e,e=e==0?t.length:e;for(let i=0;i{n.interface.line_numbers_checkbox.checked=n.settings.line_numbers,n.interface.time_position_checkbox.checked=n.settings.time_position,n.interface.tips_checkbox.checked=n.settings.tips,n.interface.midi_clock_checkbox.checked=n.settings.send_clock,n.interface.midi_channels_scripts.checked=n.settings.midi_channels_scripts,n.interface.midi_clock_ppqn.value=n.settings.midi_clock_ppqn.toString(),n.settings.time_position||n.interface.timeviewer.classList.add("hidden"),n.interface.load_demo_songs.checked=n.settings.load_demo_songs;const e=document.querySelectorAll('[id^="tab-"]');for(let t=0;t{e[t].classList.add("bg-orange-300");for(let s=0;s{hi(),n.updateKnownUniversesView(),Dc()}),n.buttonElements.play_buttons.forEach(t=>{t.addEventListener("click",()=>{n.isPlaying?(n.setButtonHighlighting("pause",!0),n.isPlaying=!n.isPlaying,n.clock.pause(),n.api.MidiConnection.sendStopMessage()):(n.setButtonHighlighting("play",!0),n.isPlaying=!n.isPlaying,n.clock.start(),n.api.MidiConnection.sendStartMessage())})}),n.buttonElements.clear_buttons.forEach(t=>{t.addEventListener("click",()=>{n.setButtonHighlighting("clear",!0),confirm("Do you want to reset the current universe?")&&(n.universes[n.selected_universe]=structuredClone(Xg),n.updateEditorView())})}),n.interface.documentation_button.addEventListener("click",()=>{QI(n)}),n.interface.destroy_universes_button.addEventListener("click",()=>{confirm("Do you want to destroy all universes?")&&(n.universes={...Xo},n.updateKnownUniversesView())}),n.interface.audio_nudge_range.addEventListener("input",()=>{n.clock.nudge=parseInt(n.interface.audio_nudge_range.value)}),n.interface.dough_nudge_range.addEventListener("input",()=>{n.dough_nudge=parseInt(n.interface.dough_nudge_range.value)}),n.interface.upload_universe_button.addEventListener("click",()=>{const t=document.createElement("input");t.type="file",t.accept=".json",t.addEventListener("change",r=>{var s;const a=(s=r.target.files)==null?void 0:s[0];if(a){const o=new FileReader;o.readAsText(a,"UTF-8"),o.onload=l=>{const c=JSON.parse(l.target.result);for(const[u,p]of Object.entries(c))n.universes[u]=p},o.onerror=l=>{console.error("An error occurred reading the file:",l)}}}),document.body.appendChild(t),t.click(),document.body.removeChild(t)}),n.interface.download_universe_button.addEventListener("click",()=>{n.settings.saveApplicationToLocalStorage(n.universes,n.settings);let t=`topos-universes-${Date.now()}.json`;const r=new Blob([JSON.stringify(n.settings.universes)],{type:"application/json"}),i=URL.createObjectURL(r),a=document.createElement("a");a.href=i,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}),n.interface.load_universe_button.addEventListener("click",()=>{let t=n.interface.buffer_search.value;t.length>2&&t.length<20&&!t.includes(" ")&&(wc(n,t),n.settings.selected_universe=t,n.interface.buffer_search.value="",Qm(),n.view.focus(),kA())}),n.interface.eval_button.addEventListener("click",()=>{n.currentFile().candidate=n.view.state.doc.toString(),n.flashBackground("#404040",200)}),n.buttonElements.stop_buttons.forEach(t=>{t.addEventListener("click",()=>{n.setButtonHighlighting("stop",!0),n.isPlaying=!1,n.clock.stop()})}),n.interface.local_button.addEventListener("click",()=>n.changeModeFromInterface("local")),n.interface.global_button.addEventListener("click",()=>n.changeModeFromInterface("global")),n.interface.init_button.addEventListener("click",()=>n.changeModeFromInterface("init")),n.interface.note_button.addEventListener("click",()=>n.changeModeFromInterface("notes")),n.interface.font_family_selector.addEventListener("change",()=>{n.interface.font_family_selector.value}),n.interface.font_size_input.addEventListener("input",()=>{let t=n.interface.font_size_input.value;n.settings.font_size=parseInt(t)}),n.interface.settings_button.addEventListener("click",()=>{const t=n.interface.dough_nudge_range;t.value=n.dough_nudge.toString();const r=document.getElementById("doughnumber");r.value=n.dough_nudge.toString(),n.interface.font_family_selector.value=n.settings.font,n.settings.font_size===null&&(n.settings.font_size=12);const i=n.interface.font_size_input;i.value=n.settings.font_size.toString();const a=n.interface.line_numbers_checkbox;a.checked=n.settings.line_numbers;const s=n.interface.time_position_checkbox;s.checked=n.settings.time_position;const o=n.interface.tips_checkbox;o.checked=n.settings.tips;const l=n.interface.midi_clock_checkbox;l.checked=n.settings.send_clock;const c=n.interface.midi_channels_scripts;c.checked=n.settings.midi_channels_scripts;const u=n.interface.midi_clock_ppqn;u.value=n.settings.midi_clock_ppqn.toString();const p=n.interface.load_demo_songs;p.checked=n.settings.load_demo_songs;const m=n.interface.vim_mode_checkbox;m.checked=n.settings.vimMode;let _=document.getElementById("modal-settings"),v=document.getElementById("editor");_==null||_.classList.remove("invisible"),v==null||v.classList.add("invisible")}),n.interface.close_settings_button.addEventListener("click",()=>{let t=document.getElementById("modal-settings"),r=document.getElementById("editor");t==null||t.classList.add("invisible"),r==null||r.classList.remove("invisible"),n.view.dispatch({effects:n.fontSize.reconfigure(Be.theme({"&":{fontSize:n.settings.font_size+"px"},"&content":{fontFamily:n.settings.font,fontSize:n.settings.font_size+"px"},".cm-gutters":{fontSize:n.settings.font_size+"px"}}))})}),n.interface.close_universes_button.addEventListener("click",()=>{Dc()}),n.interface.share_button.addEventListener("click",async()=>{n.currentFile().candidate=n.view.state.doc.toString(),n.currentFile().committed=n.view.state.doc.toString(),n.settings.saveApplicationToLocalStorage(n.universes,n.settings),await NL(n)}),n.interface.vim_mode_checkbox.addEventListener("change",()=>{let t=!!n.interface.vim_mode_checkbox.checked;n.settings.vimMode=t,n.view.dispatch({effects:n.vimModeCompartment.reconfigure(t?o_():[])})}),n.interface.line_numbers_checkbox.addEventListener("change",()=>{let r=!!n.interface.line_numbers_checkbox.checked;n.settings.line_numbers=r,n.view.dispatch({effects:n.withLineNumbers.reconfigure(r?[WC()]:[])})}),n.interface.time_position_checkbox.addEventListener("change",()=>{let t=document.getElementById("timeviewer"),r=!!n.interface.time_position_checkbox.checked;n.settings.time_position=r,r?t.classList.remove("hidden"):t.classList.add("hidden")}),n.interface.tips_checkbox.addEventListener("change",()=>{let t=!!n.interface.tips_checkbox.checked;n.settings.tips=t,n.view.dispatch({effects:n.hoveringCompartment.reconfigure(t?KI:[])})}),n.interface.midi_clock_checkbox.addEventListener("change",()=>{let t=!!n.interface.midi_clock_checkbox.checked;n.settings.send_clock=t}),n.interface.midi_channels_scripts.addEventListener("change",()=>{let t=!!n.interface.midi_channels_scripts.checked;n.settings.midi_channels_scripts=t}),n.interface.midi_clock_ppqn.addEventListener("change",()=>{let t=parseInt(n.interface.midi_clock_ppqn.value);n.settings.midi_clock_ppqn=t}),n.interface.load_demo_songs.addEventListener("change",()=>{let t=!!n.interface.load_demo_songs.checked;n.settings.load_demo_songs=t}),n.interface.universe_creator.addEventListener("submit",t=>{t.preventDefault();let i=new FormData(n.interface.universe_creator).get("universe");i&&i.length>2&&i.length<20&&(wc(n,i),n.settings.selected_universe=i,n.interface.buffer_search.value="",Qm(),n.view.focus())}),Ra(n,n.universes[n.selected_universe.toString()].init),["introduction","interface","interaction","code","time","sound","samples","synths","chaining","patterns","ziffers","midi","functions","lfos","probabilities","variables","shortcuts","about","bonus"].forEach(t=>{let r="docs_"+t;document.getElementById(r).addEventListener("click",async()=>{r!=="docs_samples"?(n.currentDocumentationPane=t,Xm(n)):(console.log("Loading samples!"),await gR().then(()=>{n.docs=GI(n),n.currentDocumentationPane=t,Xm(n)}))})})},zG=(n,e,t=!1)=>{e.addEventListener("beforeunload",()=>(event.preventDefault(),n.currentFile().candidate=n.view.state.doc.toString(),n.currentFile().committed=n.view.state.doc.toString(),n.settings.saveApplicationToLocalStorage(n.universes,n.settings),n.clock.stop(),null)),t&&(localStorage.openpages=Date.now(),e.addEventListener("storage",function(r){r.key=="openpages"&&(localStorage.page_available=Date.now()),r.key=="page_available"&&(document.getElementById("all").classList.add("invisible"),alert("Topos is already opened in another tab. Close this tab now to prevent data loss."))},!1))};class HG{constructor(){E(this,"settings",new IL);E(this,"universes",Xo);E(this,"selected_universe","Welcome");E(this,"fill",!1);E(this,"local_index",1);E(this,"editor_mode","global");E(this,"fontSize");E(this,"withLineNumbers");E(this,"vimModeCompartment");E(this,"hoveringCompartment");E(this,"chosenLanguage");E(this,"dynamicPlugins");E(this,"currentDocumentationPane","introduction");E(this,"exampleCounter",0);E(this,"exampleIsPlaying",!1);E(this,"editorExtensions",[]);E(this,"userPlugins",[]);E(this,"state");E(this,"view");E(this,"selectedExample","");E(this,"docs",{});E(this,"_mouseX",0);E(this,"_mouseY",0);E(this,"show_error",!1);E(this,"buttonElements",{});E(this,"interface",{});E(this,"api");E(this,"audioContext");E(this,"clock");E(this,"dough_nudge",20);E(this,"manualPlay",!1);E(this,"isPlaying",!1);E(this,"hydra_backend");E(this,"hydra");E(this,"updateKnownUniversesView",()=>{let e=document.getElementById("ui-known-universe-item-template");if(!e){console.warn("Missing template #ui-known-universe-item-template");return}let t=document.getElementById("existing-universes");if(!t){console.warn("Missing element #existing-universes");return}let r=document.createElement("ul");r.className="lg:h-80 lg:text-normal text-sm h-auto lg:w-80 w-auto lg:pb-2 lg:pt-2 overflow-y-scroll text-white lg:mb-4 border rounded-lg bg-neutral-800",r.append(...Object.keys(this.universes).map(i=>{var o,l;let a=e.content.cloneNode(!0),s=window;return a.querySelector(".universe-name").textContent=i,(o=a.querySelector(".load-universe"))==null||o.addEventListener("click",()=>s._loadUniverseFromInterface(i)),(l=a.querySelector(".delete-universe"))==null||l.addEventListener("click",()=>s._deleteUniverseFromInterface(i)),a})),t.innerHTML="",t.append(r)});this.initializeElements(),this.initializeButtonGroups(),this.initializeHydra(),this.universes={...this.settings.universes,...Xo},RL(this),this.audioContext=new AudioContext({latencyHint:"playback"}),this.clock=new i$(this,this.audioContext),this.api=new QG(this),qG(this.api),GG(this.api),Object.entries(this.api).forEach(([t,r])=>{globalThis[t]=r}),(async()=>{await gR()})(),this.docs=GI(this),NY(this),wY(this),VG(this),t$(this),Ra(this,this.universes[this.selected_universe.toString()].init),this.changeModeFromInterface("global"),wL(this)}getBuffer(e){const t=this.universes[this.selected_universe.toString()];return e==="locals"?t[e][this.local_index]:t[e]}get note_buffer(){return this.getBuffer("notes")}get example_buffer(){return this.getBuffer("example")}get global_buffer(){return this.getBuffer("global")}get init_buffer(){return this.getBuffer("init")}get local_buffer(){return this.getBuffer("locals")}changeToLocalBuffer(e){const t=document.querySelectorAll('[id^="tab-"]'),r=t[e];r.classList.add("bg-orange-300");for(let a=0;a{t.forEach(a=>{let s=a.children[0];s.classList.contains("text-orange-300")&&(s.classList.remove("text-orange-300"),a.classList.remove("text-orange-300"))}),i.children[0].classList.remove("text-white"),i.children[0].classList.add("text-orange-300"),i.classList.add("text-orange-300"),i.classList.add("fill-orange-300")};switch(e){case"local":this.interface.local_script_tabs.classList.contains("hidden")&&this.interface.local_script_tabs.classList.remove("hidden"),this.editor_mode="local",this.local_index=0,document.getElementById("editor").style.height="calc(100% - 100px)",this.changeToLocalBuffer(this.local_index),r(this.interface.local_button);break;case"global":this.interface.local_script_tabs.classList.contains("hidden")||this.interface.local_script_tabs.classList.add("hidden"),this.editor_mode="global",document.getElementById("editor").style.height="100%",r(this.interface.global_button);break;case"init":this.interface.local_script_tabs.classList.contains("hidden")||this.interface.local_script_tabs.classList.add("hidden"),this.editor_mode="init",r(this.interface.init_button);break;case"notes":this.interface.local_script_tabs.classList.contains("hidden")||this.interface.local_script_tabs.classList.add("hidden"),this.editor_mode="notes",r(this.interface.note_button);break}this.view.dispatch({effects:this.chosenLanguage.reconfigure(this.editor_mode=="notes"?[qk()]:[Pg()])}),this.updateEditorView()}setButtonHighlighting(e,t){document.getElementById("play-label").textContent=e!=="pause"?"Pause":"Play",e!=="pause"?(document.getElementById("pause-icon").classList.remove("hidden"),document.getElementById("play-icon").classList.add("hidden")):(document.getElementById("pause-icon").classList.add("hidden"),document.getElementById("play-icon").classList.remove("hidden")),e==="stop"&&(this.isPlaying==!1,document.getElementById("play-label").textContent="Play",document.getElementById("pause-icon").classList.add("hidden"),document.getElementById("play-icon").classList.remove("hidden")),this.flashBackground("#404040",200);const r=['[id^="play-button-"]','[id^="clear-button-"]','[id^="stop-button-"]'];let i;switch(e){case"play":i=0;break;case"pause":i=1;break;case"clear":i=2;break;case"stop":i=3;break}document.querySelectorAll(r[i]).forEach(a=>{t&&a.children[0].classList.add("animate-pulse")}),document.querySelectorAll(r.filter((a,s)=>s!=i).join(",")).forEach(a=>{a.children[0].classList.remove("animate-pulse"),a.children[1].classList.remove("animate-pulse")})}unfocusPlayButtons(){document.querySelectorAll('[id^="play-button-"]').forEach(e=>{e.children[0].classList.remove("fill-orange-300"),e.children[0].classList.remove("animate-pulse")})}updateEditorView(){this.view.dispatch({changes:{from:0,to:this.view.state.doc.toString().length,insert:this.currentFile().candidate}})}currentFile(){switch(this.editor_mode){case"global":return this.global_buffer;case"local":return this.local_buffer;case"init":return this.init_buffer;case"notes":return this.note_buffer}}flashBackground(e,t){this.view.dom.style.backgroundColor=e;const r=this.view.dom.getElementsByClassName("cm-gutter");Array.from(r).forEach(i=>i.style.backgroundColor=e),setTimeout(()=>{this.view.dom.style.backgroundColor="",Array.from(r).forEach(i=>i.style.backgroundColor="")},t)}initializeElements(){for(const[e,t]of Object.entries(kL))this.interface[e]=document.getElementById(t)}initializeButtonGroups(){for(const[e,t]of Object.entries(LL))this.buttonElements[e]=t.map(r=>document.getElementById(r))}initializeHydra(){this.hydra_backend=new Hydra({canvas:this.interface.hydra_canvas,detectAudio:!1,enableStreamCapture:!1}),this.hydra=this.hydra_backend.synth}}let WG=new HG;zG(WG,window,!1); diff --git a/index.html b/index.html index e882f6e..499c47a 100644 --- a/index.html +++ b/index.html @@ -8,8 +8,8 @@ - - + +