tweak-ui 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +7 -7
- package/README.md +32 -32
- package/dist/lib/builder.d.ts +166 -162
- package/dist/lib/builder.d.ts.map +1 -1
- package/dist/lib/builder.js +250 -0
- package/dist/lib/builder.js.map +1 -0
- package/dist/lib/color-formats/array-format.d.ts +8 -8
- package/dist/lib/color-formats/array-format.js +18 -0
- package/dist/lib/color-formats/array-format.js.map +1 -0
- package/dist/lib/color-formats/converter.d.ts +18 -18
- package/dist/lib/color-formats/converter.js +85 -0
- package/dist/lib/color-formats/converter.js.map +1 -0
- package/dist/lib/color-formats/css-string-format.d.ts +7 -7
- package/dist/lib/color-formats/css-string-format.js +28 -0
- package/dist/lib/color-formats/css-string-format.js.map +1 -0
- package/dist/lib/color-formats/formatter.d.ts +8 -8
- package/dist/lib/color-formats/formatter.js +35 -0
- package/dist/lib/color-formats/formatter.js.map +1 -0
- package/dist/lib/color-formats/hex-string-format.d.ts +7 -7
- package/dist/lib/color-formats/hex-string-format.js +28 -0
- package/dist/lib/color-formats/hex-string-format.js.map +1 -0
- package/dist/lib/color-formats/index.d.ts +3 -3
- package/dist/lib/color-formats/index.js +4 -0
- package/dist/lib/color-formats/index.js.map +1 -0
- package/dist/lib/color-formats/number-format.d.ts +8 -8
- package/dist/lib/color-formats/number-format.js +23 -0
- package/dist/lib/color-formats/number-format.js.map +1 -0
- package/dist/lib/color-formats/object-format.d.ts +14 -14
- package/dist/lib/color-formats/object-format.js +23 -0
- package/dist/lib/color-formats/object-format.js.map +1 -0
- package/dist/lib/color-formats/types.d.ts +101 -101
- package/dist/lib/color-formats/types.js +2 -0
- package/dist/lib/color-formats/types.js.map +1 -0
- package/dist/lib/components/button.d.ts +28 -28
- package/dist/lib/components/button.d.ts.map +1 -1
- package/dist/lib/components/button.js +15 -0
- package/dist/lib/components/button.js.map +1 -0
- package/dist/lib/components/content.d.ts +21 -21
- package/dist/lib/components/content.d.ts.map +1 -1
- package/dist/lib/components/content.js +10 -0
- package/dist/lib/components/content.js.map +1 -0
- package/dist/lib/components/controls/angle.d.ts +51 -51
- package/dist/lib/components/controls/angle.d.ts.map +1 -1
- package/dist/lib/components/controls/angle.js +201 -0
- package/dist/lib/components/controls/angle.js.map +1 -0
- package/dist/lib/components/controls/checkbox.d.ts +28 -28
- package/dist/lib/components/controls/checkbox.d.ts.map +1 -1
- package/dist/lib/components/controls/checkbox.js +31 -0
- package/dist/lib/components/controls/checkbox.js.map +1 -0
- package/dist/lib/components/controls/color-picker.d.ts +56 -56
- package/dist/lib/components/controls/color-picker.d.ts.map +1 -1
- package/dist/lib/components/controls/color-picker.js +267 -0
- package/dist/lib/components/controls/color-picker.js.map +1 -0
- package/dist/lib/components/controls/color.d.ts +51 -51
- package/dist/lib/components/controls/color.d.ts.map +1 -1
- package/dist/lib/components/controls/color.js +77 -0
- package/dist/lib/components/controls/color.js.map +1 -0
- package/dist/lib/components/controls/index.d.ts +10 -10
- package/dist/lib/components/controls/index.js +11 -0
- package/dist/lib/components/controls/index.js.map +1 -0
- package/dist/lib/components/controls/number.d.ts +47 -47
- package/dist/lib/components/controls/number.d.ts.map +1 -1
- package/dist/lib/components/controls/number.js +142 -0
- package/dist/lib/components/controls/number.js.map +1 -0
- package/dist/lib/components/controls/point.d.ts +47 -47
- package/dist/lib/components/controls/point.d.ts.map +1 -1
- package/dist/lib/components/controls/point.js +137 -0
- package/dist/lib/components/controls/point.js.map +1 -0
- package/dist/lib/components/controls/position.d.ts +55 -55
- package/dist/lib/components/controls/position.d.ts.map +1 -1
- package/dist/lib/components/controls/position.js +36 -0
- package/dist/lib/components/controls/position.js.map +1 -0
- package/dist/lib/components/controls/select.d.ts +59 -59
- package/dist/lib/components/controls/select.d.ts.map +1 -1
- package/dist/lib/components/controls/select.js +132 -0
- package/dist/lib/components/controls/select.js.map +1 -0
- package/dist/lib/components/controls/spherical.d.ts +74 -74
- package/dist/lib/components/controls/spherical.d.ts.map +1 -1
- package/dist/lib/components/controls/spherical.js +302 -0
- package/dist/lib/components/controls/spherical.js.map +1 -0
- package/dist/lib/components/controls/text.d.ts +35 -35
- package/dist/lib/components/controls/text.d.ts.map +1 -1
- package/dist/lib/components/controls/text.js +24 -0
- package/dist/lib/components/controls/text.js.map +1 -0
- package/dist/lib/components/groups/accordion.d.ts +21 -21
- package/dist/lib/components/groups/accordion.d.ts.map +1 -1
- package/dist/lib/components/groups/accordion.js +34 -0
- package/dist/lib/components/groups/accordion.js.map +1 -0
- package/dist/lib/components/groups/container.d.ts +24 -24
- package/dist/lib/components/groups/container.d.ts.map +1 -1
- package/dist/lib/components/groups/container.js +19 -0
- package/dist/lib/components/groups/container.js.map +1 -0
- package/dist/lib/components/groups/group.d.ts +48 -48
- package/dist/lib/components/groups/group.d.ts.map +1 -1
- package/dist/lib/components/groups/group.js +50 -0
- package/dist/lib/components/groups/group.js.map +1 -0
- package/dist/lib/components/groups/index.d.ts +4 -4
- package/dist/lib/components/groups/index.js +5 -0
- package/dist/lib/components/groups/index.js.map +1 -0
- package/dist/lib/components/groups/tabs.d.ts +21 -21
- package/dist/lib/components/groups/tabs.d.ts.map +1 -1
- package/dist/lib/components/groups/tabs.js +31 -0
- package/dist/lib/components/groups/tabs.js.map +1 -0
- package/dist/lib/components/image.d.ts +36 -36
- package/dist/lib/components/image.d.ts.map +1 -1
- package/dist/lib/components/image.js +46 -0
- package/dist/lib/components/image.js.map +1 -0
- package/dist/lib/components/index.d.ts +5 -5
- package/dist/lib/components/index.js +6 -0
- package/dist/lib/components/index.js.map +1 -0
- package/dist/lib/core/index.d.ts +4 -4
- package/dist/lib/core/index.js +5 -0
- package/dist/lib/core/index.js.map +1 -0
- package/dist/lib/core/registry.d.ts +17 -17
- package/dist/lib/core/registry.js +30 -0
- package/dist/lib/core/registry.js.map +1 -0
- package/dist/lib/core/render.d.ts +9 -9
- package/dist/lib/core/render.d.ts.map +1 -1
- package/dist/lib/core/render.js +19 -0
- package/dist/lib/core/render.js.map +1 -0
- package/dist/lib/core/types.d.ts +87 -87
- package/dist/lib/core/types.d.ts.map +1 -1
- package/dist/lib/core/types.js +2 -0
- package/dist/lib/core/types.js.map +1 -0
- package/dist/lib/core/utils.d.ts +93 -93
- package/dist/lib/core/utils.d.ts.map +1 -1
- package/dist/lib/core/utils.js +193 -0
- package/dist/lib/core/utils.js.map +1 -0
- package/dist/lib/core/value-accessor.d.ts +17 -17
- package/dist/lib/core/value-accessor.js +52 -0
- package/dist/lib/core/value-accessor.js.map +1 -0
- package/dist/lib/index.d.ts +21 -27
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +29 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/mount.d.ts +45 -45
- package/dist/lib/mount.js +85 -0
- package/dist/lib/mount.js.map +1 -0
- package/dist/tweak-ui.css +133 -138
- package/dist/tweak-ui.css.map +1 -1
- package/dist/tweak-ui.min.css +1 -1
- package/dist/tweak-ui.min.css.map +1 -1
- package/dist/tweak-ui.module.js +2733 -2380
- package/dist/tweak-ui.module.js.map +1 -1
- package/dist/tweak-ui.umd.js +1 -4403
- package/dist/tweak-ui.umd.js.map +1 -1
- package/package.json +25 -42
- package/dist/index.html +0 -1061
- package/dist/lib/color-formats/array-format.spec.d.ts +0 -2
- package/dist/lib/color-formats/array-format.spec.d.ts.map +0 -1
- package/dist/lib/color-formats/converter.spec.d.ts +0 -2
- package/dist/lib/color-formats/converter.spec.d.ts.map +0 -1
- package/dist/lib/color-formats/css-string-format.spec.d.ts +0 -2
- package/dist/lib/color-formats/css-string-format.spec.d.ts.map +0 -1
- package/dist/lib/color-formats/formatter.spec.d.ts +0 -2
- package/dist/lib/color-formats/formatter.spec.d.ts.map +0 -1
- package/dist/lib/color-formats/hex-string-format.spec.d.ts +0 -2
- package/dist/lib/color-formats/hex-string-format.spec.d.ts.map +0 -1
- package/dist/lib/color-formats/number-format.spec.d.ts +0 -2
- package/dist/lib/color-formats/number-format.spec.d.ts.map +0 -1
- package/dist/lib/color-formats/object-format.spec.d.ts +0 -2
- package/dist/lib/color-formats/object-format.spec.d.ts.map +0 -1
- package/dist/scss/_style.scss +0 -120
- package/dist/scss/_themes.scss +0 -23
- package/dist/scss/_utils.scss +0 -24
- package/dist/scss/_variables.scss +0 -30
- package/dist/scss/controls/_angle.scss +0 -64
- package/dist/scss/controls/_button.scss +0 -0
- package/dist/scss/controls/_checkbox.scss +0 -19
- package/dist/scss/controls/_color-picker.scss +0 -124
- package/dist/scss/controls/_color.scss +0 -14
- package/dist/scss/controls/_container.scss +0 -13
- package/dist/scss/controls/_group.scss +0 -69
- package/dist/scss/controls/_image.scss +0 -27
- package/dist/scss/controls/_number.scss +0 -38
- package/dist/scss/controls/_point.scss +0 -36
- package/dist/scss/controls/_position.scss +0 -9
- package/dist/scss/controls/_select.scss +0 -0
- package/dist/scss/controls/_spherical.scss +0 -87
- package/dist/scss/controls/_tabs.scss +0 -38
- package/dist/scss/controls/_text.scss +0 -0
- package/dist/scss/index.scss +0 -21
- package/dist/tweak-ui.umd.min.js +0 -17
- package/dist/tweak-ui.umd.min.js.map +0 -1
package/dist/tweak-ui.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tweak-ui.umd.js","sources":["../node_modules/mithril/render/vnode.js","../node_modules/mithril/render/hyperscriptVnode.js","../node_modules/mithril/render/hyperscript.js","../node_modules/mithril/render/trust.js","../node_modules/mithril/render/fragment.js","../node_modules/mithril/hyperscript.js","../node_modules/mithril/promise/polyfill.js","../node_modules/mithril/promise/promise.js","../node_modules/mithril/render/render.js","../node_modules/mithril/render.js","../node_modules/mithril/api/mount-redraw.js","../node_modules/mithril/mount-redraw.js","../node_modules/mithril/querystring/build.js","../node_modules/mithril/pathname/assign.js","../node_modules/mithril/pathname/build.js","../node_modules/mithril/request/request.js","../node_modules/mithril/request.js","../node_modules/mithril/querystring/parse.js","../node_modules/mithril/pathname/parse.js","../node_modules/mithril/pathname/compileTemplate.js","../node_modules/mithril/api/router.js","../node_modules/mithril/route.js","../node_modules/mithril/index.js","../src/lib/core/registry.ts","../src/lib/core/render.ts","../src/lib/core/value-accessor.ts","../src/lib/core/utils.ts","../src/lib/components/controls/angle.ts","../src/lib/components/controls/checkbox.ts","../node_modules/tslib/tslib.es6.js","../src/lib/color-formats/converter.ts","../src/lib/color-formats/array-format.ts","../src/lib/color-formats/css-string-format.ts","../src/lib/color-formats/hex-string-format.ts","../src/lib/color-formats/number-format.ts","../src/lib/color-formats/object-format.ts","../src/lib/color-formats/formatter.ts","../src/lib/components/controls/color-picker.ts","../src/lib/components/controls/color.ts","../src/lib/components/controls/number.ts","../src/lib/components/controls/point.ts","../src/lib/components/controls/position.ts","../src/lib/components/controls/select.ts","../src/lib/components/controls/spherical.ts","../src/lib/components/controls/text.ts","../src/lib/components/groups/accordion.ts","../src/lib/components/groups/container.ts","../src/lib/components/groups/group.ts","../src/lib/components/groups/tabs.ts","../src/lib/components/button.ts","../src/lib/components/content.ts","../src/lib/components/image.ts","../src/lib/builder.ts","../src/lib/mount.ts","../src/lib/index.ts"],"sourcesContent":["\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\"Vnodes must either always have keys or never have keys!\")\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar children = Vnode.normalizeChildren(vnode.children)\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\tvnode.attrs = null\n\tvnode.children = undefined\n\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]\n\t\t}\n\n\t\tattrs = newAttrs\n\t}\n\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key) && key !== \"className\" && !hasOwn.call(attrs, key)){\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className != null || state.attrs.className != null) attrs.className =\n\t\tclassName != null\n\t\t\t? state.attrs.className != null\n\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t: className\n\t\t\t: state.attrs.className != null\n\t\t\t\t? state.attrs.className\n\t\t\t\t: null\n\n\tif (hasClass) attrs.class = null\n\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\tvnode.attrs = attrs\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\tvnode.text = children[0].children\n\t} else {\n\t\tvnode.children = children\n\t}\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.prototype.finally = function(callback) {\n\treturn this.then(\n\t\tfunction(value) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn value\n\t\t\t})\n\t\t},\n\t\tfunction(reason) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn PromisePolyfill.reject(reason);\n\t\t\t})\n\t\t}\n\t)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\n\nmodule.exports = PromisePolyfill\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./polyfill\")\n\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") {\n\t\twindow.Promise = PromisePolyfill\n\t} else if (!window.Promise.prototype.finally) {\n\t\twindow.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") {\n\t\tglobal.Promise = PromisePolyfill\n\t} else if (!global.Promise.prototype.finally) {\n\t\tglobal.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = global.Promise\n} else {\n\tmodule.exports = PromisePolyfill\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function($window) {\n\tvar $doc = $window && $window.document\n\tvar currentRedraw\n\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\n\t//sanity check to discourage people from doing `vnode.state = ...`\n\tfunction checkState(vnode, original) {\n\t\tif (vnode.state !== original) throw new Error(\"`vnode.state` must not be modified\")\n\t}\n\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode) {\n\t\tvar original = vnode.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode, original)\n\t\t}\n\t}\n\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error, and heavy-handidly return null.\n\tfunction activeElement() {\n\t\ttry {\n\t\t\treturn $doc.activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode, ns, nextSibling) {\n\t\tvar match = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"<td>i</td><td>j</td>\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no <td> in sight.\n\t\tvar temp = $doc.createElement(possibleParents[match[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\">\" + vnode.children + \"</svg>\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode.children\n\t\t}\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\t// Capture nodes to remove, so we don't confuse them.\n\t\tvnode.instance = []\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tvnode.instance.push(child)\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs = vnode.attrs\n\t\tvar is = attrs && attrs.is\n\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\n\t\tif (attrs != null) {\n\t\t\tsetAttrs(vnode, attrs, ns)\n\t\t}\n\n\t\tinsertNode(parent, element, nextSibling)\n\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tif (vnode.tag === \"select\" && attrs != null) setLateSelectAttrs(vnode, attrs)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tinitLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tcreateNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t}\n\t}\n\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index (for the old list), then iterate\n\t// over the new list and for each new vnode, find the corresponding vnode in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index, the DOM nodes up to the previous\n\t// vnode reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next sibling (cached in the `nextSibling` variable).\n\n\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\t//\n\t// The fourth part of the diff currently inserts nodes unconditionally, leading to issues\n\t// like #1791 and #1999. We need to be smarter about those situations where adjascent old\n\t// nodes remain together in the new list in a way that isn't covered by parts one and\n\t// three of the diff algo.\n\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(parent, old, 0, old.length)\n\t\telse {\n\t\t\tvar isOldKeyed = old[0] != null && old[0].key != null\n\t\t\tvar isKeyed = vnodes[0] != null && vnodes[0].key != null\n\t\t\tvar start = 0, oldStart = 0\n\t\t\tif (!isOldKeyed) while (oldStart < old.length && old[oldStart] == null) oldStart++\n\t\t\tif (!isKeyed) while (start < vnodes.length && vnodes[start] == null) start++\n\t\t\tif (isKeyed === null && isOldKeyed == null) return // both lists are full of nulls\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(parent, old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(parent, o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(parent, old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o.key !== v.key) break\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (start === end) break\n\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\tmoveNodes(parent, oe, topSibling)\n\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\tif (++start <= --end) moveNodes(parent, o, nextSibling)\n\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse moveNodes(parent, v, nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode.events = old.events\n\t\t\tif (shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(parent, old)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, ns, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\tremoveHTML(parent, old)\n\t\t\tcreateHTML(parent, vnode, ns, nextSibling)\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t}\n\t}\n\tfunction updateFragment(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t\tupdateNodes(element, old.children, vnode.children, hooks, null, ns)\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(parent, old.instance)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode = vnodes[start]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key = vnode.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequece\n\tvar lisTemp = []\n\tfunction makeLisIndices(a) {\n\t\tvar result = [0]\n\t\tvar u = 0, v = 0, i = 0\n\t\tvar il = lisTemp.length = a.length\n\t\tfor (var i = 0; i < il; i++) lisTemp[i] = a[i]\n\t\tfor (var i = 0; i < il; ++i) {\n\t\t\tif (a[i] === -1) continue\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tlisTemp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\t// Fast integer average without overflow.\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tvar c = (u >>> 1) + (v >>> 1) + (u & v & 1)\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) lisTemp[i] = result[u - 1]\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = lisTemp[v]\n\t\t}\n\t\tlisTemp.length = 0\n\t\treturn result\n\t}\n\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\n\t// This covers a really specific edge case:\n\t// - Parent node is keyed and contains child\n\t// - Child is removed, returns unresolved promise in `onbeforeremove`\n\t// - Parent node is moved in keyed diff\n\t// - Remaining children still need moved appropriately\n\t//\n\t// Ideally, I'd track removed nodes as well, but that introduces a lot more\n\t// complexity and I'm not exactly interested in doing that.\n\tfunction moveNodes(parent, vnode, nextSibling) {\n\t\tvar frag = $doc.createDocumentFragment()\n\t\tmoveChildToFrag(parent, frag, vnode)\n\t\tinsertNode(parent, frag, nextSibling)\n\t}\n\tfunction moveChildToFrag(parent, frag, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\t\t\tfrag.appendChild(vnode.instance[i])\n\t\t\t\t}\n\t\t\t} else if (vnode.tag !== \"[\") {\n\t\t\t\t// Don't recurse for text nodes *or* elements, just fragments\n\t\t\t\tfrag.appendChild(vnode.dom)\n\t\t\t} else if (vnode.children.length === 1) {\n\t\t\t\tvnode = vnode.children[0]\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\tif (child != null) moveChildToFrag(parent, frag, child)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\n\tfunction maybeSetContentEditable(vnode) {\n\t\tif (vnode.attrs == null || (\n\t\t\tvnode.attrs.contenteditable == null && // attribute\n\t\t\tvnode.attrs.contentEditable == null // property\n\t\t)) return false\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t\treturn true\n\t}\n\n\t//remove\n\tfunction removeNodes(parent, vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) removeNode(parent, vnode)\n\t\t}\n\t}\n\tfunction removeNode(parent, vnode) {\n\t\tvar mask = 0\n\t\tvar original = vnode.state\n\t\tvar stateResult, attrsResult\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.state.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\tmask = 1\n\t\t\t\tstateResult = result\n\t\t\t}\n\t\t}\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.attrs.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tmask |= 2\n\t\t\t\tattrsResult = result\n\t\t\t}\n\t\t}\n\t\tcheckState(vnode, original)\n\n\t\t// If we can, try to fast-path it and avoid all the overhead of awaiting\n\t\tif (!mask) {\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t} else {\n\t\t\tif (stateResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 1) { mask &= 2; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tstateResult.then(next, next)\n\t\t\t}\n\t\t\tif (attrsResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 2) { mask &= 1; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tattrsResult.then(next, next)\n\t\t\t}\n\t\t}\n\n\t\tfunction reallyRemove() {\n\t\t\tcheckState(vnode, original)\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t}\n\t}\n\tfunction removeHTML(parent, vnode) {\n\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\tparent.removeChild(vnode.instance[i])\n\t\t}\n\t}\n\tfunction removeChild(parent, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tremoveHTML(parent, vnode)\n\t\t\t} else {\n\t\t\t\tif (vnode.tag !== \"[\") {\n\t\t\t\t\tparent.removeChild(vnode.dom)\n\t\t\t\t\tif (!Array.isArray(vnode.children)) break\n\t\t\t\t}\n\t\t\t\tif (vnode.children.length === 1) {\n\t\t\t\t\tvnode = vnode.children[0]\n\t\t\t\t\tif (vnode != null) continue\n\t\t\t\t} else {\n\t\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\t\tif (child != null) removeChild(parent, child)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tfunction onremove(vnode) {\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onremove === \"function\") callHook.call(vnode.state.onremove, vnode)\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") callHook.call(vnode.attrs.onremove, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//attrs\n\tfunction setAttrs(vnode, attrs, ns) {\n\t\tfor (var key in attrs) {\n\t\t\tsetAttr(vnode, key, null, attrs[key], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key, old, value, ns) {\n\t\tif (key === \"key\" || key === \"is\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode, key)) && typeof value !== \"object\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, value)\n\t\telse if (hasPropertyKey(vnode, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === \"\" + value && vnode.dom === activeElement()) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t\tif (vnode.tag === \"input\" && key === \"type\") vnode.dom.setAttribute(key, value)\n\t\t\telse vnode.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode, key, old, ns) {\n\t\tif (key === \"key\" || key === \"is\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\" && !isLifecycleMethod(key)) updateEvent(vnode, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode.tag === \"option\"\n\t\t\t\t|| vnode.tag === \"select\" && vnode.dom.selectedIndex === -1 && vnode.dom === activeElement()\n\t\t\t))\n\t\t\t&& !(vnode.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode, attrs) {\n\t\tif (\"value\" in attrs) {\n\t\t\tif(attrs.value === null) {\n\t\t\t\tif (vnode.dom.selectedIndex !== -1) vnode.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode.dom.value !== normalized || vnode.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs) setAttr(vnode, \"selectedIndex\", null, attrs.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode, old, attrs, ns) {\n\t\tif (attrs != null) {\n\t\t\tfor (var key in attrs) {\n\t\t\t\tsetAttr(vnode, key, old && old[key], attrs[key], ns)\n\t\t\t}\n\t\t}\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs == null || attrs[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === activeElement() || vnode.tag === \"option\" && vnode.dom.parentNode === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode.tag.indexOf(\"-\") > -1 || vnode.attrs != null && vnode.attrs.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode.dom\n\t}\n\n\t//style\n\tvar uppercaseRegex = /[A-Z]/g\n\tfunction toLowerCase(capital) { return \"-\" + capital.toLowerCase() }\n\tfunction normalizeKey(key) {\n\t\treturn key[0] === \"-\" && key[1] === \"-\" ? key :\n\t\t\tkey === \"cssFloat\" ? \"float\" :\n\t\t\t\tkey.replace(uppercaseRegex, toLowerCase)\n\t}\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style.cssText = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style.cssText = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style.cssText = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) element.style.setProperty(normalizeKey(key), String(value))\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\telement.style.setProperty(normalizeKey(key), value)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove style properties that no longer exist\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\telement.style.removeProperty(normalizeKey(key))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {\n\t\t// Save this, so the current redraw is correctly tracked.\n\t\tthis._ = currentRedraw\n\t}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler === \"function\") result = handler.call(ev.currentTarget, ev)\n\t\telse if (typeof handler.handleEvent === \"function\") handler.handleEvent(ev)\n\t\tif (this._ && ev.redraw !== false) (0, this._)()\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\n\t//event\n\tfunction updateEvent(vnode, key, value) {\n\t\tif (vnode.events != null) {\n\t\t\tif (vnode.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode.events[key] == null) vnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode.events[key] != null) vnode.dom.removeEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode.events = new EventDict()\n\t\t\tvnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\tvnode.events[key] = value\n\t\t}\n\t}\n\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tdo {\n\t\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.attrs.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.state.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode.dom = old.dom\n\t\tvnode.domSize = old.domSize\n\t\tvnode.instance = old.instance\n\t\t// One would think having the actual latest attributes would be ideal,\n\t\t// but it doesn't let us properly diff based on our current internal\n\t\t// representation. We have to save not only the old DOM info, but also\n\t\t// the attributes used to create it, as we diff *that*, not against the\n\t\t// DOM directly (with a few exceptions in `setAttr`). And, of course, we\n\t\t// need to save the children and text as they are conceptually not\n\t\t// unlike special \"attributes\" internally.\n\t\tvnode.attrs = old.attrs\n\t\tvnode.children = old.children\n\t\tvnode.text = old.text\n\t\treturn true\n\t}\n\n\treturn function(dom, vnodes, redraw) {\n\t\tif (!dom) throw new TypeError(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = activeElement()\n\t\tvar namespace = dom.namespaceURI\n\n\t\t// First time rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\n\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\tvar prevRedraw = currentRedraw\n\t\ttry {\n\t\t\tcurrentRedraw = typeof redraw === \"function\" ? redraw : undefined\n\t\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\t} finally {\n\t\t\tcurrentRedraw = prevRedraw\n\t\t}\n\t\tdom.vnodes = vnodes\n\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\tif (active != null && activeElement() !== active && typeof active.focus === \"function\") active.focus()\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t}\n}\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(window)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(render, schedule, console) {\n\tvar subscriptions = []\n\tvar rendering = false\n\tvar pending = false\n\n\tfunction sync() {\n\t\tif (rendering) throw new Error(\"Nested m.redraw.sync() call\")\n\t\trendering = true\n\t\tfor (var i = 0; i < subscriptions.length; i += 2) {\n\t\t\ttry { render(subscriptions[i], Vnode(subscriptions[i + 1]), redraw) }\n\t\t\tcatch (e) { console.error(e) }\n\t\t}\n\t\trendering = false\n\t}\n\n\tfunction redraw() {\n\t\tif (!pending) {\n\t\t\tpending = true\n\t\t\tschedule(function() {\n\t\t\t\tpending = false\n\t\t\t\tsync()\n\t\t\t})\n\t\t}\n\t}\n\n\tredraw.sync = sync\n\n\tfunction mount(root, component) {\n\t\tif (component != null && component.view == null && typeof component !== \"function\") {\n\t\t\tthrow new TypeError(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t}\n\n\t\tvar index = subscriptions.indexOf(root)\n\t\tif (index >= 0) {\n\t\t\tsubscriptions.splice(index, 2)\n\t\t\trender(root, [], redraw)\n\t\t}\n\n\t\tif (component != null) {\n\t\t\tsubscriptions.push(root, component)\n\t\t\trender(root, Vnode(component), redraw)\n\t\t}\n\t}\n\n\treturn {mount: mount, redraw: redraw}\n}\n","\"use strict\"\n\nvar render = require(\"./render\")\n\nmodule.exports = require(\"./api/mount-redraw\")(render, requestAnimationFrame, console)\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","\"use strict\"\n\nmodule.exports = Object.assign || function(target, source) {\n\tif(source) Object.keys(source).forEach(function(key) { target[key] = source[key] })\n}\n","\"use strict\"\n\nvar buildQueryString = require(\"../querystring/build\")\nvar assign = require(\"./assign\")\n\n// Returns `path` from `template` + `params`\nmodule.exports = function(template, params) {\n\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(template)) {\n\t\tthrow new SyntaxError(\"Template parameter names *must* be separated\")\n\t}\n\tif (params == null) return template\n\tvar queryIndex = template.indexOf(\"?\")\n\tvar hashIndex = template.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? template.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = template.slice(0, pathEnd)\n\tvar query = {}\n\n\tassign(query, params)\n\n\tvar resolved = path.replace(/:([^\\/\\.-]+)(\\.{3})?/g, function(m, key, variadic) {\n\t\tdelete query[key]\n\t\t// If no such parameter exists, don't interpolate it.\n\t\tif (params[key] == null) return m\n\t\t// Escape normal parameters, but not variadic ones.\n\t\treturn variadic ? params[key] : encodeURIComponent(String(params[key]))\n\t})\n\n\t// In case the template substitution adds new query/hash parameters.\n\tvar newQueryIndex = resolved.indexOf(\"?\")\n\tvar newHashIndex = resolved.indexOf(\"#\")\n\tvar newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex\n\tvar newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex\n\tvar result = resolved.slice(0, newPathEnd)\n\n\tif (queryIndex >= 0) result += template.slice(queryIndex, queryEnd)\n\tif (newQueryIndex >= 0) result += (queryIndex < 0 ? \"?\" : \"&\") + resolved.slice(newQueryIndex, newQueryEnd)\n\tvar querystring = buildQueryString(query)\n\tif (querystring) result += (queryIndex < 0 && newQueryIndex < 0 ? \"?\" : \"&\") + querystring\n\tif (hashIndex >= 0) result += template.slice(hashIndex)\n\tif (newHashIndex >= 0) result += (hashIndex < 0 ? \"\" : \"&\") + resolved.slice(newHashIndex)\n\treturn result\n}\n","\"use strict\"\n\nvar buildPathname = require(\"../pathname/build\")\n\nmodule.exports = function($window, Promise, oncompletion) {\n\tvar callbackCount = 0\n\n\tfunction PromiseProxy(executor) {\n\t\treturn new Promise(executor)\n\t}\n\n\t// In case the global Promise is some userland library's where they rely on\n\t// `foo instanceof this.constructor`, `this.constructor.resolve(value)`, or\n\t// similar. Let's *not* break them.\n\tPromiseProxy.prototype = Promise.prototype\n\tPromiseProxy.__proto__ = Promise // eslint-disable-line no-proto\n\n\tfunction makeRequest(factory) {\n\t\treturn function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise = new Promise(function(resolve, reject) {\n\t\t\t\tfactory(buildPathname(url, args.params), args, function (data) {\n\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\t\t\t\tdata[i] = new args.type(data[i])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse data = new args.type(data)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(data)\n\t\t\t\t}, reject)\n\t\t\t})\n\t\t\tif (args.background === true) return promise\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\n\t\t\treturn wrap(promise)\n\n\t\t\tfunction wrap(promise) {\n\t\t\t\tvar then = promise.then\n\t\t\t\t// Set the constructor, so engines know to not await or resolve\n\t\t\t\t// this as a native promise. At the time of writing, this is\n\t\t\t\t// only necessary for V8, but their behavior is the correct\n\t\t\t\t// behavior per spec. See this spec issue for more details:\n\t\t\t\t// https://github.com/tc39/ecma262/issues/1577. Also, see the\n\t\t\t\t// corresponding comment in `request/tests/test-request.js` for\n\t\t\t\t// a bit more background on the issue at hand.\n\t\t\t\tpromise.constructor = PromiseProxy\n\t\t\t\tpromise.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then.apply(promise, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif ({}.hasOwnProperty.call(args.headers, key) && name.test(key)) return true\n\t\t}\n\t\treturn false\n\t}\n\n\treturn {\n\t\trequest: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar body = args.body\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData)\n\t\t\tvar responseType = args.responseType || (typeof args.extract === \"function\" ? \"\" : \"json\")\n\n\t\t\tvar xhr = new $window.XMLHttpRequest(), aborted = false\n\t\t\tvar original = xhr, replacedAbort\n\t\t\tvar abort = xhr.abort\n\n\t\t\txhr.abort = function() {\n\t\t\t\taborted = true\n\t\t\t\tabort.call(this)\n\t\t\t}\n\n\t\t\txhr.open(method, url, args.async !== false, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\n\t\t\tif (assumeJSON && body != null && !hasHeader(args, /^content-type$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, /^accept$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\txhr.responseType = responseType\n\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onreadystatechange = function(ev) {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif (aborted) return\n\n\t\t\t\tif (ev.target.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\t// When the response type isn't \"\" or \"text\",\n\t\t\t\t\t\t// `xhr.responseText` is the wrong thing to use.\n\t\t\t\t\t\t// Browsers do the right thing and throw here, and we\n\t\t\t\t\t\t// should honor that and do the right thing by\n\t\t\t\t\t\t// preferring `xhr.response` where possible/practical.\n\t\t\t\t\t\tvar response = ev.target.response, message\n\n\t\t\t\t\t\tif (responseType === \"json\") {\n\t\t\t\t\t\t\t// For IE and Edge, which don't implement\n\t\t\t\t\t\t\t// `responseType: \"json\"`.\n\t\t\t\t\t\t\tif (!ev.target.responseType && typeof args.extract !== \"function\") response = JSON.parse(ev.target.responseText)\n\t\t\t\t\t\t} else if (!responseType || responseType === \"text\") {\n\t\t\t\t\t\t\t// Only use this default if it's text. If a parsed\n\t\t\t\t\t\t\t// document is needed on old IE and friends (all\n\t\t\t\t\t\t\t// unsupported), the user should use a custom\n\t\t\t\t\t\t\t// `config` instead. They're already using this at\n\t\t\t\t\t\t\t// their own risk.\n\t\t\t\t\t\t\tif (response == null) response = ev.target.responseText\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(ev.target, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) resolve(response)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttry { message = ev.target.responseText }\n\t\t\t\t\t\t\tcatch (e) { message = response }\n\t\t\t\t\t\t\tvar error = new Error(message)\n\t\t\t\t\t\t\terror.code = ev.target.status\n\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof args.config === \"function\") {\n\t\t\t\txhr = args.config(xhr, args, url) || xhr\n\n\t\t\t\t// Propagate the `abort` to any replacement XHR as well.\n\t\t\t\tif (xhr !== original) {\n\t\t\t\t\treplacedAbort = xhr.abort\n\t\t\t\t\txhr.abort = function() {\n\t\t\t\t\t\taborted = true\n\t\t\t\t\t\treplacedAbort.call(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body == null) xhr.send()\n\t\t\telse if (typeof args.serialize === \"function\") xhr.send(args.serialize(body))\n\t\t\telse if (body instanceof $window.FormData) xhr.send(body)\n\t\t\telse xhr.send(JSON.stringify(body))\n\t\t}),\n\t\tjsonp: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(data)\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t}\n\t\t\tscript.src = url + (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") +\n\t\t\t\tencodeURIComponent(args.callbackKey || \"callback\") + \"=\" +\n\t\t\t\tencodeURIComponent(callbackName)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t}),\n\t}\n}\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./promise/promise\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(window, PromisePolyfill, mountRedraw.redraw)\n","\"use strict\"\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t\tif (path.length > 1 && path[path.length - 1] === \"/\") path = path.slice(0, -1)\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","\"use strict\"\n\nvar parsePathname = require(\"./parse\")\n\n// Compiles a template into a function that takes a resolved path (without query\n// strings) and returns an object containing the template parameters with their\n// parsed values. This expects the input of the compiled template to be the\n// output of `parsePathname`. Note that it does *not* remove query parameters\n// specified in the template.\nmodule.exports = function(template) {\n\tvar templateData = parsePathname(template)\n\tvar templateKeys = Object.keys(templateData.params)\n\tvar keys = []\n\tvar regexp = new RegExp(\"^\" + templateData.path.replace(\n\t\t// I escape literal text so people can use things like `:file.:ext` or\n\t\t// `:lang-:locale` in routes. This is all merged into one pass so I\n\t\t// don't also accidentally escape `-` and make it harder to detect it to\n\t\t// ban it from template parameters.\n\t\t/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,\n\t\tfunction(m, key, extra) {\n\t\t\tif (key == null) return \"\\\\\" + m\n\t\t\tkeys.push({k: key, r: extra === \"...\"})\n\t\t\tif (extra === \"...\") return \"(.*)\"\n\t\t\tif (extra === \".\") return \"([^/]+)\\\\.\"\n\t\t\treturn \"([^/]+)\" + (extra || \"\")\n\t\t}\n\t) + \"$\")\n\treturn function(data) {\n\t\t// First, check the params. Usually, there isn't any, and it's just\n\t\t// checking a static set.\n\t\tfor (var i = 0; i < templateKeys.length; i++) {\n\t\t\tif (templateData.params[templateKeys[i]] !== data.params[templateKeys[i]]) return false\n\t\t}\n\t\t// If no interpolations exist, let's skip all the ceremony\n\t\tif (!keys.length) return regexp.test(data.path)\n\t\tvar values = regexp.exec(data.path)\n\t\tif (values == null) return false\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tdata.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])\n\t\t}\n\t\treturn true\n\t}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar m = require(\"../render/hyperscript\")\nvar Promise = require(\"../promise/promise\")\n\nvar buildPathname = require(\"../pathname/build\")\nvar parsePathname = require(\"../pathname/parse\")\nvar compileTemplate = require(\"../pathname/compileTemplate\")\nvar assign = require(\"../pathname/assign\")\n\nvar sentinel = {}\n\nmodule.exports = function($window, mountRedraw) {\n\tvar fireAsync\n\n\tfunction setPath(path, data, options) {\n\t\tpath = buildPathname(path, data)\n\t\tif (fireAsync != null) {\n\t\t\tfireAsync()\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, route.prefix + path)\n\t\t\telse $window.history.pushState(state, title, route.prefix + path)\n\t\t}\n\t\telse {\n\t\t\t$window.location.href = route.prefix + path\n\t\t}\n\t}\n\n\tvar currentResolver = sentinel, component, attrs, currentPath, lastUpdate\n\n\tvar SKIP = route.SKIP = {}\n\n\tfunction route(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\t// 0 = start\n\t\t// 1 = init\n\t\t// 2 = ready\n\t\tvar state = 0\n\n\t\tvar compiled = Object.keys(routes).map(function(route) {\n\t\t\tif (route[0] !== \"/\") throw new SyntaxError(\"Routes must start with a `/`\")\n\t\t\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(route)) {\n\t\t\t\tthrow new SyntaxError(\"Route parameter names must be separated with either `/`, `.`, or `-`\")\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troute: route,\n\t\t\t\tcomponent: routes[route],\n\t\t\t\tcheck: compileTemplate(route),\n\t\t\t}\n\t\t})\n\t\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\t\tvar p = Promise.resolve()\n\t\tvar scheduled = false\n\t\tvar onremove\n\n\t\tfireAsync = null\n\n\t\tif (defaultRoute != null) {\n\t\t\tvar defaultData = parsePathname(defaultRoute)\n\n\t\t\tif (!compiled.some(function (i) { return i.check(defaultData) })) {\n\t\t\t\tthrow new ReferenceError(\"Default route doesn't match any known routes\")\n\t\t\t}\n\t\t}\n\n\t\tfunction resolveRoute() {\n\t\t\tscheduled = false\n\t\t\t// Consider the pathname holistically. The prefix might even be invalid,\n\t\t\t// but that's not our problem.\n\t\t\tvar prefix = $window.location.hash\n\t\t\tif (route.prefix[0] !== \"#\") {\n\t\t\t\tprefix = $window.location.search + prefix\n\t\t\t\tif (route.prefix[0] !== \"?\") {\n\t\t\t\t\tprefix = $window.location.pathname + prefix\n\t\t\t\t\tif (prefix[0] !== \"/\") prefix = \"/\" + prefix\n\t\t\t\t}\n\t\t\t}\n\t\t\t// This seemingly useless `.concat()` speeds up the tests quite a bit,\n\t\t\t// since the representation is consistently a relatively poorly\n\t\t\t// optimized cons string.\n\t\t\tvar path = prefix.concat()\n\t\t\t\t.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\t\t\t.slice(route.prefix.length)\n\t\t\tvar data = parsePathname(path)\n\n\t\t\tassign(data.params, $window.history.state)\n\n\t\t\tfunction fail() {\n\t\t\t\tif (path === defaultRoute) throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t\t\tsetPath(defaultRoute, null, {replace: true})\n\t\t\t}\n\n\t\t\tloop(0)\n\t\t\tfunction loop(i) {\n\t\t\t\t// 0 = init\n\t\t\t\t// 1 = scheduled\n\t\t\t\t// 2 = done\n\t\t\t\tfor (; i < compiled.length; i++) {\n\t\t\t\t\tif (compiled[i].check(data)) {\n\t\t\t\t\t\tvar payload = compiled[i].component\n\t\t\t\t\t\tvar matchedRoute = compiled[i].route\n\t\t\t\t\t\tvar localComp = payload\n\t\t\t\t\t\tvar update = lastUpdate = function(comp) {\n\t\t\t\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\t\t\t\tif (comp === SKIP) return loop(i + 1)\n\t\t\t\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\t\t\t\tattrs = data.params, currentPath = path, lastUpdate = null\n\t\t\t\t\t\t\tcurrentResolver = payload.render ? payload : null\n\t\t\t\t\t\t\tif (state === 2) mountRedraw.redraw()\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tstate = 2\n\t\t\t\t\t\t\t\tmountRedraw.redraw.sync()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// There's no understating how much I *wish* I could\n\t\t\t\t\t\t// use `async`/`await` here...\n\t\t\t\t\t\tif (payload.view || typeof payload === \"function\") {\n\t\t\t\t\t\t\tpayload = {}\n\t\t\t\t\t\t\tupdate(localComp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (payload.onmatch) {\n\t\t\t\t\t\t\tp.then(function () {\n\t\t\t\t\t\t\t\treturn payload.onmatch(data.params, path, matchedRoute)\n\t\t\t\t\t\t\t}).then(update, fail)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse update(\"div\")\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfail()\n\t\t\t}\n\t\t}\n\n\t\t// Set it unconditionally so `m.route.set` and `m.route.Link` both work,\n\t\t// even if neither `pushState` nor `hashchange` are supported. It's\n\t\t// cleared if `hashchange` is used, since that makes it automatically\n\t\t// async.\n\t\tfireAsync = function() {\n\t\t\tif (!scheduled) {\n\t\t\t\tscheduled = true\n\t\t\t\tcallAsync(resolveRoute)\n\t\t\t}\n\t\t}\n\n\t\tif (typeof $window.history.pushState === \"function\") {\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"popstate\", fireAsync, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"popstate\", fireAsync, false)\n\t\t} else if (route.prefix[0] === \"#\") {\n\t\t\tfireAsync = null\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"hashchange\", resolveRoute, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"hashchange\", resolveRoute, false)\n\t\t}\n\n\t\treturn mountRedraw.mount(root, {\n\t\t\tonbeforeupdate: function() {\n\t\t\t\tstate = state ? 2 : 1\n\t\t\t\treturn !(!state || sentinel === currentResolver)\n\t\t\t},\n\t\t\toncreate: resolveRoute,\n\t\t\tonremove: onremove,\n\t\t\tview: function() {\n\t\t\t\tif (!state || sentinel === currentResolver) return\n\t\t\t\t// Wrap in a fragment to preserve existing key semantics\n\t\t\t\tvar vnode = [Vnode(component, attrs.key, attrs)]\n\t\t\t\tif (currentResolver) vnode = currentResolver.render(vnode[0])\n\t\t\t\treturn vnode\n\t\t\t},\n\t\t})\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\tsetPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = \"#!\"\n\troute.Link = {\n\t\tview: function(vnode) {\n\t\t\tvar options = vnode.attrs.options\n\t\t\t// Remove these so they don't get overwritten\n\t\t\tvar attrs = {}, onclick, href\n\t\t\tassign(attrs, vnode.attrs)\n\t\t\t// The first two are internal, but the rest are magic attributes\n\t\t\t// that need censored to not screw up rendering.\n\t\t\tattrs.selector = attrs.options = attrs.key = attrs.oninit =\n\t\t\tattrs.oncreate = attrs.onbeforeupdate = attrs.onupdate =\n\t\t\tattrs.onbeforeremove = attrs.onremove = null\n\n\t\t\t// Do this now so we can get the most current `href` and `disabled`.\n\t\t\t// Those attributes may also be specified in the selector, and we\n\t\t\t// should honor that.\n\t\t\tvar child = m(vnode.attrs.selector || \"a\", attrs, vnode.children)\n\n\t\t\t// Let's provide a *right* way to disable a route link, rather than\n\t\t\t// letting people screw up accessibility on accident.\n\t\t\t//\n\t\t\t// The attribute is coerced so users don't get surprised over\n\t\t\t// `disabled: 0` resulting in a button that's somehow routable\n\t\t\t// despite being visibly disabled.\n\t\t\tif (child.attrs.disabled = Boolean(child.attrs.disabled)) {\n\t\t\t\tchild.attrs.href = null\n\t\t\t\tchild.attrs[\"aria-disabled\"] = \"true\"\n\t\t\t\t// If you *really* do want to do this on a disabled link, use\n\t\t\t\t// an `oncreate` hook to add it.\n\t\t\t\tchild.attrs.onclick = null\n\t\t\t} else {\n\t\t\t\tonclick = child.attrs.onclick\n\t\t\t\thref = child.attrs.href\n\t\t\t\tchild.attrs.href = route.prefix + href\n\t\t\t\tchild.attrs.onclick = function(e) {\n\t\t\t\t\tvar result\n\t\t\t\t\tif (typeof onclick === \"function\") {\n\t\t\t\t\t\tresult = onclick.call(e.currentTarget, e)\n\t\t\t\t\t} else if (onclick == null || typeof onclick !== \"object\") {\n\t\t\t\t\t\t// do nothing\n\t\t\t\t\t} else if (typeof onclick.handleEvent === \"function\") {\n\t\t\t\t\t\tonclick.handleEvent(e)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Adapted from React Router's implementation:\n\t\t\t\t\t// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js\n\t\t\t\t\t//\n\t\t\t\t\t// Try to be flexible and intuitive in how we handle links.\n\t\t\t\t\t// Fun fact: links aren't as obvious to get right as you\n\t\t\t\t\t// would expect. There's a lot more valid ways to click a\n\t\t\t\t\t// link than this, and one might want to not simply click a\n\t\t\t\t\t// link, but right click or command-click it to copy the\n\t\t\t\t\t// link target, etc. Nope, this isn't just for blind people.\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip if `onclick` prevented default\n\t\t\t\t\t\tresult !== false && !e.defaultPrevented &&\n\t\t\t\t\t\t// Ignore everything but left clicks\n\t\t\t\t\t\t(e.button === 0 || e.which === 0 || e.which === 1) &&\n\t\t\t\t\t\t// Let the browser handle `target=_blank`, etc.\n\t\t\t\t\t\t(!e.currentTarget.target || e.currentTarget.target === \"_self\") &&\n\t\t\t\t\t\t// No modifier keys\n\t\t\t\t\t\t!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\te.redraw = false\n\t\t\t\t\t\troute.set(href, null, options)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn child\n\t\t},\n\t}\n\troute.param = function(key) {\n\t\treturn attrs && key != null ? attrs[key] : attrs\n\t}\n\n\treturn route\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./api/router\")(window, mountRedraw)\n","\"use strict\"\n\nvar hyperscript = require(\"./hyperscript\")\nvar request = require(\"./request\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\nm.mount = mountRedraw.mount\nm.route = require(\"./route\")\nm.render = require(\"./render\")\nm.redraw = mountRedraw.redraw\nm.request = request.request\nm.jsonp = request.jsonp\nm.parseQueryString = require(\"./querystring/parse\")\nm.buildQueryString = require(\"./querystring/build\")\nm.parsePathname = require(\"./pathname/parse\")\nm.buildPathname = require(\"./pathname/build\")\nm.vnode = require(\"./render/vnode\")\nm.PromisePolyfill = require(\"./promise/polyfill\")\n\nmodule.exports = m\n","import type { ComponentAttrs, ComponentType } from './types'\n\nconst registry: {\n [key: string]: ComponentType<any>\n} = {}\n\n/**\n * Gets a registered component for a given type name\n *\n * @public\n * @param type - The component type\n */\nexport function getComponent<T extends ComponentAttrs<any>>(\n type: string,\n): ComponentType<T> {\n if (registry[type]) {\n return registry[type]\n }\n throw new Error(`Component of type '${type}' was not found`)\n}\n\n/**\n * Registers a component\n *\n * @public\n * @param type - The component type name\n * @param comp - The component\n * @param override - Allows to override an already registered component\n */\nexport function component<T>(\n type: string,\n comp: ComponentType<T>,\n override: boolean = false,\n) {\n if (registry[type] && !override) {\n console.warn(`Component ignored. Name '${type}' is already registered.`)\n } else {\n registry[type] = comp\n }\n}\n","\nimport type { ComponentModel } from './types'\nimport { getComponent } from './registry'\nimport { default as m } from 'mithril'\n\n/**\n * Renders a registered component using the model\n *\n * @public\n * @param model - The model\n */\nexport function renderModel<T extends ComponentModel>(model: T) {\n if (!model.type) {\n console.error(new Error('Given data is missing the .type property. Component can resolve the component'), model)\n return null\n }\n if (model.hidden) {\n return null\n }\n return m(getComponent(model.type), { data: model })\n}\n","import type { ValueSource } from './types'\nimport { call } from './utils'\n\n/**\n * Gets a value of a view model\n *\n * @public\n * @param model - The model of a component\n */\nexport function getValue<V>(model: ValueSource<any, V>): V {\n return decode(model, readValue(model)) as V\n}\n\n/**\n * Sets a value on a view model\n *\n * @public\n * @param model - The model of a component\n * @param value - The value for the component\n * @returns the encoded value as it was written to the model\n */\nexport function setValue<V>(model: ValueSource<any, V>, value: V): unknown {\n const encoded = encode(model, value)\n writeValue(model, encoded)\n return encoded\n}\n\nfunction readValue(model: ValueSource<any, any>) {\n if (\n 'target' in model &&\n model.target &&\n model.property != null &&\n model.property in model.target\n ) {\n return model.target[model.property]\n }\n if ('value' in model) {\n return model.value\n }\n}\n\nfunction writeValue<V>(model: ValueSource<any, V>, value: V): void {\n if ('target' in model && model.target && model.property != null) {\n model.target[model.property] = value\n } else if (isWriteable(model, 'value')) {\n model.value = value\n }\n}\n\nfunction isWriteable<T>(obj: T, key: keyof T): boolean {\n const desc = Object.getOwnPropertyDescriptor(obj, key)\n return !desc || !!desc.writable || !!desc.set\n}\n\nfunction encode<V>(source: ValueSource<any, V>, value: V) {\n return 'codec' in source && source.codec ? source.codec.encode(value) : value\n}\nfunction decode<V>(source: ValueSource<any, V>, value: V) {\n return 'codec' in source && source.codec ? source.codec.decode(value) : value\n}\n","import type { ArrayOrSingleOf, ComponentAttrs, ComponentModel } from './types'\nimport type { Children, Vnode } from 'mithril'\n\n/**\n * Checks if value is a string\n * @internal\n */\nexport function isString(v: any): v is string {\n return typeof v === 'string'\n}\n/**\n * Checks if value is a number\n * @internal\n */\nexport function isNumber(v: any): v is number {\n return typeof v === 'number'\n}\n/**\n * Checks if value is a function\n * @internal\n */\nexport function isFunction(v: any): v is (...args: any[]) => any {\n return typeof v === 'function'\n}\n/**\n * Checks if value is an array\n * @internal\n */\nexport function isArray(v: any): v is any[] {\n return Array.isArray(v)\n}\n/**\n * Checks if value is an object\n * @internal\n */\nexport function isObject(v: any): v is object {\n return v != null && typeof v === 'object' && !isArray(v)\n}\n/**\n * Calls a function if it is not null\n * @internal\n */\nexport function call<T extends (...args: any) => any>(cb: T, ...args: Parameters<T>) {\n return isFunction(cb) ? cb(...args) : null\n}\n/**\n * Resolves a property to its value\n * @param value - the function or value to resolve\n */\nexport function resolve<T>(value: (() => T) | T) {\n return isFunction(value) ? value() : value\n}\n/**\n * Calls the callback of object is not null\n * @internal\n */\nexport function use<T, R>(obj: T | null, cb: (it: T) => R): R | null {\n return obj == null ? null : cb(obj)\n}\n\n/**\n * Clamps a number value\n * @internal\n */\nexport function clamp(v: number, min: number, max: number) {\n if (v != null) {\n if (min != null && v < min) {\n return min\n }\n if (max != null && v > max) {\n return max\n }\n }\n return v\n}\n/**\n * Builds a css class from various argument types\n * @param exp\n */\nexport function cssClass(\n exp: ArrayOrSingleOf<string | { [k: string]: boolean | (() => boolean) }>,\n): string {\n if (!exp) {\n return null\n }\n if (isString(exp)) {\n return exp\n }\n if (isArray(exp)) {\n return exp.map(cssClass).join(' ')\n }\n return Object.keys(exp)\n .filter((it) => resolve(exp[it]))\n .filter((it) => isString(it) && !!it)\n .join(' ')\n}\n\n/**\n * Pads a string\n * @internal\n */\nexport function padLeft(value: string, length: number, char: string) {\n while (value.length < length) {\n value = `${char}${value}`\n }\n return value\n}\n\n/**\n * @internal\n */\nexport function twuiClass(name: string, variation?: string) {\n return `twui-${name}` + (variation ? `-${variation}` : '')\n}\n\n/**\n * Gets current mouse coordinates from mouse or touch event\n * @internal\n */\nexport function getMouseXY(e: MouseEvent | TouchEvent) {\n let cx = 0\n let cy = 0\n if ('touches' in e) {\n cx = e.touches.item(0).pageX\n cy = e.touches.item(0).pageY\n } else {\n cx = e.pageX\n cy = e.pageY\n }\n return [cx, cy]\n}\n\nexport function getTouchPosition(target: HTMLElement, e: MouseEvent) {\n const rect = target.getBoundingClientRect()\n const tx = window.pageXOffset || document.documentElement.scrollLeft\n const ty = window.pageYOffset || document.documentElement.scrollTop\n\n const cw = target.clientWidth\n const ch = target.clientHeight\n let [cx, cy] = getMouseXY(e)\n const x = cx - tx - rect.left\n const y = cy - ty - rect.top\n return {\n width: cw,\n height: ch,\n x: x,\n y: y,\n normalizedX: x / cw,\n normalizedY: y / ch,\n }\n}\n\n/**\n * @internal\n */\nexport function viewFn<T extends ComponentModel>(\n fn: (data: T, node: Vnode<ComponentAttrs<T>>) => Children,\n) {\n return (node: Vnode<ComponentAttrs<T>>): Children =>\n use(node.attrs.data, (data) => fn(data, node))\n}\n\nexport function dataFn<T extends ComponentModel, R>(\n node: Vnode<ComponentAttrs<T>>,\n fn: (data: T, node: Vnode<ComponentAttrs<T>>) => R,\n) {\n return () => fn(node.attrs.data, node)\n}\n\nexport function dragUtil({\n onStart,\n onMove,\n onEnd,\n}: {\n onStart?: (e: MouseEvent) => void\n onMove?: (e: MouseEvent) => void\n onEnd?: (e: MouseEvent) => void\n}) {\n const util = {\n target: null as HTMLElement,\n activate: (e: MouseEvent) => {\n util.deactivate()\n util.target = e.target as HTMLElement\n if (onStart) {\n onStart(e)\n }\n if (onMove) {\n document.addEventListener('mousemove', onMove, { passive: false })\n document.addEventListener('touchmove', onMove, { passive: false })\n }\n if (onEnd) {\n document.addEventListener('mouseup', onEnd)\n document.addEventListener('touchend', onEnd)\n document.addEventListener('touchcancel', onEnd)\n }\n },\n deactivate: () => {\n util.target = null\n if (onMove) {\n document.removeEventListener('mousemove', onMove)\n document.removeEventListener('touchmove', onMove)\n }\n if (onEnd) {\n document.removeEventListener('mouseup', onEnd)\n document.removeEventListener('touchend', onEnd)\n document.removeEventListener('touchcancel', onEnd)\n }\n },\n onStart,\n onMove,\n onEnd,\n }\n return util\n}\n","import m, { FactoryComponent } from 'mithril'\n\nimport {\n component,\n getValue,\n renderModel,\n setValue,\n ComponentModel,\n ValueSource,\n ComponentAttrs,\n ValueCodec,\n} from '../../core'\nimport { call, clamp, cssClass, dragUtil, getTouchPosition, twuiClass } from '../../core/utils'\nimport type { NumberModel } from './number'\nimport { Direction } from './spherical'\n\n/**\n * Spherical component attributes\n * @public\n */\nexport type AngleAttrs = ComponentAttrs<AngleModel>\n\n/**\n * Spherical component model\n * @public\n */\nexport interface AngleModel<T = unknown> extends ComponentModel, ValueSource<T, number> {\n /**\n * The type name of the control\n */\n type: 'angle'\n /**\n * Whether to use degrees instead of radians\n */\n degree?: boolean\n /**\n * This is called when the control value has been changed.\n */\n onInput?: (model: AngleModel<T>, value: unknown) => void\n /**\n * This is called once the control value is committed by the user.\n *\n * @remarks\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\n */\n onChange?: (model: AngleModel<T>, value: unknown) => void\n}\n\nconst TYPE = 'angle'\nconst AngleComponent: FactoryComponent<AngleAttrs> = (vnode) => {\n let angle = 0\n let dragged = false\n let pos = [0, 0]\n\n function toDeg(value: number) {\n return value * (180 / Math.PI)\n }\n function toRad(value: number) {\n return value * (Math.PI / 180)\n }\n function toScreen(value: number) {\n return clamp((value / 2 + 0.5) * 100, 0, 100)\n }\n\n function fetchValue(node: m.Vnode<AngleAttrs>) {\n const data = node.attrs.data\n angle = getValue(data) ?? angle\n if (data.degree) {\n angle = toRad(angle)\n }\n updatePositions()\n }\n\n function onChange(type: 'change' | 'input') {\n updatePositions()\n const data = vnode.attrs.data\n const value = data.degree ? toRad(angle) : angle\n const written = setValue(data, value)\n call(type === 'input' ? data.onInput : data.onChange, data, written)\n }\n\n function updatePositions() {\n pos[0] = Math.cos(angle)\n pos[1] = Math.sin(angle)\n }\n\n function onStartPhi(e: MouseEvent) {\n dragged = true\n drag.activate(e)\n }\n\n const drag = dragUtil({\n onStart: (e) => {\n drag.onMove(e)\n },\n onMove: (e) => {\n e.preventDefault()\n\n const position = getTouchPosition(drag.target.parentElement, e)\n const px = position.normalizedX - 0.5\n const py = position.normalizedY - 0.5\n if (dragged) {\n // [-PI;PI]\n angle = Math.atan2(px, py)\n // convert to range [0;2PI]\n angle += angle < 0 ? 2 * Math.PI : 0\n }\n onChange('input')\n m.redraw()\n },\n onEnd: (e) => {\n drag.deactivate()\n dragged = false\n onChange('change')\n m.redraw()\n },\n })\n\n function onPhiInput(model: unknown, value: number) {\n angle = toRad(value)\n onChange('input')\n }\n function onPhiChange(model: unknown, value: number) {\n angle = toRad(value)\n onChange('change')\n }\n\n return {\n onremove: () => {\n drag.deactivate()\n },\n oninit: (node) => {\n fetchValue(node)\n },\n onupdate: (node) => {\n fetchValue(node)\n },\n view: () => {\n return m(\n 'div',\n {\n class: twuiClass(TYPE),\n style: {\n '--angle-value': `${toDeg(-angle) + 90}deg`,\n '--angle-percent': `${(toDeg(angle) / 360) * 100}%`,\n },\n },\n m(\n 'div.left-container',\n m(\n 'div.pane',\n {\n style: {\n position: 'relative',\n width: '100%',\n 'padding-top': '100%',\n },\n },\n m(\n 'div.angle-pane',\n {\n class: cssClass({\n 'is-dragging': dragged,\n }),\n style: {\n position: 'absolute',\n top: '0.5rem',\n left: '0.5rem',\n width: 'calc(100% - 1rem)',\n height: 'calc(100% - 1rem)',\n },\n },\n m('div.angle-knob', {\n onmousedown: onStartPhi,\n ontouchstart: onStartPhi,\n style: {\n position: 'absolute',\n width: '15px',\n height: '15px',\n top: `calc(${toScreen(pos[0])}% - 7px)`,\n left: `calc(${toScreen(pos[1])}% - 7px)`,\n },\n }),\n ),\n ),\n ),\n m(\n 'div.right-container',\n m('label', m.trust('α')),\n renderModel<NumberModel>({\n type: 'number',\n min: 0,\n max: 360,\n step: 0.1,\n value: toDeg(angle),\n onInput: onPhiInput,\n onChange: onPhiChange,\n }),\n ),\n )\n },\n }\n}\n\ncomponent<AngleAttrs>(TYPE, AngleComponent)\n\nexport interface AngleCodecOptions<T> {\n /**\n * Maps object keys to cartesian axes. Defaults to `{ x: 'right', y: 'up' }`\n */\n axes?: Record<string | number, Direction>\n /**\n * The vector length (circle radius). Defaults to `1`\n */\n length?: number | (() => number)\n /**\n * Gets the objec where the result should be stored. May return a new instance.\n */\n result?: () => T\n}\n\nexport function angleCodec(): ValueCodec<{ x: number; y: number }, number>\nexport function angleCodec<T>(options: AngleCodecOptions<T>): ValueCodec<T, number>\nexport function angleCodec({ axes, length, result }: AngleCodecOptions<any> = {}): ValueCodec<\n any,\n number\n> {\n axes = axes || { x: 'right', y: 'up'}\n const keys = Object.keys(axes)\n const radius = () => {\n return (typeof length === 'function' ? length() : length) || 1\n }\n return {\n decode: (value: any) => {\n let x: number = 0\n let y: number = 0\n for (const key of keys) {\n switch (axes[key]) {\n case 'right':\n y = value[key]\n break\n case 'left':\n y = -value[key]\n break\n case 'up':\n case 'front':\n x = -value[key]\n break\n case 'down':\n case 'back':\n x = value[key]\n default:\n break\n }\n }\n const r = radius()\n x /= r\n y /= r\n return Math.atan2(y, x) || 0\n },\n encode: (angle) => {\n const r = radius()\n const x = r * Math.cos(angle)\n const y = r * Math.sin(angle)\n const value = result() || {}\n for (const key of keys) {\n switch (axes[key]) {\n case 'right':\n value[key] = y\n break\n case 'left':\n value[key] = -y\n break\n case 'up':\n case 'front':\n value[key] = -x\n break\n case 'down':\n case 'back':\n value[key] = x\n break\n default:\n break\n }\n }\n return value\n },\n }\n}\n","import m, { FactoryComponent } from 'mithril'\n\nimport {\n getValue,\n component,\n setValue,\n ValueSource,\n ComponentAttrs,\n ComponentModel,\n} from '../../core'\nimport { call, twuiClass, cssClass, viewFn } from '../../core/utils'\n\n/**\n * Checkbox component attrs\n * @public\n */\nexport type CheckboxAttrs = ComponentAttrs<CheckboxModel>\n\n/**\n * Describes a checkbox control\n * @public\n */\nexport interface CheckboxModel<T = unknown>\n extends ComponentModel,\n ValueSource<T, boolean> {\n /**\n * The type name of the control\n */\n type: 'checkbox'\n /**\n * This is called when the control value changes\n */\n onChange?: (model: CheckboxModel, value: unknown) => void\n /**\n * Text behind the checkbox or inside the buttn\n */\n text?: string\n /**\n * Disables the control input\n */\n disabled?: boolean\n}\n\nconst TYPE = 'checkbox'\nconst CheckboxComponent: FactoryComponent<CheckboxAttrs> = (node) => {\n function onChange(e: Event) {\n const data = node.attrs.data\n const checked = (e.target as HTMLInputElement).checked\n const written = setValue(data, checked)\n call(data.onChange, data, written)\n }\n return {\n view: viewFn((data) => {\n const checked = getValue(data) === true\n return m(\n 'label',\n {\n class: cssClass({\n [twuiClass(TYPE)]: true,\n checked: checked,\n disabled: data.disabled,\n }),\n },\n m('input', {\n type: 'checkbox',\n checked: checked,\n onchange: onChange,\n disabled: data.disabled,\n }),\n data.text,\n )\n }),\n }\n}\n\ncomponent(TYPE, CheckboxComponent)\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { clamp } from '../core/utils'\nimport { HSV, RGB } from './types'\n\n/**\n * Converts hsv to rgb\n *\n * @public\n * @param hsv - HSV components where H is in range [0:360] and S and V are in range [0:1]\n * @returns RGB color components in range [0:1]\n */\nexport function hsv2rgb(hsv: HSV): RGB {\n let H = hsv.h % 360\n let S = clamp(hsv.s, 0, 1)\n let V = clamp(hsv.v, 0, 1)\n\n let C = V * S\n let X = C * (1 - Math.abs(((H / 60) % 2) - 1))\n let m = V - C\n\n const rgb: RGB = { r: 0, g: 0, b: 0 }\n if (H < 60) {\n rgb.r = C\n rgb.g = X\n rgb.b = 0\n } else if (H < 120) {\n rgb.r = X\n rgb.g = C\n rgb.b = 0\n } else if (H < 180) {\n rgb.r = 0\n rgb.g = C\n rgb.b = X\n } else if (H < 240) {\n rgb.r = 0\n rgb.g = X\n rgb.b = C\n } else if (H < 300) {\n rgb.r = X\n rgb.g = 0\n rgb.b = C\n } else {\n rgb.r = C\n rgb.g = 0\n rgb.b = X\n }\n\n rgb.r += m\n rgb.g += m\n rgb.b += m\n\n return rgb\n}\n\n/**\n * Converts rgb to hsv\n *\n * @public\n * @remarks\n * The RGB components are assumed to be in range [0:1].\n * The resulting H component is in range [0:360] and S and V in range [0:1]\n */\nexport function rgb2hsv(rgb: RGB): HSV {\n let r = rgb.r\n let g = rgb.g\n let b = rgb.b\n\n let V = Math.max(r, g, b)\n let d = V - Math.min(r, g, b)\n\n let S = 0\n let H = 0\n if (d !== 0) {\n S = d / V\n if (V === r) {\n H = (g - b) / d + (g < b ? 6 : 0)\n H = (H % 6) * 60\n } else if (V === g) {\n H = (b - r) / d + 2\n H = H * 60\n } else {\n H = (r - g) / d + 4\n H = H * 60\n }\n }\n\n return { h: H, s: S, v: V }\n}\n","import { ColorFormatter, RGBA } from './types'\n\nexport class ArrayColorFormat implements ColorFormatter<number[]> {\n constructor(private components: string[], private normalized: boolean) {}\n public parse(v: number[]) {\n v = v || []\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\n this.components.forEach((key, i) => {\n result[key] = (v[i] || 0) / (this.normalized ? 1 : 255)\n })\n return result\n }\n\n public format(rgba: RGBA) {\n return this.components.map(\n (key) => (this.normalized ? rgba[key] : Math.round(rgba[key] * 255)) || 0,\n )\n }\n}\n","import { ColorFormatter, RGBA } from './types'\n\nexport class CssStringFormat implements ColorFormatter<string> {\n constructor(private components: string[]) {}\n public parse(value: string) {\n value = value || 'rgba(0, 0, 0)'\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\n const values = value\n .replace(/[rgba\\(\\)]/gi, '')\n .split(/,\\s*?/gi)\n .map(Number)\n this.components.forEach((key, i) => {\n result[key] = (values[i] || 0) / (key === 'a' ? 1 : 255)\n })\n return result\n }\n\n public format(rgba: RGBA) {\n return (\n this.components.join('') +\n '(' +\n this.components\n .map((key) => {\n return key === 'a' ? rgba[key] : Math.round(rgba[key] * 255)\n })\n .join(', ') +\n ')'\n )\n }\n}\n","import { padLeft } from '../core/utils'\nimport { ColorFormatter, RGBA } from './types'\n\nexport class HexStringFormat implements ColorFormatter<string> {\n constructor(private components: string[]) {}\n public parse(value?: string) {\n value = value || '#000'\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\n let v: string = value.match(/[0-9a-f]+/i)[0]\n if (v.length === this.components.length) {\n v = v\n .split('')\n .map((it) => `${it}${it}`)\n .join('')\n }\n this.components.forEach((key, i) => {\n result[key] = parseInt(v.substr(i * 2, 2), 16) / 255\n })\n return result\n }\n\n public format(rgba: RGBA) {\n return (\n '#' +\n this.components\n .map((key) => padLeft(Math.round(rgba[key] * 255).toString(16), 2, '0'))\n .join('')\n )\n }\n}\n","// tslint:disable:no-bitwise\nimport { padLeft } from '../core/utils'\nimport { ColorFormatter, RGBA } from './types'\n\nexport class NumberColorFormat implements ColorFormatter<number> {\n private componentsRev: string[]\n constructor(private components: string[]) {\n this.componentsRev = components.slice().reverse()\n }\n public parse(v: number) {\n v = v || 0\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\n this.components.forEach((key, i) => {\n result[key] = ((v >> (i * 8)) & 255) / 255\n })\n return result\n }\n\n public format(rgba: RGBA) {\n const val = this.componentsRev\n .map((key) =>\n padLeft(Math.round(rgba[key] * 255 || 0).toString(16), 2, '0'),\n )\n .join('')\n return parseInt('0x' + val, 16)\n }\n}\n","import { ColorFormatter, RGBA } from './types'\n\nexport class ObjectColorFormat\n implements ColorFormatter<{ [key: string]: number }> {\n constructor(private components: string[], private normalized: boolean) {}\n public parse(v: { [key: string]: number }) {\n v = v || {}\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\n this.components.forEach((key, i) => {\n result[key] = (v[key] || 0) / (this.normalized ? 1 : 255)\n })\n return result\n }\n\n public format(rgba: RGBA) {\n const result: { [key: string]: number } = {}\n this.components.forEach((key, i) => {\n result[key] =\n (this.normalized ? rgba[key] : Math.round(rgba[key] * 255)) || 0\n })\n return result\n }\n}\n","import { ArrayColorFormat } from './array-format'\nimport { CssStringFormat } from './css-string-format'\nimport { HexStringFormat } from './hex-string-format'\nimport { NumberColorFormat } from './number-format'\nimport { ObjectColorFormat } from './object-format'\nimport { ColorFormatter } from './types'\n\nconst formatter: { [key: string]: ColorFormatter<any> } = {}\n\n/**\n * Gets a formatter implementation for the given format\n *\n * @public\n * @param format - The format code\n */\nexport function getColorFormatter(format: string = 'rgb'): ColorFormatter<any> {\n if (format in formatter) {\n return formatter[format]\n }\n const components = (format.match(/[rgba]+/)[0] || '').split('')\n if (/(\\[n?\\])/.test(format)) {\n formatter[format] = new ArrayColorFormat(components, /\\[n\\]/.test(format))\n } else if (/(\\{n?\\})/.test(format)) {\n formatter[format] = new ObjectColorFormat(components, /\\{n\\}/.test(format))\n } else if (/0x/.test(format)) {\n formatter[format] = new NumberColorFormat(components)\n } else if (/(\\(\\))/.test(format)) {\n formatter[format] = new CssStringFormat(components)\n } else {\n formatter[format] = new HexStringFormat(components)\n }\n return formatter[format]\n}\n","// tslint:disable:no-bitwise\nimport m from 'mithril'\n\nimport {\n getColorFormatter,\n HSV,\n hsv2rgb,\n HSVA,\n rgb2hsv,\n RGBA,\n} from '../../color-formats'\nimport {\n getValue,\n component,\n setValue,\n ComponentModel,\n ValueSource,\n ComponentAttrs,\n} from '../../core'\nimport {\n call,\n clamp,\n use,\n twuiClass,\n getMouseXY,\n getTouchPosition,\n} from '../../core/utils'\n\n/**\n * Color picker component attributes\n *\n * @public\n */\nexport type ColorPickerAttrs = ComponentAttrs<ColorPickerModel>\n\n/**\n * Color picker component model\n *\n * @public\n */\nexport interface ColorPickerModel<T = unknown, V = number | string | number[]>\n extends ComponentModel,\n ValueSource<T, V> {\n /**\n * The type name of the control\n */\n type: 'color-picker'\n /**\n * If `target` and `property` are not set, then this is used as the control value\n *\n * @remarks\n * The format is determined by the `format` property.\n *\n * It is allowed to omit the '#' character but the '#' will be added on change\n *\n * It is allowed to use single character form per component (#f00 instead of #ff0000)\n * but it will always be written back as #ff0000 on change\n */\n value?: V\n /**\n * The format of the string value. Defaults to 'rgb'\n *\n * @remarks\n * This must be a combination of the letters `r`, `g`, `b` and `a`.\n *\n * A prefix of `#` indicates the input/output is a hex string. e.g. #rgba\n *\n * A prefix of `0x` indicates the input is a number. e.g. 0xrgba\n *\n * A prefix of `[]` indicates the input is an array of numbers. e.g. `[]rgba`\n *\n * If a prefix is missing `#` is assumed\n */\n format?: string\n /**\n * This is called when the control value has been changed.\n */\n onInput?: (model: ColorPickerModel<T, V>, value: unknown) => void\n /**\n * This is called once the control value is committed by the user.\n *\n * @remarks\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\n */\n onChange?: (model: ColorPickerModel<T, V>, value: unknown) => void\n}\n\ncomponent<ColorPickerAttrs>('color-picker', (node) => {\n let hue = 0 // range [0,1]\n let sat = 0 // range [0,1]\n let val = 0 // range [0,1]\n let a = 0 // range [0,1]\n\n function getHSVA(s = sat, v = val): HSVA {\n return {\n h: hue * 360,\n s: s,\n v: v,\n a: a,\n }\n }\n\n function getRGB(s = sat, v = val) {\n return hsv2rgb(getHSVA(s, v))\n }\n\n function getRGBA(s = sat, v = val, alpha = a): RGBA {\n return { ...getRGB(s, v), a: alpha }\n }\n\n function setHSV(hsv: HSV) {\n hue = hsv.h / 360\n sat = hsv.s\n val = hsv.v\n }\n\n function setHSVA(hsv: HSVA) {\n setHSV(hsv)\n a = hsv.a\n }\n\n function getHexRGB(s?: number, v?: number) {\n return getColorFormatter('#rgb').format(getRGBA(s, v))\n }\n\n function getHexRGBA(s?: number, v?: number) {\n return getColorFormatter('#rgba').format(getRGBA(s, v))\n }\n\n function getCssRGBA(s = sat, v = val, alpha: number = a) {\n return getColorFormatter('rgba()').format(getRGBA(s, v, alpha))\n }\n\n function parseInput(value: string | number | number[], format: string) {\n const rgba = getColorFormatter(format || 'rgb').parse(value)\n setHSVA({\n ...rgb2hsv(rgba),\n a: rgba.a,\n })\n }\n\n function formatOutput(format: string) {\n return getColorFormatter(format).format(getRGBA())\n }\n\n function triggerInput() {\n use(node.attrs.data, (data) => {\n const value = formatOutput(data.format)\n const written = setValue(data, value)\n call(data.onInput, data, written)\n })\n }\n\n function triggerChange() {\n use(node.attrs.data, (data) => {\n const value = formatOutput(data.format)\n const written = setValue(data, value)\n call(data.onChange, data, written)\n })\n }\n\n function hasAlpha() {\n return use(node.attrs.data, (data) => {\n return data.format && data.format.match(/a/i)\n })\n }\n\n //\n // manual input\n //\n\n function inputR(e: Event) {\n input(e, 'r')\n }\n\n function inputG(e: Event) {\n input(e, 'g')\n }\n\n function inputB(e: Event) {\n input(e, 'b')\n }\n\n function input(e: Event, field: keyof RGBA) {\n const color = getRGBA()\n color[field] = parseInt((e.target as HTMLInputElement).value, 10) / 255\n setHSV(rgb2hsv(color))\n triggerInput()\n triggerChange()\n }\n\n function inputHex(e: Event) {\n parseInput(\n (e.target as HTMLInputElement).value,\n hasAlpha() ? 'rgba' : 'rgb',\n )\n triggerInput()\n triggerChange()\n }\n\n //\n // drag input\n //\n\n let target: HTMLElement\n let kind: 'sv' | 'h' | 'a'\n function beginPickSV(e: MouseEvent) {\n kind = 'sv'\n enableDrag(e.target as HTMLElement)\n onMouseMove(e)\n }\n\n function beginPickH(e: MouseEvent) {\n kind = 'h'\n enableDrag(e.target as HTMLElement)\n onMouseMove(e)\n }\n\n function beginPickA(e: MouseEvent) {\n kind = 'a'\n enableDrag(e.target as HTMLElement)\n onMouseMove(e)\n }\n\n function enableDrag(el: HTMLElement) {\n disableDrag()\n target = el\n const options = { passive: false }\n document.addEventListener('mousemove', onMouseMove, options)\n document.addEventListener('mouseup', onMouseUp, options)\n document.addEventListener('touchmove', onMouseMove, options)\n document.addEventListener('touchend', onMouseUp, options)\n document.addEventListener('touchcancel', onMouseUp, options)\n }\n\n function disableDrag() {\n document.removeEventListener('mousemove', onMouseMove)\n document.removeEventListener('mouseup', onMouseUp)\n document.removeEventListener('touchmove', onMouseMove)\n document.removeEventListener('touchend', onMouseUp)\n document.removeEventListener('touchcancel', onMouseUp)\n }\n\n function onMouseMove(e: MouseEvent) {\n if (!target) {\n return\n }\n e.preventDefault()\n\n const rect = target.getBoundingClientRect()\n const tx = window.pageXOffset || document.documentElement.scrollLeft\n const ty = window.pageYOffset || document.documentElement.scrollTop\n const cw = target.clientWidth\n const ch = target.clientHeight\n let [cx, cy] = getMouseXY(e)\n cx = clamp((cx - tx - rect.left) / cw, 0, 1)\n cy = clamp((cy - ty - rect.top) / ch, 0, 1)\n\n if (kind === 'sv') {\n sat = cx\n val = 1 - cy\n }\n if (kind === 'h') {\n hue = 1 - cx\n }\n if (kind === 'a') {\n a = cx\n }\n\n triggerInput()\n m.redraw()\n }\n\n function onMouseUp() {\n if (target != null) {\n target = null\n disableDrag()\n triggerChange()\n }\n }\n\n return {\n onremove: () => {\n disableDrag()\n },\n oninit: () => {\n use(node.attrs.data, (data) => {\n parseInput(getValue(data), data.format)\n })\n },\n view: () => {\n return use(node.attrs.data, (data) => {\n const rgba = getRGBA()\n return m(\n 'div',\n {\n class: twuiClass(data.type),\n },\n m(\n '.color-picker-inputs',\n m(\"input.input-hex[type='text']\", {\n value: hasAlpha() ? getHexRGBA() : getHexRGB(),\n onchange: inputHex,\n }),\n m(\"input.input-r[type='number']\", {\n min: 0,\n max: 255,\n step: 1,\n value: Math.round(rgba.r * 255),\n onchange: inputR,\n }),\n m(\"input.input-g[type='number']\", {\n min: 0,\n max: 255,\n step: 1,\n value: Math.round(rgba.g * 255),\n onchange: inputG,\n }),\n m(\"input.input-b[type='number']\", {\n min: 0,\n max: 255,\n step: 1,\n value: Math.round(rgba.b * 255),\n onchange: inputB,\n }),\n ),\n m(\n '.color-picker-panel',\n m(\n '.color-picker-sv',\n {\n tabindex: 0,\n onmousedown: beginPickSV,\n ontouchstart: beginPickSV,\n style: {\n 'background-color': `${getCssRGBA(1, 1, 1)}`,\n 'user-select': 'none',\n },\n },\n m('.color-picker-sv-bg', {\n style: {\n background:\n 'linear-gradient(to right,rgba(255,255,255,1),rgba(255,255,255,0))',\n 'user-select': 'none',\n 'pointer-events': 'none',\n },\n }),\n m('.color-picker-sv-bg', {\n style: {\n background:\n 'linear-gradient(to top,rgba(0,0,0,1),rgba(0,0,0,0))',\n 'user-select': 'none',\n 'pointer-events': 'none',\n },\n }),\n m('.color-picker-sv-cursor', {\n style: {\n 'user-select': 'none',\n 'pointer-events': 'none',\n 'background-color': `${getCssRGBA(hue, sat, 1)}`,\n left: `${sat * 100}%`,\n top: `${(1 - val) * 100}%`,\n },\n }),\n ),\n m(\n '.color-picker-h',\n {\n tabindex: 0,\n onmousedown: beginPickH,\n ontouchstart: beginPickH,\n style: {\n 'user-select': 'none',\n background:\n 'linear-gradient(to right, #f00 0, #f0f 17% , #00f 33% , #0ff 50% , #0f0 67% , #ff0 83% , #f00 100%)',\n },\n },\n m('.color-picker-h-cursor', {\n style: {\n 'user-select': 'none',\n 'pointer-events': 'none',\n 'background-color': `${getCssRGBA(1, 1, 1)}`,\n position: 'absolute',\n left: `${(1 - hue) * 100}%`,\n },\n }),\n ),\n !hasAlpha()\n ? null\n : m(\n '.color-picker-a',\n {\n tabindex: 0,\n onmousedown: beginPickA,\n ontouchstart: beginPickA,\n style: {\n 'user-select': 'none',\n },\n },\n m('.color-picker-a-bg', {\n style: {\n background: `linear-gradient(to right, ${getCssRGBA(\n sat,\n val,\n 0,\n )}, ${getCssRGBA(sat, val, 1)})`,\n },\n }),\n m('.color-picker-a-cursor', {\n style: {\n 'user-select': 'none',\n 'pointer-events': 'none',\n position: 'absolute',\n left: `${a * 100}%`,\n },\n }),\n ),\n ),\n )\n })\n },\n }\n})\n","import m, { Vnode } from 'mithril'\n\nimport { getColorFormatter } from '../../color-formats'\nimport { ColorPickerModel } from './color-picker'\nimport {\n getValue,\n component,\n setValue,\n renderModel,\n ComponentModel,\n ValueSource,\n ComponentAttrs,\n} from '../../core'\nimport {\n call,\n isArray,\n isNumber,\n isObject,\n isString,\n padLeft,\n use,\n twuiClass,\n cssClass,\n viewFn,\n} from '../../core/utils'\n\n/**\n * Color component attributes\n * @public\n */\nexport type ColorAttrs = ComponentAttrs<ColorModel>\n\n/**\n * Color component model\n * @public\n */\nexport interface ColorModel<T = unknown, V = number | string | number[]>\n extends ComponentModel,\n ValueSource<T, V> {\n /**\n * The type name of the control\n */\n type: 'color'\n /**\n * The color value as a string.\n *\n * @remarks\n * The format is determined by the `format` property.\n *\n * It is allowed to omit the '#' character but the '#' will be added on change\n *\n * It is allowed to use single character form per component (#f00 instead of #ff0000)\n * but it will always be written back as #ff0000 on change\n */\n value?: V\n /**\n * The format of the string value. Defaults to 'rgb'\n *\n * @remarks\n * This must be a combination of the letters r, g, b and a\n * and it must match the input value.\n */\n format?: string\n /**\n * Whether each component is normalized to range [0:1]\n */\n normalized?: boolean\n /**\n * This is called when the control value has been changed.\n */\n onInput?: (model: ColorModel<T, V>, value: unknown) => void\n /**\n * This is called once the control value is committed by the user.\n *\n * @remarks\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\n */\n onChange?: (model: ColorModel<T, V>, value: unknown) => void\n}\n\ncomponent<ColorAttrs>('color', () => {\n let data: ColorModel\n let opened = false\n let value: number | string | number[]\n let rgba: string\n\n const rgbaFromatter = getColorFormatter('rgba()')\n\n function fetchState(node: Vnode<ColorAttrs>) {\n data = node.attrs.data\n value = getValue(data)\n rgba = rgbaFromatter.format(getColorFormatter(data.format).parse(value))\n }\n\n function toggle() {\n opened = !opened\n }\n function onPickerInput(p: ColorPickerModel, v: any) {\n const written = setValue(data, v)\n call(data.onInput, data, written)\n }\n\n function onPickerChange(p: ColorPickerModel, v: any) {\n const written = setValue(data, v)\n call(data.onChange, data, written)\n }\n\n function getText() {\n if (isString(value)) {\n return value\n }\n if (isNumber(value)) {\n return '0x' + padLeft(value.toString(16), 8, '0')\n }\n if (isArray(value)) {\n return value\n .map((it: number) => (it < 1 && it > 0 ? it.toFixed(2) : it))\n .join(' , ')\n }\n if (isObject(value)) {\n return Object.keys(value)\n .map((k) => {\n const it = (value as any)[k]\n return `${k}: ${it < 1 && it > 0 ? it.toFixed(2) : it}`\n })\n .join(' ')\n }\n if (value == null) {\n return 'null'\n }\n return '?'\n }\n\n return {\n oninit: (node) => {\n fetchState(node)\n },\n onupdate: (node) => {\n fetchState(node)\n },\n view: () =>\n m(\n 'div',\n {\n class: cssClass({\n [twuiClass(data.type)]: true,\n [twuiClass(data.type + '-open')]: opened,\n }),\n },\n m(\n \"button[type='button']\",\n {\n style: { 'background-color': rgba },\n onclick: toggle,\n },\n getText() || '?',\n ),\n renderModel<ColorPickerModel>({\n type: 'color-picker',\n value: value,\n format: data.format,\n onInput: onPickerInput,\n onChange: onPickerChange,\n hidden: !opened,\n }),\n ),\n }\n})\n","import m, { Child, ClosureComponent } from 'mithril'\n\nimport {\n getValue,\n component,\n setValue,\n ComponentModel,\n ComponentAttrs,\n ValueSource,\n} from '../../core'\nimport { call, clamp, cssClass, twuiClass, dragUtil, getTouchPosition } from '../../core/utils'\n\n/**\n * Number component attributes\n * @public\n */\nexport type NumberAttrs = ComponentAttrs<NumberModel>\n\n/**\n * Number component model\n * @public\n */\nexport interface NumberModel<T = unknown> extends ComponentModel, ValueSource<T, number> {\n /**\n * The type name of the control\n */\n type: 'number' | 'slider'\n /**\n * The placeholder text\n */\n placeholder?: string\n /**\n * The min value\n */\n min?: number\n /**\n * The max value\n */\n max?: number\n /**\n * The step value\n */\n step?: number\n /**\n * This is called when the control value has been changed.\n */\n onInput?: (model: NumberModel<T>, value: unknown) => void\n /**\n * This is called once the control value is committed by the user.\n *\n * @remarks\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\n */\n onChange?: (model: NumberModel<T>, value: unknown) => void\n /**\n * Disables the control input\n */\n disabled?: boolean\n}\n\nconst NumberComponent: ClosureComponent<NumberAttrs> = () => {\n let type: 'number' | 'slider'\n let min: number\n let max: number\n let step: number\n let disabled: boolean\n let placeholder: string\n let isSlider: boolean\n let value: number\n let percent: number\n let focused: boolean\n let vnode: m.Vnode<NumberAttrs>\n // let data: NumberModel\n\n function fetchState(node: m.Vnode<NumberAttrs>) {\n vnode = node\n const data = node.attrs.data\n type = data.type\n isSlider = data.type === 'slider'\n min = isSlider && data.min == null ? 0 : data.min\n max = isSlider && data.max == null ? 1 : data.max\n step = data.step\n value = getValue<number>(data)\n disabled = data.disabled\n percent = isSlider ? ((value - min) / (max - min)) * 100 : 0\n }\n\n function setModelValue(e: 'input' | 'change', v: number) {\n v = value = clamp(isNaN(v) ? null : v, min, max)\n const data = vnode.attrs.data\n const written = setValue(data, v)\n call(e === 'input' ? data.onInput : data.onChange, data, written)\n m.redraw()\n }\n\n function onInput(e: Event) {\n const el = e.target as HTMLInputElement\n setModelValue('input', parseFloat(el.value))\n }\n\n function onChange(e: Event) {\n const el = e.target as HTMLInputElement\n setModelValue('change', parseFloat(el.value))\n }\n\n function limit(v: number) {\n v = clamp(v, min, max)\n if (step != null) {\n v = Math.round(v / step) * step\n }\n return parseFloat(v.toFixed(5))\n }\n\n let drag = dragUtil({\n onStart: (e) => {\n drag.onMove(e)\n },\n onMove: (e) => {\n e.preventDefault()\n const s = getTouchPosition(drag.target, e).normalizedX\n setModelValue('input', limit(min + s * (max - min)))\n },\n onEnd: () => {\n setModelValue('change', value)\n drag.deactivate()\n },\n })\n\n function onDragStart(e: MouseEvent) {\n if (!disabled) {\n drag.activate(e)\n }\n }\n\n function onKeydown(e: KeyboardEvent) {\n const code = e.key || e.keyCode\n const dir = code === 'ArrowLeft' ? -1 : code === 'ArrowRight' ? 1 : 0\n const add = (step || 1) * dir\n if (add) {\n setModelValue('change', limit((value || 0) + add))\n }\n }\n\n function onWheel(e: WheelEvent) {\n e.preventDefault()\n const dir = (e.ctrlKey ? 0.5 : 1) * clamp(e.deltaY, -1, 1)\n const add = (step || 0.2) * dir\n if (add) {\n setModelValue('change', limit((value || 0) - add))\n }\n }\n\n function onFocus() {\n focused = true\n }\n\n function onBlur() {\n focused = false\n }\n\n function slider(): Child {\n return m(\n '.twui-progress',\n {\n style: 'user-select: none;',\n class: cssClass({\n disabled: !!disabled,\n }),\n ...(disabled\n ? {}\n : {\n tabindex: 0,\n onmousedown: onDragStart,\n ontouchstart: onDragStart,\n onkeydown: onKeydown,\n onwheel: onWheel,\n }),\n },\n m('.twui-progress-bar', {\n style: {\n width: `${percent}%`,\n 'pointer-events': 'none',\n 'user-select': 'none',\n },\n }),\n )\n }\n\n return {\n onremove: () => {\n drag.deactivate()\n },\n oninit: (node) => {\n fetchState(node)\n },\n onupdate: (node) => {\n fetchState(node)\n },\n view: () => {\n return m(\n 'div',\n {\n class: twuiClass(type),\n },\n isSlider ? slider() : null,\n m(\"input[type='number']\", {\n min: min,\n max: max,\n step: step,\n value: value,\n oninput: onInput,\n onchange: onChange,\n onwheel: onWheel,\n onfocus: onFocus,\n onblur: onBlur,\n placeholder: placeholder,\n disabled: disabled,\n }),\n )\n },\n }\n}\n\ncomponent('number', NumberComponent)\ncomponent('slider', NumberComponent)\n","import m from 'mithril'\n\nimport { component, getValue, ComponentModel, ValueSource, ComponentAttrs } from '../../core'\nimport { call, clamp, use, twuiClass, viewFn, getMouseXY, dragUtil } from '../../core/utils'\n\n/**\n * Point component attributes\n * @public\n */\nexport type PointAttrs = ComponentAttrs<PointModel>\n\n/**\n * Point component model\n * @public\n */\nexport interface PointModel<T = unknown> extends ComponentModel, ValueSource<T, any> {\n /**\n * The type name of the control\n */\n type: 'point'\n /**\n * The object field names. Defaults to `['x', 'y']`\n */\n keys?: string[]\n /**\n * X-Axis min and max valuse\n */\n xRange?: [number, number]\n /**\n * Y-Axis min and max valuse\n */\n yRange?: [number, number]\n /**\n * Value to reset to when released\n */\n reset?: [number, number]\n /**\n * Snap to grid value\n */\n snap?: number\n /**\n * This is called when the control value has been changed.\n */\n onInput?: (model: PointModel<T>, value: number) => void\n /**\n * This is called once the control value is committed by the user.\n *\n * @remarks\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\n */\n onChange?: (model: PointModel<T>, value: number) => void\n}\n\nconst TYPE = 'point'\nconst DEFAULT_RANGE = [0, 1]\nconst DEFAULT_KEYS = ['x', 'y']\ncomponent<PointAttrs>(TYPE, (vnode) => {\n let kx: any\n let ky: any\n let xRange = DEFAULT_RANGE\n let yRange = DEFAULT_RANGE\n let vx = 0\n let vy = 0\n let x = 0\n let y = 0\n let rx: number\n let ry: number\n let snap: number\n\n function fetchValue(node: m.Vnode<PointAttrs>) {\n const data = node.attrs.data\n const keys = data.keys || DEFAULT_KEYS\n kx = keys[0]\n ky = keys[1]\n const value: any = getValue(data) ?? {\n [kx]: vx,\n [ky]: vy,\n }\n snap = data.snap\n vx = value[kx] || 0\n vy = value[ky] || 0\n xRange = data.xRange || xRange\n yRange = data.yRange || yRange\n x = (vx - xRange[0]) / (xRange[1] - xRange[0])\n y = (vy - yRange[0]) / (yRange[1] - yRange[0])\n const reset = data.reset\n if (reset) {\n rx = (reset[0] - xRange[0]) / (xRange[1] - xRange[0])\n ry = (reset[1] - yRange[0]) / (yRange[1] - yRange[0])\n }\n }\n\n function updateValue() {\n vx = xRange[0] + (xRange[1] - xRange[0]) * x\n vy = yRange[0] + (yRange[1] - yRange[0]) * y\n if (snap > 0) {\n vx = Math.floor(vx / snap) * snap\n vy = Math.floor(vy / snap) * snap\n x = (vx - xRange[0]) / (xRange[1] - xRange[0])\n y = (vy - yRange[0]) / (yRange[1] - yRange[0])\n }\n }\n\n function onChange(type: 'change' | 'input') {\n updateValue()\n const data = vnode.attrs.data\n const value: any = getValue(data) ?? {\n [kx]: vx,\n [ky]: vy,\n }\n value[kx] = vx\n value[ky] = vy\n call(type === 'input' ? data.onInput : data.onChange, data, value)\n }\n\n function onMouseDown(e: MouseEvent) {\n drag.activate(e)\n }\n\n const drag = dragUtil({\n onMove: (e) => {\n e.preventDefault()\n const target = drag.target\n const rect = target.getBoundingClientRect()\n const tx = window.pageXOffset || document.documentElement.scrollLeft\n const ty = window.pageYOffset || document.documentElement.scrollTop\n\n const cw = target.clientWidth\n const ch = target.clientHeight\n let [cx, cy] = getMouseXY(e)\n x = clamp((cx - tx - rect.left) / cw, 0, 1)\n y = clamp((cy - ty - rect.top) / ch, 0, 1)\n\n onChange('input')\n m.redraw()\n },\n onEnd: () => {\n drag.deactivate()\n if (rx != null && ry != null) {\n x = rx\n y = ry\n onChange('input')\n }\n onChange('change')\n m.redraw()\n },\n })\n\n return {\n onremove: drag.deactivate,\n oninit: fetchValue,\n onupdate: fetchValue,\n view: () =>\n m(\n 'div',\n {\n class: twuiClass(TYPE),\n tabindex: 0,\n onmousedown: onMouseDown,\n ontouchstart: onMouseDown,\n },\n m('.point-x-axis', {\n style: {\n 'pointer-events': 'none',\n position: 'absolute',\n left: 0,\n right: 0,\n top: `${y * 100}%`,\n height: `1px`,\n },\n }),\n m('.point-y-axis', {\n style: {\n 'pointer-events': 'none',\n position: 'absolute',\n left: `${x * 100}%`,\n top: 0,\n bottom: 0,\n width: `1px`,\n },\n }),\n m('.point-cursor', {\n style: {\n 'pointer-events': 'none',\n left: `${x * 100}%`,\n top: `${y * 100}%`,\n position: 'absolute',\n width: '11px',\n height: '11px',\n 'margin-top': '-5px',\n 'margin-left': '-5px',\n border: '1px solid white',\n 'border-radius': '5px',\n 'box-shadow': '0px 0px 2px 1px rgba(0, 0, 0, 0.75)',\n },\n }),\n ),\n }\n})\n","import m from 'mithril'\n\nimport {\n getValue,\n component,\n setValue,\n renderModel,\n ComponentAttrs,\n ComponentModel,\n ValueSource,\n} from '../../core'\nimport { call, twuiClass, viewFn } from '../../core/utils'\nimport { NumberModel } from './number'\n\n/**\n * @public\n */\nexport type PositionValue =\n | number[]\n | { [key: string]: number }\n | { [key: number]: number }\n\n/**\n * Position component attributes\n * @public\n */\nexport type PositionAttrs = ComponentAttrs<PositionModel>\n\n/**\n * Position component model\n * @public\n */\nexport type PositionModel<T = unknown> = ComponentModel &\n ValueSource<T, PositionValue> & {\n /**\n * The type name of the control\n */\n type: 'position'\n /**\n * The position object field names. Defaults to `['x', 'y', 'z']`\n */\n keys?: string[]\n /**\n * The min value\n */\n min?: number\n /**\n * The max value\n */\n max?: number\n /**\n * The step value\n */\n step?: number\n /**\n * This is called when the control value has been changed.\n */\n onInput?: (\n model: PositionModel<T>,\n value: unknown,\n key?: string | number,\n ) => void\n /**\n * This is called once the control value is committed by the user.\n *\n * @remarks\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\n */\n onChange?: (\n model: PositionModel<T>,\n value: unknown,\n key?: string | number,\n ) => void\n /**\n * Disables the control input\n */\n disabled?: boolean,\n }\n\nconst TYPE = 'position'\nconst defaultKeys = ['x', 'y', 'z']\ncomponent<PositionAttrs>(TYPE, (node) => {\n function onChange(type: 'input' | 'change', field: string, v: number) {\n const data = node.attrs.data\n const value: any = getValue(data) || {}\n value[field] = isNaN(v) ? null : v\n const written = setValue(data, value)\n call(type === 'input' ? data.onInput : data.onChange, data, written, field)\n }\n\n return {\n view: viewFn((data) => {\n const keys = data.keys || defaultKeys\n const value = getValue(data) as any\n return m(\n 'div',\n {\n class: twuiClass(TYPE),\n },\n keys.map((field) => {\n return renderModel<NumberModel>({\n type: 'number',\n min: data.min,\n max: data.max,\n step: data.step,\n value: value?.[field],\n disabled: data.disabled,\n onInput: (_, v: number) => onChange('input', field, v),\n onChange: (_, v: number) => onChange('change', field, v),\n placeholder: field,\n })\n }),\n )\n }),\n }\n})\n","import m, { Child } from 'mithril'\n\nimport {\n getValue,\n component,\n setValue,\n ComponentModel,\n ValueSource,\n ComponentAttrs,\n} from '../../core'\nimport { call, isNumber, isString, twuiClass, viewFn } from '../../core/utils'\n\nconst emptyArray: any[] = []\n\n/**\n * @public\n */\nexport type SelectOption = {\n label: string\n value: unknown\n disabled?: boolean\n}\n/**\n * @public\n */\nexport type SelectOptionArray = Array<\n SelectOption | SelectOptionGroup | string | number\n>\n/**\n * @public\n */\nexport type SelectOptionsObject = {\n [key: string]: unknown\n}\n/**\n * @public\n */\nexport type SelectOptionGroup<T = SelectOptionArray | SelectOptionsObject> = {\n label: string\n options: T\n disabled?: boolean\n}\n\n/**\n * Select component select options\n * @public\n */\nexport type SelectModelOptions = SelectOptionArray | SelectOptionsObject\n\n/**\n * Select component attributes\n * @public\n */\nexport type SelectAttrs = ComponentAttrs<SelectModel>\n\n/**\n * Select component model\n * @public\n */\nexport interface SelectModel<T = unknown, V = any>\n extends ComponentModel,\n ValueSource<T, V> {\n /**\n * The type name of the control\n */\n type: 'select'\n /**\n * The select options\n */\n options?: SelectModelOptions\n /**\n * This is called once the control value is committed by the user.\n */\n onChange?: (model: SelectModel<T>, value: unknown) => void\n /**\n * Disables the control input\n */\n disabled?: boolean\n}\n\nfunction optionsFromFlatArray(arr: SelectOptionArray): SelectOption[] {\n const res: SelectOption[] = []\n for (const it of arr) {\n if (isString(it) || isNumber(it)) {\n res.push({ value: it, label: String(it) })\n continue\n }\n if ('value' in it) {\n res.push(it)\n continue\n }\n }\n return res\n}\n\nfunction optionsFromArray(\n arr: SelectOptionArray,\n): Array<SelectOption | SelectOptionGroup<SelectOption[]>> {\n const res: Array<SelectOption | SelectOptionGroup<SelectOption[]>> = []\n for (const it of arr) {\n if (isString(it) || isNumber(it) || it == null) {\n res.push({ value: it, label: String(it) })\n } else if ('value' in it) {\n res.push(it)\n } else if ('options' in it) {\n res.push({\n label: it.label,\n disabled: it.disabled,\n options: Array.isArray(it.options)\n ? optionsFromFlatArray(it.options)\n : optionsFromObject(it.options),\n })\n }\n }\n return res\n}\n\nfunction optionsFromObject(obj: SelectOptionsObject): Array<SelectOption> {\n return Object.keys(obj)\n .sort()\n .map((key) => ({ value: obj[key], label: key }))\n}\n\nfunction getOptions(\n node: m.Vnode<SelectAttrs>,\n): Array<SelectOption | SelectOptionGroup<SelectOption[]>> {\n const options = node.attrs.data.options\n\n if (!options) {\n return emptyArray\n }\n\n if (Array.isArray(options)) {\n return optionsFromArray(options)\n }\n return optionsFromObject(options)\n}\n\ncomponent<SelectAttrs>('select', (node) => {\n let options: Array<SelectOption | SelectOptionGroup<SelectOption[]>>\n\n function getSelectedIndex() {\n const data = node.attrs.data\n const value = getValue(data)\n let i = 0\n for (const o0 of options) {\n if ('options' in o0) {\n for (const o1 of o0.options) {\n if (o1.value === value) {\n return i\n }\n i++\n }\n } else {\n if (o0.value === value) {\n return i\n }\n i++\n }\n }\n }\n\n function getSelectionAt(index: number) {\n let i = 0\n for (const o0 of options) {\n if ('options' in o0) {\n for (const o1 of o0.options) {\n if (i === index) {\n return o1.value\n }\n i += 1\n }\n } else {\n if (i === index) {\n return o0.value\n }\n i += 1\n }\n }\n return null\n }\n\n function onChange(e: Event) {\n const el = e.target as HTMLSelectElement\n const data = node.attrs.data\n const value = getSelectionAt(el.selectedIndex)\n const written = setValue(data, value)\n call(data.onChange, data, written)\n }\n\n return {\n view: viewFn((data) => {\n options = getOptions(node)\n return m(\n 'select',\n {\n class: twuiClass(data.type),\n selectedIndex: getSelectedIndex(),\n onchange: onChange,\n disabled: data.disabled,\n },\n options.map((it) => {\n if ('options' in it) {\n return m(\n 'optgroup',\n {\n disabled: !!it.disabled,\n label: it.label || '',\n },\n it.options.map(option),\n )\n }\n return option(it)\n }),\n )\n }),\n }\n})\n\nfunction option(it: SelectOption) {\n return m(\n 'option',\n {\n value: it.value,\n label: it.label,\n disabled: !!it.disabled,\n },\n it.label || '',\n )\n}\n","import m, { FactoryComponent } from 'mithril'\n\nimport {\n component,\n getValue,\n renderModel,\n ComponentModel,\n ValueSource,\n ComponentAttrs,\n setValue,\n ValueCodec,\n} from '../../core'\nimport { call, clamp, cssClass, dragUtil, getTouchPosition, twuiClass } from '../../core/utils'\nimport { NumberModel } from './number'\nimport { CheckboxModel } from './checkbox'\n\n/**\n * @public\n */\nexport type SphericalValue = number[] | { [key: string]: number } | { [key: number]: number }\n\n/**\n * Spherical component attributes\n * @public\n */\nexport type SphericalAttrs = ComponentAttrs<SphericalModel>\n\n/**\n * Spherical component model\n * @public\n */\nexport interface SphericalModel<T = unknown>\n extends ComponentModel,\n ValueSource<T, SphericalValue> {\n /**\n * The type name of the control\n */\n type: 'spherical'\n /**\n * The object field names. Defaults to `['phi', 'theta']`\n */\n keys?: Array<string | number>\n /**\n * Whether to use degrees instead of radians\n */\n degree?: boolean\n /**\n * This is called when the control value has been changed.\n */\n onInput?: (model: SphericalModel<T>, value: unknown) => void\n /**\n * This is called once the control value is committed by the user.\n *\n * @remarks\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\n */\n onChange?: (model: SphericalModel<T>, value: unknown) => void\n}\n\nconst TYPE = 'spherical'\nconst KEYS = ['phi', 'theta']\nconst SphericalComponent: FactoryComponent<SphericalAttrs> = (vnode) => {\n let phi = 0 // azimuth [0, 2PI]\n let theta = 0 // inclination [0, PI]\n let backface = false\n\n let v2Phi = [0, 0]\n let v2Theta = [0, 0]\n\n let draggedKnob: 'phi' | 'theta'\n\n function toDeg(value: number) {\n return value * (180 / Math.PI)\n }\n function toRad(value: number) {\n return value * (Math.PI / 180)\n }\n function toScreen(value: number) {\n return clamp((value / 2 + 0.5) * 100, 0, 100)\n }\n\n function read(node: m.Vnode<SphericalAttrs>) {\n const data = node.attrs.data\n const value: any = getValue(data) || {\n phi: data.degree ? toDeg(phi) : phi,\n theta: data.degree ? toDeg(theta) : theta,\n }\n const [kPhi, kTheta] = data.keys || KEYS\n return { data, value, kPhi, kTheta }\n }\n\n function fetchValue(node: m.Vnode<SphericalAttrs>) {\n const { data, value, kPhi, kTheta } = read(node)\n phi = value[kPhi] || 0\n theta = value[kTheta] || 0\n if (data.degree) {\n phi = toRad(phi)\n theta = toRad(theta)\n }\n const p2 = Math.PI / 2\n while (theta < 0) {\n theta += p2\n }\n while (theta > p2) {\n theta -= p2\n }\n backface = theta > Math.PI / 2\n updatePositions()\n }\n\n function onChange(type: 'change' | 'input') {\n updatePositions()\n const { data, value, kPhi, kTheta } = read(vnode)\n value[kPhi] = data.degree ? toDeg(phi) : phi\n value[kTheta] = data.degree ? toDeg(theta) : theta\n const written = setValue(data, value)\n call(type === 'input' ? data.onInput : data.onChange, data, written)\n }\n\n function updatePositions() {\n v2Phi[0] = Math.cos(phi)\n v2Phi[1] = Math.sin(phi)\n v2Theta[0] = Math.sin(theta) * Math.cos(phi)\n v2Theta[1] = Math.sin(theta) * Math.sin(phi)\n }\n\n function onStartPhi(e: MouseEvent) {\n draggedKnob = 'phi'\n drag.activate(e)\n }\n function onStartTheta(e: MouseEvent) {\n draggedKnob = 'theta'\n drag.activate(e)\n }\n\n const drag = dragUtil({\n onStart: (e) => {\n drag.onMove(e)\n },\n onMove: (e) => {\n e.preventDefault()\n\n const position = getTouchPosition(drag.target.parentElement, e)\n const px = position.normalizedX - 0.5\n const py = position.normalizedY - 0.5\n if (draggedKnob === 'phi') {\n // [-PI;PI]\n phi = Math.atan2(px, py)\n // convert to range [0;2PI]\n phi += phi < 0 ? 2 * Math.PI : 0\n } else if (draggedKnob === 'theta') {\n // closest point on segment\n // p0: [0, 0], p1: vPhi\n const ab = v2Phi\n const ac = [py, px]\n const t = (ab[0] * ac[0] + ab[1] * ac[1]) / Math.sqrt(ab[0] * ab[0] + ab[1] * ab[1])\n\n theta = Math.PI * clamp(t, 0, 0.5)\n if (backface) {\n theta = Math.PI - theta\n }\n }\n onChange('input')\n m.redraw()\n },\n onEnd: (e) => {\n drag.deactivate()\n draggedKnob = null\n onChange('change')\n m.redraw()\n },\n })\n\n function onPhiInput(model: unknown, value: number) {\n phi = toRad(value)\n onChange('input')\n }\n function onPhiChange(model: unknown, value: number) {\n phi = toRad(value)\n onChange('change')\n }\n\n function onThetaInput(model: unknown, value: number) {\n theta = toRad(value)\n onChange('input')\n }\n function onThetaChange(model: unknown, value: number) {\n theta = toRad(value)\n onChange('change')\n }\n function onBackfaceChange(model: unknown, value: boolean) {\n backface = value\n theta = Math.PI - theta\n onChange('change')\n setTimeout(() => m.redraw())\n }\n\n return {\n onremove: () => {\n drag.deactivate()\n },\n oninit: (node) => {\n fetchValue(node)\n },\n onupdate: (node) => {\n fetchValue(node)\n },\n view: () => {\n return m(\n 'div',\n {\n class: twuiClass(TYPE),\n style: {\n '--spherical-phi': `${toDeg(-phi) + 90}deg`,\n },\n },\n m(\n 'div.left-container',\n m(\n 'div.pane',\n {\n style: {\n position: 'relative',\n width: '100%',\n 'padding-top': '100%',\n },\n },\n m(\n 'div.phi-pane',\n {\n class: cssClass({\n 'is-dragging': draggedKnob === 'phi',\n }),\n style: {\n position: 'absolute',\n top: '0.5rem',\n left: '0.5rem',\n width: 'calc(100% - 1rem)',\n height: 'calc(100% - 1rem)',\n },\n },\n m('div.phi-knob', {\n onmousedown: onStartPhi,\n ontouchstart: onStartPhi,\n style: {\n position: 'absolute',\n width: '15px',\n height: '15px',\n top: `calc(${toScreen(v2Phi[0])}% - 7px)`,\n left: `calc(${toScreen(v2Phi[1])}% - 7px)`,\n },\n }),\n ),\n m(\n 'div.theta-pane',\n {\n class: cssClass({\n 'is-dragging': draggedKnob === 'theta',\n }),\n style: {\n position: 'absolute',\n top: '1.5rem',\n left: '1.5rem',\n width: 'calc(100% - 3rem)',\n height: 'calc(100% - 3rem)',\n },\n },\n m('div.theta-knob', {\n onmousedown: onStartTheta,\n ontouchstart: onStartTheta,\n style: {\n position: 'absolute',\n width: '15px',\n height: '15px',\n top: `calc(${toScreen(v2Theta[0])}% - 7px)`,\n left: `calc(${toScreen(v2Theta[1])}% - 7px)`,\n },\n }),\n ),\n ),\n ),\n m(\n 'div.right-container',\n m('label', m.trust('φ')),\n renderModel<NumberModel>({\n type: 'number',\n min: 0,\n max: 360,\n step: 0.1,\n value: toDeg(phi),\n onInput: onPhiInput,\n onChange: onPhiChange,\n }),\n m('label', m.trust('θ')),\n renderModel<NumberModel>({\n type: 'number',\n min: 0,\n max: 180,\n step: 0.1,\n value: toDeg(theta),\n onInput: onThetaInput,\n onChange: onThetaChange,\n }),\n renderModel<CheckboxModel>({\n type: 'checkbox',\n value: backface,\n text: 'Backface',\n onChange: onBackfaceChange,\n }),\n ),\n )\n },\n }\n}\n\ncomponent<SphericalAttrs>(TYPE, SphericalComponent)\n\n/**\n * Direction name\n * @public\n */\nexport type Direction = 'right' | 'left' | 'up' | 'down' | 'front' | 'back'\nexport interface SphericalCodecOptions<T> {\n /**\n * Maps object keys to cartesian axes. Defaults to `{ x: 'right', y: 'up', z: 'back' }`\n */\n axes?: Record<string | number, Direction>\n /**\n * The vector length (sphere radius). Defaults to `1`\n */\n length?: number | (() => number)\n /**\n * Gets the objec where the result should be stored. May return a new instance.\n */\n result?: () => T\n}\n\nexport function sphericalCodec(): ValueCodec<\n { x: number; y: number; z: number },\n { phi: number; theta: number }\n>\nexport function sphericalCodec<T>(options: SphericalCodecOptions<T>): ValueCodec<T, { phi: number; theta: number }>\nexport function sphericalCodec({\n axes,\n length,\n result,\n}: SphericalCodecOptions<any> = {}): ValueCodec<any, { phi: number; theta: number }> {\n axes = axes || { x: 'right', y: 'up', z: 'back' }\n const keys = Object.keys(axes)\n const radius = () => {\n return (typeof length === 'function' ? length() : length) || 1\n }\n return {\n decode: (value: any) => {\n let x: number = 0\n let y: number = 0\n let z: number = 0\n for (const key of keys) {\n switch (axes[key]) {\n case 'right':\n y = value[key]\n break\n case 'left':\n y = -value[key]\n break\n case 'back':\n x = value[key]\n break\n case 'front':\n x = -value[key]\n break\n case 'up':\n z = value[key]\n break\n case 'down':\n z = -value[key]\n break\n default:\n break\n }\n }\n const r = radius()\n x /= r\n y /= r\n z /= r\n return {\n phi: Math.atan2(y, x) || 0,\n theta: Math.atan(Math.sqrt(x * x + y * y) / z) || 0,\n }\n },\n encode: ({ phi, theta }: { phi: number; theta: number }) => {\n const r = radius()\n const x = r * Math.sin(theta) * Math.cos(phi)\n const y = r * Math.sin(theta) * Math.sin(phi)\n const z = r * Math.cos(theta)\n const value = result?.() || {}\n for (const key of keys) {\n switch (axes[key]) {\n case 'right':\n value[key] = y\n break\n case 'left':\n value[key] = -y\n break\n case 'back':\n value[key] = x\n break\n case 'front':\n value[key] = -x\n break\n case 'up':\n value[key] = z\n break\n case 'down':\n value[key] = -z\n break\n default:\n break\n }\n }\n return value\n },\n }\n}\n","import m from 'mithril'\n\nimport {\n getValue,\n component,\n setValue,\n ComponentModel,\n ValueSource,\n ComponentAttrs,\n} from '../../core'\nimport { call, twuiClass, viewFn } from '../../core/utils'\n\n/**\n * Text component attributes\n * @public\n */\nexport type TextAttrs = ComponentAttrs<TextModel>\n\n/**\n * Text component model\n * @public\n */\nexport interface TextModel<T = unknown>\n extends ComponentModel,\n ValueSource<T, string> {\n /**\n * The type name of the control\n */\n type: 'text'\n /**\n * The placeholder text\n */\n placeholder?: string\n /**\n * This is called when the control value has been changed.\n */\n onInput?: (model: TextModel<T>, value: unknown) => void\n /**\n * This is called once the control value is committed by the user.\n *\n * @remarks\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\n */\n onChange?: (model: TextModel<T>, value: unknown) => void\n /**\n * Disables the control input\n */\n disabled?: boolean\n}\n\ncomponent<TextAttrs>('text', (node) => {\n function onChange(e: Event) {\n const el = e.target as HTMLInputElement\n const data = node.attrs.data\n const written = setValue(data, el.value)\n call(e.type === 'input' ? data.onInput : data.onChange, data, written)\n }\n\n return {\n view: viewFn((data) => {\n return m(\"input[type='text']\", {\n class: twuiClass(data.type),\n value: getValue(data),\n oninput: onChange,\n onchange: onChange,\n placeholder: data.placeholder,\n disabled: data.disabled,\n })\n }),\n }\n})\n","import m from 'mithril'\n\nimport { component, renderModel, ComponentAttrs, ComponentGroupModel } from '../../core'\nimport { viewFn } from '../../core/utils'\nimport { GroupModel } from './group'\n\n/**\n * Accordeon component attribuets\n * @public\n */\nexport type AccordeonAtts = ComponentAttrs<AccordeonModel>\n\n/**\n * Accordeon component model\n * @public\n */\nexport interface AccordeonModel extends ComponentGroupModel<GroupModel> {\n /**\n * The type name of the control\n */\n type: 'accordion'\n /**\n * The index of the group that should be open initially\n */\n expand?: number\n}\n\nconst TYPE = 'accordion'\nconst EMPTY: GroupModel[] = []\n\ncomponent<AccordeonAtts>(TYPE, () => {\n return {\n view: viewFn((data) => {\n const children = data.children || EMPTY\n data.expand = detectExpanded(data.expand, children)\n return m.fragment({}, children.map((group, i) => {\n group.type = 'group'\n group.collapsible = true\n group.collapsed = i !== data.expand\n return renderModel<GroupModel>(group)\n }))\n }),\n }\n})\n\nfunction detectExpanded(index: number, list: GroupModel[]) {\n let result = null\n for (let i = 0; i < list.length; i++) {\n if (!list[i].collapsed) {\n if (i !== index) {\n return i\n }\n if (result == null) {\n result = i\n }\n }\n }\n return result\n}\n","import m from 'mithril'\n\nimport {\n component,\n renderModel,\n ComponentGroupModel,\n ComponentAttrs,\n ComponentModel,\n} from '../../core'\nimport { cssClass, twuiClass, viewFn } from '../../core/utils'\n\n/**\n * Container component attributes\n * @public\n */\nexport type ContainerAttrs = ComponentAttrs<ContainerModel>\n\n/**\n * Container component model\n * @public\n */\nexport interface ContainerModel extends ComponentGroupModel<ComponentModel> {\n /**\n * Component type name\n */\n type: 'container'\n /**\n * Enables horizontal layout\n */\n horizontal?: boolean\n /**\n * Custom CSS Style\n */\n style?: Partial<CSSStyleDeclaration>\n}\n\nconst TYPE = 'container'\ncomponent<ContainerAttrs>(TYPE, () => {\n return {\n view: viewFn((data) =>\n m(\n 'div',\n {\n class: cssClass({\n [twuiClass(TYPE)]: true,\n [twuiClass(TYPE, 'horizontal')]: data.horizontal,\n }),\n style: data.style,\n },\n m.fragment({}, data.children?.map(renderModel)),\n ),\n ),\n }\n})\n","import m from 'mithril'\n\nimport {\n component,\n renderModel,\n ComponentGroupModel,\n ComponentAttrs,\n ComponentModel,\n} from '../../core'\nimport { twuiClass, viewFn, isString, use, call, cssClass } from '../../core/utils'\n\n/**\n * Group component attributes\n * @public\n */\nexport type GroupAttrs = ComponentAttrs<GroupModel>\n\n/**\n * Group component model\n * @public\n */\nexport interface GroupModel extends ComponentGroupModel<ComponentModel> {\n /**\n * Component type name\n */\n type: 'group'\n /**\n * Group title\n */\n title?: string\n /**\n * Group CSS Style\n */\n style?: Partial<CSSStyleDeclaration>\n /**\n * Whether the child elements can be collapsed\n */\n collapsible?: boolean\n /**\n * Whether the child elements are collapsed\n */\n collapsed?: boolean\n /**\n * Adds an offset to the left side\n */\n inset?: boolean\n /**\n * Is called when this Group has been collapsed or expanded\n */\n onToggle?: (group: GroupModel) => void\n /**\n * Is called when this Group has been expanded\n */\n onExpand?: (group: GroupModel) => void\n /**\n * Is called when this Group has been collapsed\n */\n onCollapse?: (group: GroupModel) => void\n}\n\nconst TYPE = 'group'\ncomponent<GroupAttrs>(TYPE, (node) => {\n function onClick(e: MouseEvent) {\n use(node.attrs.data, (data) => {\n data.collapsed = !data.collapsed\n call(data.onToggle, data)\n if (data.collapsed) {\n call(data.onCollapse, data)\n } else {\n call(data.onExpand, data)\n }\n })\n }\n function title(data: GroupModel) {\n if (!data.title && !data.collapsible) {\n return null\n }\n return m(\n 'div',\n {\n class: twuiClass(TYPE, 'title'),\n onclick: data.collapsible ? onClick : null,\n },\n data.title,\n )\n }\n function children(data: GroupModel) {\n if (data.collapsed || !data.children) {\n return []\n }\n return data.children?.map((it) => {\n if (isString(it.label)) {\n return m(\n 'div',\n { class: twuiClass(TYPE, 'control') },\n m('label', it.label),\n m('section', renderModel(it)),\n )\n }\n return renderModel(it)\n })\n }\n\n return {\n view: viewFn((data) =>\n m(\n 'div',\n {\n class: cssClass({\n [twuiClass(TYPE)]: true,\n [twuiClass(TYPE, 'collapsible')]: data.collapsible,\n [twuiClass(TYPE, 'collapsed')]: data.collapsed,\n }) ,\n style: data.style,\n },\n m.fragment({}, [title(data)]),\n m.fragment({}, [children(data)]),\n ),\n ),\n }\n})\n","import m from 'mithril'\n\nimport {\n component,\n renderModel,\n ComponentAttrs,\n ComponentGroupModel,\n} from '../../core'\nimport { clamp, twuiClass, viewFn } from '../../core/utils'\nimport { GroupModel } from './group'\n\n/**\n * Tabs component attributes\n * @public\n */\nexport type TabsAtts = ComponentAttrs<TabsModel>\n\n/**\n * Tabs component model\n * @public\n */\nexport interface TabsModel extends ComponentGroupModel<GroupModel> {\n /**\n * The type name of the control\n */\n type: 'tabs'\n /**\n * The index of the opened tab\n */\n active: number\n}\n\ncomponent<TabsAtts>('tabs', () => {\n return {\n view: viewFn((data) => {\n const tabs = data.children || []\n const active = clamp(data.active || 0, 0, tabs.length - 1)\n const tab = tabs[active]\n return m(\n 'div',\n {\n class: twuiClass(data.type),\n },\n m(\n 'div',\n {\n key: `${data.type}-list`,\n class: twuiClass(`${data.type}-list`),\n },\n tabs.map((it, index) => {\n return m(\n \"button[type='button']\",\n {\n key: `${data.type}-${index}`,\n onclick: () => (data.active = index),\n class: active === index ? 'is-active' : '',\n },\n it.label || it.title,\n )\n }),\n ),\n m.fragment({ key: `panel-${data.active}` }, [\n renderModel<GroupModel>({\n type: 'group',\n children: tab.children,\n style: tab.style,\n }),\n ]),\n )\n }),\n }\n})\n","import m from 'mithril'\n\nimport { component, ComponentAttrs, ComponentModel } from '../core'\nimport { call, twuiClass, viewFn } from '../core/utils'\n\n/**\n * Button component attribuets\n * @public\n */\nexport type ButtonAttrs = ComponentAttrs<ButtonModel>\n\n/**\n * Button component model\n * @public\n */\nexport interface ButtonModel extends ComponentModel {\n /**\n * The type name of the control\n */\n type: 'button'\n /**\n * The button text\n */\n text?: string\n /**\n * This is callend when the control is clicked\n */\n onClick?: (ctrl: ButtonModel) => void\n /**\n * Disables the control input\n */\n disabled?: boolean\n}\n\nconst type = 'button'\ncomponent<ButtonAttrs>(type, (node) => {\n return {\n view: viewFn((data) =>\n m(\n type,\n {\n type: type,\n class: twuiClass(type),\n onclick: () => call(data.onClick, data),\n disabled: data.disabled,\n },\n data.text,\n ),\n ),\n }\n})\n","import m, { Child } from 'mithril'\n\nimport { component, ComponentAttrs, ComponentModel } from '../core'\nimport { viewFn } from '../core/utils'\n\n/**\n * Content component attributes\n * @public\n */\nexport type ContentAttrs = ComponentAttrs<ContentModel>\n\n/**\n * Content component model\n * @public\n */\nexport interface ContentModel extends ComponentModel {\n /**\n * The type name of the control\n */\n type: 'content'\n /**\n * A mithril child\n */\n content?: Child\n}\n\nconst CONTENT = 'content'\n\ncomponent<ContentAttrs>(CONTENT, () => {\n return {\n view: viewFn((data) => m.fragment({}, [data.content])),\n }\n})\n","import m from 'mithril'\n\nimport { component, ComponentModel, ComponentAttrs } from '../core'\nimport { call, use, twuiClass, viewFn, isNumber, isString, cssClass } from '../core/utils'\n\n/**\n * Image component attrs\n * @public\n */\nexport type ImageAttrs = ComponentAttrs<ImageModel>\n\n/**\n * Image component model\n * @public\n */\nexport interface ImageModel extends ComponentModel {\n /**\n * The type name of the control\n */\n type: 'image'\n /**\n * The image source url\n */\n src?: string | string[]\n /**\n * Aspect ratio of the picture container\n */\n aspect?: string\n /**\n * A fixed width\n */\n width?: number | string\n /**\n *\n */\n fit?: 'contain' | 'cover' | 'fill'\n /**\n * This is callend when the control is clicked\n */\n onClick?: (ctrl: ImageModel) => void\n}\n\nconst TYPE = 'image'\ncomponent<ImageAttrs>('image', (node) => {\n const onClick = () => {\n use(node.attrs.data, (data) => call(data.onClick, data))\n }\n function aspect(spec: string) {\n if (!spec) {\n return null\n }\n const [x, y] = (spec || '1x1').split('x').map(Number)\n const padding = ((y / x) || 1) * 100\n return `${padding}%`\n }\n function width(data: ImageModel) {\n if (isNumber(data.width)) {\n return `${data.width}px`\n }\n if (isString(data.width)) {\n return data.width\n }\n }\n return {\n view: viewFn((data) => {\n return (Array.isArray(data.src) ? data.src : [data.src]).map((src) => {\n return m(\n 'picture',\n {\n class: cssClass({\n [twuiClass(TYPE)]: true,\n [twuiClass(TYPE, 'aspect')]: !!data.aspect,\n }),\n style: {\n '--twui-aspect': aspect(data.aspect),\n '--twui-fit': data.fit || 'fit',\n width: width(data),\n },\n },\n m('img', {\n src: src,\n onclick: onClick,\n }),\n )\n })\n }),\n }\n})\n","\n// tslint:disable: unified-signatures\n\nimport { ComponentModel, ComponentGroupModel, ValueSource } from './core'\n\nimport {\n AccordeonModel,\n AngleModel,\n ButtonModel,\n CheckboxModel,\n ContainerModel,\n ColorModel,\n ColorPickerModel,\n ContentModel,\n GroupModel,\n ImageModel,\n NumberModel,\n PointModel,\n SelectModel,\n SphericalModel,\n TabsModel,\n TextModel,\n PositionModel,\n} from './components'\nimport { isFunction, isObject, isString } from './core/utils'\nimport { Child } from 'mithril'\n\n/**\n *\n * @public\n */\nexport interface Removable {\n remove?: () => void\n}\n\n/**\n * Union type of all build in models\n * @public\n */\nexport type BuildInComponent =\n | AccordeonModel\n | AngleModel\n | ButtonModel\n | CheckboxModel\n | ColorModel\n | ColorPickerModel\n | ContainerModel\n | ContentModel\n | GroupModel\n | ImageModel\n | NumberModel\n | PointModel\n | SelectModel\n | SphericalModel\n | TabsModel\n | TextModel\n | PositionModel\n\n/**\n * @public\n */\nexport type BuilderFn = (b: Builder) => void\n\n/**\n * @public\n */\nexport type TabsBuilderFn = (b: TabsBuilder) => void\n\n/**\n * @public\n */\nexport type AccordeonBuilderFn = (b: AccordeonBuilder) => void\n\n/**\n * @public\n */\nexport interface TabsBuilder {\n group(label: string, builder: BuilderFn): GroupModel & Removable\n}\n\n/**\n * @public\n */\nexport interface AccordeonBuilder {\n /**\n * Adds a control group\n *\n * @param title - The group label\n * @param builder - A callback allowing to build sub controls\n */\n group(title: string, builder: BuilderFn): GroupModel & Removable\n /**\n * Adds a control group\n *\n * @param title - The group label\n * @param opts - Additional control options\n * @param builder - A callback allowing to build sub controls\n */\n group(title: string, opts: Partial<GroupModel>, builder?: BuilderFn): GroupModel & Removable\n group(title: string, builder: BuilderFn): GroupModel & Removable\n}\n\nfunction assign<T extends ComponentModel, E>(partial: T, overrides: E): T & E\nfunction assign<T extends ComponentModel>(partial: Partial<T>, overrides: T): T\nfunction assign<T extends ComponentModel>(partial: Partial<T>, overrides: T): T {\n Object.keys(overrides).forEach((key: string) => {\n partial[key as keyof T] = overrides[key as keyof T]\n })\n return partial as T\n}\n\nfunction buildGroup<T extends ComponentGroupModel>(this: Builder): Partial<T> {\n let label: string = null\n let opts: Partial<T> = {}\n let cb: BuilderFn\n\n // tslint:disable-next-line: prefer-for-of\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i]\n if (isString(arg)) {\n label = arg\n } else if (isObject(arg)) {\n opts = arg\n } else if (isFunction(arg)) {\n cb = arg\n }\n }\n\n if (label) {\n opts.label = label\n }\n\n if (cb) {\n const controls = this.controls\n this.controls = []\n cb(this)\n opts.children = this.controls\n this.controls = controls\n }\n return opts\n}\n\n\nfunction buildControl<T extends ValueSource<any, any> & ComponentModel>(): Partial<T> {\n let opts: Partial<T> = {}\n\n if (arguments.length > 1) {\n opts = arguments[2] || opts\n opts.target = arguments[0]\n opts.property = arguments[1]\n if (opts.label === undefined) {\n opts.label = String(opts.property || '')\n }\n }\n if (arguments.length === 1) {\n opts = arguments[0] || opts\n }\n\n return opts\n}\n\n/**\n *\n * @public\n */\nexport class Builder {\n /**\n * Collection of created controls\n */\n public controls: ComponentModel[] = []\n\n public group(builder: BuilderFn): GroupModel & Removable\n public group(opts: Partial<GroupModel>): GroupModel & Removable\n public group(opts: Partial<GroupModel>, builder: BuilderFn): GroupModel & Removable\n public group(label: string, builder: BuilderFn): GroupModel & Removable\n public group(label: string, opts: Partial<GroupModel>): GroupModel & Removable\n public group(label: string, opts: Partial<GroupModel>, builder: BuilderFn): GroupModel & Removable\n public group(): GroupModel & Removable {\n const opts: Partial<GroupModel> = buildGroup.apply(this, arguments)\n return this.add<GroupModel>(assign(opts, {\n type: 'group',\n children: opts.children,\n label: null,\n title: opts.label,\n }))\n }\n\n public collapsible(builder: BuilderFn): GroupModel & Removable\n public collapsible(opts: Partial<GroupModel>): GroupModel & Removable\n public collapsible(opts: Partial<GroupModel>, builder: BuilderFn): GroupModel & Removable\n public collapsible(label: string, builder: BuilderFn): GroupModel & Removable\n public collapsible(label: string, opts: Partial<GroupModel>): GroupModel & Removable\n public collapsible(label: string, opts: Partial<GroupModel>, builder: BuilderFn): GroupModel & Removable\n public collapsible(): GroupModel & Removable {\n const opts: Partial<GroupModel> = buildGroup.apply(this, arguments)\n return this.add<GroupModel>(assign(opts, {\n type: 'group',\n children: opts.children,\n collapsible: true,\n label: null,\n title: opts.label,\n }))\n }\n\n public container(builder: BuilderFn): ContainerModel & Removable\n public container(opts: Partial<ContainerModel>): ContainerModel & Removable\n public container(opts: Partial<ContainerModel>, builder: BuilderFn): ContainerModel & Removable\n public container(label: string, builder: BuilderFn): ContainerModel & Removable\n public container(label: string, opts: Partial<ContainerModel>): ContainerModel & Removable\n public container(label: string, opts: Partial<ContainerModel>, builder: BuilderFn): ContainerModel & Removable\n public container(): ContainerModel & Removable {\n const opts: Partial<ContainerModel> = buildGroup.apply(this, arguments)\n return this.add<ContainerModel>(assign(opts, {\n type: 'container',\n children: opts.children,\n }))\n }\n\n public tabs(builder: TabsBuilderFn): TabsModel & Removable\n public tabs(opts: Partial<TabsModel>): TabsModel & Removable\n public tabs(opts: Partial<TabsModel>, builder: TabsBuilderFn): TabsModel & Removable\n public tabs(label: string, builder: TabsBuilderFn): TabsModel & Removable\n public tabs(label: string, opts: Partial<TabsModel>): TabsModel & Removable\n public tabs(label: string, opts: Partial<TabsModel>, builder: TabsBuilderFn): TabsModel & Removable\n public tabs(): TabsModel & Removable {\n const opts: Partial<TabsModel> = buildGroup.apply(this, arguments)\n return this.add<TabsModel>(assign(opts, {\n type: 'tabs',\n active: opts.active || 0,\n children: opts.children,\n }))\n }\n\n public accordion(builder: AccordeonBuilderFn): AccordeonModel & Removable\n public accordion(opts: Partial<AccordeonModel>): AccordeonModel & Removable\n public accordion(opts: Partial<AccordeonModel>, builder: AccordeonBuilderFn): AccordeonModel & Removable\n public accordion(label: string, builder: AccordeonBuilderFn): AccordeonModel & Removable\n public accordion(label: string, opts: Partial<AccordeonModel>): AccordeonModel & Removable\n public accordion(label: string, opts: Partial<AccordeonModel>, builder: AccordeonBuilderFn): AccordeonModel & Removable\n public accordion(): AccordeonModel & Removable {\n const opts: Partial<AccordeonModel> = buildGroup.apply(this, arguments)\n return this.add<AccordeonModel>(assign(opts, {\n type: 'accordion',\n children: opts.children,\n }))\n }\n\n public checkbox(opts: Partial<CheckboxModel>): CheckboxModel\n public checkbox<T>(target: T, property: keyof T): CheckboxModel<T>\n public checkbox<T>(target: T, property: keyof T, opts: Partial<CheckboxModel<T>>): CheckboxModel<T>\n public checkbox(): CheckboxModel {\n const opts: Partial<CheckboxModel> = buildControl.apply(this, arguments)\n return this.add<CheckboxModel>(\n assign(opts, { type: 'checkbox' }),\n )\n }\n\n public text(opts: Partial<TextModel>): TextModel\n public text<T>(target: T, property: keyof T): TextModel<T>\n public text<T>(target: T, property: keyof T, opts: Partial<TextModel<T>>): TextModel<T>\n public text(): TextModel {\n const opts: Partial<TextModel> = buildControl.apply(this, arguments)\n return this.add<TextModel>(\n assign(opts, { type: 'text' }),\n )\n }\n\n public number(opts: Partial<NumberModel>): NumberModel\n public number<T>(target: T, property: keyof T): NumberModel<T>\n public number<T>(target: T, property: keyof T, opts: Partial<NumberModel<T>>): NumberModel<T>\n public number(): NumberModel {\n const opts: Partial<NumberModel> = buildControl.apply(this, arguments)\n return this.add<NumberModel>(\n assign(opts, { type: 'number' }),\n )\n }\n\n public slider(opts: Partial<NumberModel>): NumberModel\n public slider<T>(target: T, property: keyof T): NumberModel<T>\n public slider<T>(target: T, property: keyof T, opts: Partial<NumberModel<T>>): NumberModel<T>\n public slider(): NumberModel {\n const opts: Partial<NumberModel> = buildControl.apply(this, arguments)\n return this.add<NumberModel>(\n assign(opts, { type: 'slider' }),\n )\n }\n\n public position(opts: Partial<PositionModel>): PositionModel\n public position<T>(target: T, property: keyof T): PositionModel<T>\n public position<T>(target: T, property: keyof T, opts: Partial<PositionModel<T>>): PositionModel<T>\n public position(): PositionModel {\n const opts: Partial<PositionModel> = buildControl.apply(this, arguments)\n return this.add<PositionModel>(\n assign(opts, { type: 'position' }),\n )\n }\n public select(opts: Partial<SelectModel>): SelectModel\n public select<T>(target: T, property: keyof T): SelectModel<T>\n public select<T>(target: T, property: keyof T, opts: Partial<SelectModel<T>>): SelectModel<T>\n public select(): SelectModel {\n const opts: Partial<SelectModel> = buildControl.apply(this, arguments)\n return this.add<SelectModel>(\n assign(opts, { type: 'select' }),\n )\n }\n\n public color(opts: Partial<ColorModel>): ColorModel\n public color<T>(target: T, property: keyof T): ColorModel<T>\n public color<T>(target: T, property: keyof T, opts: Partial<ColorModel<T>>): ColorModel<T>\n public color(): ColorModel {\n const opts: Partial<ColorModel> = buildControl.apply(this, arguments)\n return this.add<ColorModel>(\n assign(opts, { type: 'color' }),\n )\n }\n\n public colorPicker(opts: Partial<ColorPickerModel>): ColorPickerModel\n public colorPicker<T>(target: T, property: keyof T): ColorPickerModel<T>\n public colorPicker<T>(target: T, property: keyof T, opts: Partial<ColorPickerModel<T>>): ColorPickerModel<T>\n public colorPicker(): ColorPickerModel {\n const opts: Partial<ColorPickerModel> = buildControl.apply(this, arguments)\n return this.add<ColorPickerModel>(\n assign(opts, { type: 'color-picker' }),\n )\n }\n\n public point(opts: Partial<PointModel>): PointModel\n public point<T>(target: T, property: keyof T): PointModel<T>\n public point<T>(target: T, property: keyof T, opts: Partial<PointModel<T>>): PointModel<T>\n public point(): PointModel {\n const opts: Partial<PointModel> = buildControl.apply(this, arguments)\n return this.add<PointModel>(\n assign(opts, { type: 'point' }),\n )\n }\n\n public spherical(opts: Partial<SphericalModel>): SphericalModel\n public spherical<T>(target: T, property: keyof T): SphericalModel<T>\n public spherical<T>(target: T, property: keyof T, opts: Partial<SphericalModel<T>>): SphericalModel<T>\n public spherical(): SphericalModel {\n const opts: Partial<SphericalModel> = buildControl.apply(this, arguments)\n return this.add<SphericalModel>(\n assign(opts, { type: 'spherical' }),\n )\n }\n\n public angle(opts: Partial<AngleModel>): AngleModel\n public angle<T>(target: T, property: keyof T): AngleModel<T>\n public angle<T>(target: T, property: keyof T, opts: Partial<AngleModel<T>>): AngleModel<T>\n public angle(): AngleModel {\n const opts: Partial<AngleModel> = buildControl.apply(this, arguments)\n return this.add<AngleModel>(\n assign(opts, { type: 'angle' }),\n )\n }\n\n /**\n * Adds a button control\n *\n * @param text - The button text\n * @param opts - Additional options for the control\n */\n public button(text: string, opts: Partial<ButtonModel> = {}) {\n return this.add<ButtonModel>(\n assign(opts, {\n type: 'button',\n text: text,\n }),\n )\n }\n\n /**\n * Adds an image control\n *\n * @param label - The control label\n * @param opts - Additional options for the control\n */\n public image(opts: Partial<ImageModel>): ImageModel & Removable\n public image(label: string, opts: Partial<ImageModel>): ImageModel & Removable\n public image() {\n const opts: Partial<ImageModel> = buildGroup.apply(this, arguments)\n return this.add<ImageModel>(assign(opts, {\n type: 'image',\n }))\n }\n\n /**\n * Adds a description text\n *\n * @param label - The control label\n * @param text - The text message\n * @param opts - Additional options for the control\n */\n public content(label: string, content: Child, opts: Partial<ContentModel> = {}) {\n return this.add<ContentModel>(\n assign(opts, {\n type: 'content',\n label: label,\n content: content,\n }),\n )\n }\n\n\n\n /**\n * Adds a build in control\n *\n * @param def - The control definition\n */\n public add<T extends BuildInComponent>(def: T): T & Removable\n /**\n * Adds a control\n *\n * @param def - The control definition\n */\n public add<T extends ComponentModel>(def: T): T & Removable\n /**\n * Adds a control\n *\n * @param def - The control definition\n */\n public add<T extends ComponentModel>(def: T): T & Removable {\n this.controls.push(\n assign(def, {\n remove: () => {\n const i = this.controls.indexOf(def)\n if (i >= 0) {\n this.controls.splice(i, 1)\n }\n },\n }),\n )\n return def\n }\n}\n","import type { ComponentModel } from './core/types'\nimport { default as m } from 'mithril'\nimport { Builder, BuilderFn } from './builder'\nimport { isFunction } from './core/utils'\nimport { renderModel } from './core'\nimport { GroupModel } from './components'\n\n/**\n * Mithril's hyperscript function.\n *\n * @public\n * @remarks\n * Useful to create custom components\n */\nexport const h = m\n\n/**\n * Runs the function through a builder system and returns the created controls\n *\n * @param fn - The builder function\n * @returns\n */\nexport function build(fn: BuilderFn) {\n const builder = new Builder()\n fn(builder)\n return builder.controls\n}\n\n/**\n * Mounts a ui to the given element\n *\n * @public\n * @param el - The ui host element\n * @param data - The ui definition object\n */\nexport function mount<T extends ComponentModel>(el: Element | string, data: T | Array<T> | BuilderFn) {\n el = typeof el === 'string' ? document.querySelector(el) : el\n el.classList.add('twui-root')\n if (!data) {\n m.mount(el, null)\n } else if (Array.isArray(data)) {\n m.mount(el, {\n view: () =>\n renderModel<GroupModel>({\n type: 'group',\n children: data,\n }),\n })\n } else if (isFunction(data)) {\n const builder = new Builder()\n data(builder)\n m.mount(el, {\n view: () =>\n renderModel<GroupModel>({\n type: 'group',\n children: builder.controls,\n }),\n })\n } else {\n m.mount(el, {\n view: () => renderModel(data),\n })\n }\n}\n\n/**\n * Unmounts the ui from given host element\n *\n * @public\n * @param el - The ui host element\n */\nexport function unmount(el: Element | string) {\n el = typeof el === 'string' ? document.querySelector(el) : el\n m.mount(el, null)\n}\n\n/**\n * Redraws the ui\n *\n * @public\n * @remarks\n * When changing the ui description object qui callbacks (e.g. `onInput` or `onChange`)\n * the ui will redraw automatically.\n *\n * However if the ui description object is changed from outside the qui callback\n * then this method must be called in order to update the visual state.\n */\nexport function redraw() {\n m.redraw()\n}\n","/**\n * Tweak UI is a lightweight js library for building input controls with data binding\n *\n * @remarks\n * The library provides a set of common ui components built with mithriljs. The main objective\n * is to allow a developer to rapidly scaffold input interfaces for manipulating javascript objects\n * at runtime.\n *\n * Similar projects are:\n * {@link https://github.com/dataarts/dat.gui | dat.GUI}\n * {@link https://github.com/automat/controlkit.js | controlkit}\n * {@link https://github.com/colejd/guify | guify}\n *\n * @packageDocumentation\n */\n\nimport './components'\n\nexport * from './builder'\nexport * from './color-formats'\nexport * from './components'\nexport * from './core'\nexport * from './mount'\n\ndeclare const VERSION_STRING: string\n\n/**\n * The version string\n *\n * @public\n */\nexport const VERSION = VERSION_STRING\n"],"names":["Vnode","vnode","hyperscript","require$$0","require$$1","PromisePolyfill","global","assign","buildQueryString","buildPathname","parseQueryString","parsePathname","Promise","m","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","TYPE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tweak-ui.umd.js","sources":["../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/render/vnode.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/render/hyperscriptVnode.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/util/hasOwn.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/render/hyperscript.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/render/trust.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/render/fragment.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/hyperscript.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/render/domFor.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/render/render.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/render.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/api/mount-redraw.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/mount-redraw.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/querystring/build.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/pathname/build.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/request/request.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/request.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/querystring/parse.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/pathname/parse.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/pathname/compileTemplate.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/util/censor.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/api/router.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/route.js","../node_modules/.pnpm/mithril@2.3.1/node_modules/mithril/index.js","../src/lib/core/registry.ts","../src/lib/core/render.ts","../src/lib/core/value-accessor.ts","../src/lib/core/utils.ts","../src/lib/components/controls/angle.ts","../src/lib/components/controls/checkbox.ts","../src/lib/color-formats/converter.ts","../src/lib/color-formats/array-format.ts","../src/lib/color-formats/css-string-format.ts","../src/lib/color-formats/hex-string-format.ts","../src/lib/color-formats/number-format.ts","../src/lib/color-formats/object-format.ts","../src/lib/color-formats/formatter.ts","../src/lib/components/controls/color-picker.ts","../src/lib/components/controls/color.ts","../src/lib/components/controls/number.ts","../src/lib/components/controls/point.ts","../src/lib/components/controls/position.ts","../src/lib/components/controls/select.ts","../src/lib/components/controls/spherical.ts","../src/lib/components/controls/text.ts","../src/lib/components/groups/accordion.ts","../src/lib/components/groups/container.ts","../src/lib/components/groups/group.ts","../src/lib/components/groups/tabs.ts","../src/lib/components/button.ts","../src/lib/components/content.ts","../src/lib/components/image.ts","../src/lib/builder.ts","../src/lib/mount.ts"],"sourcesContent":["\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, is: undefined, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\tisKeyed && (input[i] != null || typeof input[i] === \"boolean\")\n\t\t\t\t\t\t? \"In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole.\"\n\t\t\t\t\t\t: \"In fragments, vnodes must either all have keys or none have keys.\"\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril.js requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","// This exists so I'm only saving it once.\n\"use strict\"\n\nmodule.exports = {}.hasOwnProperty\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\nvar hasOwn = require(\"../util/hasOwn\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = Object.create(null)\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\tif (isEmpty(attrs)) attrs = null\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\n\tif (state.attrs != null) {\n\t\tattrs = Object.assign({}, state.attrs, attrs)\n\n\t\tif (className != null || state.attrs.className != null) attrs.className =\n\t\t\tclassName != null\n\t\t\t\t? state.attrs.className != null\n\t\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t\t: className\n\t\t\t\t: state.attrs.className != null\n\t\t\t\t\t? state.attrs.className\n\t\t\t\t\t: null\n\t} else {\n\t\tif (className != null) attrs.className = className\n\t}\n\n\tif (hasClass) attrs.class = null\n\n\t// workaround for #2622 (reorder keys in attrs to set \"type\" first)\n\t// The DOM does things to inputs based on the \"type\", so it needs set first.\n\t// See: https://github.com/MithrilJS/mithril.js/issues/2622\n\tif (state.tag === \"input\" && hasOwn.call(attrs, \"type\")) {\n\t\tattrs = Object.assign({type: attrs.type}, attrs)\n\t}\n\n\t// This reduces the complexity of the evaluation of \"is\" within the render function.\n\tvnode.is = attrs.is\n\n\tvnode.attrs = attrs\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar delayedRemoval = new WeakMap\n\nfunction *domFor(vnode) {\n\t// To avoid unintended mangling of the internal bundler,\n\t// parameter destructuring is not used here.\n\tvar dom = vnode.dom\n\tvar domSize = vnode.domSize\n\tvar generation = delayedRemoval.get(dom)\n\tif (dom != null) do {\n\t\tvar nextSibling = dom.nextSibling\n\n\t\tif (delayedRemoval.get(dom) === generation) {\n\t\t\tyield dom\n\t\t\tdomSize--\n\t\t}\n\n\t\tdom = nextSibling\n\t}\n\twhile (domSize)\n}\n\nmodule.exports = {\n\tdelayedRemoval: delayedRemoval,\n\tdomFor: domFor,\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar df = require(\"../render/domFor\")\nvar delayedRemoval = df.delayedRemoval\nvar domFor = df.domFor\n\nmodule.exports = function() {\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\n\tvar currentRedraw\n\tvar currentRender\n\n\tfunction getDocument(dom) {\n\t\treturn dom.ownerDocument;\n\t}\n\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\n\t//sanity check to discourage people from doing `vnode.state = ...`\n\tfunction checkState(vnode, original) {\n\t\tif (vnode.state !== original) throw new Error(\"'vnode.state' must not be modified.\")\n\t}\n\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode) {\n\t\tvar original = vnode.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode, original)\n\t\t}\n\t}\n\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error, and heavy-handidly return null.\n\tfunction activeElement(dom) {\n\t\ttry {\n\t\t\treturn getDocument(dom).activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = getDocument(parent).createTextNode(vnode.children)\n\t\tinsertDOM(parent, vnode.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode, ns, nextSibling) {\n\t\tvar match = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"<td>i</td><td>j</td>\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no <td> in sight.\n\t\tvar temp = getDocument(parent).createElement(possibleParents[match[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\">\" + vnode.children + \"</svg>\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode.children\n\t\t}\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\t// Capture nodes to remove, so we don't confuse them.\n\t\tvar fragment = getDocument(parent).createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertDOM(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = getDocument(parent).createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertDOM(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs = vnode.attrs\n\t\tvar is = vnode.is\n\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tvar element = ns ?\n\t\t\tis ? getDocument(parent).createElementNS(ns, tag, {is: is}) : getDocument(parent).createElementNS(ns, tag) :\n\t\t\tis ? getDocument(parent).createElement(tag, {is: is}) : getDocument(parent).createElement(tag)\n\t\tvnode.dom = element\n\n\t\tif (attrs != null) {\n\t\t\tsetAttrs(vnode, attrs, ns)\n\t\t}\n\n\t\tinsertDOM(parent, element, nextSibling)\n\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tif (vnode.tag === \"select\" && attrs != null) setLateSelectAttrs(vnode, attrs)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tinitLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tcreateNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t}\n\t}\n\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index (for the old list), then iterate\n\t// over the new list and for each new vnode, find the corresponding vnode in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index, the DOM nodes up to the previous\n\t// vnode reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next sibling (cached in the `nextSibling` variable).\n\n\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(parent, old, 0, old.length)\n\t\telse {\n\t\t\tvar isOldKeyed = old[0] != null && old[0].key != null\n\t\t\tvar isKeyed = vnodes[0] != null && vnodes[0].key != null\n\t\t\tvar start = 0, oldStart = 0\n\t\t\tif (!isOldKeyed) while (oldStart < old.length && old[oldStart] == null) oldStart++\n\t\t\tif (!isKeyed) while (start < vnodes.length && vnodes[start] == null) start++\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(parent, old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(parent, o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(parent, old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o.key !== v.key) break\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (start === end) break\n\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\tmoveDOM(parent, oe, topSibling)\n\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\tif (++start <= --end) moveDOM(parent, o, nextSibling)\n\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse moveDOM(parent, v, nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag && old.is === vnode.is) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode.events = old.events\n\t\t\tif (shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(parent, old)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, ns, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\tremoveDOM(parent, old)\n\t\t\tcreateHTML(parent, vnode, ns, nextSibling)\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction updateFragment(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tupdateNodes(element, old.children, vnode.children, hooks, null, ns)\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(parent, old.instance)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode = vnodes[start]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key = vnode.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequence\n\tvar lisTemp = []\n\tfunction makeLisIndices(a) {\n\t\tvar result = [0]\n\t\tvar u = 0, v = 0, i = 0\n\t\tvar il = lisTemp.length = a.length\n\t\tfor (var i = 0; i < il; i++) lisTemp[i] = a[i]\n\t\tfor (var i = 0; i < il; ++i) {\n\t\t\tif (a[i] === -1) continue\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tlisTemp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\t// Fast integer average without overflow.\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tvar c = (u >>> 1) + (v >>> 1) + (u & v & 1)\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) lisTemp[i] = result[u - 1]\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = lisTemp[v]\n\t\t}\n\t\tlisTemp.length = 0\n\t\treturn result\n\t}\n\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\n\t// This handles fragments with zombie children (removed from vdom, but persisted in DOM through onbeforeremove)\n\tfunction moveDOM(parent, vnode, nextSibling) {\n\t\tif (vnode.dom != null) {\n\t\t\tvar target\n\t\t\tif (vnode.domSize == null) {\n\t\t\t\t// don't allocate for the common case\n\t\t\t\ttarget = vnode.dom\n\t\t\t} else {\n\t\t\t\ttarget = getDocument(parent).createDocumentFragment()\n\t\t\t\tfor (var dom of domFor(vnode)) target.appendChild(dom)\n\t\t\t}\n\t\t\tinsertDOM(parent, target, nextSibling)\n\t\t}\n\t}\n\n\tfunction insertDOM(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\n\tfunction maybeSetContentEditable(vnode) {\n\t\tif (vnode.attrs == null || (\n\t\t\tvnode.attrs.contenteditable == null && // attribute\n\t\t\tvnode.attrs.contentEditable == null // property\n\t\t)) return false\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted.\")\n\t\treturn true\n\t}\n\n\t//remove\n\tfunction removeNodes(parent, vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) removeNode(parent, vnode)\n\t\t}\n\t}\n\tfunction tryBlockRemove(parent, vnode, source, counter) {\n\t\tvar original = vnode.state\n\t\tvar result = callHook.call(source.onbeforeremove, vnode)\n\t\tif (result == null) return\n\n\t\tvar generation = currentRender\n\t\tfor (var dom of domFor(vnode)) delayedRemoval.set(dom, generation)\n\t\tcounter.v++\n\n\t\tPromise.resolve(result).finally(function () {\n\t\t\tcheckState(vnode, original)\n\t\t\ttryResumeRemove(parent, vnode, counter)\n\t\t})\n\t}\n\tfunction tryResumeRemove(parent, vnode, counter) {\n\t\tif (--counter.v === 0) {\n\t\t\tonremove(vnode)\n\t\t\tremoveDOM(parent, vnode)\n\t\t}\n\t}\n\tfunction removeNode(parent, vnode) {\n\t\tvar counter = {v: 1}\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeremove === \"function\") tryBlockRemove(parent, vnode, vnode.state, counter)\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") tryBlockRemove(parent, vnode, vnode.attrs, counter)\n\t\ttryResumeRemove(parent, vnode, counter)\n\t}\n\tfunction removeDOM(parent, vnode) {\n\t\tif (vnode.dom == null) return\n\t\tif (vnode.domSize == null) {\n\t\t\tparent.removeChild(vnode.dom)\n\t\t} else {\n\t\t\tfor (var dom of domFor(vnode)) parent.removeChild(dom)\n\t\t}\n\t}\n\n\tfunction onremove(vnode) {\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onremove === \"function\") callHook.call(vnode.state.onremove, vnode)\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") callHook.call(vnode.attrs.onremove, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tif (vnode.events != null) vnode.events._ = null\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//attrs\n\tfunction setAttrs(vnode, attrs, ns) {\n\t\tfor (var key in attrs) {\n\t\t\tsetAttr(vnode, key, null, attrs[key], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key, old, value, ns) {\n\t\tif (key === \"key\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode, key)) && typeof value !== \"object\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, value)\n\t\telse if (hasPropertyKey(vnode, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\t//setting input[type=file][value] to same value causes an error to be generated if it's non-empty\n\t\t\t\t//minlength/maxlength validation isn't performed on script-set values(#2256)\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting input[type=file][value] to different value is an error if it's non-empty\n\t\t\t\t// Not ideal, but it at least works around the most common source of uncaught exceptions for now.\n\t\t\t\tif (vnode.tag === \"input\" && vnode.attrs.type === \"file\" && \"\" + value !== \"\") { console.error(\"`value` is read-only on file inputs!\"); return }\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t\tif (vnode.tag === \"input\" && key === \"type\") vnode.dom.setAttribute(key, value)\n\t\t\telse vnode.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode, key, old, ns) {\n\t\tif (key === \"key\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") updateEvent(vnode, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& key !== \"title\" // creates \"null\" as title\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode.tag === \"option\"\n\t\t\t\t|| vnode.tag === \"select\" && vnode.dom.selectedIndex === -1 && vnode.dom === activeElement(vnode.dom)\n\t\t\t))\n\t\t\t&& !(vnode.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode, attrs) {\n\t\tif (\"value\" in attrs) {\n\t\t\tif(attrs.value === null) {\n\t\t\t\tif (vnode.dom.selectedIndex !== -1) vnode.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode.dom.value !== normalized || vnode.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs) setAttr(vnode, \"selectedIndex\", null, attrs.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode, old, attrs, ns) {\n\t\t// Some attributes may NOT be case-sensitive (e.g. data-***),\n\t\t// so removal should be done first to prevent accidental removal for newly setting values.\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tif (old === attrs) {\n\t\t\t\tconsole.warn(\"Don't reuse attrs object, use new object for every redraw, this will throw in next major\")\n\t\t\t}\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs == null || attrs[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (attrs != null) {\n\t\t\tfor (var key in attrs) {\n\t\t\t\tsetAttr(vnode, key, old && old[key], attrs[key], ns)\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && (vnode.dom === activeElement(vnode.dom) || vnode.tag === \"option\" && vnode.dom.parentNode === activeElement(vnode.dom))\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode.tag.indexOf(\"-\") > -1 || vnode.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode.dom\n\t}\n\n\t//style\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) {\n\t\t\t\t\tif (key.includes(\"-\")) element.style.setProperty(key, String(value))\n\t\t\t\t\telse element.style[key] = String(value)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Remove style properties that no longer exist\n\t\t\t// Style properties may have two cases(dash-case and camelCase),\n\t\t\t// so removal should be done first to prevent accidental removal for newly setting values.\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\tif (key.includes(\"-\")) element.style.removeProperty(key)\n\t\t\t\t\telse element.style[key] = \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\tif (key.includes(\"-\")) element.style.setProperty(key, value)\n\t\t\t\t\telse element.style[key] = value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {\n\t\t// Save this, so the current redraw is correctly tracked.\n\t\tthis._ = currentRedraw\n\t}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler === \"function\") result = handler.call(ev.currentTarget, ev)\n\t\telse if (typeof handler.handleEvent === \"function\") handler.handleEvent(ev)\n\t\tvar self = this\n\t\tif (self._ != null) {\n\t\t\tif (ev.redraw !== false) (0, self._)()\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\tPromise.resolve(result).then(function () {\n\t\t\t\t\tif (self._ != null && ev.redraw !== false) (0, self._)()\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\n\t//event\n\tfunction updateEvent(vnode, key, value) {\n\t\tif (vnode.events != null) {\n\t\t\tvnode.events._ = currentRedraw\n\t\t\tif (vnode.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode.events[key] == null) vnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode.events[key] != null) vnode.dom.removeEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode.events = new EventDict()\n\t\t\tvnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\tvnode.events[key] = value\n\t\t}\n\t}\n\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tdo {\n\t\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.attrs.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.state.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode.dom = old.dom\n\t\tvnode.domSize = old.domSize\n\t\tvnode.instance = old.instance\n\t\t// One would think having the actual latest attributes would be ideal,\n\t\t// but it doesn't let us properly diff based on our current internal\n\t\t// representation. We have to save not only the old DOM info, but also\n\t\t// the attributes used to create it, as we diff *that*, not against the\n\t\t// DOM directly (with a few exceptions in `setAttr`). And, of course, we\n\t\t// need to save the children and text as they are conceptually not\n\t\t// unlike special \"attributes\" internally.\n\t\tvnode.attrs = old.attrs\n\t\tvnode.children = old.children\n\t\tvnode.text = old.text\n\t\treturn true\n\t}\n\n\tvar currentDOM\n\n\treturn function(dom, vnodes, redraw) {\n\t\tif (!dom) throw new TypeError(\"DOM element being rendered to does not exist.\")\n\t\tif (currentDOM != null && dom.contains(currentDOM)) {\n\t\t\tthrow new TypeError(\"Node is currently being rendered to and thus is locked.\")\n\t\t}\n\t\tvar prevRedraw = currentRedraw\n\t\tvar prevDOM = currentDOM\n\t\tvar hooks = []\n\t\tvar active = activeElement(dom)\n\t\tvar namespace = dom.namespaceURI\n\n\t\tcurrentDOM = dom\n\t\tcurrentRedraw = typeof redraw === \"function\" ? redraw : undefined\n\t\tcurrentRender = {}\n\t\ttry {\n\t\t\t// First time rendering into a node clears it out\n\t\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\t\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\t\tdom.vnodes = vnodes\n\t\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\t\tif (active != null && activeElement(dom) !== active && typeof active.focus === \"function\") active.focus()\n\t\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t\t} finally {\n\t\t\tcurrentRedraw = prevRedraw\n\t\t\tcurrentDOM = prevDOM\n\t\t}\n\t}\n}\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(typeof window !== \"undefined\" ? window : null)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(render, schedule, console) {\n\tvar subscriptions = []\n\tvar pending = false\n\tvar offset = -1\n\n\tfunction sync() {\n\t\tfor (offset = 0; offset < subscriptions.length; offset += 2) {\n\t\t\ttry { render(subscriptions[offset], Vnode(subscriptions[offset + 1]), redraw) }\n\t\t\tcatch (e) { console.error(e) }\n\t\t}\n\t\toffset = -1\n\t}\n\n\tfunction redraw() {\n\t\tif (!pending) {\n\t\t\tpending = true\n\t\t\tschedule(function() {\n\t\t\t\tpending = false\n\t\t\t\tsync()\n\t\t\t})\n\t\t}\n\t}\n\n\tredraw.sync = sync\n\n\tfunction mount(root, component) {\n\t\tif (component != null && component.view == null && typeof component !== \"function\") {\n\t\t\tthrow new TypeError(\"m.mount expects a component, not a vnode.\")\n\t\t}\n\n\t\tvar index = subscriptions.indexOf(root)\n\t\tif (index >= 0) {\n\t\t\tsubscriptions.splice(index, 2)\n\t\t\tif (index <= offset) offset -= 2\n\t\t\trender(root, [])\n\t\t}\n\n\t\tif (component != null) {\n\t\t\tsubscriptions.push(root, component)\n\t\t\trender(root, Vnode(component), redraw)\n\t\t}\n\t}\n\n\treturn {mount: mount, redraw: redraw}\n}\n","\"use strict\"\n\nvar render = require(\"./render\")\n\nmodule.exports = require(\"./api/mount-redraw\")(render, typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : null, typeof console !== \"undefined\" ? console : null)\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","\"use strict\"\n\nvar buildQueryString = require(\"../querystring/build\")\n\n// Returns `path` from `template` + `params`\nmodule.exports = function(template, params) {\n\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(template)) {\n\t\tthrow new SyntaxError(\"Template parameter names must be separated by either a '/', '-', or '.'.\")\n\t}\n\tif (params == null) return template\n\tvar queryIndex = template.indexOf(\"?\")\n\tvar hashIndex = template.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? template.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = template.slice(0, pathEnd)\n\tvar query = {}\n\n\tObject.assign(query, params)\n\n\tvar resolved = path.replace(/:([^\\/\\.-]+)(\\.{3})?/g, function(m, key, variadic) {\n\t\tdelete query[key]\n\t\t// If no such parameter exists, don't interpolate it.\n\t\tif (params[key] == null) return m\n\t\t// Escape normal parameters, but not variadic ones.\n\t\treturn variadic ? params[key] : encodeURIComponent(String(params[key]))\n\t})\n\n\t// In case the template substitution adds new query/hash parameters.\n\tvar newQueryIndex = resolved.indexOf(\"?\")\n\tvar newHashIndex = resolved.indexOf(\"#\")\n\tvar newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex\n\tvar newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex\n\tvar result = resolved.slice(0, newPathEnd)\n\n\tif (queryIndex >= 0) result += template.slice(queryIndex, queryEnd)\n\tif (newQueryIndex >= 0) result += (queryIndex < 0 ? \"?\" : \"&\") + resolved.slice(newQueryIndex, newQueryEnd)\n\tvar querystring = buildQueryString(query)\n\tif (querystring) result += (queryIndex < 0 && newQueryIndex < 0 ? \"?\" : \"&\") + querystring\n\tif (hashIndex >= 0) result += template.slice(hashIndex)\n\tif (newHashIndex >= 0) result += (hashIndex < 0 ? \"\" : \"&\") + resolved.slice(newHashIndex)\n\treturn result\n}\n","\"use strict\"\n\nvar buildPathname = require(\"../pathname/build\")\nvar hasOwn = require(\"../util/hasOwn\")\n\nmodule.exports = function($window, oncompletion) {\n\tfunction PromiseProxy(executor) {\n\t\treturn new Promise(executor)\n\t}\n\n\tfunction makeRequest(url, args) {\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\turl = buildPathname(url, args.params)\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar body = args.body\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData || body instanceof $window.URLSearchParams)\n\t\t\tvar responseType = args.responseType || (typeof args.extract === \"function\" ? \"\" : \"json\")\n\n\t\t\tvar xhr = new $window.XMLHttpRequest(), aborted = false, isTimeout = false\n\t\t\tvar original = xhr, replacedAbort\n\t\t\tvar abort = xhr.abort\n\n\t\t\txhr.abort = function() {\n\t\t\t\taborted = true\n\t\t\t\tabort.call(this)\n\t\t\t}\n\n\t\t\txhr.open(method, url, args.async !== false, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\n\t\t\tif (assumeJSON && body != null && !hasHeader(args, \"content-type\")) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, \"accept\")) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\txhr.responseType = responseType\n\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif (hasOwn.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onreadystatechange = function(ev) {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif (aborted) return\n\n\t\t\t\tif (ev.target.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\t// When the response type isn't \"\" or \"text\",\n\t\t\t\t\t\t// `xhr.responseText` is the wrong thing to use.\n\t\t\t\t\t\t// Browsers do the right thing and throw here, and we\n\t\t\t\t\t\t// should honor that and do the right thing by\n\t\t\t\t\t\t// preferring `xhr.response` where possible/practical.\n\t\t\t\t\t\tvar response = ev.target.response, message\n\n\t\t\t\t\t\tif (responseType === \"json\") {\n\t\t\t\t\t\t\t// For IE and Edge, which don't implement\n\t\t\t\t\t\t\t// `responseType: \"json\"`.\n\t\t\t\t\t\t\tif (!ev.target.responseType && typeof args.extract !== \"function\") {\n\t\t\t\t\t\t\t\t// Handle no-content which will not parse.\n\t\t\t\t\t\t\t\ttry { response = JSON.parse(ev.target.responseText) }\n\t\t\t\t\t\t\t\tcatch (e) { response = null }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!responseType || responseType === \"text\") {\n\t\t\t\t\t\t\t// Only use this default if it's text. If a parsed\n\t\t\t\t\t\t\t// document is needed on old IE and friends (all\n\t\t\t\t\t\t\t// unsupported), the user should use a custom\n\t\t\t\t\t\t\t// `config` instead. They're already using this at\n\t\t\t\t\t\t\t// their own risk.\n\t\t\t\t\t\t\tif (response == null) response = ev.target.responseText\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(ev.target, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (success) {\n\t\t\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\t\t\tif (Array.isArray(response)) {\n\t\t\t\t\t\t\t\t\tfor (var i = 0; i < response.length; i++) {\n\t\t\t\t\t\t\t\t\t\tresponse[i] = new args.type(response[i])\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse response = new args.type(response)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar completeErrorResponse = function() {\n\t\t\t\t\t\t\t\ttry { message = ev.target.responseText }\n\t\t\t\t\t\t\t\tcatch (e) { message = response }\n\t\t\t\t\t\t\t\tvar error = new Error(message)\n\t\t\t\t\t\t\t\terror.code = ev.target.status\n\t\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (xhr.status === 0) {\n\t\t\t\t\t\t\t\t// Use setTimeout to push this code block onto the event queue\n\t\t\t\t\t\t\t\t// This allows `xhr.ontimeout` to run in the case that there is a timeout\n\t\t\t\t\t\t\t\t// Without this setTimeout, `xhr.ontimeout` doesn't have a chance to reject\n\t\t\t\t\t\t\t\t// as `xhr.onreadystatechange` will run before it\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tif (isTimeout) return\n\t\t\t\t\t\t\t\t\tcompleteErrorResponse()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else completeErrorResponse()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.ontimeout = function (ev) {\n\t\t\t\tisTimeout = true\n\t\t\t\tvar error = new Error(\"Request timed out\")\n\t\t\t\terror.code = ev.target.status\n\t\t\t\treject(error)\n\t\t\t}\n\n\t\t\tif (typeof args.config === \"function\") {\n\t\t\t\txhr = args.config(xhr, args, url) || xhr\n\n\t\t\t\t// Propagate the `abort` to any replacement XHR as well.\n\t\t\t\tif (xhr !== original) {\n\t\t\t\t\treplacedAbort = xhr.abort\n\t\t\t\t\txhr.abort = function() {\n\t\t\t\t\t\taborted = true\n\t\t\t\t\t\treplacedAbort.call(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body == null) xhr.send()\n\t\t\telse if (typeof args.serialize === \"function\") xhr.send(args.serialize(body))\n\t\t\telse if (body instanceof $window.FormData || body instanceof $window.URLSearchParams) xhr.send(body)\n\t\t\telse xhr.send(JSON.stringify(body))\n\t\t})\n\t}\n\n\t// In case the global Promise is some userland library's where they rely on\n\t// `foo instanceof this.constructor`, `this.constructor.resolve(value)`, or\n\t// similar. Let's *not* break them.\n\tPromiseProxy.prototype = Promise.prototype\n\tPromiseProxy.__proto__ = Promise // eslint-disable-line no-proto\n\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif (hasOwn.call(args.headers, key) && key.toLowerCase() === name) return true\n\t\t}\n\t\treturn false\n\t}\n\n\treturn {\n\t\trequest: function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise = makeRequest(url, args)\n\t\t\tif (args.background === true) return promise\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\n\t\t\treturn wrap(promise)\n\n\t\t\tfunction wrap(promise) {\n\t\t\t\tvar then = promise.then\n\t\t\t\t// Set the constructor, so engines know to not await or resolve\n\t\t\t\t// this as a native promise. At the time of writing, this is\n\t\t\t\t// only necessary for V8, but their behavior is the correct\n\t\t\t\t// behavior per spec. See this spec issue for more details:\n\t\t\t\t// https://github.com/tc39/ecma262/issues/1577. Also, see the\n\t\t\t\t// corresponding comment in `request/tests/test-request.js` for\n\t\t\t\t// a bit more background on the issue at hand.\n\t\t\t\tpromise.constructor = PromiseProxy\n\t\t\t\tpromise.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then.apply(promise, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise\n\t\t\t}\n\t\t}\n\t}\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(typeof window !== \"undefined\" ? window : null, mountRedraw.redraw)\n","\"use strict\"\n\nfunction decodeURIComponentSave(str) {\n\ttry {\n\t\treturn decodeURIComponent(str)\n\t} catch(err) {\n\t\treturn str\n\t}\n}\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponentSave(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponentSave(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","\"use strict\"\n\nvar parsePathname = require(\"./parse\")\n\n// Compiles a template into a function that takes a resolved path (without query\n// strings) and returns an object containing the template parameters with their\n// parsed values. This expects the input of the compiled template to be the\n// output of `parsePathname`. Note that it does *not* remove query parameters\n// specified in the template.\nmodule.exports = function(template) {\n\tvar templateData = parsePathname(template)\n\tvar templateKeys = Object.keys(templateData.params)\n\tvar keys = []\n\tvar regexp = new RegExp(\"^\" + templateData.path.replace(\n\t\t// I escape literal text so people can use things like `:file.:ext` or\n\t\t// `:lang-:locale` in routes. This is all merged into one pass so I\n\t\t// don't also accidentally escape `-` and make it harder to detect it to\n\t\t// ban it from template parameters.\n\t\t/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,\n\t\tfunction(m, key, extra) {\n\t\t\tif (key == null) return \"\\\\\" + m\n\t\t\tkeys.push({k: key, r: extra === \"...\"})\n\t\t\tif (extra === \"...\") return \"(.*)\"\n\t\t\tif (extra === \".\") return \"([^/]+)\\\\.\"\n\t\t\treturn \"([^/]+)\" + (extra || \"\")\n\t\t}\n\t) + \"\\\\/?$\")\n\treturn function(data) {\n\t\t// First, check the params. Usually, there isn't any, and it's just\n\t\t// checking a static set.\n\t\tfor (var i = 0; i < templateKeys.length; i++) {\n\t\t\tif (templateData.params[templateKeys[i]] !== data.params[templateKeys[i]]) return false\n\t\t}\n\t\t// If no interpolations exist, let's skip all the ceremony\n\t\tif (!keys.length) return regexp.test(data.path)\n\t\tvar values = regexp.exec(data.path)\n\t\tif (values == null) return false\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tdata.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])\n\t\t}\n\t\treturn true\n\t}\n}\n","\"use strict\"\n\n// Note: this is mildly perf-sensitive.\n//\n// It does *not* use `delete` - dynamic `delete`s usually cause objects to bail\n// out into dictionary mode and just generally cause a bunch of optimization\n// issues within engines.\n//\n// Ideally, I would've preferred to do this, if it weren't for the optimization\n// issues:\n//\n// ```js\n// const hasOwn = require(\"./hasOwn\")\n// const magic = [\n// \"key\", \"oninit\", \"oncreate\", \"onbeforeupdate\", \"onupdate\",\n// \"onbeforeremove\", \"onremove\",\n// ]\n// module.exports = (attrs, extras) => {\n// const result = Object.assign(Object.create(null), attrs)\n// for (const key of magic) delete result[key]\n// if (extras != null) for (const key of extras) delete result[key]\n// return result\n// }\n// ```\n\nvar hasOwn = require(\"./hasOwn\")\n// Words in RegExp literals are sometimes mangled incorrectly by the internal bundler, so use RegExp().\nvar magic = new RegExp(\"^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$\")\n\nmodule.exports = function(attrs, extras) {\n\tvar result = {}\n\n\tif (extras != null) {\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key) && !magic.test(key) && extras.indexOf(key) < 0) {\n\t\t\t\tresult[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key) && !magic.test(key)) {\n\t\t\t\tresult[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar m = require(\"../render/hyperscript\")\n\nvar buildPathname = require(\"../pathname/build\")\nvar parsePathname = require(\"../pathname/parse\")\nvar compileTemplate = require(\"../pathname/compileTemplate\")\nvar censor = require(\"../util/censor\")\n\nvar sentinel = {}\n\nfunction decodeURIComponentSave(component) {\n\ttry {\n\t\treturn decodeURIComponent(component)\n\t} catch(e) {\n\t\treturn component\n\t}\n}\n\nmodule.exports = function($window, mountRedraw) {\n\tvar callAsync = $window == null\n\t\t// In case Mithril.js' loaded globally without the DOM, let's not break\n\t\t? null\n\t\t: typeof $window.setImmediate === \"function\" ? $window.setImmediate : $window.setTimeout\n\tvar p = Promise.resolve()\n\n\tvar scheduled = false\n\n\t// state === 0: init\n\t// state === 1: scheduled\n\t// state === 2: done\n\tvar ready = false\n\tvar state = 0\n\n\tvar compiled, fallbackRoute\n\n\tvar currentResolver = sentinel, component, attrs, currentPath, lastUpdate\n\n\tvar RouterRoot = {\n\t\tonbeforeupdate: function() {\n\t\t\tstate = state ? 2 : 1\n\t\t\treturn !(!state || sentinel === currentResolver)\n\t\t},\n\t\tonremove: function() {\n\t\t\t$window.removeEventListener(\"popstate\", fireAsync, false)\n\t\t\t$window.removeEventListener(\"hashchange\", resolveRoute, false)\n\t\t},\n\t\tview: function() {\n\t\t\tif (!state || sentinel === currentResolver) return\n\t\t\t// Wrap in a fragment to preserve existing key semantics\n\t\t\tvar vnode = [Vnode(component, attrs.key, attrs)]\n\t\t\tif (currentResolver) vnode = currentResolver.render(vnode[0])\n\t\t\treturn vnode\n\t\t},\n\t}\n\n\tvar SKIP = route.SKIP = {}\n\n\tfunction resolveRoute() {\n\t\tscheduled = false\n\t\t// Consider the pathname holistically. The prefix might even be invalid,\n\t\t// but that's not our problem.\n\t\tvar prefix = $window.location.hash\n\t\tif (route.prefix[0] !== \"#\") {\n\t\t\tprefix = $window.location.search + prefix\n\t\t\tif (route.prefix[0] !== \"?\") {\n\t\t\t\tprefix = $window.location.pathname + prefix\n\t\t\t\tif (prefix[0] !== \"/\") prefix = \"/\" + prefix\n\t\t\t}\n\t\t}\n\t\t// This seemingly useless `.concat()` speeds up the tests quite a bit,\n\t\t// since the representation is consistently a relatively poorly\n\t\t// optimized cons string.\n\t\tvar path = prefix.concat()\n\t\t\t.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponentSave)\n\t\t\t.slice(route.prefix.length)\n\t\tvar data = parsePathname(path)\n\n\t\tObject.assign(data.params, $window.history.state)\n\n\t\tfunction reject(e) {\n\t\t\tconsole.error(e)\n\t\t\tsetPath(fallbackRoute, null, {replace: true})\n\t\t}\n\n\t\tloop(0)\n\t\tfunction loop(i) {\n\t\t\t// state === 0: init\n\t\t\t// state === 1: scheduled\n\t\t\t// state === 2: done\n\t\t\tfor (; i < compiled.length; i++) {\n\t\t\t\tif (compiled[i].check(data)) {\n\t\t\t\t\tvar payload = compiled[i].component\n\t\t\t\t\tvar matchedRoute = compiled[i].route\n\t\t\t\t\tvar localComp = payload\n\t\t\t\t\tvar update = lastUpdate = function(comp) {\n\t\t\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\t\t\tif (comp === SKIP) return loop(i + 1)\n\t\t\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\t\t\tattrs = data.params, currentPath = path, lastUpdate = null\n\t\t\t\t\t\tcurrentResolver = payload.render ? payload : null\n\t\t\t\t\t\tif (state === 2) mountRedraw.redraw()\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tstate = 2\n\t\t\t\t\t\t\tmountRedraw.redraw.sync()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// There's no understating how much I *wish* I could\n\t\t\t\t\t// use `async`/`await` here...\n\t\t\t\t\tif (payload.view || typeof payload === \"function\") {\n\t\t\t\t\t\tpayload = {}\n\t\t\t\t\t\tupdate(localComp)\n\t\t\t\t\t}\n\t\t\t\t\telse if (payload.onmatch) {\n\t\t\t\t\t\tp.then(function () {\n\t\t\t\t\t\t\treturn payload.onmatch(data.params, path, matchedRoute)\n\t\t\t\t\t\t}).then(update, path === fallbackRoute ? null : reject)\n\t\t\t\t\t}\n\t\t\t\t\telse update(\"div\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (path === fallbackRoute) {\n\t\t\t\tthrow new Error(\"Could not resolve default route \" + fallbackRoute + \".\")\n\t\t\t}\n\t\t\tsetPath(fallbackRoute, null, {replace: true})\n\t\t}\n\t}\n\n\t// Set it unconditionally so `m.route.set` and `m.route.Link` both work,\n\t// even if neither `pushState` nor `hashchange` are supported. It's\n\t// cleared if `hashchange` is used, since that makes it automatically\n\t// async.\n\tfunction fireAsync() {\n\t\tif (!scheduled) {\n\t\t\tscheduled = true\n\t\t\t// TODO: just do `mountRedraw.redraw()` here and elide the timer\n\t\t\t// dependency. Note that this will muck with tests a *lot*, so it's\n\t\t\t// not as easy of a change as it sounds.\n\t\t\tcallAsync(resolveRoute)\n\t\t}\n\t}\n\n\tfunction setPath(path, data, options) {\n\t\tpath = buildPathname(path, data)\n\t\tif (ready) {\n\t\t\tfireAsync()\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, route.prefix + path)\n\t\t\telse $window.history.pushState(state, title, route.prefix + path)\n\t\t}\n\t\telse {\n\t\t\t$window.location.href = route.prefix + path\n\t\t}\n\t}\n\n\tfunction route(root, defaultRoute, routes) {\n\t\tif (!root) throw new TypeError(\"DOM element being rendered to does not exist.\")\n\n\t\tcompiled = Object.keys(routes).map(function(route) {\n\t\t\tif (route[0] !== \"/\") throw new SyntaxError(\"Routes must start with a '/'.\")\n\t\t\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(route)) {\n\t\t\t\tthrow new SyntaxError(\"Route parameter names must be separated with either '/', '.', or '-'.\")\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troute: route,\n\t\t\t\tcomponent: routes[route],\n\t\t\t\tcheck: compileTemplate(route),\n\t\t\t}\n\t\t})\n\t\tfallbackRoute = defaultRoute\n\t\tif (defaultRoute != null) {\n\t\t\tvar defaultData = parsePathname(defaultRoute)\n\n\t\t\tif (!compiled.some(function (i) { return i.check(defaultData) })) {\n\t\t\t\tthrow new ReferenceError(\"Default route doesn't match any known routes.\")\n\t\t\t}\n\t\t}\n\n\t\tif (typeof $window.history.pushState === \"function\") {\n\t\t\t$window.addEventListener(\"popstate\", fireAsync, false)\n\t\t} else if (route.prefix[0] === \"#\") {\n\t\t\t$window.addEventListener(\"hashchange\", resolveRoute, false)\n\t\t}\n\n\t\tready = true\n\t\tmountRedraw.mount(root, RouterRoot)\n\t\tresolveRoute()\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\tsetPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = \"#!\"\n\troute.Link = {\n\t\tview: function(vnode) {\n\t\t\t// Omit the used parameters from the rendered element - they are\n\t\t\t// internal. Also, censor the various lifecycle methods.\n\t\t\t//\n\t\t\t// We don't strip the other parameters because for convenience we\n\t\t\t// let them be specified in the selector as well.\n\t\t\tvar child = m(\n\t\t\t\tvnode.attrs.selector || \"a\",\n\t\t\t\tcensor(vnode.attrs, [\"options\", \"params\", \"selector\", \"onclick\"]),\n\t\t\t\tvnode.children\n\t\t\t)\n\t\t\tvar options, onclick, href\n\n\t\t\t// Let's provide a *right* way to disable a route link, rather than\n\t\t\t// letting people screw up accessibility on accident.\n\t\t\t//\n\t\t\t// The attribute is coerced so users don't get surprised over\n\t\t\t// `disabled: 0` resulting in a button that's somehow routable\n\t\t\t// despite being visibly disabled.\n\t\t\tif (child.attrs.disabled = Boolean(child.attrs.disabled)) {\n\t\t\t\tchild.attrs.href = null\n\t\t\t\tchild.attrs[\"aria-disabled\"] = \"true\"\n\t\t\t\t// If you *really* do want add `onclick` on a disabled link, use\n\t\t\t\t// an `oncreate` hook to add it.\n\t\t\t} else {\n\t\t\t\toptions = vnode.attrs.options\n\t\t\t\tonclick = vnode.attrs.onclick\n\t\t\t\t// Easier to build it now to keep it isomorphic.\n\t\t\t\thref = buildPathname(child.attrs.href, vnode.attrs.params)\n\t\t\t\tchild.attrs.href = route.prefix + href\n\t\t\t\tchild.attrs.onclick = function(e) {\n\t\t\t\t\tvar result\n\t\t\t\t\tif (typeof onclick === \"function\") {\n\t\t\t\t\t\tresult = onclick.call(e.currentTarget, e)\n\t\t\t\t\t} else if (onclick == null || typeof onclick !== \"object\") {\n\t\t\t\t\t\t// do nothing\n\t\t\t\t\t} else if (typeof onclick.handleEvent === \"function\") {\n\t\t\t\t\t\tonclick.handleEvent(e)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Adapted from React Router's implementation:\n\t\t\t\t\t// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js\n\t\t\t\t\t//\n\t\t\t\t\t// Try to be flexible and intuitive in how we handle links.\n\t\t\t\t\t// Fun fact: links aren't as obvious to get right as you\n\t\t\t\t\t// would expect. There's a lot more valid ways to click a\n\t\t\t\t\t// link than this, and one might want to not simply click a\n\t\t\t\t\t// link, but right click or command-click it to copy the\n\t\t\t\t\t// link target, etc. Nope, this isn't just for blind people.\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip if `onclick` prevented default\n\t\t\t\t\t\tresult !== false && !e.defaultPrevented &&\n\t\t\t\t\t\t// Ignore everything but left clicks\n\t\t\t\t\t\t(e.button === 0 || e.which === 0 || e.which === 1) &&\n\t\t\t\t\t\t// Let the browser handle `target=_blank`, etc.\n\t\t\t\t\t\t(!e.currentTarget.target || e.currentTarget.target === \"_self\") &&\n\t\t\t\t\t\t// No modifier keys\n\t\t\t\t\t\t!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\te.redraw = false\n\t\t\t\t\t\troute.set(href, null, options)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn child\n\t\t},\n\t}\n\troute.param = function(key) {\n\t\treturn attrs && key != null ? attrs[key] : attrs\n\t}\n\n\treturn route\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./api/router\")(typeof window !== \"undefined\" ? window : null, mountRedraw)\n","\"use strict\"\n\nvar hyperscript = require(\"./hyperscript\")\nvar request = require(\"./request\")\nvar mountRedraw = require(\"./mount-redraw\")\nvar domFor = require(\"./render/domFor\")\n\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\nm.Fragment = \"[\"\nm.mount = mountRedraw.mount\nm.route = require(\"./route\")\nm.render = require(\"./render\")\nm.redraw = mountRedraw.redraw\nm.request = request.request\nm.parseQueryString = require(\"./querystring/parse\")\nm.buildQueryString = require(\"./querystring/build\")\nm.parsePathname = require(\"./pathname/parse\")\nm.buildPathname = require(\"./pathname/build\")\nm.vnode = require(\"./render/vnode\")\nm.censor = require(\"./util/censor\")\nm.domFor = domFor.domFor\n\nmodule.exports = m\n","import type { ComponentAttrs, ComponentType } from './types'\r\n\r\nconst registry: {\r\n [key: string]: ComponentType<any>\r\n} = {}\r\n\r\n/**\r\n * Gets a registered component for a given type name\r\n *\r\n * @public\r\n * @param type - The component type\r\n */\r\nexport function getComponent<T extends ComponentAttrs<any>>(\r\n type: string,\r\n): ComponentType<T> {\r\n if (registry[type]) {\r\n return registry[type]\r\n }\r\n throw new Error(`Component of type '${type}' was not found`)\r\n}\r\n\r\n/**\r\n * Registers a component\r\n *\r\n * @public\r\n * @param type - The component type name\r\n * @param comp - The component\r\n * @param override - Allows to override an already registered component\r\n */\r\nexport function component<T>(\r\n type: string,\r\n comp: ComponentType<T>,\r\n override: boolean = false,\r\n) {\r\n if (registry[type] && !override) {\r\n console.warn(`Component ignored. Name '${type}' is already registered.`)\r\n } else {\r\n registry[type] = comp\r\n }\r\n}\r\n","\r\nimport type { ComponentModel } from './types'\r\nimport { getComponent } from './registry'\r\nimport { default as m } from 'mithril'\r\n\r\n/**\r\n * Renders a registered component using the model\r\n *\r\n * @public\r\n * @param model - The model\r\n */\r\nexport function renderModel<T extends ComponentModel>(model: T) {\r\n if (!model.type) {\r\n console.error(new Error('Given data is missing the .type property. Component can resolve the component'), model)\r\n return null\r\n }\r\n if (model.hidden) {\r\n return null\r\n }\r\n return m(getComponent(model.type), { data: model })\r\n}\r\n","import type { ValueSource } from './types'\r\nimport { call } from './utils'\r\n\r\n/**\r\n * Gets a value of a view model\r\n *\r\n * @public\r\n * @param model - The model of a component\r\n */\r\nexport function getValue<V>(model: ValueSource<any, V>): V {\r\n return decode(model, readValue(model)) as V\r\n}\r\n\r\n/**\r\n * Sets a value on a view model\r\n *\r\n * @public\r\n * @param model - The model of a component\r\n * @param value - The value for the component\r\n * @returns the encoded value as it was written to the model\r\n */\r\nexport function setValue<V>(model: ValueSource<any, V>, value: V): unknown {\r\n const encoded = encode(model, value)\r\n writeValue(model, encoded)\r\n return encoded\r\n}\r\n\r\nfunction readValue(model: ValueSource<any, any>) {\r\n if (\r\n 'target' in model &&\r\n model.target &&\r\n model.property != null &&\r\n model.property in model.target\r\n ) {\r\n return model.target[model.property]\r\n }\r\n if ('value' in model) {\r\n return model.value\r\n }\r\n}\r\n\r\nfunction writeValue<V>(model: ValueSource<any, V>, value: V): void {\r\n if ('target' in model && model.target && model.property != null) {\r\n model.target[model.property] = value\r\n } else if (isWriteable(model, 'value')) {\r\n model.value = value\r\n }\r\n}\r\n\r\nfunction isWriteable<T>(obj: T, key: keyof T): boolean {\r\n const desc = Object.getOwnPropertyDescriptor(obj, key)\r\n return !desc || !!desc.writable || !!desc.set\r\n}\r\n\r\nfunction encode<V>(source: ValueSource<any, V>, value: V) {\r\n return 'codec' in source && source.codec ? source.codec.encode(value) : value\r\n}\r\nfunction decode<V>(source: ValueSource<any, V>, value: V) {\r\n return 'codec' in source && source.codec ? source.codec.decode(value) : value\r\n}\r\n","import type { ArrayOrSingleOf, ComponentAttrs, ComponentModel } from './types'\r\nimport type { Children, Vnode } from 'mithril'\r\n\r\n/**\r\n * Checks if value is a string\r\n * @internal\r\n */\r\nexport function isString(v: any): v is string {\r\n return typeof v === 'string'\r\n}\r\n/**\r\n * Checks if value is a number\r\n * @internal\r\n */\r\nexport function isNumber(v: any): v is number {\r\n return typeof v === 'number'\r\n}\r\n/**\r\n * Checks if value is a function\r\n * @internal\r\n */\r\nexport function isFunction(v: any): v is (...args: any[]) => any {\r\n return typeof v === 'function'\r\n}\r\n/**\r\n * Checks if value is an array\r\n * @internal\r\n */\r\nexport function isArray(v: any): v is any[] {\r\n return Array.isArray(v)\r\n}\r\n/**\r\n * Checks if value is an object\r\n * @internal\r\n */\r\nexport function isObject(v: any): v is object {\r\n return v != null && typeof v === 'object' && !isArray(v)\r\n}\r\n/**\r\n * Calls a function if it is not null\r\n * @internal\r\n */\r\nexport function call<T extends (...args: any) => any>(cb: T, ...args: Parameters<T>) {\r\n return isFunction(cb) ? cb(...args) : null\r\n}\r\n/**\r\n * Resolves a property to its value\r\n * @param value - the function or value to resolve\r\n */\r\nexport function resolve<T>(value: (() => T) | T) {\r\n return isFunction(value) ? value() : value\r\n}\r\n/**\r\n * Calls the callback of object is not null\r\n * @internal\r\n */\r\nexport function use<T, R>(obj: T | null, cb: (it: T) => R): R | null {\r\n return obj == null ? null : cb(obj)\r\n}\r\n\r\n/**\r\n * Clamps a number value\r\n * @internal\r\n */\r\nexport function clamp(v: number, min: number, max: number) {\r\n if (v != null) {\r\n if (min != null && v < min) {\r\n return min\r\n }\r\n if (max != null && v > max) {\r\n return max\r\n }\r\n }\r\n return v\r\n}\r\n/**\r\n * Builds a css class from various argument types\r\n * @param exp\r\n */\r\nexport function cssClass(\r\n exp: ArrayOrSingleOf<string | { [k: string]: boolean | (() => boolean) }>,\r\n): string {\r\n if (!exp) {\r\n return null\r\n }\r\n if (isString(exp)) {\r\n return exp\r\n }\r\n if (isArray(exp)) {\r\n return exp.map(cssClass).join(' ')\r\n }\r\n return Object.keys(exp)\r\n .filter((it) => resolve(exp[it]))\r\n .filter((it) => isString(it) && !!it)\r\n .join(' ')\r\n}\r\n\r\n/**\r\n * Pads a string\r\n * @internal\r\n */\r\nexport function padLeft(value: string, length: number, char: string) {\r\n while (value.length < length) {\r\n value = `${char}${value}`\r\n }\r\n return value\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function twuiClass(name: string, variation?: string) {\r\n return `twui-${name}` + (variation ? `-${variation}` : '')\r\n}\r\n\r\n/**\r\n * Gets current mouse coordinates from mouse or touch event\r\n * @internal\r\n */\r\nexport function getTouchPoint(e: MouseEvent | TouchEvent): [number, number] {\r\n let cx = 0\r\n let cy = 0\r\n if ('touches' in e) {\r\n cx = e.touches.item(0).pageX\r\n cy = e.touches.item(0).pageY\r\n } else {\r\n cx = e.pageX\r\n cy = e.pageY\r\n }\r\n return [cx, cy]\r\n}\r\n\r\nexport function getTouchInTarget(e: MouseEvent, target?: HTMLElement, offset?: [number, number]) {\r\n target = target || e.target as HTMLElement\r\n const rect = target.getBoundingClientRect()\r\n const tx = window.pageXOffset || document.documentElement.scrollLeft\r\n const ty = window.pageYOffset || document.documentElement.scrollTop\r\n\r\n const cw = target.clientWidth\r\n const ch = target.clientHeight\r\n let [cx, cy] = getTouchPoint(e)\r\n if (offset) {\r\n cx += offset[0]\r\n cy += offset[1]\r\n }\r\n const x = cx - tx - rect.left\r\n const y = cy - ty - rect.top\r\n return {\r\n width: cw,\r\n height: ch,\r\n x: x,\r\n y: y,\r\n normalizedX: x / cw,\r\n normalizedY: y / ch,\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function viewFn<T extends ComponentModel>(\r\n fn: (data: T, node: Vnode<ComponentAttrs<T>>) => Children,\r\n) {\r\n return (node: Vnode<ComponentAttrs<T>>): Children =>\r\n use(node.attrs.data, (data) => fn(data, node))\r\n}\r\n\r\nexport function dataFn<T extends ComponentModel, R>(\r\n node: Vnode<ComponentAttrs<T>>,\r\n fn: (data: T, node: Vnode<ComponentAttrs<T>>) => R,\r\n) {\r\n return () => fn(node.attrs.data, node)\r\n}\r\n\r\nexport function dragUtil({\r\n onStart,\r\n onMove,\r\n onEnd,\r\n}: {\r\n onStart?: (e: MouseEvent) => void\r\n onMove?: (e: MouseEvent) => void\r\n onEnd?: (e: MouseEvent) => void\r\n}) {\r\n const util = {\r\n target: null as HTMLElement,\r\n activate: (e: MouseEvent) => {\r\n util.deactivate()\r\n util.target = e.target as HTMLElement\r\n if (onStart) {\r\n onStart(e)\r\n }\r\n if (onMove) {\r\n document.addEventListener('mousemove', onMove, { passive: false })\r\n document.addEventListener('touchmove', onMove, { passive: false })\r\n }\r\n if (onEnd) {\r\n document.addEventListener('mouseup', onEnd)\r\n document.addEventListener('touchend', onEnd)\r\n document.addEventListener('touchcancel', onEnd)\r\n }\r\n },\r\n deactivate: () => {\r\n util.target = null\r\n if (onMove) {\r\n document.removeEventListener('mousemove', onMove)\r\n document.removeEventListener('touchmove', onMove)\r\n }\r\n if (onEnd) {\r\n document.removeEventListener('mouseup', onEnd)\r\n document.removeEventListener('touchend', onEnd)\r\n document.removeEventListener('touchcancel', onEnd)\r\n }\r\n },\r\n onStart,\r\n onMove,\r\n onEnd,\r\n }\r\n return util\r\n}\r\n","import m, { FactoryComponent } from 'mithril'\r\n\r\nimport {\r\n component,\r\n getValue,\r\n renderModel,\r\n setValue,\r\n ComponentModel,\r\n ValueSource,\r\n ComponentAttrs,\r\n ValueCodec,\r\n} from '../../core'\r\nimport { call, clamp, cssClass, dragUtil, getTouchInTarget, twuiClass } from '../../core/utils'\r\nimport type { NumberModel } from './number'\r\nimport { Direction } from './spherical'\r\n\r\n/**\r\n * Spherical component attributes\r\n * @public\r\n */\r\nexport type AngleAttrs = ComponentAttrs<AngleModel>\r\n\r\n/**\r\n * Spherical component model\r\n * @public\r\n */\r\nexport interface AngleModel<T = unknown> extends ComponentModel, ValueSource<T, number> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'angle'\r\n /**\r\n * Whether to use degrees instead of radians\r\n */\r\n degree?: boolean\r\n /**\r\n * This is called when the control value has been changed.\r\n */\r\n onInput?: (model: AngleModel<T>, value: unknown) => void\r\n /**\r\n * This is called once the control value is committed by the user.\r\n *\r\n * @remarks\r\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\r\n */\r\n onChange?: (model: AngleModel<T>, value: unknown) => void\r\n}\r\n\r\nconst TYPE = 'angle'\r\nconst AngleComponent: FactoryComponent<AngleAttrs> = (vnode) => {\r\n let angle = 0\r\n let dragged = false\r\n let pos = [0, 0]\r\n\r\n function toDeg(value: number) {\r\n return value * (180 / Math.PI)\r\n }\r\n function toRad(value: number) {\r\n return value * (Math.PI / 180)\r\n }\r\n function toScreen(value: number) {\r\n return clamp((value / 2 + 0.5) * 100, 0, 100)\r\n }\r\n\r\n function fetchValue(node: m.Vnode<AngleAttrs>) {\r\n const data = node.attrs.data\r\n angle = getValue(data) ?? angle\r\n if (data.degree) {\r\n angle = toRad(angle)\r\n }\r\n updatePositions()\r\n }\r\n\r\n function onChange(type: 'change' | 'input') {\r\n updatePositions()\r\n const data = vnode.attrs.data\r\n const value = data.degree ? toRad(angle) : angle\r\n const written = setValue(data, value)\r\n call(type === 'input' ? data.onInput : data.onChange, data, written)\r\n }\r\n\r\n function updatePositions() {\r\n pos[0] = Math.cos(angle)\r\n pos[1] = Math.sin(angle)\r\n }\r\n\r\n function onStartPhi(e: MouseEvent) {\r\n dragged = true\r\n drag.activate(e)\r\n }\r\n\r\n let touchOffset: [number, number]\r\n const drag = dragUtil({\r\n onStart: (e) => {\r\n const touch = getTouchInTarget(e)\r\n touchOffset = [\r\n -(touch.x - touch.width / 2),\r\n -(touch.y - touch.height / 2),\r\n ]\r\n drag.onMove(e)\r\n },\r\n onMove: (e) => {\r\n e.preventDefault()\r\n\r\n const position = getTouchInTarget(e, drag.target.parentElement, touchOffset)\r\n const px = position.normalizedX - 0.5\r\n const py = position.normalizedY - 0.5\r\n if (dragged) {\r\n // [-PI;PI]\r\n angle = Math.atan2(px, py)\r\n // convert to range [0;2PI]\r\n angle += angle < 0 ? 2 * Math.PI : 0\r\n }\r\n onChange('input')\r\n m.redraw()\r\n },\r\n onEnd: (e) => {\r\n drag.deactivate()\r\n dragged = false\r\n onChange('change')\r\n m.redraw()\r\n },\r\n })\r\n\r\n function onPhiInput(model: unknown, value: number) {\r\n angle = toRad(value)\r\n onChange('input')\r\n }\r\n function onPhiChange(model: unknown, value: number) {\r\n angle = toRad(value)\r\n onChange('change')\r\n }\r\n\r\n return {\r\n onremove: () => {\r\n drag.deactivate()\r\n },\r\n oninit: (node) => {\r\n fetchValue(node)\r\n },\r\n onupdate: (node) => {\r\n fetchValue(node)\r\n },\r\n view: () => {\r\n return m(\r\n 'div',\r\n {\r\n class: twuiClass(TYPE),\r\n style: {\r\n '--angle-value': `${toDeg(-angle) + 90}deg`,\r\n '--angle-percent': `${(toDeg(angle) / 360) * 100}%`,\r\n },\r\n },\r\n m(\r\n 'div.left-container',\r\n m(\r\n 'div.pane',\r\n {\r\n style: {\r\n position: 'relative',\r\n width: '100%',\r\n 'padding-top': '100%',\r\n },\r\n },\r\n m(\r\n 'div.angle-pane',\r\n {\r\n class: cssClass({\r\n 'is-dragging': dragged,\r\n }),\r\n style: {\r\n position: 'absolute',\r\n top: '0.5rem',\r\n left: '0.5rem',\r\n width: 'calc(100% - 1rem)',\r\n height: 'calc(100% - 1rem)',\r\n },\r\n },\r\n m('div.angle-knob', {\r\n onmousedown: onStartPhi,\r\n ontouchstart: onStartPhi,\r\n style: {\r\n position: 'absolute',\r\n width: '15px',\r\n height: '15px',\r\n top: `calc(${toScreen(pos[0])}% - 7px)`,\r\n left: `calc(${toScreen(pos[1])}% - 7px)`,\r\n },\r\n }),\r\n ),\r\n ),\r\n ),\r\n m(\r\n 'div.right-container',\r\n m('label', m.trust('α')),\r\n renderModel<NumberModel>({\r\n type: 'number',\r\n min: 0,\r\n max: 360,\r\n step: 0.1,\r\n value: toDeg(angle),\r\n onInput: onPhiInput,\r\n onChange: onPhiChange,\r\n }),\r\n ),\r\n )\r\n },\r\n }\r\n}\r\n\r\ncomponent<AngleAttrs>(TYPE, AngleComponent)\r\n\r\nexport interface AngleCodecOptions<T> {\r\n /**\r\n * Maps object keys to cartesian axes. Defaults to `{ x: 'right', y: 'up' }`\r\n */\r\n axes?: Record<string | number, Direction>\r\n /**\r\n * The vector length (circle radius). Defaults to `1`\r\n */\r\n length?: number | (() => number)\r\n /**\r\n * Gets the objec where the result should be stored. May return a new instance.\r\n */\r\n result?: () => T\r\n}\r\n\r\nexport function angleCodec(): ValueCodec<{ x: number; y: number }, number>\r\nexport function angleCodec<T>(options: AngleCodecOptions<T>): ValueCodec<T, number>\r\nexport function angleCodec({ axes, length, result }: AngleCodecOptions<any> = {}): ValueCodec<\r\n any,\r\n number\r\n> {\r\n axes = axes || { x: 'right', y: 'up'}\r\n const keys = Object.keys(axes)\r\n const radius = () => {\r\n return (typeof length === 'function' ? length() : length) || 1\r\n }\r\n return {\r\n decode: (value: any) => {\r\n let x: number = 0\r\n let y: number = 0\r\n for (const key of keys) {\r\n switch (axes[key]) {\r\n case 'right':\r\n y = value[key]\r\n break\r\n case 'left':\r\n y = -value[key]\r\n break\r\n case 'up':\r\n case 'front':\r\n x = -value[key]\r\n break\r\n case 'down':\r\n case 'back':\r\n x = value[key]\r\n default:\r\n break\r\n }\r\n }\r\n const r = radius()\r\n x /= r\r\n y /= r\r\n return Math.atan2(y, x) || 0\r\n },\r\n encode: (angle) => {\r\n const r = radius()\r\n const x = r * Math.cos(angle)\r\n const y = r * Math.sin(angle)\r\n const value = result() || {}\r\n for (const key of keys) {\r\n switch (axes[key]) {\r\n case 'right':\r\n value[key] = y\r\n break\r\n case 'left':\r\n value[key] = -y\r\n break\r\n case 'up':\r\n case 'front':\r\n value[key] = -x\r\n break\r\n case 'down':\r\n case 'back':\r\n value[key] = x\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n return value\r\n },\r\n }\r\n}\r\n","import m, { FactoryComponent } from 'mithril'\r\n\r\nimport {\r\n getValue,\r\n component,\r\n setValue,\r\n ValueSource,\r\n ComponentAttrs,\r\n ComponentModel,\r\n} from '../../core'\r\nimport { call, twuiClass, cssClass, viewFn } from '../../core/utils'\r\n\r\n/**\r\n * Checkbox component attrs\r\n * @public\r\n */\r\nexport type CheckboxAttrs = ComponentAttrs<CheckboxModel>\r\n\r\n/**\r\n * Describes a checkbox control\r\n * @public\r\n */\r\nexport interface CheckboxModel<T = unknown>\r\n extends ComponentModel,\r\n ValueSource<T, boolean> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'checkbox'\r\n /**\r\n * This is called when the control value changes\r\n */\r\n onChange?: (model: CheckboxModel, value: unknown) => void\r\n /**\r\n * Text behind the checkbox or inside the buttn\r\n */\r\n text?: string\r\n /**\r\n * Disables the control input\r\n */\r\n disabled?: boolean\r\n}\r\n\r\nconst TYPE = 'checkbox'\r\nconst CheckboxComponent: FactoryComponent<CheckboxAttrs> = (node) => {\r\n function onChange(e: Event) {\r\n const data = node.attrs.data\r\n const checked = (e.target as HTMLInputElement).checked\r\n const written = setValue(data, checked)\r\n call(data.onChange, data, written)\r\n }\r\n return {\r\n view: viewFn((data) => {\r\n const checked = getValue(data) === true\r\n return m(\r\n 'label',\r\n {\r\n class: cssClass({\r\n [twuiClass(TYPE)]: true,\r\n checked: checked,\r\n disabled: data.disabled,\r\n }),\r\n },\r\n m('input', {\r\n type: 'checkbox',\r\n checked: checked,\r\n onchange: onChange,\r\n disabled: data.disabled,\r\n }),\r\n data.text,\r\n )\r\n }),\r\n }\r\n}\r\n\r\ncomponent(TYPE, CheckboxComponent)\r\n","import { clamp } from '../core/utils'\r\nimport { HSV, RGB } from './types'\r\n\r\n/**\r\n * Converts hsv to rgb\r\n *\r\n * @public\r\n * @param hsv - HSV components where H is in range [0:360] and S and V are in range [0:1]\r\n * @returns RGB color components in range [0:1]\r\n */\r\nexport function hsv2rgb(hsv: HSV): RGB {\r\n let H = hsv.h % 360\r\n let S = clamp(hsv.s, 0, 1)\r\n let V = clamp(hsv.v, 0, 1)\r\n\r\n let C = V * S\r\n let X = C * (1 - Math.abs(((H / 60) % 2) - 1))\r\n let m = V - C\r\n\r\n const rgb: RGB = { r: 0, g: 0, b: 0 }\r\n if (H < 60) {\r\n rgb.r = C\r\n rgb.g = X\r\n rgb.b = 0\r\n } else if (H < 120) {\r\n rgb.r = X\r\n rgb.g = C\r\n rgb.b = 0\r\n } else if (H < 180) {\r\n rgb.r = 0\r\n rgb.g = C\r\n rgb.b = X\r\n } else if (H < 240) {\r\n rgb.r = 0\r\n rgb.g = X\r\n rgb.b = C\r\n } else if (H < 300) {\r\n rgb.r = X\r\n rgb.g = 0\r\n rgb.b = C\r\n } else {\r\n rgb.r = C\r\n rgb.g = 0\r\n rgb.b = X\r\n }\r\n\r\n rgb.r += m\r\n rgb.g += m\r\n rgb.b += m\r\n\r\n return rgb\r\n}\r\n\r\n/**\r\n * Converts rgb to hsv\r\n *\r\n * @public\r\n * @remarks\r\n * The RGB components are assumed to be in range [0:1].\r\n * The resulting H component is in range [0:360] and S and V in range [0:1]\r\n */\r\nexport function rgb2hsv(rgb: RGB): HSV {\r\n let r = rgb.r\r\n let g = rgb.g\r\n let b = rgb.b\r\n\r\n let V = Math.max(r, g, b)\r\n let d = V - Math.min(r, g, b)\r\n\r\n let S = 0\r\n let H = 0\r\n if (d !== 0) {\r\n S = d / V\r\n if (V === r) {\r\n H = (g - b) / d + (g < b ? 6 : 0)\r\n H = (H % 6) * 60\r\n } else if (V === g) {\r\n H = (b - r) / d + 2\r\n H = H * 60\r\n } else {\r\n H = (r - g) / d + 4\r\n H = H * 60\r\n }\r\n }\r\n\r\n return { h: H, s: S, v: V }\r\n}\r\n","import { ColorFormatter, RGBA } from './types'\r\n\r\nexport class ArrayColorFormat implements ColorFormatter<number[]> {\r\n constructor(private components: string[], private normalized: boolean) {}\r\n public parse(v: number[]) {\r\n v = v || []\r\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\r\n this.components.forEach((key, i) => {\r\n result[key] = (v[i] || 0) / (this.normalized ? 1 : 255)\r\n })\r\n return result\r\n }\r\n\r\n public format(rgba: RGBA) {\r\n return this.components.map(\r\n (key) => (this.normalized ? rgba[key] : Math.round(rgba[key] * 255)) || 0,\r\n )\r\n }\r\n}\r\n","import { ColorFormatter, RGBA } from './types'\r\n\r\nexport class CssStringFormat implements ColorFormatter<string> {\r\n constructor(private components: string[]) {}\r\n public parse(value: string) {\r\n value = value || 'rgba(0, 0, 0)'\r\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\r\n const values = value\r\n .replace(/[rgba\\(\\)]/gi, '')\r\n .split(/,\\s*?/gi)\r\n .map(Number)\r\n this.components.forEach((key, i) => {\r\n result[key] = (values[i] || 0) / (key === 'a' ? 1 : 255)\r\n })\r\n return result\r\n }\r\n\r\n public format(rgba: RGBA) {\r\n return (\r\n this.components.join('') +\r\n '(' +\r\n this.components\r\n .map((key) => {\r\n return key === 'a' ? rgba[key] : Math.round(rgba[key] * 255)\r\n })\r\n .join(', ') +\r\n ')'\r\n )\r\n }\r\n}\r\n","import { padLeft } from '../core/utils'\r\nimport { ColorFormatter, RGBA } from './types'\r\n\r\nexport class HexStringFormat implements ColorFormatter<string> {\r\n constructor(private components: string[]) {}\r\n public parse(value?: string) {\r\n value = value || '#000'\r\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\r\n let v: string = value.match(/[0-9a-f]+/i)[0]\r\n if (v.length === this.components.length) {\r\n v = v\r\n .split('')\r\n .map((it) => `${it}${it}`)\r\n .join('')\r\n }\r\n this.components.forEach((key, i) => {\r\n result[key] = parseInt(v.substr(i * 2, 2), 16) / 255\r\n })\r\n return result\r\n }\r\n\r\n public format(rgba: RGBA) {\r\n return (\r\n '#' +\r\n this.components\r\n .map((key) => padLeft(Math.round(rgba[key] * 255).toString(16), 2, '0'))\r\n .join('')\r\n )\r\n }\r\n}\r\n","// tslint:disable:no-bitwise\r\nimport { padLeft } from '../core/utils'\r\nimport { ColorFormatter, RGBA } from './types'\r\n\r\nexport class NumberColorFormat implements ColorFormatter<number> {\r\n private componentsRev: string[]\r\n constructor(private components: string[]) {\r\n this.componentsRev = components.slice().reverse()\r\n }\r\n public parse(v: number) {\r\n v = v || 0\r\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\r\n this.components.forEach((key, i) => {\r\n result[key] = ((v >> (i * 8)) & 255) / 255\r\n })\r\n return result\r\n }\r\n\r\n public format(rgba: RGBA) {\r\n const val = this.componentsRev\r\n .map((key) =>\r\n padLeft(Math.round(rgba[key] * 255 || 0).toString(16), 2, '0'),\r\n )\r\n .join('')\r\n return parseInt('0x' + val, 16)\r\n }\r\n}\r\n","import { ColorFormatter, RGBA } from './types'\r\n\r\nexport class ObjectColorFormat\r\n implements ColorFormatter<{ [key: string]: number }> {\r\n constructor(private components: string[], private normalized: boolean) {}\r\n public parse(v: { [key: string]: number }) {\r\n v = v || {}\r\n const result: RGBA = { r: 0, g: 0, b: 0, a: 1 }\r\n this.components.forEach((key, i) => {\r\n result[key] = (v[key] || 0) / (this.normalized ? 1 : 255)\r\n })\r\n return result\r\n }\r\n\r\n public format(rgba: RGBA) {\r\n const result: { [key: string]: number } = {}\r\n this.components.forEach((key, i) => {\r\n result[key] =\r\n (this.normalized ? rgba[key] : Math.round(rgba[key] * 255)) || 0\r\n })\r\n return result\r\n }\r\n}\r\n","import { ArrayColorFormat } from './array-format'\r\nimport { CssStringFormat } from './css-string-format'\r\nimport { HexStringFormat } from './hex-string-format'\r\nimport { NumberColorFormat } from './number-format'\r\nimport { ObjectColorFormat } from './object-format'\r\nimport { ColorFormatter } from './types'\r\n\r\nconst formatter: { [key: string]: ColorFormatter<any> } = {}\r\n\r\n/**\r\n * Gets a formatter implementation for the given format\r\n *\r\n * @public\r\n * @param format - The format code\r\n */\r\nexport function getColorFormatter(format: string = 'rgb'): ColorFormatter<any> {\r\n if (format in formatter) {\r\n return formatter[format]\r\n }\r\n const components = (format.match(/[rgba]+/)[0] || '').split('')\r\n if (/(\\[n?\\])/.test(format)) {\r\n formatter[format] = new ArrayColorFormat(components, /\\[n\\]/.test(format))\r\n } else if (/(\\{n?\\})/.test(format)) {\r\n formatter[format] = new ObjectColorFormat(components, /\\{n\\}/.test(format))\r\n } else if (/0x/.test(format)) {\r\n formatter[format] = new NumberColorFormat(components)\r\n } else if (/(\\(\\))/.test(format)) {\r\n formatter[format] = new CssStringFormat(components)\r\n } else {\r\n formatter[format] = new HexStringFormat(components)\r\n }\r\n return formatter[format]\r\n}\r\n","// tslint:disable:no-bitwise\r\nimport m from 'mithril'\r\n\r\nimport {\r\n getColorFormatter,\r\n HSV,\r\n hsv2rgb,\r\n HSVA,\r\n rgb2hsv,\r\n RGBA,\r\n} from '../../color-formats'\r\nimport {\r\n getValue,\r\n component,\r\n setValue,\r\n ComponentModel,\r\n ValueSource,\r\n ComponentAttrs,\r\n} from '../../core'\r\nimport {\r\n call,\r\n clamp,\r\n use,\r\n twuiClass,\r\n getTouchPoint,\r\n} from '../../core/utils'\r\n\r\n/**\r\n * Color picker component attributes\r\n *\r\n * @public\r\n */\r\nexport type ColorPickerAttrs = ComponentAttrs<ColorPickerModel>\r\n\r\n/**\r\n * Color picker component model\r\n *\r\n * @public\r\n */\r\nexport interface ColorPickerModel<T = unknown, V = number | string | number[]>\r\n extends ComponentModel,\r\n ValueSource<T, V> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'color-picker'\r\n /**\r\n * If `target` and `property` are not set, then this is used as the control value\r\n *\r\n * @remarks\r\n * The format is determined by the `format` property.\r\n *\r\n * It is allowed to omit the '#' character but the '#' will be added on change\r\n *\r\n * It is allowed to use single character form per component (#f00 instead of #ff0000)\r\n * but it will always be written back as #ff0000 on change\r\n */\r\n value?: V\r\n /**\r\n * The format of the string value. Defaults to 'rgb'\r\n *\r\n * @remarks\r\n * This must be a combination of the letters `r`, `g`, `b` and `a`.\r\n *\r\n * A prefix of `#` indicates the input/output is a hex string. e.g. #rgba\r\n *\r\n * A prefix of `0x` indicates the input is a number. e.g. 0xrgba\r\n *\r\n * A prefix of `[]` indicates the input is an array of numbers. e.g. `[]rgba`\r\n *\r\n * If a prefix is missing `#` is assumed\r\n */\r\n format?: string\r\n /**\r\n * This is called when the control value has been changed.\r\n */\r\n onInput?: (model: ColorPickerModel<T, V>, value: unknown) => void\r\n /**\r\n * This is called once the control value is committed by the user.\r\n *\r\n * @remarks\r\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\r\n */\r\n onChange?: (model: ColorPickerModel<T, V>, value: unknown) => void\r\n}\r\n\r\ncomponent<ColorPickerAttrs>('color-picker', (node) => {\r\n let hue = 0 // range [0,1]\r\n let sat = 0 // range [0,1]\r\n let val = 0 // range [0,1]\r\n let a = 0 // range [0,1]\r\n\r\n function getHSVA(s = sat, v = val): HSVA {\r\n return {\r\n h: hue * 360,\r\n s: s,\r\n v: v,\r\n a: a,\r\n }\r\n }\r\n\r\n function getRGB(s = sat, v = val) {\r\n return hsv2rgb(getHSVA(s, v))\r\n }\r\n\r\n function getRGBA(s = sat, v = val, alpha = a): RGBA {\r\n return { ...getRGB(s, v), a: alpha }\r\n }\r\n\r\n function setHSV(hsv: HSV) {\r\n hue = hsv.h / 360\r\n sat = hsv.s\r\n val = hsv.v\r\n }\r\n\r\n function setHSVA(hsv: HSVA) {\r\n setHSV(hsv)\r\n a = hsv.a\r\n }\r\n\r\n function getHexRGB(s?: number, v?: number) {\r\n return getColorFormatter('#rgb').format(getRGBA(s, v))\r\n }\r\n\r\n function getHexRGBA(s?: number, v?: number) {\r\n return getColorFormatter('#rgba').format(getRGBA(s, v))\r\n }\r\n\r\n function getCssRGBA(s = sat, v = val, alpha: number = a) {\r\n return getColorFormatter('rgba()').format(getRGBA(s, v, alpha))\r\n }\r\n\r\n function parseInput(value: string | number | number[], format: string) {\r\n const rgba = getColorFormatter(format || 'rgb').parse(value)\r\n setHSVA({\r\n ...rgb2hsv(rgba),\r\n a: rgba.a,\r\n })\r\n }\r\n\r\n function formatOutput(format: string) {\r\n return getColorFormatter(format).format(getRGBA())\r\n }\r\n\r\n function triggerInput() {\r\n use(node.attrs.data, (data) => {\r\n const value = formatOutput(data.format)\r\n const written = setValue(data, value)\r\n call(data.onInput, data, written)\r\n })\r\n }\r\n\r\n function triggerChange() {\r\n use(node.attrs.data, (data) => {\r\n const value = formatOutput(data.format)\r\n const written = setValue(data, value)\r\n call(data.onChange, data, written)\r\n })\r\n }\r\n\r\n function hasAlpha() {\r\n return use(node.attrs.data, (data) => {\r\n return data.format && data.format.match(/a/i)\r\n })\r\n }\r\n\r\n //\r\n // manual input\r\n //\r\n\r\n function inputR(e: Event) {\r\n input(e, 'r')\r\n }\r\n\r\n function inputG(e: Event) {\r\n input(e, 'g')\r\n }\r\n\r\n function inputB(e: Event) {\r\n input(e, 'b')\r\n }\r\n\r\n function input(e: Event, field: keyof RGBA) {\r\n const color = getRGBA()\r\n color[field] = parseInt((e.target as HTMLInputElement).value, 10) / 255\r\n setHSV(rgb2hsv(color))\r\n triggerInput()\r\n triggerChange()\r\n }\r\n\r\n function inputHex(e: Event) {\r\n parseInput(\r\n (e.target as HTMLInputElement).value,\r\n hasAlpha() ? 'rgba' : 'rgb',\r\n )\r\n triggerInput()\r\n triggerChange()\r\n }\r\n\r\n //\r\n // drag input\r\n //\r\n\r\n let target: HTMLElement\r\n let kind: 'sv' | 'h' | 'a'\r\n function beginPickSV(e: MouseEvent) {\r\n kind = 'sv'\r\n enableDrag(e.target as HTMLElement)\r\n onMouseMove(e)\r\n }\r\n\r\n function beginPickH(e: MouseEvent) {\r\n kind = 'h'\r\n enableDrag(e.target as HTMLElement)\r\n onMouseMove(e)\r\n }\r\n\r\n function beginPickA(e: MouseEvent) {\r\n kind = 'a'\r\n enableDrag(e.target as HTMLElement)\r\n onMouseMove(e)\r\n }\r\n\r\n function enableDrag(el: HTMLElement) {\r\n disableDrag()\r\n target = el\r\n const options = { passive: false }\r\n document.addEventListener('mousemove', onMouseMove, options)\r\n document.addEventListener('mouseup', onMouseUp, options)\r\n document.addEventListener('touchmove', onMouseMove, options)\r\n document.addEventListener('touchend', onMouseUp, options)\r\n document.addEventListener('touchcancel', onMouseUp, options)\r\n }\r\n\r\n function disableDrag() {\r\n document.removeEventListener('mousemove', onMouseMove)\r\n document.removeEventListener('mouseup', onMouseUp)\r\n document.removeEventListener('touchmove', onMouseMove)\r\n document.removeEventListener('touchend', onMouseUp)\r\n document.removeEventListener('touchcancel', onMouseUp)\r\n }\r\n\r\n function onMouseMove(e: MouseEvent) {\r\n if (!target) {\r\n return\r\n }\r\n e.preventDefault()\r\n\r\n const rect = target.getBoundingClientRect()\r\n const tx = window.pageXOffset || document.documentElement.scrollLeft\r\n const ty = window.pageYOffset || document.documentElement.scrollTop\r\n const cw = target.clientWidth\r\n const ch = target.clientHeight\r\n let [cx, cy] = getTouchPoint(e)\r\n cx = clamp((cx - tx - rect.left) / cw, 0, 1)\r\n cy = clamp((cy - ty - rect.top) / ch, 0, 1)\r\n\r\n if (kind === 'sv') {\r\n sat = cx\r\n val = 1 - cy\r\n }\r\n if (kind === 'h') {\r\n hue = 1 - cx\r\n }\r\n if (kind === 'a') {\r\n a = cx\r\n }\r\n\r\n triggerInput()\r\n m.redraw()\r\n }\r\n\r\n function onMouseUp() {\r\n if (target != null) {\r\n target = null\r\n disableDrag()\r\n triggerChange()\r\n }\r\n }\r\n\r\n return {\r\n onremove: () => {\r\n disableDrag()\r\n },\r\n oninit: () => {\r\n use(node.attrs.data, (data) => {\r\n parseInput(getValue(data), data.format)\r\n })\r\n },\r\n view: () => {\r\n return use(node.attrs.data, (data) => {\r\n const rgba = getRGBA()\r\n return m(\r\n 'div',\r\n {\r\n class: twuiClass(data.type),\r\n },\r\n m(\r\n '.color-picker-inputs',\r\n m(\"input.input-hex[type='text']\", {\r\n value: hasAlpha() ? getHexRGBA() : getHexRGB(),\r\n onchange: inputHex,\r\n }),\r\n m(\"input.input-r[type='number']\", {\r\n min: 0,\r\n max: 255,\r\n step: 1,\r\n value: Math.round(rgba.r * 255),\r\n onchange: inputR,\r\n }),\r\n m(\"input.input-g[type='number']\", {\r\n min: 0,\r\n max: 255,\r\n step: 1,\r\n value: Math.round(rgba.g * 255),\r\n onchange: inputG,\r\n }),\r\n m(\"input.input-b[type='number']\", {\r\n min: 0,\r\n max: 255,\r\n step: 1,\r\n value: Math.round(rgba.b * 255),\r\n onchange: inputB,\r\n }),\r\n ),\r\n m(\r\n '.color-picker-panel',\r\n m(\r\n '.color-picker-sv',\r\n {\r\n tabindex: 0,\r\n onmousedown: beginPickSV,\r\n ontouchstart: beginPickSV,\r\n style: {\r\n 'background-color': `${getCssRGBA(1, 1, 1)}`,\r\n 'user-select': 'none',\r\n },\r\n },\r\n m('.color-picker-sv-bg', {\r\n style: {\r\n background:\r\n 'linear-gradient(to right,rgba(255,255,255,1),rgba(255,255,255,0))',\r\n 'user-select': 'none',\r\n 'pointer-events': 'none',\r\n },\r\n }),\r\n m('.color-picker-sv-bg', {\r\n style: {\r\n background:\r\n 'linear-gradient(to top,rgba(0,0,0,1),rgba(0,0,0,0))',\r\n 'user-select': 'none',\r\n 'pointer-events': 'none',\r\n },\r\n }),\r\n m('.color-picker-sv-cursor', {\r\n style: {\r\n 'user-select': 'none',\r\n 'pointer-events': 'none',\r\n 'background-color': `${getCssRGBA(hue, sat, 1)}`,\r\n left: `${sat * 100}%`,\r\n top: `${(1 - val) * 100}%`,\r\n },\r\n }),\r\n ),\r\n m(\r\n '.color-picker-h',\r\n {\r\n tabindex: 0,\r\n onmousedown: beginPickH,\r\n ontouchstart: beginPickH,\r\n style: {\r\n 'user-select': 'none',\r\n background:\r\n 'linear-gradient(to right, #f00 0, #f0f 17% , #00f 33% , #0ff 50% , #0f0 67% , #ff0 83% , #f00 100%)',\r\n },\r\n },\r\n m('.color-picker-h-cursor', {\r\n style: {\r\n 'user-select': 'none',\r\n 'pointer-events': 'none',\r\n 'background-color': `${getCssRGBA(1, 1, 1)}`,\r\n position: 'absolute',\r\n left: `${(1 - hue) * 100}%`,\r\n },\r\n }),\r\n ),\r\n !hasAlpha()\r\n ? null\r\n : m(\r\n '.color-picker-a',\r\n {\r\n tabindex: 0,\r\n onmousedown: beginPickA,\r\n ontouchstart: beginPickA,\r\n style: {\r\n 'user-select': 'none',\r\n },\r\n },\r\n m('.color-picker-a-bg', {\r\n style: {\r\n background: `linear-gradient(to right, ${getCssRGBA(\r\n sat,\r\n val,\r\n 0,\r\n )}, ${getCssRGBA(sat, val, 1)})`,\r\n },\r\n }),\r\n m('.color-picker-a-cursor', {\r\n style: {\r\n 'user-select': 'none',\r\n 'pointer-events': 'none',\r\n position: 'absolute',\r\n left: `${a * 100}%`,\r\n },\r\n }),\r\n ),\r\n ),\r\n )\r\n })\r\n },\r\n }\r\n})\r\n","import m, { Vnode } from 'mithril'\r\n\r\nimport { getColorFormatter } from '../../color-formats'\r\nimport { ColorPickerModel } from './color-picker'\r\nimport {\r\n getValue,\r\n component,\r\n setValue,\r\n renderModel,\r\n ComponentModel,\r\n ValueSource,\r\n ComponentAttrs,\r\n} from '../../core'\r\nimport {\r\n call,\r\n isArray,\r\n isNumber,\r\n isObject,\r\n isString,\r\n padLeft,\r\n use,\r\n twuiClass,\r\n cssClass,\r\n viewFn,\r\n} from '../../core/utils'\r\n\r\n/**\r\n * Color component attributes\r\n * @public\r\n */\r\nexport type ColorAttrs = ComponentAttrs<ColorModel>\r\n\r\n/**\r\n * Color component model\r\n * @public\r\n */\r\nexport interface ColorModel<T = unknown, V = number | string | number[]>\r\n extends ComponentModel,\r\n ValueSource<T, V> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'color'\r\n /**\r\n * The color value as a string.\r\n *\r\n * @remarks\r\n * The format is determined by the `format` property.\r\n *\r\n * It is allowed to omit the '#' character but the '#' will be added on change\r\n *\r\n * It is allowed to use single character form per component (#f00 instead of #ff0000)\r\n * but it will always be written back as #ff0000 on change\r\n */\r\n value?: V\r\n /**\r\n * The format of the string value. Defaults to 'rgb'\r\n *\r\n * @remarks\r\n * This must be a combination of the letters r, g, b and a\r\n * and it must match the input value.\r\n */\r\n format?: string\r\n /**\r\n * Whether each component is normalized to range [0:1]\r\n */\r\n normalized?: boolean\r\n /**\r\n * This is called when the control value has been changed.\r\n */\r\n onInput?: (model: ColorModel<T, V>, value: unknown) => void\r\n /**\r\n * This is called once the control value is committed by the user.\r\n *\r\n * @remarks\r\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\r\n */\r\n onChange?: (model: ColorModel<T, V>, value: unknown) => void\r\n}\r\n\r\ncomponent<ColorAttrs>('color', () => {\r\n let data: ColorModel\r\n let opened = false\r\n let value: number | string | number[]\r\n let rgba: string\r\n\r\n const rgbaFromatter = getColorFormatter('rgba()')\r\n\r\n function fetchState(node: Vnode<ColorAttrs>) {\r\n data = node.attrs.data\r\n value = getValue(data)\r\n rgba = rgbaFromatter.format(getColorFormatter(data.format).parse(value))\r\n }\r\n\r\n function toggle() {\r\n opened = !opened\r\n }\r\n function onPickerInput(p: ColorPickerModel, v: any) {\r\n const written = setValue(data, v)\r\n call(data.onInput, data, written)\r\n }\r\n\r\n function onPickerChange(p: ColorPickerModel, v: any) {\r\n const written = setValue(data, v)\r\n call(data.onChange, data, written)\r\n }\r\n\r\n function getText() {\r\n if (isString(value)) {\r\n return value\r\n }\r\n if (isNumber(value)) {\r\n return '0x' + padLeft(value.toString(16), 8, '0')\r\n }\r\n if (isArray(value)) {\r\n return value\r\n .map((it: number) => (it < 1 && it > 0 ? it.toFixed(2) : it))\r\n .join(' , ')\r\n }\r\n if (isObject(value)) {\r\n return Object.keys(value)\r\n .map((k) => {\r\n const it = (value as any)[k]\r\n return `${k}: ${it < 1 && it > 0 ? it.toFixed(2) : it}`\r\n })\r\n .join(' ')\r\n }\r\n if (value == null) {\r\n return 'null'\r\n }\r\n return '?'\r\n }\r\n\r\n return {\r\n oninit: (node) => {\r\n fetchState(node)\r\n },\r\n onupdate: (node) => {\r\n fetchState(node)\r\n },\r\n view: () =>\r\n m(\r\n 'div',\r\n {\r\n class: cssClass({\r\n [twuiClass(data.type)]: true,\r\n [twuiClass(data.type + '-open')]: opened,\r\n }),\r\n },\r\n m(\r\n \"button[type='button']\",\r\n {\r\n style: { 'background-color': rgba },\r\n onclick: toggle,\r\n },\r\n getText() || '?',\r\n ),\r\n renderModel<ColorPickerModel>({\r\n type: 'color-picker',\r\n value: value,\r\n format: data.format,\r\n onInput: onPickerInput,\r\n onChange: onPickerChange,\r\n hidden: !opened,\r\n }),\r\n ),\r\n }\r\n})\r\n","import m, { Child, ClosureComponent } from 'mithril'\r\n\r\nimport {\r\n getValue,\r\n component,\r\n setValue,\r\n ComponentModel,\r\n ComponentAttrs,\r\n ValueSource,\r\n} from '../../core'\r\nimport { call, clamp, cssClass, twuiClass, dragUtil, getTouchInTarget } from '../../core/utils'\r\n\r\n/**\r\n * Number component attributes\r\n * @public\r\n */\r\nexport type NumberAttrs = ComponentAttrs<NumberModel>\r\n\r\n/**\r\n * Number component model\r\n * @public\r\n */\r\nexport interface NumberModel<T = unknown> extends ComponentModel, ValueSource<T, number> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'number' | 'slider'\r\n /**\r\n * The placeholder text\r\n */\r\n placeholder?: string\r\n /**\r\n * The min value\r\n */\r\n min?: number\r\n /**\r\n * The max value\r\n */\r\n max?: number\r\n /**\r\n * The step value\r\n */\r\n step?: number\r\n /**\r\n * This is called when the control value has been changed.\r\n */\r\n onInput?: (model: NumberModel<T>, value: unknown) => void\r\n /**\r\n * This is called once the control value is committed by the user.\r\n *\r\n * @remarks\r\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\r\n */\r\n onChange?: (model: NumberModel<T>, value: unknown) => void\r\n /**\r\n * Disables the control input\r\n */\r\n disabled?: boolean\r\n}\r\n\r\nconst NumberComponent: ClosureComponent<NumberAttrs> = () => {\r\n let type: 'number' | 'slider'\r\n let min: number\r\n let max: number\r\n let step: number\r\n let disabled: boolean\r\n let placeholder: string\r\n let isSlider: boolean\r\n let value: number\r\n let percent: number\r\n let focused: boolean\r\n let vnode: m.Vnode<NumberAttrs>\r\n // let data: NumberModel\r\n\r\n function fetchState(node: m.Vnode<NumberAttrs>) {\r\n vnode = node\r\n const data = node.attrs.data\r\n type = data.type\r\n isSlider = data.type === 'slider'\r\n min = isSlider && data.min == null ? 0 : data.min\r\n max = isSlider && data.max == null ? 1 : data.max\r\n step = data.step\r\n value = getValue<number>(data)\r\n disabled = data.disabled\r\n percent = isSlider ? ((value - min) / (max - min)) * 100 : 0\r\n }\r\n\r\n function setModelValue(e: 'input' | 'change', v: number) {\r\n v = value = clamp(isNaN(v) ? null : v, min, max)\r\n const data = vnode.attrs.data\r\n const written = setValue(data, v)\r\n call(e === 'input' ? data.onInput : data.onChange, data, written)\r\n m.redraw()\r\n }\r\n\r\n function onInput(e: Event) {\r\n const el = e.target as HTMLInputElement\r\n setModelValue('input', parseFloat(el.value))\r\n }\r\n\r\n function onChange(e: Event) {\r\n const el = e.target as HTMLInputElement\r\n setModelValue('change', parseFloat(el.value))\r\n }\r\n\r\n function limit(v: number) {\r\n v = clamp(v, min, max)\r\n if (step != null) {\r\n v = Math.round(v / step) * step\r\n }\r\n return parseFloat(v.toFixed(5))\r\n }\r\n\r\n let drag = dragUtil({\r\n onStart: (e) => {\r\n drag.onMove(e)\r\n },\r\n onMove: (e) => {\r\n e.preventDefault()\r\n const s = getTouchInTarget(e, drag.target).normalizedX\r\n setModelValue('input', limit(min + s * (max - min)))\r\n },\r\n onEnd: () => {\r\n setModelValue('change', value)\r\n drag.deactivate()\r\n },\r\n })\r\n\r\n function onDragStart(e: MouseEvent) {\r\n if (!disabled) {\r\n drag.activate(e)\r\n }\r\n }\r\n\r\n function onKeydown(e: KeyboardEvent) {\r\n const code = e.key || e.keyCode\r\n const dir = code === 'ArrowLeft' ? -1 : code === 'ArrowRight' ? 1 : 0\r\n const add = (step || 1) * dir\r\n if (add) {\r\n setModelValue('change', limit((value || 0) + add))\r\n }\r\n }\r\n\r\n function onWheel(e: WheelEvent) {\r\n e.preventDefault()\r\n const dir = (e.ctrlKey ? 0.5 : 1) * clamp(e.deltaY, -1, 1)\r\n const add = (step || 0.2) * dir\r\n if (add) {\r\n setModelValue('change', limit((value || 0) - add))\r\n }\r\n }\r\n\r\n function onFocus() {\r\n focused = true\r\n }\r\n\r\n function onBlur() {\r\n focused = false\r\n }\r\n\r\n function slider(): Child {\r\n return m(\r\n '.twui-progress',\r\n {\r\n style: 'user-select: none;',\r\n class: cssClass({\r\n disabled: !!disabled,\r\n }),\r\n ...(disabled\r\n ? {}\r\n : {\r\n tabindex: 0,\r\n onmousedown: onDragStart,\r\n ontouchstart: onDragStart,\r\n onkeydown: onKeydown,\r\n onwheel: onWheel,\r\n }),\r\n },\r\n m('.twui-progress-bar', {\r\n style: {\r\n width: `${percent}%`,\r\n 'pointer-events': 'none',\r\n 'user-select': 'none',\r\n },\r\n }),\r\n )\r\n }\r\n\r\n return {\r\n onremove: () => {\r\n drag.deactivate()\r\n },\r\n oninit: (node) => {\r\n fetchState(node)\r\n },\r\n onupdate: (node) => {\r\n fetchState(node)\r\n },\r\n view: () => {\r\n return m(\r\n 'div',\r\n {\r\n class: twuiClass(type),\r\n },\r\n isSlider ? slider() : null,\r\n m(\"input[type='number']\", {\r\n min: min,\r\n max: max,\r\n step: step,\r\n value: value,\r\n oninput: onInput,\r\n onchange: onChange,\r\n onwheel: onWheel,\r\n onfocus: onFocus,\r\n onblur: onBlur,\r\n placeholder: placeholder,\r\n disabled: disabled,\r\n }),\r\n )\r\n },\r\n }\r\n}\r\n\r\ncomponent('number', NumberComponent)\r\ncomponent('slider', NumberComponent)\r\n","import m from 'mithril'\r\n\r\nimport { component, getValue, ComponentModel, ValueSource, ComponentAttrs } from '../../core'\r\nimport { call, clamp, use, twuiClass, viewFn, getTouchPoint, dragUtil } from '../../core/utils'\r\n\r\n/**\r\n * Point component attributes\r\n * @public\r\n */\r\nexport type PointAttrs = ComponentAttrs<PointModel>\r\n\r\n/**\r\n * Point component model\r\n * @public\r\n */\r\nexport interface PointModel<T = unknown> extends ComponentModel, ValueSource<T, any> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'point'\r\n /**\r\n * The object field names. Defaults to `['x', 'y']`\r\n */\r\n keys?: string[]\r\n /**\r\n * X-Axis min and max valuse\r\n */\r\n xRange?: [number, number]\r\n /**\r\n * Y-Axis min and max valuse\r\n */\r\n yRange?: [number, number]\r\n /**\r\n * Value to reset to when released\r\n */\r\n reset?: [number, number]\r\n /**\r\n * Snap to grid value\r\n */\r\n snap?: number\r\n /**\r\n * This is called when the control value has been changed.\r\n */\r\n onInput?: (model: PointModel<T>, value: number) => void\r\n /**\r\n * This is called once the control value is committed by the user.\r\n *\r\n * @remarks\r\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\r\n */\r\n onChange?: (model: PointModel<T>, value: number) => void\r\n}\r\n\r\nconst TYPE = 'point'\r\nconst DEFAULT_RANGE = [0, 1]\r\nconst DEFAULT_KEYS = ['x', 'y']\r\ncomponent<PointAttrs>(TYPE, (vnode) => {\r\n let kx: any\r\n let ky: any\r\n let xRange = DEFAULT_RANGE\r\n let yRange = DEFAULT_RANGE\r\n let vx = 0\r\n let vy = 0\r\n let x = 0\r\n let y = 0\r\n let rx: number\r\n let ry: number\r\n let snap: number\r\n\r\n function fetchValue(node: m.Vnode<PointAttrs>) {\r\n const data = node.attrs.data\r\n const keys = data.keys || DEFAULT_KEYS\r\n kx = keys[0]\r\n ky = keys[1]\r\n const value: any = getValue(data) ?? {\r\n [kx]: vx,\r\n [ky]: vy,\r\n }\r\n snap = data.snap\r\n vx = value[kx] || 0\r\n vy = value[ky] || 0\r\n xRange = data.xRange || xRange\r\n yRange = data.yRange || yRange\r\n x = (vx - xRange[0]) / (xRange[1] - xRange[0])\r\n y = (vy - yRange[0]) / (yRange[1] - yRange[0])\r\n const reset = data.reset\r\n if (reset) {\r\n rx = (reset[0] - xRange[0]) / (xRange[1] - xRange[0])\r\n ry = (reset[1] - yRange[0]) / (yRange[1] - yRange[0])\r\n }\r\n }\r\n\r\n function updateValue() {\r\n vx = xRange[0] + (xRange[1] - xRange[0]) * x\r\n vy = yRange[0] + (yRange[1] - yRange[0]) * y\r\n if (snap > 0) {\r\n vx = Math.floor(vx / snap) * snap\r\n vy = Math.floor(vy / snap) * snap\r\n x = (vx - xRange[0]) / (xRange[1] - xRange[0])\r\n y = (vy - yRange[0]) / (yRange[1] - yRange[0])\r\n }\r\n }\r\n\r\n function onChange(type: 'change' | 'input') {\r\n updateValue()\r\n const data = vnode.attrs.data\r\n const value: any = getValue(data) ?? {\r\n [kx]: vx,\r\n [ky]: vy,\r\n }\r\n value[kx] = vx\r\n value[ky] = vy\r\n call(type === 'input' ? data.onInput : data.onChange, data, value)\r\n }\r\n\r\n function onMouseDown(e: MouseEvent) {\r\n drag.activate(e)\r\n }\r\n\r\n const drag = dragUtil({\r\n onMove: (e) => {\r\n e.preventDefault()\r\n const target = drag.target\r\n const rect = target.getBoundingClientRect()\r\n const tx = window.pageXOffset || document.documentElement.scrollLeft\r\n const ty = window.pageYOffset || document.documentElement.scrollTop\r\n\r\n const cw = target.clientWidth\r\n const ch = target.clientHeight\r\n let [cx, cy] = getTouchPoint(e)\r\n x = clamp((cx - tx - rect.left) / cw, 0, 1)\r\n y = clamp((cy - ty - rect.top) / ch, 0, 1)\r\n\r\n onChange('input')\r\n m.redraw()\r\n },\r\n onEnd: () => {\r\n drag.deactivate()\r\n if (rx != null && ry != null) {\r\n x = rx\r\n y = ry\r\n onChange('input')\r\n }\r\n onChange('change')\r\n m.redraw()\r\n },\r\n })\r\n\r\n return {\r\n onremove: drag.deactivate,\r\n oninit: fetchValue,\r\n onupdate: fetchValue,\r\n view: () =>\r\n m(\r\n 'div',\r\n {\r\n class: twuiClass(TYPE),\r\n tabindex: 0,\r\n onmousedown: onMouseDown,\r\n ontouchstart: onMouseDown,\r\n },\r\n m('.point-x-axis', {\r\n style: {\r\n 'pointer-events': 'none',\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n top: `${y * 100}%`,\r\n height: `1px`,\r\n },\r\n }),\r\n m('.point-y-axis', {\r\n style: {\r\n 'pointer-events': 'none',\r\n position: 'absolute',\r\n left: `${x * 100}%`,\r\n top: 0,\r\n bottom: 0,\r\n width: `1px`,\r\n },\r\n }),\r\n m('.point-cursor', {\r\n style: {\r\n 'pointer-events': 'none',\r\n left: `${x * 100}%`,\r\n top: `${y * 100}%`,\r\n position: 'absolute',\r\n width: '11px',\r\n height: '11px',\r\n 'margin-top': '-5px',\r\n 'margin-left': '-5px',\r\n border: '1px solid white',\r\n 'border-radius': '5px',\r\n 'box-shadow': '0px 0px 2px 1px rgba(0, 0, 0, 0.75)',\r\n },\r\n }),\r\n ),\r\n }\r\n})\r\n","import m from 'mithril'\r\n\r\nimport {\r\n getValue,\r\n component,\r\n setValue,\r\n renderModel,\r\n ComponentAttrs,\r\n ComponentModel,\r\n ValueSource,\r\n} from '../../core'\r\nimport { call, twuiClass, viewFn } from '../../core/utils'\r\nimport { NumberModel } from './number'\r\n\r\n/**\r\n * @public\r\n */\r\nexport type PositionValue =\r\n | number[]\r\n | { [key: string]: number }\r\n | { [key: number]: number }\r\n\r\n/**\r\n * Position component attributes\r\n * @public\r\n */\r\nexport type PositionAttrs = ComponentAttrs<PositionModel>\r\n\r\n/**\r\n * Position component model\r\n * @public\r\n */\r\nexport type PositionModel<T = unknown> = ComponentModel &\r\n ValueSource<T, PositionValue> & {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'position'\r\n /**\r\n * The position object field names. Defaults to `['x', 'y', 'z']`\r\n */\r\n keys?: string[]\r\n /**\r\n * The min value\r\n */\r\n min?: number\r\n /**\r\n * The max value\r\n */\r\n max?: number\r\n /**\r\n * The step value\r\n */\r\n step?: number\r\n /**\r\n * This is called when the control value has been changed.\r\n */\r\n onInput?: (\r\n model: PositionModel<T>,\r\n value: unknown,\r\n key?: string | number,\r\n ) => void\r\n /**\r\n * This is called once the control value is committed by the user.\r\n *\r\n * @remarks\r\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\r\n */\r\n onChange?: (\r\n model: PositionModel<T>,\r\n value: unknown,\r\n key?: string | number,\r\n ) => void\r\n /**\r\n * Disables the control input\r\n */\r\n disabled?: boolean,\r\n }\r\n\r\nconst TYPE = 'position'\r\nconst defaultKeys = ['x', 'y', 'z']\r\ncomponent<PositionAttrs>(TYPE, (node) => {\r\n function onChange(type: 'input' | 'change', field: string, v: number) {\r\n const data = node.attrs.data\r\n const value: any = getValue(data) || {}\r\n value[field] = isNaN(v) ? null : v\r\n const written = setValue(data, value)\r\n call(type === 'input' ? data.onInput : data.onChange, data, written, field)\r\n }\r\n\r\n return {\r\n view: viewFn((data) => {\r\n const keys = data.keys || defaultKeys\r\n const value = getValue(data) as any\r\n return m(\r\n 'div',\r\n {\r\n class: twuiClass(TYPE),\r\n },\r\n keys.map((field) => {\r\n return renderModel<NumberModel>({\r\n type: 'number',\r\n min: data.min,\r\n max: data.max,\r\n step: data.step,\r\n value: value?.[field],\r\n disabled: data.disabled,\r\n onInput: (_, v: number) => onChange('input', field, v),\r\n onChange: (_, v: number) => onChange('change', field, v),\r\n placeholder: field,\r\n })\r\n }),\r\n )\r\n }),\r\n }\r\n})\r\n","import m, { Child } from 'mithril'\r\n\r\nimport {\r\n getValue,\r\n component,\r\n setValue,\r\n ComponentModel,\r\n ValueSource,\r\n ComponentAttrs,\r\n} from '../../core'\r\nimport { call, isNumber, isString, twuiClass, viewFn } from '../../core/utils'\r\n\r\nconst emptyArray: any[] = []\r\n\r\n/**\r\n * @public\r\n */\r\nexport type SelectOption = {\r\n label: string\r\n value: unknown\r\n disabled?: boolean\r\n}\r\n/**\r\n * @public\r\n */\r\nexport type SelectOptionArray = Array<\r\n SelectOption | SelectOptionGroup | string | number\r\n>\r\n/**\r\n * @public\r\n */\r\nexport type SelectOptionsObject = {\r\n [key: string]: unknown\r\n}\r\n/**\r\n * @public\r\n */\r\nexport type SelectOptionGroup<T = SelectOptionArray | SelectOptionsObject> = {\r\n label: string\r\n options: T\r\n disabled?: boolean\r\n}\r\n\r\n/**\r\n * Select component select options\r\n * @public\r\n */\r\nexport type SelectModelOptions = SelectOptionArray | SelectOptionsObject\r\n\r\n/**\r\n * Select component attributes\r\n * @public\r\n */\r\nexport type SelectAttrs = ComponentAttrs<SelectModel>\r\n\r\n/**\r\n * Select component model\r\n * @public\r\n */\r\nexport interface SelectModel<T = unknown, V = any>\r\n extends ComponentModel,\r\n ValueSource<T, V> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'select'\r\n /**\r\n * The select options\r\n */\r\n options?: SelectModelOptions\r\n /**\r\n * This is called once the control value is committed by the user.\r\n */\r\n onChange?: (model: SelectModel<T>, value: unknown) => void\r\n /**\r\n * Disables the control input\r\n */\r\n disabled?: boolean\r\n}\r\n\r\nfunction optionsFromFlatArray(arr: SelectOptionArray): SelectOption[] {\r\n const res: SelectOption[] = []\r\n for (const it of arr) {\r\n if (isString(it) || isNumber(it)) {\r\n res.push({ value: it, label: String(it) })\r\n continue\r\n }\r\n if ('value' in it) {\r\n res.push(it)\r\n continue\r\n }\r\n }\r\n return res\r\n}\r\n\r\nfunction optionsFromArray(\r\n arr: SelectOptionArray,\r\n): Array<SelectOption | SelectOptionGroup<SelectOption[]>> {\r\n const res: Array<SelectOption | SelectOptionGroup<SelectOption[]>> = []\r\n for (const it of arr) {\r\n if (isString(it) || isNumber(it) || it == null) {\r\n res.push({ value: it, label: String(it) })\r\n } else if ('value' in it) {\r\n res.push(it)\r\n } else if ('options' in it) {\r\n res.push({\r\n label: it.label,\r\n disabled: it.disabled,\r\n options: Array.isArray(it.options)\r\n ? optionsFromFlatArray(it.options)\r\n : optionsFromObject(it.options),\r\n })\r\n }\r\n }\r\n return res\r\n}\r\n\r\nfunction optionsFromObject(obj: SelectOptionsObject): Array<SelectOption> {\r\n return Object.keys(obj)\r\n .sort()\r\n .map((key) => ({ value: obj[key], label: key }))\r\n}\r\n\r\nfunction getOptions(\r\n node: m.Vnode<SelectAttrs>,\r\n): Array<SelectOption | SelectOptionGroup<SelectOption[]>> {\r\n const options = node.attrs.data.options\r\n\r\n if (!options) {\r\n return emptyArray\r\n }\r\n\r\n if (Array.isArray(options)) {\r\n return optionsFromArray(options)\r\n }\r\n return optionsFromObject(options)\r\n}\r\n\r\ncomponent<SelectAttrs>('select', (node) => {\r\n let options: Array<SelectOption | SelectOptionGroup<SelectOption[]>>\r\n\r\n function getSelectedIndex() {\r\n const data = node.attrs.data\r\n const value = getValue(data)\r\n let i = 0\r\n for (const o0 of options) {\r\n if ('options' in o0) {\r\n for (const o1 of o0.options) {\r\n if (o1.value === value) {\r\n return i\r\n }\r\n i++\r\n }\r\n } else {\r\n if (o0.value === value) {\r\n return i\r\n }\r\n i++\r\n }\r\n }\r\n }\r\n\r\n function getSelectionAt(index: number) {\r\n let i = 0\r\n for (const o0 of options) {\r\n if ('options' in o0) {\r\n for (const o1 of o0.options) {\r\n if (i === index) {\r\n return o1.value\r\n }\r\n i += 1\r\n }\r\n } else {\r\n if (i === index) {\r\n return o0.value\r\n }\r\n i += 1\r\n }\r\n }\r\n return null\r\n }\r\n\r\n function onChange(e: Event) {\r\n const el = e.target as HTMLSelectElement\r\n const data = node.attrs.data\r\n const value = getSelectionAt(el.selectedIndex)\r\n const written = setValue(data, value)\r\n call(data.onChange, data, written)\r\n }\r\n\r\n return {\r\n view: viewFn((data) => {\r\n options = getOptions(node)\r\n return m(\r\n 'select',\r\n {\r\n class: twuiClass(data.type),\r\n selectedIndex: getSelectedIndex(),\r\n onchange: onChange,\r\n disabled: data.disabled,\r\n },\r\n options.map((it) => {\r\n if ('options' in it) {\r\n return m(\r\n 'optgroup',\r\n {\r\n disabled: !!it.disabled,\r\n label: it.label || '',\r\n },\r\n it.options.map(option),\r\n )\r\n }\r\n return option(it)\r\n }),\r\n )\r\n }),\r\n }\r\n})\r\n\r\nfunction option(it: SelectOption) {\r\n return m(\r\n 'option',\r\n {\r\n value: it.value,\r\n label: it.label,\r\n disabled: !!it.disabled,\r\n },\r\n it.label || '',\r\n )\r\n}\r\n","import m, { FactoryComponent } from 'mithril'\r\n\r\nimport {\r\n component,\r\n getValue,\r\n renderModel,\r\n ComponentModel,\r\n ValueSource,\r\n ComponentAttrs,\r\n setValue,\r\n ValueCodec,\r\n} from '../../core'\r\nimport { call, clamp, cssClass, dragUtil, getTouchInTarget, getTouchPoint, twuiClass } from '../../core/utils'\r\nimport { NumberModel } from './number'\r\nimport { CheckboxModel } from './checkbox'\r\n\r\n/**\r\n * @public\r\n */\r\nexport type SphericalValue = number[] | { [key: string]: number } | { [key: number]: number }\r\n\r\n/**\r\n * Spherical component attributes\r\n * @public\r\n */\r\nexport type SphericalAttrs = ComponentAttrs<SphericalModel>\r\n\r\n/**\r\n * Spherical component model\r\n * @public\r\n */\r\nexport interface SphericalModel<T = unknown>\r\n extends ComponentModel,\r\n ValueSource<T, SphericalValue> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'spherical'\r\n /**\r\n * The object field names. Defaults to `['phi', 'theta']`\r\n */\r\n keys?: Array<string | number>\r\n /**\r\n * Whether to use degrees instead of radians\r\n */\r\n degree?: boolean\r\n /**\r\n * This is called when the control value has been changed.\r\n */\r\n onInput?: (model: SphericalModel<T>, value: unknown) => void\r\n /**\r\n * This is called once the control value is committed by the user.\r\n *\r\n * @remarks\r\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\r\n */\r\n onChange?: (model: SphericalModel<T>, value: unknown) => void\r\n}\r\n\r\nconst TYPE = 'spherical'\r\nconst KEYS = ['phi', 'theta']\r\nconst SphericalComponent: FactoryComponent<SphericalAttrs> = (vnode) => {\r\n let phi = 0 // azimuth [0, 2PI]\r\n let theta = 0 // inclination [0, PI]\r\n let backface = false\r\n\r\n let v2Phi = [0, 0]\r\n let v2Theta = [0, 0]\r\n\r\n let draggedKnob: 'phi' | 'theta'\r\n\r\n function toDeg(value: number) {\r\n return value * (180 / Math.PI)\r\n }\r\n function toRad(value: number) {\r\n return value * (Math.PI / 180)\r\n }\r\n function toScreen(value: number) {\r\n return clamp((value / 2 + 0.5) * 100, 0, 100)\r\n }\r\n\r\n function read(node: m.Vnode<SphericalAttrs>) {\r\n const data = node.attrs.data\r\n const value: any = getValue(data) || {\r\n phi: data.degree ? toDeg(phi) : phi,\r\n theta: data.degree ? toDeg(theta) : theta,\r\n }\r\n const [kPhi, kTheta] = data.keys || KEYS\r\n return { data, value, kPhi, kTheta }\r\n }\r\n\r\n function fetchValue(node: m.Vnode<SphericalAttrs>) {\r\n const { data, value, kPhi, kTheta } = read(node)\r\n phi = value[kPhi] || 0\r\n theta = value[kTheta] || 0\r\n if (data.degree) {\r\n phi = toRad(phi)\r\n theta = toRad(theta)\r\n }\r\n while (theta < 0) {\r\n theta += Math.PI\r\n }\r\n while (theta > Math.PI) {\r\n theta -= Math.PI\r\n }\r\n backface = theta > Math.PI / 2\r\n updatePositions()\r\n }\r\n\r\n function onChange(type: 'change' | 'input') {\r\n updatePositions()\r\n const { data, value, kPhi, kTheta } = read(vnode)\r\n value[kPhi] = data.degree ? toDeg(phi) : phi\r\n value[kTheta] = data.degree ? toDeg(theta) : theta\r\n const written = setValue(data, value)\r\n call(type === 'input' ? data.onInput : data.onChange, data, written)\r\n }\r\n\r\n function updatePositions() {\r\n v2Phi[0] = Math.cos(phi)\r\n v2Phi[1] = Math.sin(phi)\r\n v2Theta[0] = Math.sin(theta) * Math.cos(phi)\r\n v2Theta[1] = Math.sin(theta) * Math.sin(phi)\r\n }\r\n\r\n function onStartPhi(e: MouseEvent) {\r\n draggedKnob = 'phi'\r\n drag.activate(e)\r\n }\r\n function onStartTheta(e: MouseEvent) {\r\n draggedKnob = 'theta'\r\n drag.activate(e)\r\n }\r\n\r\n let touchOffset: [number, number]\r\n const drag = dragUtil({\r\n onStart: (e) => {\r\n const touch = getTouchInTarget(e)\r\n touchOffset = [\r\n -(touch.x - touch.width / 2),\r\n -(touch.y - touch.height / 2),\r\n ]\r\n drag.onMove(e)\r\n },\r\n onMove: (e) => {\r\n e.preventDefault()\r\n\r\n const position = getTouchInTarget(e, drag.target.parentElement, touchOffset)\r\n const px = position.normalizedX - 0.5\r\n const py = position.normalizedY - 0.5\r\n if (draggedKnob === 'phi') {\r\n // [-PI;PI]\r\n phi = Math.atan2(px, py)\r\n // convert to range [0;2PI]\r\n phi += phi < 0 ? 2 * Math.PI : 0\r\n } else if (draggedKnob === 'theta') {\r\n // closest point on segment\r\n // p0: [0, 0], p1: vPhi\r\n const ab = v2Phi\r\n const ac = [py, px]\r\n const t = (ab[0] * ac[0] + ab[1] * ac[1]) / Math.sqrt(ab[0] * ab[0] + ab[1] * ab[1])\r\n\r\n theta = Math.PI * clamp(t, 0, 0.5)\r\n if (backface) {\r\n theta = Math.PI - theta\r\n }\r\n }\r\n onChange('input')\r\n m.redraw()\r\n },\r\n onEnd: (e) => {\r\n drag.deactivate()\r\n draggedKnob = null\r\n onChange('change')\r\n m.redraw()\r\n },\r\n })\r\n\r\n function onPhiInput(model: unknown, value: number) {\r\n phi = toRad(value)\r\n onChange('input')\r\n }\r\n function onPhiChange(model: unknown, value: number) {\r\n phi = toRad(value)\r\n onChange('change')\r\n }\r\n\r\n function onThetaInput(model: unknown, value: number) {\r\n theta = toRad(value)\r\n onChange('input')\r\n }\r\n function onThetaChange(model: unknown, value: number) {\r\n theta = toRad(value)\r\n onChange('change')\r\n }\r\n function onBackfaceChange(model: unknown, value: boolean) {\r\n backface = value\r\n theta = Math.PI - theta\r\n onChange('change')\r\n setTimeout(() => m.redraw())\r\n }\r\n\r\n return {\r\n onremove: () => {\r\n drag.deactivate()\r\n },\r\n oninit: (node) => {\r\n fetchValue(node)\r\n },\r\n onupdate: (node) => {\r\n fetchValue(node)\r\n },\r\n view: () => {\r\n return m(\r\n 'div',\r\n {\r\n class: twuiClass(TYPE),\r\n style: {\r\n '--spherical-phi': `${toDeg(-phi) + 90}deg`,\r\n },\r\n },\r\n m(\r\n 'div.left-container',\r\n m(\r\n 'div.pane',\r\n {\r\n style: {\r\n position: 'relative',\r\n width: '100%',\r\n 'padding-top': '100%',\r\n },\r\n },\r\n m(\r\n 'div.phi-pane',\r\n {\r\n class: cssClass({\r\n 'is-dragging': draggedKnob === 'phi',\r\n }),\r\n style: {\r\n position: 'absolute',\r\n top: '0.5rem',\r\n left: '0.5rem',\r\n width: 'calc(100% - 1rem)',\r\n height: 'calc(100% - 1rem)',\r\n },\r\n },\r\n m('div.phi-knob', {\r\n onmousedown: onStartPhi,\r\n ontouchstart: onStartPhi,\r\n style: {\r\n position: 'absolute',\r\n width: '15px',\r\n height: '15px',\r\n top: `calc(${toScreen(v2Phi[0])}% - 7px)`,\r\n left: `calc(${toScreen(v2Phi[1])}% - 7px)`,\r\n },\r\n }),\r\n ),\r\n m(\r\n 'div.theta-pane',\r\n {\r\n class: cssClass({\r\n 'is-dragging': draggedKnob === 'theta',\r\n }),\r\n style: {\r\n position: 'absolute',\r\n top: '1.5rem',\r\n left: '1.5rem',\r\n width: 'calc(100% - 3rem)',\r\n height: 'calc(100% - 3rem)',\r\n },\r\n },\r\n m('div.theta-knob', {\r\n onmousedown: onStartTheta,\r\n ontouchstart: onStartTheta,\r\n style: {\r\n position: 'absolute',\r\n width: '15px',\r\n height: '15px',\r\n top: `calc(${toScreen(v2Theta[0])}% - 7px)`,\r\n left: `calc(${toScreen(v2Theta[1])}% - 7px)`,\r\n },\r\n }),\r\n ),\r\n ),\r\n ),\r\n m(\r\n 'div.right-container',\r\n m('label', m.trust('φ')),\r\n renderModel<NumberModel>({\r\n type: 'number',\r\n min: 0,\r\n max: 360,\r\n step: 0.1,\r\n value: toDeg(phi),\r\n onInput: onPhiInput,\r\n onChange: onPhiChange,\r\n }),\r\n m('label', m.trust('θ')),\r\n renderModel<NumberModel>({\r\n type: 'number',\r\n min: 0,\r\n max: 180,\r\n step: 0.1,\r\n value: toDeg(theta),\r\n onInput: onThetaInput,\r\n onChange: onThetaChange,\r\n }),\r\n renderModel<CheckboxModel>({\r\n type: 'checkbox',\r\n value: backface,\r\n text: 'Backface',\r\n onChange: onBackfaceChange,\r\n }),\r\n ),\r\n )\r\n },\r\n }\r\n}\r\n\r\ncomponent<SphericalAttrs>(TYPE, SphericalComponent)\r\n\r\n/**\r\n * Direction name\r\n * @public\r\n */\r\nexport type Direction = 'right' | 'left' | 'up' | 'down' | 'front' | 'back'\r\nexport interface SphericalCodecOptions<T> {\r\n /**\r\n * Maps object keys to cartesian axes. Defaults to `{ x: 'right', y: 'up', z: 'back' }`\r\n */\r\n axes?: Record<string | number, Direction>\r\n /**\r\n * The vector length (sphere radius). Defaults to `1`\r\n */\r\n length?: number | (() => number)\r\n /**\r\n * Gets the objec where the result should be stored. May return a new instance.\r\n */\r\n result?: () => T\r\n}\r\n\r\nexport function sphericalCodec(): ValueCodec<\r\n { x: number; y: number; z: number },\r\n { phi: number; theta: number }\r\n>\r\nexport function sphericalCodec<T>(options: SphericalCodecOptions<T>): ValueCodec<T, { phi: number; theta: number }>\r\nexport function sphericalCodec({\r\n axes,\r\n length,\r\n result,\r\n}: SphericalCodecOptions<any> = {}): ValueCodec<any, { phi: number; theta: number }> {\r\n axes = axes || { x: 'right', y: 'up', z: 'back' }\r\n const keys = Object.keys(axes)\r\n const radius = () => {\r\n return (typeof length === 'function' ? length() : length) || 1\r\n }\r\n return {\r\n decode: (value: any) => {\r\n let x: number = 0\r\n let y: number = 0\r\n let z: number = 0\r\n for (const key of keys) {\r\n switch (axes[key]) {\r\n case 'right':\r\n y = value[key]\r\n break\r\n case 'left':\r\n y = -value[key]\r\n break\r\n case 'back':\r\n x = value[key]\r\n break\r\n case 'front':\r\n x = -value[key]\r\n break\r\n case 'up':\r\n z = value[key]\r\n break\r\n case 'down':\r\n z = -value[key]\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n const r = radius()\r\n x /= r\r\n y /= r\r\n z /= r\r\n return {\r\n phi: Math.atan2(y, x) || 0,\r\n theta: Math.atan(Math.sqrt(x * x + y * y) / z) || 0,\r\n }\r\n },\r\n encode: ({ phi, theta }: { phi: number; theta: number }) => {\r\n const r = radius()\r\n const x = r * Math.sin(theta) * Math.cos(phi)\r\n const y = r * Math.sin(theta) * Math.sin(phi)\r\n const z = r * Math.cos(theta)\r\n const value = result?.() || {}\r\n for (const key of keys) {\r\n switch (axes[key]) {\r\n case 'right':\r\n value[key] = y\r\n break\r\n case 'left':\r\n value[key] = -y\r\n break\r\n case 'back':\r\n value[key] = x\r\n break\r\n case 'front':\r\n value[key] = -x\r\n break\r\n case 'up':\r\n value[key] = z\r\n break\r\n case 'down':\r\n value[key] = -z\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n return value\r\n },\r\n }\r\n}\r\n","import m from 'mithril'\r\n\r\nimport {\r\n getValue,\r\n component,\r\n setValue,\r\n ComponentModel,\r\n ValueSource,\r\n ComponentAttrs,\r\n} from '../../core'\r\nimport { call, twuiClass, viewFn } from '../../core/utils'\r\n\r\n/**\r\n * Text component attributes\r\n * @public\r\n */\r\nexport type TextAttrs = ComponentAttrs<TextModel>\r\n\r\n/**\r\n * Text component model\r\n * @public\r\n */\r\nexport interface TextModel<T = unknown>\r\n extends ComponentModel,\r\n ValueSource<T, string> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'text'\r\n /**\r\n * The placeholder text\r\n */\r\n placeholder?: string\r\n /**\r\n * This is called when the control value has been changed.\r\n */\r\n onInput?: (model: TextModel<T>, value: unknown) => void\r\n /**\r\n * This is called once the control value is committed by the user.\r\n *\r\n * @remarks\r\n * Unlike the `onInput` callback, this is not necessarily called for each value change.\r\n */\r\n onChange?: (model: TextModel<T>, value: unknown) => void\r\n /**\r\n * Disables the control input\r\n */\r\n disabled?: boolean\r\n}\r\n\r\ncomponent<TextAttrs>('text', (node) => {\r\n function onChange(e: Event) {\r\n const el = e.target as HTMLInputElement\r\n const data = node.attrs.data\r\n const written = setValue(data, el.value)\r\n call(e.type === 'input' ? data.onInput : data.onChange, data, written)\r\n }\r\n\r\n return {\r\n view: viewFn((data) => {\r\n return m(\"input[type='text']\", {\r\n class: twuiClass(data.type),\r\n value: getValue(data),\r\n oninput: onChange,\r\n onchange: onChange,\r\n placeholder: data.placeholder,\r\n disabled: data.disabled,\r\n })\r\n }),\r\n }\r\n})\r\n","import m from 'mithril'\r\n\r\nimport { component, renderModel, ComponentAttrs, ComponentGroupModel } from '../../core'\r\nimport { viewFn } from '../../core/utils'\r\nimport { GroupModel } from './group'\r\n\r\n/**\r\n * Accordeon component attribuets\r\n * @public\r\n */\r\nexport type AccordeonAtts = ComponentAttrs<AccordeonModel>\r\n\r\n/**\r\n * Accordeon component model\r\n * @public\r\n */\r\nexport interface AccordeonModel extends ComponentGroupModel<GroupModel> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'accordion'\r\n /**\r\n * The index of the group that should be open initially\r\n */\r\n expand?: number\r\n}\r\n\r\nconst TYPE = 'accordion'\r\nconst EMPTY: GroupModel[] = []\r\n\r\ncomponent<AccordeonAtts>(TYPE, () => {\r\n return {\r\n view: viewFn((data) => {\r\n const children = data.children || EMPTY\r\n data.expand = detectExpanded(data.expand, children)\r\n return m.fragment({}, children.map((group, i) => {\r\n group.type = 'group'\r\n group.collapsible = true\r\n group.collapsed = i !== data.expand\r\n return renderModel<GroupModel>(group)\r\n }))\r\n }),\r\n }\r\n})\r\n\r\nfunction detectExpanded(index: number, list: GroupModel[]) {\r\n let result = null\r\n for (let i = 0; i < list.length; i++) {\r\n if (!list[i].collapsed) {\r\n if (i !== index) {\r\n return i\r\n }\r\n if (result == null) {\r\n result = i\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n","import m from 'mithril'\r\n\r\nimport {\r\n component,\r\n renderModel,\r\n ComponentGroupModel,\r\n ComponentAttrs,\r\n ComponentModel,\r\n} from '../../core'\r\nimport { cssClass, twuiClass, viewFn } from '../../core/utils'\r\n\r\n/**\r\n * Container component attributes\r\n * @public\r\n */\r\nexport type ContainerAttrs = ComponentAttrs<ContainerModel>\r\n\r\n/**\r\n * Container component model\r\n * @public\r\n */\r\nexport interface ContainerModel extends ComponentGroupModel<ComponentModel> {\r\n /**\r\n * Component type name\r\n */\r\n type: 'container'\r\n /**\r\n * Enables horizontal layout\r\n */\r\n horizontal?: boolean\r\n /**\r\n * Custom CSS Style\r\n */\r\n style?: Partial<CSSStyleDeclaration>\r\n}\r\n\r\nconst TYPE = 'container'\r\ncomponent<ContainerAttrs>(TYPE, () => {\r\n return {\r\n view: viewFn((data) =>\r\n m(\r\n 'div',\r\n {\r\n class: cssClass({\r\n [twuiClass(TYPE)]: true,\r\n [twuiClass(TYPE, 'horizontal')]: data.horizontal,\r\n }),\r\n style: data.style,\r\n },\r\n m.fragment({}, data.children?.map(renderModel)),\r\n ),\r\n ),\r\n }\r\n})\r\n","import m from 'mithril'\r\n\r\nimport {\r\n component,\r\n renderModel,\r\n ComponentGroupModel,\r\n ComponentAttrs,\r\n ComponentModel,\r\n} from '../../core'\r\nimport { twuiClass, viewFn, isString, use, call, cssClass } from '../../core/utils'\r\n\r\n/**\r\n * Group component attributes\r\n * @public\r\n */\r\nexport type GroupAttrs = ComponentAttrs<GroupModel>\r\n\r\n/**\r\n * Group component model\r\n * @public\r\n */\r\nexport interface GroupModel extends ComponentGroupModel<ComponentModel> {\r\n /**\r\n * Component type name\r\n */\r\n type: 'group'\r\n /**\r\n * Group title\r\n */\r\n title?: string\r\n /**\r\n * Group CSS Style\r\n */\r\n style?: Partial<CSSStyleDeclaration>\r\n /**\r\n * Whether the child elements can be collapsed\r\n */\r\n collapsible?: boolean\r\n /**\r\n * Whether the child elements are collapsed\r\n */\r\n collapsed?: boolean\r\n /**\r\n * Adds an offset to the left side\r\n */\r\n inset?: boolean\r\n /**\r\n * Is called when this Group has been collapsed or expanded\r\n */\r\n onToggle?: (group: GroupModel) => void\r\n /**\r\n * Is called when this Group has been expanded\r\n */\r\n onExpand?: (group: GroupModel) => void\r\n /**\r\n * Is called when this Group has been collapsed\r\n */\r\n onCollapse?: (group: GroupModel) => void\r\n}\r\n\r\nconst TYPE = 'group'\r\ncomponent<GroupAttrs>(TYPE, (node) => {\r\n function onClick(e: MouseEvent) {\r\n use(node.attrs.data, (data) => {\r\n data.collapsed = !data.collapsed\r\n call(data.onToggle, data)\r\n if (data.collapsed) {\r\n call(data.onCollapse, data)\r\n } else {\r\n call(data.onExpand, data)\r\n }\r\n })\r\n }\r\n function title(data: GroupModel) {\r\n if (!data.title && !data.collapsible) {\r\n return null\r\n }\r\n return m(\r\n 'div',\r\n {\r\n class: twuiClass(TYPE, 'title'),\r\n onclick: data.collapsible ? onClick : null,\r\n },\r\n data.title,\r\n )\r\n }\r\n function children(data: GroupModel) {\r\n if (data.collapsed || !data.children) {\r\n return []\r\n }\r\n return data.children?.map((it) => {\r\n if (isString(it.label)) {\r\n return m(\r\n 'div',\r\n { class: twuiClass(TYPE, 'control') },\r\n m('label', it.label),\r\n m('section', renderModel(it)),\r\n )\r\n }\r\n return renderModel(it)\r\n })\r\n }\r\n\r\n return {\r\n view: viewFn((data) =>\r\n m(\r\n 'div',\r\n {\r\n class: cssClass({\r\n [twuiClass(TYPE)]: true,\r\n [twuiClass(TYPE, 'collapsible')]: data.collapsible,\r\n [twuiClass(TYPE, 'collapsed')]: data.collapsed,\r\n }) ,\r\n style: data.style,\r\n },\r\n m.fragment({}, [title(data)]),\r\n m.fragment({}, [children(data)]),\r\n ),\r\n ),\r\n }\r\n})\r\n","import m from 'mithril'\r\n\r\nimport {\r\n component,\r\n renderModel,\r\n ComponentAttrs,\r\n ComponentGroupModel,\r\n} from '../../core'\r\nimport { clamp, twuiClass, viewFn } from '../../core/utils'\r\nimport { GroupModel } from './group'\r\n\r\n/**\r\n * Tabs component attributes\r\n * @public\r\n */\r\nexport type TabsAtts = ComponentAttrs<TabsModel>\r\n\r\n/**\r\n * Tabs component model\r\n * @public\r\n */\r\nexport interface TabsModel extends ComponentGroupModel<GroupModel> {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'tabs'\r\n /**\r\n * The index of the opened tab\r\n */\r\n active: number\r\n}\r\n\r\ncomponent<TabsAtts>('tabs', () => {\r\n return {\r\n view: viewFn((data) => {\r\n const tabs = data.children || []\r\n const active = clamp(data.active || 0, 0, tabs.length - 1)\r\n const tab = tabs[active]\r\n return m(\r\n 'div',\r\n {\r\n class: twuiClass(data.type),\r\n },\r\n m(\r\n 'div',\r\n {\r\n key: `${data.type}-list`,\r\n class: twuiClass(`${data.type}-list`),\r\n },\r\n tabs.map((it, index) => {\r\n return m(\r\n \"button[type='button']\",\r\n {\r\n key: `${data.type}-${index}`,\r\n onclick: () => (data.active = index),\r\n class: active === index ? 'is-active' : '',\r\n },\r\n it.label || it.title,\r\n )\r\n }),\r\n ),\r\n m.fragment({ key: `panel-${data.active}` }, [\r\n renderModel<GroupModel>({\r\n type: 'group',\r\n children: tab.children,\r\n style: tab.style,\r\n }),\r\n ]),\r\n )\r\n }),\r\n }\r\n})\r\n","import m from 'mithril'\r\n\r\nimport { component, ComponentAttrs, ComponentModel } from '../core'\r\nimport { call, twuiClass, viewFn } from '../core/utils'\r\n\r\n/**\r\n * Button component attribuets\r\n * @public\r\n */\r\nexport type ButtonAttrs = ComponentAttrs<ButtonModel>\r\n\r\n/**\r\n * Button component model\r\n * @public\r\n */\r\nexport interface ButtonModel extends ComponentModel {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'button'\r\n /**\r\n * The button text\r\n */\r\n text?: string\r\n /**\r\n * This is callend when the control is clicked\r\n */\r\n onClick?: (ctrl: ButtonModel) => void\r\n /**\r\n * Disables the control input\r\n */\r\n disabled?: boolean\r\n}\r\n\r\nconst type = 'button'\r\ncomponent<ButtonAttrs>(type, (node) => {\r\n return {\r\n view: viewFn((data) =>\r\n m(\r\n type,\r\n {\r\n type: type,\r\n class: twuiClass(type),\r\n onclick: () => call(data.onClick, data),\r\n disabled: data.disabled,\r\n },\r\n data.text,\r\n ),\r\n ),\r\n }\r\n})\r\n","import m, { Child } from 'mithril'\r\n\r\nimport { component, ComponentAttrs, ComponentModel } from '../core'\r\nimport { viewFn } from '../core/utils'\r\n\r\n/**\r\n * Content component attributes\r\n * @public\r\n */\r\nexport type ContentAttrs = ComponentAttrs<ContentModel>\r\n\r\n/**\r\n * Content component model\r\n * @public\r\n */\r\nexport interface ContentModel extends ComponentModel {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'content'\r\n /**\r\n * A mithril child\r\n */\r\n content?: Child\r\n}\r\n\r\nconst CONTENT = 'content'\r\n\r\ncomponent<ContentAttrs>(CONTENT, () => {\r\n return {\r\n view: viewFn((data) => m.fragment({}, [data.content])),\r\n }\r\n})\r\n","import m from 'mithril'\r\n\r\nimport { component, ComponentModel, ComponentAttrs } from '../core'\r\nimport { call, use, twuiClass, viewFn, isNumber, isString, cssClass } from '../core/utils'\r\n\r\n/**\r\n * Image component attrs\r\n * @public\r\n */\r\nexport type ImageAttrs = ComponentAttrs<ImageModel>\r\n\r\n/**\r\n * Image component model\r\n * @public\r\n */\r\nexport interface ImageModel extends ComponentModel {\r\n /**\r\n * The type name of the control\r\n */\r\n type: 'image'\r\n /**\r\n * The image source url\r\n */\r\n src?: string | string[]\r\n /**\r\n * Aspect ratio of the picture container\r\n */\r\n aspect?: string\r\n /**\r\n * A fixed width\r\n */\r\n width?: number | string\r\n /**\r\n *\r\n */\r\n fit?: 'contain' | 'cover' | 'fill'\r\n /**\r\n * This is callend when the control is clicked\r\n */\r\n onClick?: (ctrl: ImageModel) => void\r\n}\r\n\r\nconst TYPE = 'image'\r\ncomponent<ImageAttrs>('image', (node) => {\r\n const onClick = () => {\r\n use(node.attrs.data, (data) => call(data.onClick, data))\r\n }\r\n function aspect(spec: string) {\r\n if (!spec) {\r\n return null\r\n }\r\n const [x, y] = (spec || '1x1').split('x').map(Number)\r\n const padding = ((y / x) || 1) * 100\r\n return `${padding}%`\r\n }\r\n function width(data: ImageModel) {\r\n if (isNumber(data.width)) {\r\n return `${data.width}px`\r\n }\r\n if (isString(data.width)) {\r\n return data.width\r\n }\r\n }\r\n return {\r\n view: viewFn((data) => {\r\n return (Array.isArray(data.src) ? data.src : [data.src]).map((src) => {\r\n return m(\r\n 'picture',\r\n {\r\n class: cssClass({\r\n [twuiClass(TYPE)]: true,\r\n [twuiClass(TYPE, 'aspect')]: !!data.aspect,\r\n }),\r\n style: {\r\n '--twui-aspect': aspect(data.aspect),\r\n '--twui-fit': data.fit || 'fit',\r\n width: width(data),\r\n },\r\n },\r\n m('img', {\r\n src: src,\r\n onclick: onClick,\r\n }),\r\n )\r\n })\r\n }),\r\n }\r\n})\r\n","\n// tslint:disable: unified-signatures\n\nimport { ComponentModel, ComponentGroupModel, ValueSource } from './core'\n\nimport {\n AccordeonModel,\n AngleModel,\n ButtonModel,\n CheckboxModel,\n ContainerModel,\n ColorModel,\n ColorPickerModel,\n ContentModel,\n GroupModel,\n ImageModel,\n NumberModel,\n PointModel,\n SelectModel,\n SphericalModel,\n TabsModel,\n TextModel,\n PositionModel,\n} from './components'\nimport { isFunction, isObject, isString } from './core/utils'\nimport { Child } from 'mithril'\n\n/**\n *\n * @public\n */\nexport interface Removable {\n remove?: () => void\n}\n\n/**\n * Union type of all build in models\n * @public\n */\nexport type BuildInComponent =\n | AccordeonModel\n | AngleModel\n | ButtonModel\n | CheckboxModel\n | ColorModel\n | ColorPickerModel\n | ContainerModel\n | ContentModel\n | GroupModel\n | ImageModel\n | NumberModel\n | PointModel\n | SelectModel\n | SphericalModel\n | TabsModel\n | TextModel\n | PositionModel\n\n/**\n * @public\n */\nexport type BuilderFn = (b: Builder) => void\n\n/**\n * @public\n */\nexport type TabsBuilderFn = (b: TabsBuilder) => void\n\n/**\n * @public\n */\nexport type AccordeonBuilderFn = (b: AccordeonBuilder) => void\n\n/**\n * @public\n */\nexport interface TabsBuilder {\n group(label: string, builder: BuilderFn): GroupModel & Removable\n}\n\n/**\n * @public\n */\nexport interface AccordeonBuilder {\n /**\n * Adds a control group\n *\n * @param title - The group label\n * @param builder - A callback allowing to build sub controls\n */\n group(title: string, builder: BuilderFn): GroupModel & Removable\n /**\n * Adds a control group\n *\n * @param title - The group label\n * @param opts - Additional control options\n * @param builder - A callback allowing to build sub controls\n */\n group(title: string, opts: Partial<GroupModel>, builder?: BuilderFn): GroupModel & Removable\n group(title: string, builder: BuilderFn): GroupModel & Removable\n}\n\nfunction assign<T extends ComponentModel, E>(partial: T, overrides: E): T & E\nfunction assign<T extends ComponentModel>(partial: Partial<T>, overrides: T): T\nfunction assign<T extends ComponentModel>(partial: Partial<T>, overrides: T): T {\n Object.keys(overrides).forEach((key: string) => {\n partial[key as keyof T] = overrides[key as keyof T]\n })\n return partial as T\n}\n\nfunction buildGroup<T extends ComponentGroupModel>(this: Builder): Partial<T> {\n let label: string = null\n let opts: Partial<T> = {}\n let cb: BuilderFn\n\n // tslint:disable-next-line: prefer-for-of\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i]\n if (isString(arg)) {\n label = arg\n } else if (isObject(arg)) {\n opts = arg\n } else if (isFunction(arg)) {\n cb = arg\n }\n }\n\n if (label) {\n opts.label = label\n }\n\n if (cb) {\n const controls = this.controls\n this.controls = []\n cb(this)\n opts.children = this.controls\n this.controls = controls\n }\n return opts\n}\n\n\nfunction buildControl<T extends ValueSource<any, any> & ComponentModel>(): Partial<T> {\n let opts: Partial<T> = {}\n\n if (arguments.length > 1) {\n opts = arguments[2] || opts\n opts.target = arguments[0]\n opts.property = arguments[1]\n if (opts.label === undefined) {\n opts.label = String(opts.property || '')\n }\n }\n if (arguments.length === 1) {\n opts = arguments[0] || opts\n }\n\n return opts\n}\n\n/**\n *\n * @public\n */\nexport class Builder {\n /**\n * Collection of created controls\n */\n public controls: ComponentModel[] = []\n\n public group(builder: BuilderFn): GroupModel & Removable\n public group(opts: Partial<GroupModel>): GroupModel & Removable\n public group(opts: Partial<GroupModel>, builder: BuilderFn): GroupModel & Removable\n public group(label: string, builder: BuilderFn): GroupModel & Removable\n public group(label: string, opts: Partial<GroupModel>): GroupModel & Removable\n public group(label: string, opts: Partial<GroupModel>, builder: BuilderFn): GroupModel & Removable\n public group(): GroupModel & Removable {\n const opts: Partial<GroupModel> = buildGroup.apply(this, arguments)\n return this.add<GroupModel>(assign(opts, {\n type: 'group',\n children: opts.children,\n label: null,\n title: opts.label,\n }))\n }\n\n public collapsible(builder: BuilderFn): GroupModel & Removable\n public collapsible(opts: Partial<GroupModel>): GroupModel & Removable\n public collapsible(opts: Partial<GroupModel>, builder: BuilderFn): GroupModel & Removable\n public collapsible(label: string, builder: BuilderFn): GroupModel & Removable\n public collapsible(label: string, opts: Partial<GroupModel>): GroupModel & Removable\n public collapsible(label: string, opts: Partial<GroupModel>, builder: BuilderFn): GroupModel & Removable\n public collapsible(): GroupModel & Removable {\n const opts: Partial<GroupModel> = buildGroup.apply(this, arguments)\n return this.add<GroupModel>(assign(opts, {\n type: 'group',\n children: opts.children,\n collapsible: true,\n label: null,\n title: opts.label,\n }))\n }\n\n public container(builder: BuilderFn): ContainerModel & Removable\n public container(opts: Partial<ContainerModel>): ContainerModel & Removable\n public container(opts: Partial<ContainerModel>, builder: BuilderFn): ContainerModel & Removable\n public container(label: string, builder: BuilderFn): ContainerModel & Removable\n public container(label: string, opts: Partial<ContainerModel>): ContainerModel & Removable\n public container(label: string, opts: Partial<ContainerModel>, builder: BuilderFn): ContainerModel & Removable\n public container(): ContainerModel & Removable {\n const opts: Partial<ContainerModel> = buildGroup.apply(this, arguments)\n return this.add<ContainerModel>(assign(opts, {\n type: 'container',\n children: opts.children,\n }))\n }\n\n public tabs(builder: TabsBuilderFn): TabsModel & Removable\n public tabs(opts: Partial<TabsModel>): TabsModel & Removable\n public tabs(opts: Partial<TabsModel>, builder: TabsBuilderFn): TabsModel & Removable\n public tabs(label: string, builder: TabsBuilderFn): TabsModel & Removable\n public tabs(label: string, opts: Partial<TabsModel>): TabsModel & Removable\n public tabs(label: string, opts: Partial<TabsModel>, builder: TabsBuilderFn): TabsModel & Removable\n public tabs(): TabsModel & Removable {\n const opts: Partial<TabsModel> = buildGroup.apply(this, arguments)\n return this.add<TabsModel>(assign(opts, {\n type: 'tabs',\n active: opts.active || 0,\n children: opts.children,\n }))\n }\n\n public accordion(builder: AccordeonBuilderFn): AccordeonModel & Removable\n public accordion(opts: Partial<AccordeonModel>): AccordeonModel & Removable\n public accordion(opts: Partial<AccordeonModel>, builder: AccordeonBuilderFn): AccordeonModel & Removable\n public accordion(label: string, builder: AccordeonBuilderFn): AccordeonModel & Removable\n public accordion(label: string, opts: Partial<AccordeonModel>): AccordeonModel & Removable\n public accordion(label: string, opts: Partial<AccordeonModel>, builder: AccordeonBuilderFn): AccordeonModel & Removable\n public accordion(): AccordeonModel & Removable {\n const opts: Partial<AccordeonModel> = buildGroup.apply(this, arguments)\n return this.add<AccordeonModel>(assign(opts, {\n type: 'accordion',\n children: opts.children,\n }))\n }\n\n public checkbox<T>(opts: Partial<CheckboxModel<T>>): CheckboxModel<T>\n public checkbox<T>(target: T, property: keyof T): CheckboxModel<T>\n public checkbox<T>(target: T, property: keyof T, opts: Partial<CheckboxModel<T>>): CheckboxModel<T>\n public checkbox(): CheckboxModel {\n const opts: Partial<CheckboxModel> = buildControl.apply(this, arguments)\n return this.add<CheckboxModel>(\n assign(opts, { type: 'checkbox' }),\n )\n }\n\n public text<T>(opts: Partial<TextModel<T>>): TextModel<T>\n public text<T>(target: T, property: keyof T): TextModel<T>\n public text<T>(target: T, property: keyof T, opts: Partial<TextModel<T>>): TextModel<T>\n public text(): TextModel {\n const opts: Partial<TextModel> = buildControl.apply(this, arguments)\n return this.add<TextModel>(\n assign(opts, { type: 'text' }),\n )\n }\n\n public number<T>(opts: Partial<NumberModel<T>>): NumberModel<T>\n public number<T>(target: T, property: keyof T): NumberModel<T>\n public number<T>(target: T, property: keyof T, opts: Partial<NumberModel<T>>): NumberModel<T>\n public number(): NumberModel {\n const opts: Partial<NumberModel> = buildControl.apply(this, arguments)\n return this.add<NumberModel>(\n assign(opts, { type: 'number' }),\n )\n }\n\n public slider<T>(opts: Partial<NumberModel<T>>): NumberModel<T>\n public slider<T>(target: T, property: keyof T): NumberModel<T>\n public slider<T>(target: T, property: keyof T, opts: Partial<NumberModel<T>>): NumberModel<T>\n public slider(): NumberModel {\n const opts: Partial<NumberModel> = buildControl.apply(this, arguments)\n return this.add<NumberModel>(\n assign(opts, { type: 'slider' }),\n )\n }\n\n public position<T>(opts: Partial<PositionModel<T>>): PositionModel<T>\n public position<T>(target: T, property: keyof T): PositionModel<T>\n public position<T>(target: T, property: keyof T, opts: Partial<PositionModel<T>>): PositionModel<T>\n public position(): PositionModel {\n const opts: Partial<PositionModel> = buildControl.apply(this, arguments)\n return this.add<PositionModel>(\n assign(opts, { type: 'position' }),\n )\n }\n public select<T>(opts: Partial<SelectModel<T>>): SelectModel<T>\n public select<T>(target: T, property: keyof T): SelectModel<T>\n public select<T>(target: T, property: keyof T, opts: Partial<SelectModel<T>>): SelectModel<T>\n public select(): SelectModel {\n const opts: Partial<SelectModel> = buildControl.apply(this, arguments)\n return this.add<SelectModel>(\n assign(opts, { type: 'select' }),\n )\n }\n\n public color<T>(opts: Partial<ColorModel<T>>): ColorModel<T>\n public color<T>(target: T, property: keyof T): ColorModel<T>\n public color<T>(target: T, property: keyof T, opts: Partial<ColorModel<T>>): ColorModel<T>\n public color(): ColorModel {\n const opts: Partial<ColorModel> = buildControl.apply(this, arguments)\n return this.add<ColorModel>(\n assign(opts, { type: 'color' }),\n )\n }\n\n public colorPicker<T>(opts: Partial<ColorPickerModel<T>>): ColorPickerModel<T>\n public colorPicker<T>(target: T, property: keyof T): ColorPickerModel<T>\n public colorPicker<T>(target: T, property: keyof T, opts: Partial<ColorPickerModel<T>>): ColorPickerModel<T>\n public colorPicker(): ColorPickerModel {\n const opts: Partial<ColorPickerModel> = buildControl.apply(this, arguments)\n return this.add<ColorPickerModel>(\n assign(opts, { type: 'color-picker' }),\n )\n }\n\n public point<T>(opts: Partial<PointModel<T>>): PointModel<T>\n public point<T>(target: T, property: keyof T): PointModel<T>\n public point<T>(target: T, property: keyof T, opts: Partial<PointModel<T>>): PointModel<T>\n public point(): PointModel {\n const opts: Partial<PointModel> = buildControl.apply(this, arguments)\n return this.add<PointModel>(\n assign(opts, { type: 'point' }),\n )\n }\n\n public spherical<T>(opts: Partial<SphericalModel<T>>): SphericalModel<T>\n public spherical<T>(target: T, property: keyof T): SphericalModel<T>\n public spherical<T>(target: T, property: keyof T, opts: Partial<SphericalModel<T>>): SphericalModel<T>\n public spherical(): SphericalModel {\n const opts: Partial<SphericalModel> = buildControl.apply(this, arguments)\n return this.add<SphericalModel>(\n assign(opts, { type: 'spherical' }),\n )\n }\n\n public angle<T>(opts: Partial<AngleModel<T>>): AngleModel<T>\n public angle<T>(target: T, property: keyof T): AngleModel<T>\n public angle<T>(target: T, property: keyof T, opts: Partial<AngleModel<T>>): AngleModel<T>\n public angle(): AngleModel {\n const opts: Partial<AngleModel> = buildControl.apply(this, arguments)\n return this.add<AngleModel>(\n assign(opts, { type: 'angle' }),\n )\n }\n\n public object<T>(label: string, target: T, config: ObjectConfig<T> = {}) {\n return this.group(label, (ui) => {\n for (const key in target) {\n if (!config[key]) {\n const value = target[key]\n switch (typeof value) {\n case 'number':\n ui.number(target, key);\n break\n case 'string':\n ui.text(target, key);\n break\n case 'boolean':\n ui.checkbox(target, key);\n break\n }\n continue\n }\n switch (config[key].type) {\n case 'text':\n ui.text(target, key, config[key]);\n break;\n case 'number':\n ui.number(target, key, config[key]);\n break;\n case 'checkbox':\n ui.checkbox(target, key, config[key]);\n break;\n case 'select':\n ui.select(target, key, config[key]);\n break;\n case 'color':\n ui.color(target, key, config[key]);\n break;\n case 'color-picker':\n ui.colorPicker(target, key, config[key]);\n break;\n case 'point':\n ui.point(target, key, config[key]);\n break;\n case 'spherical':\n ui.spherical(target, key, config[key]);\n break;\n case 'angle':\n ui.angle(target, key, config[key]);\n break;\n default:\n //\n }\n }\n })\n }\n\n /**\n * Adds a button control\n *\n * @param text - The button text\n * @param opts - Additional options for the control\n */\n public button(text: string, opts: Partial<ButtonModel> = {}) {\n return this.add<ButtonModel>(\n assign(opts, {\n type: 'button',\n text: text,\n }),\n )\n }\n\n /**\n * Adds an image control\n *\n * @param label - The control label\n * @param opts - Additional options for the control\n */\n public image(opts: Partial<ImageModel>): ImageModel & Removable\n public image(label: string, opts: Partial<ImageModel>): ImageModel & Removable\n public image() {\n const opts: Partial<ImageModel> = buildGroup.apply(this, arguments)\n return this.add<ImageModel>(assign(opts, {\n type: 'image',\n }))\n }\n\n /**\n * Adds a description text\n *\n * @param label - The control label\n * @param text - The text message\n * @param opts - Additional options for the control\n */\n public content(label: string, content: Child, opts: Partial<ContentModel> = {}) {\n return this.add<ContentModel>(\n assign(opts, {\n type: 'content',\n label: label,\n content: content,\n }),\n )\n }\n\n\n\n /**\n * Adds a build in control\n *\n * @param def - The control definition\n */\n public add<T extends BuildInComponent>(def: T): T & Removable\n /**\n * Adds a control\n *\n * @param def - The control definition\n */\n public add<T extends ComponentModel>(def: T): T & Removable\n /**\n * Adds a control\n *\n * @param def - The control definition\n */\n public add<T extends ComponentModel>(def: T): T & Removable {\n this.controls.push(\n assign(def, {\n remove: () => {\n const i = this.controls.indexOf(def)\n if (i >= 0) {\n this.controls.splice(i, 1)\n }\n },\n }),\n )\n return def\n }\n}\n\nexport type ObjectConfig<T> = {\n [K in keyof T]?:\n TextModel<T> |\n NumberModel<T> |\n CheckboxModel<T> |\n SelectModel<T> |\n ColorModel<T> |\n ColorPickerModel<T> |\n PointModel<T> |\n SphericalModel<T> |\n AngleModel<T>\n}\n","import type { ComponentModel } from './core/types'\nimport { default as m } from 'mithril'\nimport { Builder, BuilderFn } from './builder'\nimport { isFunction } from './core/utils'\nimport { renderModel } from './core'\nimport { GroupModel } from './components'\n\n/**\n * Mithril's hyperscript function.\n *\n * @public\n * @remarks\n * Useful to create custom components\n */\nexport const h = m\n\n/**\n * Runs the function through a builder system and returns the created controls\n *\n * @param fn - The builder function\n * @returns\n */\nexport function build(fn: BuilderFn) {\n const builder = new Builder()\n fn(builder)\n return builder.controls\n}\n\n/**\n * Mounts a ui to the given element\n *\n * @public\n * @param el - The ui host element\n * @param data - The ui definition object\n */\nexport function mount<T extends ComponentModel>(el: Element | string, data: T | Array<T> | BuilderFn) {\n el = typeof el === 'string' ? document.querySelector(el) : el\n el.classList.add('twui-root')\n if (!data) {\n m.mount(el, null)\n } else if (Array.isArray(data)) {\n m.mount(el, {\n view: () =>\n renderModel<GroupModel>({\n type: 'group',\n children: data,\n }),\n })\n } else if (isFunction(data)) {\n const builder = new Builder()\n data(builder)\n m.mount(el, {\n view: () =>\n renderModel<GroupModel>({\n type: 'group',\n children: builder.controls,\n }),\n })\n } else {\n m.mount(el, {\n view: () => renderModel(data),\n })\n }\n}\n\n/**\n * Unmounts the ui from given host element\n *\n * @public\n * @param el - The ui host element\n */\nexport function unmount(el: Element | string) {\n el = typeof el === 'string' ? document.querySelector(el) : el\n m.mount(el, null)\n}\n\n/**\n * Redraws the ui\n *\n * @public\n * @remarks\n * When changing the ui description object qui callbacks (e.g. `onInput` or `onChange`)\n * the ui will redraw automatically.\n *\n * However if the ui description object is changed from outside the qui callback\n * then this method must be called in order to update the visual state.\n */\nexport function redraw() {\n m.redraw()\n}\n"],"names":["Vnode","tag","key","attrs","children","text","dom","node","input","isKeyed","i","vnode","require$$0","hyperscriptVnode","start","hasOwn","require$$1","require$$2","selectorParser","selectorCache","isEmpty","object","compileSelector","selector","match","classes","type","value","attrValue","execSelector","state","hasClass","className","hyperscript","hyperscript_1","trust","html","fragment","delayedRemoval","domFor","domSize","generation","nextSibling","domFor_1","df","render","nameSpace","currentRedraw","currentRender","getDocument","getNameSpace","checkState","original","callHook","activeElement","createNodes","parent","vnodes","end","hooks","ns","createNode","initLifecycle","createText","createHTML","createFragment","createElement","createComponent","insertDOM","possibleParents","temp","child","is","element","setAttrs","maybeSetContentEditable","setLateSelectAttrs","initComponent","sentinel","updateNodes","old","removeNodes","isOldKeyed","oldStart","oldEnd","map","o","v","oe","ve","topSibling","updateNode","getNextSibling","moveDOM","originalNextSibling","vnodesLength","oldIndices","li","pos","matched","lisIndices","getKeyMap","oldIndex","makeLisIndices","commonLength","removeNode","oldTag","shouldNotUpdate","updateLifecycle","updateText","updateHTML","updateFragment","updateElement","updateComponent","removeDOM","updateAttrs","lisTemp","a","result","u","il","j","c","target","content","tryBlockRemove","source","counter","tryResumeRemove","onremove","setAttr","isLifecycleMethod","isFormAttribute","updateEvent","updateStyle","hasPropertyKey","removeAttr","nsLastIndex","normalized","val","attr","style","EventDict","ev","handler","self","force","currentDOM","redraw","prevRedraw","prevDOM","active","namespace","mountRedraw","schedule","console","subscriptions","pending","offset","sync","e","mount","root","component","index","build","args","destructure","buildQueryString","template","params","queryIndex","hashIndex","queryEnd","pathEnd","path","query","resolved","m","variadic","newQueryIndex","newHashIndex","newQueryEnd","newPathEnd","querystring","buildPathname","request","$window","oncompletion","PromiseProxy","executor","makeRequest","url","resolve","reject","method","body","assumeJSON","responseType","xhr","aborted","isTimeout","replacedAbort","abort","hasHeader","success","response","message","completeErrorResponse","error","name","promise","count","complete","wrap","then","next","decodeURIComponentSave","str","parse","string","entries","counters","data","entry","levels","cursor","level","nextLevel","isNumber","desc","parseQueryString","parsePathname","compileTemplate","templateData","templateKeys","keys","regexp","extra","values","magic","censor","extras","require$$3","require$$4","require$$5","router","callAsync","p","scheduled","ready","compiled","fallbackRoute","currentResolver","currentPath","lastUpdate","RouterRoot","fireAsync","resolveRoute","SKIP","route","prefix","setPath","loop","payload","matchedRoute","localComp","update","comp","options","title","defaultRoute","routes","defaultData","onclick","href","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","mithril","registry","getComponent","override","renderModel","model","getValue","decode","readValue","setValue","encoded","encode","writeValue","isWriteable","obj","isString","isFunction","isArray","isObject","call","cb","use","clamp","min","max","cssClass","exp","it","padLeft","length","char","twuiClass","variation","getTouchPoint","cx","cy","getTouchInTarget","rect","tx","ty","cw","ch","x","y","viewFn","fn","dragUtil","onStart","onMove","onEnd","util","TYPE","angle","dragged","toDeg","toRad","toScreen","fetchValue","updatePositions","onChange","written","onStartPhi","drag","touchOffset","touch","position","px","py","onPhiInput","onPhiChange","angleCodec","axes","radius","r","checked","hsv2rgb","hsv","H","S","V","C","X","rgb","rgb2hsv","g","b","d","ArrayColorFormat","components","rgba","CssStringFormat","HexStringFormat","NumberColorFormat","ObjectColorFormat","formatter","getColorFormatter","format","hue","sat","getHSVA","s","getRGB","getRGBA","alpha","setHSV","setHSVA","getHexRGB","getHexRGBA","getCssRGBA","parseInput","formatOutput","triggerInput","triggerChange","hasAlpha","inputR","inputG","inputB","field","color","inputHex","kind","beginPickSV","enableDrag","onMouseMove","beginPickH","beginPickA","el","disableDrag","onMouseUp","opened","rgbaFromatter","fetchState","toggle","onPickerInput","onPickerChange","getText","k","NumberComponent","step","disabled","placeholder","isSlider","percent","setModelValue","onInput","limit","onDragStart","onKeydown","code","add","onWheel","dir","onFocus","onBlur","slider","DEFAULT_RANGE","DEFAULT_KEYS","kx","ky","xRange","yRange","vx","vy","rx","ry","snap","reset","updateValue","onMouseDown","defaultKeys","_","emptyArray","optionsFromFlatArray","arr","res","optionsFromArray","optionsFromObject","getOptions","getSelectedIndex","o0","o1","getSelectionAt","option","KEYS","phi","theta","backface","v2Phi","v2Theta","draggedKnob","read","kPhi","kTheta","onStartTheta","ab","ac","t","onThetaInput","onThetaChange","onBackfaceChange","sphericalCodec","z","EMPTY","detectExpanded","group","list","_a","onClick","tabs","tab","aspect","spec","width","src","assign","partial","overrides","buildGroup","label","opts","arg","controls","buildControl","Builder","config","ui","def","h","builder","unmount"],"mappings":"qXAEA,SAASA,EAAMC,EAAKC,EAAKC,EAAOC,EAAUC,EAAMC,EAAK,CACpD,MAAO,CAAC,IAAKL,EAAK,IAAKC,EAAK,MAAOC,EAAO,SAAUC,EAAU,KAAMC,EAAM,IAAKC,EAAK,GAAI,OAAW,QAAS,OAAW,MAAO,OAAW,OAAQ,OAAW,SAAU,MAAS,CAChL,CACA,OAAAN,EAAM,UAAY,SAASO,EAAM,CAChC,OAAI,MAAM,QAAQA,CAAI,EAAUP,EAAM,IAAK,OAAW,OAAWA,EAAM,kBAAkBO,CAAI,EAAG,OAAW,MAAS,EAChHA,GAAQ,MAAQ,OAAOA,GAAS,UAAkB,KAClD,OAAOA,GAAS,SAAiBA,EAC9BP,EAAM,IAAK,OAAW,OAAW,OAAOO,CAAI,EAAG,OAAW,MAAS,CAC3E,EACAP,EAAM,kBAAoB,SAASQ,EAAO,CACzC,IAAIJ,EAAW,CAAA,EACf,GAAII,EAAM,OAAQ,CAKjB,QAJIC,EAAUD,EAAM,CAAC,GAAK,MAAQA,EAAM,CAAC,EAAE,KAAO,KAIzCE,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IACjC,IAAKF,EAAME,CAAC,GAAK,MAAQF,EAAME,CAAC,EAAE,KAAO,QAAUD,EAClD,MAAM,IAAI,UACTA,IAAYD,EAAME,CAAC,GAAK,MAAQ,OAAOF,EAAME,CAAC,GAAM,WACjD,gLACA,mEACR,EAGE,QAASA,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IACjCN,EAASM,CAAC,EAAIV,EAAM,UAAUQ,EAAME,CAAC,CAAC,CAEzC,CACC,OAAON,CACR,EAEAO,GAAiBX,kDChCjB,IAAIA,EAAQY,GAAA,EA+BZ,OAAAC,GAAiB,UAAW,CAC3B,IAAIV,EAAQ,UAAU,IAAI,EAAGW,EAAQ,KAAO,EAAGV,EAS/C,GAPID,GAAS,KACZA,EAAQ,CAAA,GACE,OAAOA,GAAU,UAAYA,EAAM,KAAO,MAAQ,MAAM,QAAQA,CAAK,KAC/EA,EAAQ,CAAA,EACRW,EAAQ,MAGL,UAAU,SAAWA,EAAQ,EAChCV,EAAW,UAAUU,CAAK,EACrB,MAAM,QAAQV,CAAQ,IAAGA,EAAW,CAACA,CAAQ,OAGlD,KADAA,EAAW,CAAA,EACJU,EAAQ,UAAU,QAAQV,EAAS,KAAK,UAAUU,GAAO,CAAC,EAGlE,OAAOd,EAAM,GAAIG,EAAM,IAAKA,EAAOC,CAAQ,CAC5C,8CCjDcW,GAAG,CAAA,EAAG,gECDpB,IAAIf,EAAQY,GAAA,EACRC,EAAmBG,GAAA,EACnBD,EAASE,GAAA,EAETC,EAAiB,+EACjBC,EAAgB,OAAO,OAAO,IAAI,EAEtC,SAASC,EAAQC,EAAQ,CACxB,QAASnB,KAAOmB,EAAQ,GAAIN,EAAO,KAAKM,EAAQnB,CAAG,EAAG,MAAO,GAC7D,MAAO,EACR,CAEA,SAASoB,EAAgBC,EAAU,CAElC,QADIC,EAAOvB,EAAM,MAAOwB,EAAU,CAAA,EAAItB,EAAQ,CAAA,EACvCqB,EAAQN,EAAe,KAAKK,CAAQ,GAAG,CAC7C,IAAIG,EAAOF,EAAM,CAAC,EAAGG,EAAQH,EAAM,CAAC,EACpC,GAAIE,IAAS,IAAMC,IAAU,GAAI1B,EAAM0B,UAC9BD,IAAS,IAAKvB,EAAM,GAAKwB,UACzBD,IAAS,IAAKD,EAAQ,KAAKE,CAAK,UAChCH,EAAM,CAAC,EAAE,CAAC,IAAM,IAAK,CAC7B,IAAII,EAAYJ,EAAM,CAAC,EACnBI,IAAWA,EAAYA,EAAU,QAAQ,YAAa,IAAI,EAAE,QAAQ,QAAS,IAAI,GACjFJ,EAAM,CAAC,IAAM,QAASC,EAAQ,KAAKG,CAAS,EAC3CzB,EAAMqB,EAAM,CAAC,CAAC,EAAII,IAAc,GAAKA,EAAYA,GAAa,EACtE,CACA,CACC,OAAIH,EAAQ,OAAS,IAAGtB,EAAM,UAAYsB,EAAQ,KAAK,GAAG,GACtDL,EAAQjB,CAAK,IAAGA,EAAQ,MACrBgB,EAAcI,CAAQ,EAAI,CAAC,IAAKtB,EAAK,MAAOE,CAAK,CACzD,CAEA,SAAS0B,EAAaC,EAAOnB,EAAO,CACnC,IAAIR,EAAQQ,EAAM,MACdoB,EAAWhB,EAAO,KAAKZ,EAAO,OAAO,EACrC6B,EAAYD,EAAW5B,EAAM,MAAQA,EAAM,UAE/C,OAAAQ,EAAM,IAAMmB,EAAM,IAEdA,EAAM,OAAS,MAClB3B,EAAQ,OAAO,OAAO,CAAE,EAAE2B,EAAM,MAAO3B,CAAK,GAExC6B,GAAa,MAAQF,EAAM,MAAM,WAAa,QAAM3B,EAAM,UAC7D6B,GAAa,KACVF,EAAM,MAAM,WAAa,KACxB,OAAOA,EAAM,MAAM,SAAS,EAAI,IAAM,OAAOE,CAAS,EACtDA,EACDF,EAAM,MAAM,WAAa,KACxBA,EAAM,MAAM,UACZ,OAEDE,GAAa,OAAM7B,EAAM,UAAY6B,GAGtCD,IAAU5B,EAAM,MAAQ,MAKxB2B,EAAM,MAAQ,SAAWf,EAAO,KAAKZ,EAAO,MAAM,IACrDA,EAAQ,OAAO,OAAO,CAAC,KAAMA,EAAM,IAAI,EAAGA,CAAK,GAIhDQ,EAAM,GAAKR,EAAM,GAEjBQ,EAAM,MAAQR,EAEPQ,CACR,CAEA,SAASsB,EAAYV,EAAU,CAC9B,GAAIA,GAAY,MAAQ,OAAOA,GAAa,UAAY,OAAOA,GAAa,YAAc,OAAOA,EAAS,MAAS,WAClH,MAAM,MAAM,sDAAsD,EAGnE,IAAIZ,EAAQE,EAAiB,MAAM,EAAG,SAAS,EAE/C,OAAI,OAAOU,GAAa,WACvBZ,EAAM,SAAWX,EAAM,kBAAkBW,EAAM,QAAQ,EACnDY,IAAa,KAAYM,EAAaV,EAAcI,CAAQ,GAAKD,EAAgBC,CAAQ,EAAGZ,CAAK,GAGtGA,EAAM,IAAMY,EACLZ,EACR,CAEAuB,OAAAA,GAAiBD,kDCtFjB,IAAIjC,EAAQY,GAAA,EAEE,OAAAuB,GAAG,SAASC,EAAM,CAC/B,OAAIA,GAAQ,OAAMA,EAAO,IAClBpC,EAAM,IAAK,OAAW,OAAWoC,EAAM,OAAW,MAAS,CACnE,kDCLA,IAAIpC,EAAQY,GAAA,EACRC,EAAmBG,GAAA,EAEvB,OAAAqB,GAAiB,UAAW,CAC3B,IAAI1B,EAAQE,EAAiB,MAAM,EAAG,SAAS,EAE/C,OAAAF,EAAM,IAAM,IACZA,EAAM,SAAWX,EAAM,kBAAkBW,EAAM,QAAQ,EAChDA,CACR,kDCTA,IAAIsB,EAAcrB,GAAA,EAElB,OAAAqB,EAAY,MAAQjB,GAAA,EACpBiB,EAAY,SAAWhB,GAAA,EAEvBiB,GAAiBD,kDCLjB,IAAIK,EAAiB,IAAI,QAEzB,SAAUC,EAAO5B,EAAO,CAGvB,IAAIL,EAAMK,EAAM,IACZ6B,EAAU7B,EAAM,QAChB8B,EAAaH,EAAe,IAAIhC,CAAG,EACvC,GAAIA,GAAO,KAAM,EAAG,CACnB,IAAIoC,EAAcpC,EAAI,YAElBgC,EAAe,IAAIhC,CAAG,IAAMmC,IAC/B,MAAMnC,EACNkC,KAGDlC,EAAMoC,CACR,OACQF,EACR,CAEA,OAAAG,GAAiB,CAChB,eAAgBL,EAChB,OAAQC,CACT,kDCxBA,IAAIvC,EAAQY,GAAA,EACRgC,EAAK5B,GAAA,EACLsB,EAAiBM,EAAG,eACpBL,EAASK,EAAG,OAEhBC,OAAAA,GAAiB,UAAW,CAC3B,IAAIC,EAAY,CACf,IAAK,6BACL,KAAM,oCACR,EAEKC,EACAC,EAEJ,SAASC,EAAY3C,EAAK,CACzB,OAAOA,EAAI,aACb,CAEC,SAAS4C,EAAavC,EAAO,CAC5B,OAAOA,EAAM,OAASA,EAAM,MAAM,OAASmC,EAAUnC,EAAM,GAAG,CAChE,CAGC,SAASwC,EAAWxC,EAAOyC,EAAU,CACpC,GAAIzC,EAAM,QAAUyC,EAAU,MAAM,IAAI,MAAM,qCAAqC,CACrF,CAMC,SAASC,EAAS1C,EAAO,CACxB,IAAIyC,EAAWzC,EAAM,MACrB,GAAI,CACH,OAAO,KAAK,MAAMyC,EAAU,SAAS,CACxC,QAAY,CACTD,EAAWxC,EAAOyC,CAAQ,CAC7B,CACA,CAIC,SAASE,EAAchD,EAAK,CAC3B,GAAI,CACH,OAAO2C,EAAY3C,CAAG,EAAE,aACxB,MAAW,CACX,OAAO,IACV,CACA,CAEC,SAASiD,EAAYC,EAAQC,EAAQ3C,EAAO4C,EAAKC,EAAOjB,EAAakB,EAAI,CACxE,QAASlD,EAAII,EAAOJ,EAAIgD,EAAKhD,IAAK,CACjC,IAAIC,EAAQ8C,EAAO/C,CAAC,EAChBC,GAAS,MACZkD,EAAWL,EAAQ7C,EAAOgD,EAAOC,EAAIlB,CAAW,CAEpD,CACA,CACC,SAASmB,EAAWL,EAAQ7C,EAAOgD,EAAOC,EAAIlB,EAAa,CAC1D,IAAIzC,EAAMU,EAAM,IAChB,GAAI,OAAOV,GAAQ,SAGlB,OAFAU,EAAM,MAAQ,CAAA,EACVA,EAAM,OAAS,MAAMmD,GAAcnD,EAAM,MAAOA,EAAOgD,CAAK,EACxD1D,EAAG,CACV,IAAK,IAAK8D,EAAWP,EAAQ7C,EAAO+B,CAAW,EAAG,MAClD,IAAK,IAAKsB,EAAWR,EAAQ7C,EAAOiD,EAAIlB,CAAW,EAAG,MACtD,IAAK,IAAKuB,EAAeT,EAAQ7C,EAAOgD,EAAOC,EAAIlB,CAAW,EAAG,MACjE,QAASwB,EAAcV,EAAQ7C,EAAOgD,EAAOC,EAAIlB,CAAW,CAChE,MAEOyB,GAAgBX,EAAQ7C,EAAOgD,EAAOC,EAAIlB,CAAW,CAC5D,CACC,SAASqB,EAAWP,EAAQ7C,EAAO+B,EAAa,CAC/C/B,EAAM,IAAMsC,EAAYO,CAAM,EAAE,eAAe7C,EAAM,QAAQ,EAC7DyD,EAAUZ,EAAQ7C,EAAM,IAAK+B,CAAW,CAC1C,CACC,IAAI2B,EAAkB,CAAC,QAAS,QAAS,MAAO,QAAS,MAAO,QAAS,MAAO,QAAS,GAAI,QAAS,GAAI,KAAM,GAAI,KAAM,SAAU,QAAS,IAAK,UAAU,EAC5J,SAASL,EAAWR,EAAQ7C,EAAOiD,EAAIlB,EAAa,CACnD,IAAIlB,EAAQb,EAAM,SAAS,MAAM,eAAe,GAAK,CAAA,EAMjD2D,EAAOrB,EAAYO,CAAM,EAAE,cAAca,EAAgB7C,EAAM,CAAC,CAAC,GAAK,KAAK,EAC3EoC,IAAO,8BACVU,EAAK,UAAY,2CAA+C3D,EAAM,SAAW,SACjF2D,EAAOA,EAAK,YAEZA,EAAK,UAAY3D,EAAM,SAExBA,EAAM,IAAM2D,EAAK,WACjB3D,EAAM,QAAU2D,EAAK,WAAW,OAIhC,QAFIjC,EAAWY,EAAYO,CAAM,EAAE,uBAAsB,EACrDe,EACGA,EAAQD,EAAK,YACnBjC,EAAS,YAAYkC,CAAK,EAE3BH,EAAUZ,EAAQnB,EAAUK,CAAW,CACzC,CACC,SAASuB,EAAeT,EAAQ7C,EAAOgD,EAAOC,EAAIlB,EAAa,CAC9D,IAAIL,EAAWY,EAAYO,CAAM,EAAE,uBAAsB,EACzD,GAAI7C,EAAM,UAAY,KAAM,CAC3B,IAAIP,EAAWO,EAAM,SACrB4C,EAAYlB,EAAUjC,EAAU,EAAGA,EAAS,OAAQuD,EAAO,KAAMC,CAAE,CACtE,CACEjD,EAAM,IAAM0B,EAAS,WACrB1B,EAAM,QAAU0B,EAAS,WAAW,OACpC+B,EAAUZ,EAAQnB,EAAUK,CAAW,CACzC,CACC,SAASwB,EAAcV,EAAQ7C,EAAOgD,EAAOC,EAAIlB,EAAa,CAC7D,IAAIzC,EAAMU,EAAM,IACZR,EAAQQ,EAAM,MACd6D,EAAK7D,EAAM,GAEfiD,EAAKV,EAAavC,CAAK,GAAKiD,EAE5B,IAAIa,EAAUb,EACbY,EAAKvB,EAAYO,CAAM,EAAE,gBAAgBI,EAAI3D,EAAK,CAAC,GAAIuE,CAAE,CAAC,EAAIvB,EAAYO,CAAM,EAAE,gBAAgBI,EAAI3D,CAAG,EACzGuE,EAAKvB,EAAYO,CAAM,EAAE,cAAcvD,EAAK,CAAC,GAAIuE,CAAE,CAAC,EAAIvB,EAAYO,CAAM,EAAE,cAAcvD,CAAG,EAS9F,GARAU,EAAM,IAAM8D,EAERtE,GAAS,MACZuE,GAAS/D,EAAOR,EAAOyD,CAAE,EAG1BQ,EAAUZ,EAAQiB,EAAS/B,CAAW,EAElC,CAACiC,EAAwBhE,CAAK,GAC7BA,EAAM,UAAY,KAAM,CAC3B,IAAIP,EAAWO,EAAM,SACrB4C,EAAYkB,EAASrE,EAAU,EAAGA,EAAS,OAAQuD,EAAO,KAAMC,CAAE,EAC9DjD,EAAM,MAAQ,UAAYR,GAAS,MAAMyE,GAAmBjE,EAAOR,CAAK,CAChF,CAEA,CACC,SAAS0E,EAAclE,EAAOgD,EAAO,CACpC,IAAImB,EACJ,GAAI,OAAOnE,EAAM,IAAI,MAAS,WAAY,CAGzC,GAFAA,EAAM,MAAQ,OAAO,OAAOA,EAAM,GAAG,EACrCmE,EAAWnE,EAAM,MAAM,KACnBmE,EAAS,mBAAqB,KAAM,OACxCA,EAAS,kBAAoB,EAChC,KAAS,CAGN,GAFAnE,EAAM,MAAQ,OACdmE,EAAWnE,EAAM,IACbmE,EAAS,mBAAqB,KAAM,OACxCA,EAAS,kBAAoB,GAC7BnE,EAAM,MAASA,EAAM,IAAI,WAAa,MAAQ,OAAOA,EAAM,IAAI,UAAU,MAAS,WAAc,IAAIA,EAAM,IAAIA,CAAK,EAAIA,EAAM,IAAIA,CAAK,CACzI,CAIE,GAHAmD,GAAcnD,EAAM,MAAOA,EAAOgD,CAAK,EACnChD,EAAM,OAAS,MAAMmD,GAAcnD,EAAM,MAAOA,EAAOgD,CAAK,EAChEhD,EAAM,SAAWX,EAAM,UAAUqD,EAAS,KAAK1C,EAAM,MAAM,KAAMA,CAAK,CAAC,EACnEA,EAAM,WAAaA,EAAO,MAAM,MAAM,wDAAwD,EAClGmE,EAAS,kBAAoB,IAC/B,CACC,SAASX,GAAgBX,EAAQ7C,EAAOgD,EAAOC,EAAIlB,EAAa,CAC/DmC,EAAclE,EAAOgD,CAAK,EACtBhD,EAAM,UAAY,MACrBkD,EAAWL,EAAQ7C,EAAM,SAAUgD,EAAOC,EAAIlB,CAAW,EACzD/B,EAAM,IAAMA,EAAM,SAAS,IAC3BA,EAAM,QAAUA,EAAM,KAAO,KAAOA,EAAM,SAAS,QAAU,GAG7DA,EAAM,QAAU,CAEnB,CAqGC,SAASoE,EAAYvB,EAAQwB,EAAKvB,EAAQE,EAAOjB,EAAakB,EAAI,CACjE,GAAI,EAAAoB,IAAQvB,GAAUuB,GAAO,MAAQvB,GAAU,MAC1C,GAAIuB,GAAO,MAAQA,EAAI,SAAW,EAAGzB,EAAYC,EAAQC,EAAQ,EAAGA,EAAO,OAAQE,EAAOjB,EAAakB,CAAE,UACrGH,GAAU,MAAQA,EAAO,SAAW,EAAGwB,GAAYzB,EAAQwB,EAAK,EAAGA,EAAI,MAAM,MACjF,CACJ,IAAIE,EAAaF,EAAI,CAAC,GAAK,MAAQA,EAAI,CAAC,EAAE,KAAO,KAC7CvE,EAAUgD,EAAO,CAAC,GAAK,MAAQA,EAAO,CAAC,EAAE,KAAO,KAChD3C,EAAQ,EAAGqE,EAAW,EAC1B,GAAI,CAACD,EAAY,KAAOC,EAAWH,EAAI,QAAUA,EAAIG,CAAQ,GAAK,MAAMA,IACxE,GAAI,CAAC1E,EAAS,KAAOK,EAAQ2C,EAAO,QAAUA,EAAO3C,CAAK,GAAK,MAAMA,IACrE,GAAIoE,IAAezE,EAClBwE,GAAYzB,EAAQwB,EAAKG,EAAUH,EAAI,MAAM,EAC7CzB,EAAYC,EAAQC,EAAQ3C,EAAO2C,EAAO,OAAQE,EAAOjB,EAAakB,CAAE,UAC7DnD,EAiBL,CAKN,QAHI2E,GAASJ,EAAI,OAAS,EAAGtB,EAAMD,EAAO,OAAS,EAAG4B,GAAKC,GAAGC,EAAGC,GAAIC,EAAIC,GAGlEN,IAAUD,GAAYzB,GAAO5C,IACnC0E,GAAKR,EAAII,EAAM,EACfK,EAAKhC,EAAOC,CAAG,EACX8B,GAAG,MAAQC,EAAG,MACdD,KAAOC,GAAIE,EAAWnC,EAAQgC,GAAIC,EAAI9B,EAAOjB,EAAakB,CAAE,EAC5D6B,EAAG,KAAO,OAAM/C,EAAc+C,EAAG,KACrCL,KAAU1B,IAGX,KAAO0B,IAAUD,GAAYzB,GAAO5C,IACnCwE,GAAIN,EAAIG,CAAQ,EAChBI,EAAI9B,EAAO3C,CAAK,EACZwE,GAAE,MAAQC,EAAE,MAChBJ,IAAYrE,IACRwE,KAAMC,GAAGI,EAAWnC,EAAQ8B,GAAGC,EAAG5B,EAAOiC,EAAeZ,EAAKG,EAAUzC,CAAW,EAAGkB,CAAE,EAG5F,KAAOwB,IAAUD,GAAYzB,GAAO5C,GAC/B,EAAAA,IAAU4C,GACV4B,GAAE,MAAQG,EAAG,KAAOD,GAAG,MAAQD,EAAE,MACrCG,GAAaE,EAAeZ,EAAKG,EAAUzC,CAAW,EACtDmD,EAAQrC,EAAQgC,GAAIE,EAAU,EAC1BF,KAAOD,GAAGI,EAAWnC,EAAQgC,GAAID,EAAG5B,EAAO+B,GAAY9B,CAAE,EACzD,EAAE9C,GAAS,EAAE4C,GAAKmC,EAAQrC,EAAQ8B,GAAG5C,CAAW,EAChD4C,KAAMG,GAAIE,EAAWnC,EAAQ8B,GAAGG,EAAI9B,EAAOjB,EAAakB,CAAE,EAC1D6B,EAAG,KAAO,OAAM/C,EAAc+C,EAAG,KACrCN,IAAYC,KACZI,GAAKR,EAAII,EAAM,EACfK,EAAKhC,EAAOC,CAAG,EACf4B,GAAIN,EAAIG,CAAQ,EAChBI,EAAI9B,EAAO3C,CAAK,EAGjB,KAAOsE,IAAUD,GAAYzB,GAAO5C,GAC/B0E,GAAG,MAAQC,EAAG,KACdD,KAAOC,GAAIE,EAAWnC,EAAQgC,GAAIC,EAAI9B,EAAOjB,EAAakB,CAAE,EAC5D6B,EAAG,KAAO,OAAM/C,EAAc+C,EAAG,KACrCL,KAAU1B,IACV8B,GAAKR,EAAII,EAAM,EACfK,EAAKhC,EAAOC,CAAG,EAEhB,GAAI5C,EAAQ4C,EAAKuB,GAAYzB,EAAQwB,EAAKG,EAAUC,GAAS,CAAC,UACrDD,EAAWC,GAAQ7B,EAAYC,EAAQC,EAAQ3C,EAAO4C,EAAM,EAAGC,EAAOjB,EAAakB,CAAE,MACzF,CAEJ,IAAIkC,GAAsBpD,EAAaqD,GAAerC,EAAM5C,EAAQ,EAAGkF,GAAa,IAAI,MAAMD,EAAY,EAAGE,GAAG,EAAGvF,EAAE,EAAGwF,GAAM,WAAYC,GAAU,EAAGd,GAAKe,GAC5J,IAAK1F,EAAI,EAAGA,EAAIqF,GAAcrF,IAAKsF,GAAWtF,CAAC,EAAI,GACnD,IAAKA,EAAIgD,EAAKhD,GAAKI,EAAOJ,IAAK,CAC1B2E,IAAO,OAAMA,GAAMgB,EAAUrB,EAAKG,EAAUC,GAAS,CAAC,GAC1DK,EAAKhC,EAAO/C,CAAC,EACb,IAAI4F,GAAWjB,GAAII,EAAG,GAAG,EACrBa,IAAY,OACfJ,GAAOI,GAAWJ,GAAOI,GAAW,GACpCN,GAAWtF,EAAEI,CAAK,EAAIwF,GACtBd,GAAKR,EAAIsB,EAAQ,EACjBtB,EAAIsB,EAAQ,EAAI,KACZd,KAAOC,GAAIE,EAAWnC,EAAQgC,GAAIC,EAAI9B,EAAOjB,EAAakB,CAAE,EAC5D6B,EAAG,KAAO,OAAM/C,EAAc+C,EAAG,KACrCU,KAEP,CAGK,GAFAzD,EAAcoD,GACVK,KAAYf,GAASD,EAAW,GAAGF,GAAYzB,EAAQwB,EAAKG,EAAUC,GAAS,CAAC,EAChFe,KAAY,EAAG5C,EAAYC,EAAQC,EAAQ3C,EAAO4C,EAAM,EAAGC,EAAOjB,EAAakB,CAAE,UAEhFsC,KAAQ,GAKX,IAFAE,GAAaG,EAAeP,EAAU,EACtCC,GAAKG,GAAW,OAAS,EACpB1F,EAAIgD,EAAKhD,GAAKI,EAAOJ,IACzB6E,EAAI9B,EAAO/C,CAAC,EACRsF,GAAWtF,EAAEI,CAAK,IAAM,GAAI+C,EAAWL,EAAQ+B,EAAG5B,EAAOC,EAAIlB,CAAW,EAEvE0D,GAAWH,EAAE,IAAMvF,EAAII,EAAOmF,KAC7BJ,EAAQrC,EAAQ+B,EAAG7C,CAAW,EAEhC6C,EAAE,KAAO,OAAM7C,EAAce,EAAO/C,CAAC,EAAE,SAG5C,KAAKA,EAAIgD,EAAKhD,GAAKI,EAAOJ,IACzB6E,EAAI9B,EAAO/C,CAAC,EACRsF,GAAWtF,EAAEI,CAAK,IAAM,IAAI+C,EAAWL,EAAQ+B,EAAG5B,EAAOC,EAAIlB,CAAW,EACxE6C,EAAE,KAAO,OAAM7C,EAAce,EAAO/C,CAAC,EAAE,IAInD,CACA,KA9GwB,CAEpB,IAAI8F,GAAexB,EAAI,OAASvB,EAAO,OAASuB,EAAI,OAASvB,EAAO,OAKpE,IADA3C,EAAQA,EAAQqE,EAAWrE,EAAQqE,EAC5BrE,EAAQ0F,GAAc1F,IAC5BwE,GAAIN,EAAIlE,CAAK,EACbyE,EAAI9B,EAAO3C,CAAK,EACZ,EAAAwE,KAAMC,GAAKD,IAAK,MAAQC,GAAK,QACxBD,IAAK,KAAMzB,EAAWL,EAAQ+B,EAAG5B,EAAOC,EAAIgC,EAAeZ,EAAKlE,EAAQ,EAAG4B,CAAW,CAAC,EACvF6C,GAAK,KAAMkB,GAAWjD,EAAQ8B,EAAC,EACnCK,EAAWnC,EAAQ8B,GAAGC,EAAG5B,EAAOiC,EAAeZ,EAAKlE,EAAQ,EAAG4B,CAAW,EAAGkB,CAAE,GAEjFoB,EAAI,OAASwB,IAAcvB,GAAYzB,EAAQwB,EAAKlE,EAAOkE,EAAI,MAAM,EACrEvB,EAAO,OAAS+C,IAAcjD,EAAYC,EAAQC,EAAQ3C,EAAO2C,EAAO,OAAQE,EAAOjB,EAAakB,CAAE,CAC9G,CA8FA,CACA,CACC,SAAS+B,EAAWnC,EAAQwB,EAAKrE,EAAOgD,EAAOjB,EAAakB,EAAI,CAC/D,IAAI8C,EAAS1B,EAAI,IAAK/E,EAAMU,EAAM,IAClC,GAAI+F,IAAWzG,GAAO+E,EAAI,KAAOrE,EAAM,GAAI,CAG1C,GAFAA,EAAM,MAAQqE,EAAI,MAClBrE,EAAM,OAASqE,EAAI,OACf2B,GAAgBhG,EAAOqE,CAAG,EAAG,OACjC,GAAI,OAAO0B,GAAW,SAIrB,OAHI/F,EAAM,OAAS,MAClBiG,GAAgBjG,EAAM,MAAOA,EAAOgD,CAAK,EAElC+C,EAAM,CACb,IAAK,IAAKG,EAAW7B,EAAKrE,CAAK,EAAG,MAClC,IAAK,IAAKmG,EAAWtD,EAAQwB,EAAKrE,EAAOiD,EAAIlB,CAAW,EAAG,MAC3D,IAAK,IAAKqE,EAAevD,EAAQwB,EAAKrE,EAAOgD,EAAOjB,EAAakB,CAAE,EAAG,MACtE,QAASoD,EAAchC,EAAKrE,EAAOgD,EAAOC,CAAE,CACjD,MAEQqD,EAAgBzD,EAAQwB,EAAKrE,EAAOgD,EAAOjB,EAAakB,CAAE,CAClE,MAEG6C,GAAWjD,EAAQwB,CAAG,EACtBnB,EAAWL,EAAQ7C,EAAOgD,EAAOC,EAAIlB,CAAW,CAEnD,CACC,SAASmE,EAAW7B,EAAKrE,EAAO,CAC3BqE,EAAI,SAAS,SAAQ,IAAOrE,EAAM,SAAS,aAC9CqE,EAAI,IAAI,UAAYrE,EAAM,UAE3BA,EAAM,IAAMqE,EAAI,GAClB,CACC,SAAS8B,EAAWtD,EAAQwB,EAAKrE,EAAOiD,EAAIlB,EAAa,CACpDsC,EAAI,WAAarE,EAAM,UAC1BuG,GAAU1D,EAAQwB,CAAG,EACrBhB,EAAWR,EAAQ7C,EAAOiD,EAAIlB,CAAW,IAGzC/B,EAAM,IAAMqE,EAAI,IAChBrE,EAAM,QAAUqE,EAAI,QAEvB,CACC,SAAS+B,EAAevD,EAAQwB,EAAKrE,EAAOgD,EAAOjB,EAAakB,EAAI,CACnEmB,EAAYvB,EAAQwB,EAAI,SAAUrE,EAAM,SAAUgD,EAAOjB,EAAakB,CAAE,EACxE,IAAIpB,EAAU,EAAGpC,EAAWO,EAAM,SAElC,GADAA,EAAM,IAAM,KACRP,GAAY,KAAM,CACrB,QAASM,EAAI,EAAGA,EAAIN,EAAS,OAAQM,IAAK,CACzC,IAAI6D,EAAQnE,EAASM,CAAC,EAClB6D,GAAS,MAAQA,EAAM,KAAO,OAC7B5D,EAAM,KAAO,OAAMA,EAAM,IAAM4D,EAAM,KACzC/B,GAAW+B,EAAM,SAAW,EAEjC,CACO/B,IAAY,IAAG7B,EAAM,QAAU6B,EACtC,CACA,CACC,SAASwE,EAAchC,EAAKrE,EAAOgD,EAAOC,EAAI,CAC7C,IAAIa,EAAU9D,EAAM,IAAMqE,EAAI,IAC9BpB,EAAKV,EAAavC,CAAK,GAAKiD,EAE5BuD,GAAYxG,EAAOqE,EAAI,MAAOrE,EAAM,MAAOiD,CAAE,EACxCe,EAAwBhE,CAAK,GACjCoE,EAAYN,EAASO,EAAI,SAAUrE,EAAM,SAAUgD,EAAO,KAAMC,CAAE,CAErE,CACC,SAASqD,EAAgBzD,EAAQwB,EAAKrE,EAAOgD,EAAOjB,EAAakB,EAAI,CAEpE,GADAjD,EAAM,SAAWX,EAAM,UAAUqD,EAAS,KAAK1C,EAAM,MAAM,KAAMA,CAAK,CAAC,EACnEA,EAAM,WAAaA,EAAO,MAAM,MAAM,wDAAwD,EAClGiG,GAAgBjG,EAAM,MAAOA,EAAOgD,CAAK,EACrChD,EAAM,OAAS,MAAMiG,GAAgBjG,EAAM,MAAOA,EAAOgD,CAAK,EAC9DhD,EAAM,UAAY,MACjBqE,EAAI,UAAY,KAAMnB,EAAWL,EAAQ7C,EAAM,SAAUgD,EAAOC,EAAIlB,CAAW,EAC9EiD,EAAWnC,EAAQwB,EAAI,SAAUrE,EAAM,SAAUgD,EAAOjB,EAAakB,CAAE,EAC5EjD,EAAM,IAAMA,EAAM,SAAS,IAC3BA,EAAM,QAAUA,EAAM,SAAS,SAEvBqE,EAAI,UAAY,MACxByB,GAAWjD,EAAQwB,EAAI,QAAQ,EAC/BrE,EAAM,IAAM,OACZA,EAAM,QAAU,IAGhBA,EAAM,IAAMqE,EAAI,IAChBrE,EAAM,QAAUqE,EAAI,QAEvB,CACC,SAASqB,EAAU5C,EAAQ3C,EAAO4C,EAAK,CAEtC,QADI2B,EAAM,OAAO,OAAO,IAAI,EACrBvE,EAAQ4C,EAAK5C,IAAS,CAC5B,IAAIH,EAAQ8C,EAAO3C,CAAK,EACxB,GAAIH,GAAS,KAAM,CAClB,IAAIT,EAAMS,EAAM,IACZT,GAAO,OAAMmF,EAAInF,CAAG,EAAIY,EAChC,CACA,CACE,OAAOuE,CACT,CAMC,IAAI+B,EAAU,CAAA,EACd,SAASb,EAAec,EAAG,CAI1B,QAHIC,EAAS,CAAC,CAAC,EACXC,EAAI,EAAGhC,EAAI,EAAG7E,EAAI,EAClB8G,EAAKJ,EAAQ,OAASC,EAAE,OACnB3G,EAAI,EAAGA,EAAI8G,EAAI9G,IAAK0G,EAAQ1G,CAAC,EAAI2G,EAAE3G,CAAC,EAC7C,QAASA,EAAI,EAAGA,EAAI8G,EAAI,EAAE9G,EACzB,GAAI2G,EAAE3G,CAAC,IAAM,GACb,KAAI+G,EAAIH,EAAOA,EAAO,OAAS,CAAC,EAChC,GAAID,EAAEI,CAAC,EAAIJ,EAAE3G,CAAC,EAAG,CAChB0G,EAAQ1G,CAAC,EAAI+G,EACbH,EAAO,KAAK5G,CAAC,EACb,QACJ,CAGG,IAFA6G,EAAI,EACJhC,EAAI+B,EAAO,OAAS,EACbC,EAAIhC,GAAG,CAGb,IAAImC,GAAKH,IAAM,IAAMhC,IAAM,IAAMgC,EAAIhC,EAAI,GACrC8B,EAAEC,EAAOI,CAAC,CAAC,EAAIL,EAAE3G,CAAC,EACrB6G,EAAIG,EAAI,EAGRnC,EAAImC,CAET,CACOL,EAAE3G,CAAC,EAAI2G,EAAEC,EAAOC,CAAC,CAAC,IACjBA,EAAI,IAAGH,EAAQ1G,CAAC,EAAI4G,EAAOC,EAAI,CAAC,GACpCD,EAAOC,CAAC,EAAI7G,GAKd,IAFA6G,EAAID,EAAO,OACX/B,EAAI+B,EAAOC,EAAI,CAAC,EACTA,KAAM,GACZD,EAAOC,CAAC,EAAIhC,EACZA,EAAI6B,EAAQ7B,CAAC,EAEd,OAAA6B,EAAQ,OAAS,EACVE,CACT,CAEC,SAAS1B,EAAenC,EAAQ/C,EAAGgC,EAAa,CAC/C,KAAOhC,EAAI+C,EAAO,OAAQ/C,IACzB,GAAI+C,EAAO/C,CAAC,GAAK,MAAQ+C,EAAO/C,CAAC,EAAE,KAAO,KAAM,OAAO+C,EAAO/C,CAAC,EAAE,IAElE,OAAOgC,CACT,CAGC,SAASmD,EAAQrC,EAAQ7C,EAAO+B,EAAa,CAC5C,GAAI/B,EAAM,KAAO,KAAM,CACtB,IAAIgH,EACJ,GAAIhH,EAAM,SAAW,KAEpBgH,EAAShH,EAAM,QACT,CACNgH,EAAS1E,EAAYO,CAAM,EAAE,uBAAsB,EACnD,QAASlD,KAAOiC,EAAO5B,CAAK,EAAGgH,EAAO,YAAYrH,CAAG,CACzD,CACG8D,EAAUZ,EAAQmE,EAAQjF,CAAW,CACxC,CACA,CAEC,SAAS0B,EAAUZ,EAAQlD,EAAKoC,EAAa,CACxCA,GAAe,KAAMc,EAAO,aAAalD,EAAKoC,CAAW,EACxDc,EAAO,YAAYlD,CAAG,CAC7B,CAEC,SAASqE,EAAwBhE,EAAO,CACvC,GAAIA,EAAM,OAAS,MAClBA,EAAM,MAAM,iBAAmB,MAC/BA,EAAM,MAAM,iBAAmB,KAC7B,MAAO,GACV,IAAIP,EAAWO,EAAM,SACrB,GAAIP,GAAY,MAAQA,EAAS,SAAW,GAAKA,EAAS,CAAC,EAAE,MAAQ,IAAK,CACzE,IAAIwH,EAAUxH,EAAS,CAAC,EAAE,SACtBO,EAAM,IAAI,YAAciH,IAASjH,EAAM,IAAI,UAAYiH,EAC9D,SACWxH,GAAY,MAAQA,EAAS,SAAW,EAAG,MAAM,IAAI,MAAM,kDAAkD,EACtH,MAAO,EACT,CAGC,SAAS6E,GAAYzB,EAAQC,EAAQ3C,EAAO4C,EAAK,CAChD,QAAShD,EAAII,EAAOJ,EAAIgD,EAAKhD,IAAK,CACjC,IAAIC,EAAQ8C,EAAO/C,CAAC,EAChBC,GAAS,MAAM8F,GAAWjD,EAAQ7C,CAAK,CAC9C,CACA,CACC,SAASkH,GAAerE,EAAQ7C,EAAOmH,EAAQC,EAAS,CACvD,IAAI3E,EAAWzC,EAAM,MACjB2G,EAASjE,EAAS,KAAKyE,EAAO,eAAgBnH,CAAK,EACvD,GAAI2G,GAAU,KAEd,KAAI7E,EAAaO,EACjB,QAAS1C,KAAOiC,EAAO5B,CAAK,EAAG2B,EAAe,IAAIhC,EAAKmC,CAAU,EACjEsF,EAAQ,IAER,QAAQ,QAAQT,CAAM,EAAE,QAAQ,UAAY,CAC3CnE,EAAWxC,EAAOyC,CAAQ,EAC1B4E,GAAgBxE,EAAQ7C,EAAOoH,CAAO,CACtC,CAAA,EACH,CACC,SAASC,GAAgBxE,EAAQ7C,EAAOoH,EAAS,CAC5C,EAAEA,EAAQ,IAAM,IACnBE,GAAStH,CAAK,EACduG,GAAU1D,EAAQ7C,CAAK,EAE1B,CACC,SAAS8F,GAAWjD,EAAQ7C,EAAO,CAClC,IAAIoH,EAAU,CAAC,EAAG,CAAC,EACf,OAAOpH,EAAM,KAAQ,UAAY,OAAOA,EAAM,MAAM,gBAAmB,YAAYkH,GAAerE,EAAQ7C,EAAOA,EAAM,MAAOoH,CAAO,EACrIpH,EAAM,OAAS,OAAOA,EAAM,MAAM,gBAAmB,YAAYkH,GAAerE,EAAQ7C,EAAOA,EAAM,MAAOoH,CAAO,EACvHC,GAAgBxE,EAAQ7C,EAAOoH,CAAO,CACxC,CACC,SAASb,GAAU1D,EAAQ7C,EAAO,CACjC,GAAIA,EAAM,KAAO,KACjB,GAAIA,EAAM,SAAW,KACpB6C,EAAO,YAAY7C,EAAM,GAAG,MAE5B,SAASL,KAAOiC,EAAO5B,CAAK,EAAG6C,EAAO,YAAYlD,CAAG,CAExD,CAEC,SAAS2H,GAAStH,EAAO,CAGxB,GAFI,OAAOA,EAAM,KAAQ,UAAY,OAAOA,EAAM,MAAM,UAAa,YAAY0C,EAAS,KAAK1C,EAAM,MAAM,SAAUA,CAAK,EACtHA,EAAM,OAAS,OAAOA,EAAM,MAAM,UAAa,YAAY0C,EAAS,KAAK1C,EAAM,MAAM,SAAUA,CAAK,EACpG,OAAOA,EAAM,KAAQ,SACpBA,EAAM,UAAY,MAAMsH,GAAStH,EAAM,QAAQ,MAC7C,CACFA,EAAM,QAAU,OAAMA,EAAM,OAAO,EAAI,MAC3C,IAAIP,EAAWO,EAAM,SACrB,GAAI,MAAM,QAAQP,CAAQ,EACzB,QAASM,EAAI,EAAGA,EAAIN,EAAS,OAAQM,IAAK,CACzC,IAAI6D,EAAQnE,EAASM,CAAC,EAClB6D,GAAS,MAAM0D,GAAS1D,CAAK,CACtC,CAEA,CACA,CAGC,SAASG,GAAS/D,EAAOR,EAAOyD,EAAI,CACnC,QAAS1D,KAAOC,EACf+H,GAAQvH,EAAOT,EAAK,KAAMC,EAAMD,CAAG,EAAG0D,CAAE,CAE3C,CACC,SAASsE,GAAQvH,EAAOT,EAAK8E,EAAKrD,EAAOiC,EAAI,CAC5C,GAAI,EAAA1D,IAAQ,OAASyB,GAAS,MAAQwG,GAAkBjI,CAAG,GAAM8E,IAAQrD,GAAS,CAACyG,GAAgBzH,EAAOT,CAAG,GAAM,OAAOyB,GAAU,UACpI,IAAIzB,EAAI,CAAC,IAAM,KAAOA,EAAI,CAAC,IAAM,IAAK,OAAOmI,GAAY1H,EAAOT,EAAKyB,CAAK,EAC1E,GAAIzB,EAAI,MAAM,EAAG,CAAC,IAAM,SAAUS,EAAM,IAAI,eAAe,+BAAgCT,EAAI,MAAM,CAAC,EAAGyB,CAAK,UACrGzB,IAAQ,QAASoI,GAAY3H,EAAM,IAAKqE,EAAKrD,CAAK,UAClD4G,GAAe5H,EAAOT,EAAK0D,CAAE,EAAG,CACxC,GAAI1D,IAAQ,QAAS,CAUpB,IAJKS,EAAM,MAAQ,SAAWA,EAAM,MAAQ,aAAeA,EAAM,IAAI,QAAU,GAAKgB,GAEhFhB,EAAM,MAAQ,UAAYqE,IAAQ,MAAQrE,EAAM,IAAI,QAAU,GAAKgB,GAEnEhB,EAAM,MAAQ,UAAYqE,IAAQ,MAAQrE,EAAM,IAAI,QAAU,GAAKgB,EAAO,OAG9E,GAAIhB,EAAM,MAAQ,SAAWA,EAAM,MAAM,OAAS,QAAU,GAAKgB,GAAU,GAAI,CAAE,QAAQ,MAAM,sCAAsC,EAAG,MAAM,CAElJ,CAEOhB,EAAM,MAAQ,SAAWT,IAAQ,OAAQS,EAAM,IAAI,aAAaT,EAAKyB,CAAK,EACzEhB,EAAM,IAAIT,CAAG,EAAIyB,CACzB,MACO,OAAOA,GAAU,UAChBA,EAAOhB,EAAM,IAAI,aAAaT,EAAK,EAAE,EACpCS,EAAM,IAAI,gBAAgBT,CAAG,EAE9BS,EAAM,IAAI,aAAaT,IAAQ,YAAc,QAAUA,EAAKyB,CAAK,EAEzE,CACC,SAAS6G,GAAW7H,EAAOT,EAAK8E,EAAKpB,EAAI,CACxC,GAAI,EAAA1D,IAAQ,OAAS8E,GAAO,MAAQmD,GAAkBjI,CAAG,GACzD,GAAIA,EAAI,CAAC,IAAM,KAAOA,EAAI,CAAC,IAAM,IAAKmI,GAAY1H,EAAOT,EAAK,MAAS,UAC9DA,IAAQ,QAASoI,GAAY3H,EAAM,IAAKqE,EAAK,IAAI,UAEzDuD,GAAe5H,EAAOT,EAAK0D,CAAE,GAC1B1D,IAAQ,aACRA,IAAQ,SACR,EAAEA,IAAQ,UACZS,EAAM,MAAQ,UACXA,EAAM,MAAQ,UAAYA,EAAM,IAAI,gBAAkB,IAAMA,EAAM,MAAQ2C,EAAc3C,EAAM,GAAG,KAElG,EAAEA,EAAM,MAAQ,SAAWT,IAAQ,QAEtCS,EAAM,IAAIT,CAAG,EAAI,SACX,CACN,IAAIuI,EAAcvI,EAAI,QAAQ,GAAG,EAC7BuI,IAAgB,KAAIvI,EAAMA,EAAI,MAAMuI,EAAc,CAAC,GACnDzD,IAAQ,IAAOrE,EAAM,IAAI,gBAAgBT,IAAQ,YAAc,QAAUA,CAAG,CACnF,CACA,CACC,SAAS0E,GAAmBjE,EAAOR,EAAO,CACzC,GAAI,UAAWA,EACd,GAAGA,EAAM,QAAU,KACdQ,EAAM,IAAI,gBAAkB,KAAIA,EAAM,IAAI,MAAQ,UAChD,CACN,IAAI+H,EAAa,GAAKvI,EAAM,OACxBQ,EAAM,IAAI,QAAU+H,GAAc/H,EAAM,IAAI,gBAAkB,MACjEA,EAAM,IAAI,MAAQ+H,EAEvB,CAEM,kBAAmBvI,GAAO+H,GAAQvH,EAAO,gBAAiB,KAAMR,EAAM,cAAe,MAAS,CACpG,CACC,SAASgH,GAAYxG,EAAOqE,EAAK7E,EAAOyD,EAAI,CAG3C,IAAI+E,EACJ,GAAI3D,GAAO,KAAM,CACZA,IAAQ7E,GACX,QAAQ,KAAK,0FAA0F,EAExG,QAASD,KAAO8E,GACT2D,EAAM3D,EAAI9E,CAAG,IAAM,OAAUC,GAAS,MAAQA,EAAMD,CAAG,GAAK,OACjEsI,GAAW7H,EAAOT,EAAKyI,EAAK/E,CAAE,CAGnC,CACE,GAAIzD,GAAS,KACZ,QAASD,KAAOC,EACf+H,GAAQvH,EAAOT,EAAK8E,GAAOA,EAAI9E,CAAG,EAAGC,EAAMD,CAAG,EAAG0D,CAAE,CAGvD,CACC,SAASwE,GAAgBzH,EAAOiI,EAAM,CACrC,OAAOA,IAAS,SAAWA,IAAS,WAAaA,IAAS,iBAAmBA,IAAS,aAAejI,EAAM,MAAQ2C,EAAc3C,EAAM,GAAG,GAAKA,EAAM,MAAQ,UAAYA,EAAM,IAAI,aAAe2C,EAAc3C,EAAM,GAAG,EAC3N,CACC,SAASwH,GAAkBS,EAAM,CAChC,OAAOA,IAAS,UAAYA,IAAS,YAAcA,IAAS,YAAcA,IAAS,YAAcA,IAAS,kBAAoBA,IAAS,gBACzI,CACC,SAASL,GAAe5H,EAAOT,EAAK0D,EAAI,CAEvC,OAAOA,IAAO,SAEbjD,EAAM,IAAI,QAAQ,GAAG,EAAI,IAAMA,EAAM,IAErCT,IAAQ,QAAUA,IAAQ,QAAUA,IAAQ,QAAUA,IAAQ,SAAWA,IAAQ,WAE7EA,KAAOS,EAAM,GACpB,CAGC,SAAS2H,GAAY7D,EAASO,EAAK6D,EAAO,CACzC,GAAI7D,IAAQ6D,EAEL,GAAIA,GAAS,KAEnBpE,EAAQ,MAAQ,WACN,OAAOoE,GAAU,SAE3BpE,EAAQ,MAAQoE,UACN7D,GAAO,MAAQ,OAAOA,GAAQ,SAAU,CAElDP,EAAQ,MAAQ,GAEhB,QAASvE,KAAO2I,EAAO,CACtB,IAAIlH,EAAQkH,EAAM3I,CAAG,EACjByB,GAAS,OACRzB,EAAI,SAAS,GAAG,EAAGuE,EAAQ,MAAM,YAAYvE,EAAK,OAAOyB,CAAK,CAAC,EAC9D8C,EAAQ,MAAMvE,CAAG,EAAI,OAAOyB,CAAK,EAE3C,CACA,KAAS,CAKN,QAASzB,KAAO8E,EACXA,EAAI9E,CAAG,GAAK,MAAQ2I,EAAM3I,CAAG,GAAK,OACjCA,EAAI,SAAS,GAAG,EAAGuE,EAAQ,MAAM,eAAevE,CAAG,EAClDuE,EAAQ,MAAMvE,CAAG,EAAI,IAI5B,QAASA,KAAO2I,EAAO,CACtB,IAAIlH,EAAQkH,EAAM3I,CAAG,EACjByB,GAAS,OAASA,EAAQ,OAAOA,CAAK,KAAO,OAAOqD,EAAI9E,CAAG,CAAC,IAC3DA,EAAI,SAAS,GAAG,EAAGuE,EAAQ,MAAM,YAAYvE,EAAKyB,CAAK,EACtD8C,EAAQ,MAAMvE,CAAG,EAAIyB,EAE/B,CACA,CACA,CAaC,SAASmH,IAAY,CAEpB,KAAK,EAAI/F,CACX,CACC+F,GAAU,UAAY,OAAO,OAAO,IAAI,EACxCA,GAAU,UAAU,YAAc,SAAUC,EAAI,CAC/C,IAAIC,EAAU,KAAK,KAAOD,EAAG,IAAI,EAC7BzB,EACA,OAAO0B,GAAY,WAAY1B,EAAS0B,EAAQ,KAAKD,EAAG,cAAeA,CAAE,EACpE,OAAOC,EAAQ,aAAgB,YAAYA,EAAQ,YAAYD,CAAE,EAC1E,IAAIE,EAAO,KACPA,EAAK,GAAK,OACTF,EAAG,SAAW,OAAWE,EAAK,GAAC,EAC/B3B,GAAU,MAAQ,OAAOA,EAAO,MAAS,YAC5C,QAAQ,QAAQA,CAAM,EAAE,KAAK,UAAY,CACpC2B,EAAK,GAAK,MAAQF,EAAG,SAAW,OAAWE,EAAK,GAAC,CACrD,CAAA,GAGC3B,IAAW,KACdyB,EAAG,eAAc,EACjBA,EAAG,gBAAe,EAErB,EAGC,SAASV,GAAY1H,EAAOT,EAAKyB,EAAO,CACvC,GAAIhB,EAAM,QAAU,KAAM,CAEzB,GADAA,EAAM,OAAO,EAAIoC,EACbpC,EAAM,OAAOT,CAAG,IAAMyB,EAAO,OAC7BA,GAAS,OAAS,OAAOA,GAAU,YAAc,OAAOA,GAAU,WACjEhB,EAAM,OAAOT,CAAG,GAAK,MAAMS,EAAM,IAAI,iBAAiBT,EAAI,MAAM,CAAC,EAAGS,EAAM,OAAQ,EAAK,EAC3FA,EAAM,OAAOT,CAAG,EAAIyB,IAEhBhB,EAAM,OAAOT,CAAG,GAAK,MAAMS,EAAM,IAAI,oBAAoBT,EAAI,MAAM,CAAC,EAAGS,EAAM,OAAQ,EAAK,EAC9FA,EAAM,OAAOT,CAAG,EAAI,OAExB,MAAayB,GAAS,OAAS,OAAOA,GAAU,YAAc,OAAOA,GAAU,YAC5EhB,EAAM,OAAS,IAAImI,GACnBnI,EAAM,IAAI,iBAAiBT,EAAI,MAAM,CAAC,EAAGS,EAAM,OAAQ,EAAK,EAC5DA,EAAM,OAAOT,CAAG,EAAIyB,EAEvB,CAGC,SAASmC,GAAcgE,EAAQnH,EAAOgD,EAAO,CACxC,OAAOmE,EAAO,QAAW,YAAYzE,EAAS,KAAKyE,EAAO,OAAQnH,CAAK,EACvE,OAAOmH,EAAO,UAAa,YAAYnE,EAAM,KAAKN,EAAS,KAAKyE,EAAO,SAAUnH,CAAK,CAAC,CAC7F,CACC,SAASiG,GAAgBkB,EAAQnH,EAAOgD,EAAO,CAC1C,OAAOmE,EAAO,UAAa,YAAYnE,EAAM,KAAKN,EAAS,KAAKyE,EAAO,SAAUnH,CAAK,CAAC,CAC7F,CACC,SAASgG,GAAgBhG,EAAOqE,EAAK,CACpC,EAAG,CACF,GAAIrE,EAAM,OAAS,MAAQ,OAAOA,EAAM,MAAM,gBAAmB,WAAY,CAC5E,IAAIuI,EAAQ7F,EAAS,KAAK1C,EAAM,MAAM,eAAgBA,EAAOqE,CAAG,EAChE,GAAIkE,IAAU,QAAa,CAACA,EAAO,KACvC,CACG,GAAI,OAAOvI,EAAM,KAAQ,UAAY,OAAOA,EAAM,MAAM,gBAAmB,WAAY,CACtF,IAAIuI,EAAQ7F,EAAS,KAAK1C,EAAM,MAAM,eAAgBA,EAAOqE,CAAG,EAChE,GAAIkE,IAAU,QAAa,CAACA,EAAO,KACvC,CACG,MAAO,EACP,OAAQ,IACT,OAAAvI,EAAM,IAAMqE,EAAI,IAChBrE,EAAM,QAAUqE,EAAI,QACpBrE,EAAM,SAAWqE,EAAI,SAQrBrE,EAAM,MAAQqE,EAAI,MAClBrE,EAAM,SAAWqE,EAAI,SACrBrE,EAAM,KAAOqE,EAAI,KACV,EACT,CAEC,IAAImE,GAEJ,OAAO,SAAS7I,EAAKmD,EAAQ2F,EAAQ,CACpC,GAAI,CAAC9I,EAAK,MAAM,IAAI,UAAU,+CAA+C,EAC7E,GAAI6I,IAAc,MAAQ7I,EAAI,SAAS6I,EAAU,EAChD,MAAM,IAAI,UAAU,yDAAyD,EAE9E,IAAIE,EAAatG,EACbuG,EAAUH,GACVxF,EAAQ,CAAA,EACR4F,EAASjG,EAAchD,CAAG,EAC1BkJ,EAAYlJ,EAAI,aAEpB6I,GAAa7I,EACbyC,EAAgB,OAAOqG,GAAW,WAAaA,EAAS,OACxDpG,EAAgB,CAAA,EAChB,GAAI,CAEC1C,EAAI,QAAU,OAAMA,EAAI,YAAc,IAC1CmD,EAASzD,EAAM,kBAAkB,MAAM,QAAQyD,CAAM,EAAIA,EAAS,CAACA,CAAM,CAAC,EAC1EsB,EAAYzE,EAAKA,EAAI,OAAQmD,EAAQE,EAAO,KAAM6F,IAAc,+BAAiC,OAAYA,CAAS,EACtHlJ,EAAI,OAASmD,EAET8F,GAAU,MAAQjG,EAAchD,CAAG,IAAMiJ,GAAU,OAAOA,EAAO,OAAU,YAAYA,EAAO,MAAK,EACvG,QAAS7I,EAAI,EAAGA,EAAIiD,EAAM,OAAQjD,IAAKiD,EAAMjD,CAAC,EAAC,CAClD,QAAY,CACTqC,EAAgBsG,EAChBF,GAAaG,CAChB,CACA,CACA,8CC/4BczG,GAAGjC,GAA0B,EAAC,OAAO,OAAW,IAAc,OAAS,IAAI,mDCAzF,IAAIZ,EAAQY,GAAA,EAEZ6I,OAAAA,GAAiB,SAAS5G,EAAQ6G,EAAUC,EAAS,CACpD,IAAIC,EAAgB,CAAA,EAChBC,EAAU,GACVC,EAAS,GAEb,SAASC,GAAO,CACf,IAAKD,EAAS,EAAGA,EAASF,EAAc,OAAQE,GAAU,EACzD,GAAI,CAAEjH,EAAO+G,EAAcE,CAAM,EAAG9J,EAAM4J,EAAcE,EAAS,CAAC,CAAC,EAAGV,CAAM,CAAC,OACtEY,EAAG,CAAEL,EAAQ,MAAMK,CAAC,CAAC,CAE7BF,EAAS,EACX,CAEC,SAASV,GAAS,CACZS,IACJA,EAAU,GACVH,EAAS,UAAW,CACnBG,EAAU,GACVE,EAAI,CACJ,CAAA,EAEJ,CAECX,EAAO,KAAOW,EAEd,SAASE,EAAMC,EAAMC,EAAW,CAC/B,GAAIA,GAAa,MAAQA,EAAU,MAAQ,MAAQ,OAAOA,GAAc,WACvE,MAAM,IAAI,UAAU,2CAA2C,EAGhE,IAAIC,EAAQR,EAAc,QAAQM,CAAI,EAClCE,GAAS,IACZR,EAAc,OAAOQ,EAAO,CAAC,EACzBA,GAASN,IAAQA,GAAU,GAC/BjH,EAAOqH,EAAM,CAAE,CAAA,GAGZC,GAAa,OAChBP,EAAc,KAAKM,EAAMC,CAAS,EAClCtH,EAAOqH,EAAMlK,EAAMmK,CAAS,EAAGf,CAAM,EAExC,CAEC,MAAO,CAAC,MAAOa,EAAO,OAAQb,CAAM,CACrC,kDC9CA,IAAIvG,EAASjC,GAAA,EAEC,OAAA6I,GAAGzI,KAA8B6B,EAAQ,OAAO,sBAA0B,IAAc,sBAAwB,KAAM,OAAO,QAAY,IAAc,QAAU,IAAI,8CCFrKwH,GAAG,SAAShJ,EAAQ,CACjC,GAAI,OAAO,UAAU,SAAS,KAAKA,CAAM,IAAM,kBAAmB,MAAO,GAEzE,IAAIiJ,EAAO,CAAA,EACX,QAASpK,KAAOmB,EACfkJ,EAAYrK,EAAKmB,EAAOnB,CAAG,CAAC,EAG7B,OAAOoK,EAAK,KAAK,GAAG,EAEpB,SAASC,EAAYrK,EAAKyB,EAAO,CAChC,GAAI,MAAM,QAAQA,CAAK,EACtB,QAASjB,EAAI,EAAGA,EAAIiB,EAAM,OAAQjB,IACjC6J,EAAYrK,EAAM,IAAMQ,EAAI,IAAKiB,EAAMjB,CAAC,CAAC,UAGlC,OAAO,UAAU,SAAS,KAAKiB,CAAK,IAAM,kBAClD,QAASjB,KAAKiB,EACb4I,EAAYrK,EAAM,IAAMQ,EAAI,IAAKiB,EAAMjB,CAAC,CAAC,OAGtC4J,EAAK,KAAK,mBAAmBpK,CAAG,GAAKyB,GAAS,MAAQA,IAAU,GAAK,IAAM,mBAAmBA,CAAK,EAAI,GAAG,CACjH,CACA,mDCvBA,IAAI6I,EAAmB5J,GAAA,EAGvByJ,OAAAA,GAAiB,SAASI,EAAUC,EAAQ,CAC3C,GAAK,wBAAyB,KAAKD,CAAQ,EAC1C,MAAM,IAAI,YAAY,0EAA0E,EAEjG,GAAIC,GAAU,KAAM,OAAOD,EAC3B,IAAIE,EAAaF,EAAS,QAAQ,GAAG,EACjCG,EAAYH,EAAS,QAAQ,GAAG,EAChCI,EAAWD,EAAY,EAAIH,EAAS,OAASG,EAC7CE,EAAUH,EAAa,EAAIE,EAAWF,EACtCI,EAAON,EAAS,MAAM,EAAGK,CAAO,EAChCE,EAAQ,CAAA,EAEZ,OAAO,OAAOA,EAAON,CAAM,EAE3B,IAAIO,EAAWF,EAAK,QAAQ,wBAAyB,SAASG,EAAGhL,EAAKiL,EAAU,CAG/E,OAFA,OAAOH,EAAM9K,CAAG,EAEZwK,EAAOxK,CAAG,GAAK,KAAagL,EAEzBC,EAAWT,EAAOxK,CAAG,EAAI,mBAAmB,OAAOwK,EAAOxK,CAAG,CAAC,CAAC,CACtE,CAAA,EAGGkL,EAAgBH,EAAS,QAAQ,GAAG,EACpCI,EAAeJ,EAAS,QAAQ,GAAG,EACnCK,EAAcD,EAAe,EAAIJ,EAAS,OAASI,EACnDE,EAAaH,EAAgB,EAAIE,EAAcF,EAC/C9D,EAAS2D,EAAS,MAAM,EAAGM,CAAU,EAErCZ,GAAc,IAAGrD,GAAUmD,EAAS,MAAME,EAAYE,CAAQ,GAC9DO,GAAiB,IAAG9D,IAAWqD,EAAa,EAAI,IAAM,KAAOM,EAAS,MAAMG,EAAeE,CAAW,GAC1G,IAAIE,EAAchB,EAAiBQ,CAAK,EACxC,OAAIQ,IAAalE,IAAWqD,EAAa,GAAKS,EAAgB,EAAI,IAAM,KAAOI,GAC3EZ,GAAa,IAAGtD,GAAUmD,EAAS,MAAMG,CAAS,GAClDS,GAAgB,IAAG/D,IAAWsD,EAAY,EAAI,GAAK,KAAOK,EAAS,MAAMI,CAAY,GAClF/D,CACR,kDCvCA,IAAImE,EAAgB7K,GAAA,EAChBG,EAASC,GAAA,EAEb0K,OAAAA,GAAiB,SAASC,EAASC,EAAc,CAChD,SAASC,EAAaC,EAAU,CAC/B,OAAO,IAAI,QAAQA,CAAQ,CAC7B,CAEC,SAASC,EAAYC,EAAK1B,EAAM,CAC/B,OAAO,IAAI,QAAQ,SAAS2B,EAASC,EAAQ,CAC5CF,EAAMP,EAAcO,EAAK1B,EAAK,MAAM,EACpC,IAAI6B,EAAS7B,EAAK,QAAU,KAAOA,EAAK,OAAO,cAAgB,MAC3D8B,EAAO9B,EAAK,KACZ+B,GAAc/B,EAAK,WAAa,MAAQA,EAAK,YAAc,KAAK,YAAc,EAAE8B,aAAgBT,EAAQ,UAAYS,aAAgBT,EAAQ,iBAC5IW,EAAehC,EAAK,eAAiB,OAAOA,EAAK,SAAY,WAAa,GAAK,QAE/EiC,EAAM,IAAIZ,EAAQ,eAAkBa,EAAU,GAAOC,EAAY,GACjErJ,EAAWmJ,EAAKG,EAChBC,GAAQJ,EAAI,MAEhBA,EAAI,MAAQ,UAAW,CACtBC,EAAU,GACVG,GAAM,KAAK,IAAI,CACnB,EAEGJ,EAAI,KAAKJ,EAAQH,EAAK1B,EAAK,QAAU,GAAO,OAAOA,EAAK,MAAS,SAAWA,EAAK,KAAO,OAAW,OAAOA,EAAK,UAAa,SAAWA,EAAK,SAAW,MAAS,EAE5J+B,GAAcD,GAAQ,MAAQ,CAACQ,EAAUtC,EAAM,cAAc,GAChEiC,EAAI,iBAAiB,eAAgB,iCAAiC,EAEnE,OAAOjC,EAAK,aAAgB,YAAc,CAACsC,EAAUtC,EAAM,QAAQ,GACtEiC,EAAI,iBAAiB,SAAU,0BAA0B,EAEtDjC,EAAK,kBAAiBiC,EAAI,gBAAkBjC,EAAK,iBACjDA,EAAK,UAASiC,EAAI,QAAUjC,EAAK,SACrCiC,EAAI,aAAeD,EAEnB,QAASpM,KAAOoK,EAAK,QAChBvJ,EAAO,KAAKuJ,EAAK,QAASpK,CAAG,GAChCqM,EAAI,iBAAiBrM,EAAKoK,EAAK,QAAQpK,CAAG,CAAC,EAI7CqM,EAAI,mBAAqB,SAASxD,EAAI,CAErC,GAAI,CAAAyD,GAEAzD,EAAG,OAAO,aAAe,EAC5B,GAAI,CACH,IAAI8D,EAAW9D,EAAG,OAAO,QAAU,KAAOA,EAAG,OAAO,OAAS,KAAQA,EAAG,OAAO,SAAW,KAAQ,cAAe,KAAKiD,CAAG,EAMrHc,EAAW/D,EAAG,OAAO,SAAUgE,EAEnC,GAAIT,IAAiB,QAGpB,GAAI,CAACvD,EAAG,OAAO,cAAgB,OAAOuB,EAAK,SAAY,WAEtD,GAAI,CAAEwC,EAAW,KAAK,MAAM/D,EAAG,OAAO,YAAY,CAAC,MACzC,CAAE+D,EAAW,IAAI,OAElB,CAACR,GAAgBA,IAAiB,SAMxCQ,GAAY,OAAMA,EAAW/D,EAAG,OAAO,cAU5C,GAPI,OAAOuB,EAAK,SAAY,YAC3BwC,EAAWxC,EAAK,QAAQvB,EAAG,OAAQuB,CAAI,EACvCuC,EAAU,IACA,OAAOvC,EAAK,aAAgB,aACtCwC,EAAWxC,EAAK,YAAYwC,CAAQ,GAGjCD,EAAS,CACZ,GAAI,OAAOvC,EAAK,MAAS,WACxB,GAAI,MAAM,QAAQwC,CAAQ,EACzB,QAASpM,EAAI,EAAGA,EAAIoM,EAAS,OAAQpM,IACpCoM,EAASpM,CAAC,EAAI,IAAI4J,EAAK,KAAKwC,EAASpM,CAAC,CAAC,OAGpCoM,EAAW,IAAIxC,EAAK,KAAKwC,CAAQ,EAEvCb,EAAQa,CAAQ,CACvB,KACW,CACJ,IAAIE,EAAwB,UAAW,CACtC,GAAI,CAAED,EAAUhE,EAAG,OAAO,YAAY,MAC5B,CAAEgE,EAAUD,CAAQ,CAC9B,IAAIG,EAAQ,IAAI,MAAMF,CAAO,EAC7BE,EAAM,KAAOlE,EAAG,OAAO,OACvBkE,EAAM,SAAWH,EACjBZ,EAAOe,CAAK,CACpB,EAEWV,EAAI,SAAW,EAKlB,WAAW,UAAW,CACjBE,GACJO,EAAqB,CACrB,CAAA,EACKA,EAAqB,CACnC,CACA,OACYhD,EAAG,CACTkC,EAAOlC,CAAC,CACd,CAEA,EAEGuC,EAAI,UAAY,SAAUxD,EAAI,CAC7B0D,EAAY,GACZ,IAAIQ,EAAQ,IAAI,MAAM,mBAAmB,EACzCA,EAAM,KAAOlE,EAAG,OAAO,OACvBmD,EAAOe,CAAK,CAChB,EAEO,OAAO3C,EAAK,QAAW,aAC1BiC,EAAMjC,EAAK,OAAOiC,EAAKjC,EAAM0B,CAAG,GAAKO,EAGjCA,IAAQnJ,IACXsJ,EAAgBH,EAAI,MACpBA,EAAI,MAAQ,UAAW,CACtBC,EAAU,GACVE,EAAc,KAAK,IAAI,CAC7B,IAION,GAAQ,KAAMG,EAAI,KAAI,EACjB,OAAOjC,EAAK,WAAc,WAAYiC,EAAI,KAAKjC,EAAK,UAAU8B,CAAI,CAAC,EACnEA,aAAgBT,EAAQ,UAAYS,aAAgBT,EAAQ,gBAAiBY,EAAI,KAAKH,CAAI,EAC9FG,EAAI,KAAK,KAAK,UAAUH,CAAI,CAAC,CAClC,CAAA,CACH,CAKCP,EAAa,UAAY,QAAQ,UACjCA,EAAa,UAAY,QAEzB,SAASe,EAAUtC,EAAM4C,EAAM,CAC9B,QAAShN,KAAOoK,EAAK,QACpB,GAAIvJ,EAAO,KAAKuJ,EAAK,QAASpK,CAAG,GAAKA,EAAI,gBAAkBgN,EAAM,MAAO,GAE1E,MAAO,EACT,CAEC,MAAO,CACN,QAAS,SAASlB,EAAK1B,EAAM,CACxB,OAAO0B,GAAQ,UAAY1B,EAAO0B,EAAKA,EAAMA,EAAI,KAC5C1B,GAAQ,OAAMA,EAAO,CAAA,GAC9B,IAAI6C,EAAUpB,EAAYC,EAAK1B,CAAI,EACnC,GAAIA,EAAK,aAAe,GAAM,OAAO6C,EACrC,IAAIC,EAAQ,EACZ,SAASC,GAAW,CACf,EAAED,IAAU,GAAK,OAAOxB,GAAiB,YAAYA,EAAY,CACzE,CAEG,OAAO0B,EAAKH,CAAO,EAEnB,SAASG,EAAKH,EAAS,CACtB,IAAII,EAAOJ,EAAQ,KAQnB,OAAAA,EAAQ,YAActB,EACtBsB,EAAQ,KAAO,UAAW,CACzBC,IACA,IAAII,EAAOD,EAAK,MAAMJ,EAAS,SAAS,EACxC,OAAAK,EAAK,KAAKH,EAAU,SAASrD,EAAG,CAE/B,GADAqD,EAAQ,EACJD,IAAU,EAAG,MAAMpD,CACvB,CAAA,EACMsD,EAAKE,CAAI,CACrB,EACWL,CACX,CACA,CACA,CACA,kDCpMA,IAAI1D,EAAc7I,GAAA,EAElB,OAAA8K,GAAiB1K,GAA4B,EAAC,OAAO,OAAW,IAAc,OAAS,KAAMyI,EAAY,MAAM,kDCF/G,SAASgE,EAAuBC,EAAK,CACpC,GAAI,CACH,OAAO,mBAAmBA,CAAG,CAC7B,MAAY,CACZ,OAAOA,CACT,CACA,CAEcC,OAAAA,GAAG,SAASC,EAAQ,CACjC,GAAIA,IAAW,IAAMA,GAAU,KAAM,MAAO,CAAA,EACxCA,EAAO,OAAO,CAAC,IAAM,MAAKA,EAASA,EAAO,MAAM,CAAC,GAGrD,QADIC,EAAUD,EAAO,MAAM,GAAG,EAAGE,EAAW,CAAE,EAAEC,EAAO,CAAA,EAC9CrN,EAAI,EAAGA,EAAImN,EAAQ,OAAQnN,IAAK,CACxC,IAAIsN,EAAQH,EAAQnN,CAAC,EAAE,MAAM,GAAG,EAC5BR,EAAMuN,EAAuBO,EAAM,CAAC,CAAC,EACrCrM,EAAQqM,EAAM,SAAW,EAAIP,EAAuBO,EAAM,CAAC,CAAC,EAAI,GAEhErM,IAAU,OAAQA,EAAQ,GACrBA,IAAU,UAASA,EAAQ,IAEpC,IAAIsM,EAAS/N,EAAI,MAAM,UAAU,EAC7BgO,EAASH,EACT7N,EAAI,QAAQ,GAAG,EAAI,IAAI+N,EAAO,IAAG,EACrC,QAASxG,EAAI,EAAGA,EAAIwG,EAAO,OAAQxG,IAAK,CACvC,IAAI0G,EAAQF,EAAOxG,CAAC,EAAG2G,EAAYH,EAAOxG,EAAI,CAAC,EAC3C4G,EAAWD,GAAa,IAAM,CAAC,MAAM,SAASA,EAAW,EAAE,CAAC,EAChE,GAAID,IAAU,GAAI,CACjB,IAAIjO,EAAM+N,EAAO,MAAM,EAAGxG,CAAC,EAAE,KAAI,EAC7BqG,EAAS5N,CAAG,GAAK,OACpB4N,EAAS5N,CAAG,EAAI,MAAM,QAAQgO,CAAM,EAAIA,EAAO,OAAS,GAEzDC,EAAQL,EAAS5N,CAAG,GACxB,SAEYiO,IAAU,YAAa,MAChC,GAAI1G,IAAMwG,EAAO,OAAS,EAAGC,EAAOC,CAAK,EAAIxM,MACxC,CAGJ,IAAI2M,EAAO,OAAO,yBAAyBJ,EAAQC,CAAK,EACpDG,GAAQ,OAAMA,EAAOA,EAAK,OAC1BA,GAAQ,OAAMJ,EAAOC,CAAK,EAAIG,EAAOD,EAAW,GAAK,CAAA,GACzDH,EAASI,CACb,CACA,CACA,CACC,OAAOP,CACR,kDChDA,IAAIQ,EAAmB3N,GAAA,EAGT,OAAA+M,GAAG,SAAS3B,EAAK,CAC9B,IAAIrB,EAAaqB,EAAI,QAAQ,GAAG,EAC5BpB,EAAYoB,EAAI,QAAQ,GAAG,EAC3BnB,EAAWD,EAAY,EAAIoB,EAAI,OAASpB,EACxCE,EAAUH,EAAa,EAAIE,EAAWF,EACtCI,EAAOiB,EAAI,MAAM,EAAGlB,CAAO,EAAE,QAAQ,UAAW,GAAG,EAEvD,OAAKC,EAEAA,EAAK,CAAC,IAAM,MAAKA,EAAO,IAAMA,GAFxBA,EAAO,IAIX,CACN,KAAMA,EACN,OAAQJ,EAAa,EAClB,CAAA,EACA4D,EAAiBvC,EAAI,MAAMrB,EAAa,EAAGE,CAAQ,CAAC,CACzD,CACA,kDCpBA,IAAI2D,EAAgB5N,GAAA,EAON,OAAA6N,GAAG,SAAShE,EAAU,CACnC,IAAIiE,EAAeF,EAAc/D,CAAQ,EACrCkE,EAAe,OAAO,KAAKD,EAAa,MAAM,EAC9CE,EAAO,CAAA,EACPC,EAAS,IAAI,OAAO,IAAMH,EAAa,KAAK,QAK/C,qDACA,SAASxD,EAAGhL,EAAK4O,EAAO,CACvB,OAAI5O,GAAO,KAAa,KAAOgL,GAC/B0D,EAAK,KAAK,CAAC,EAAG1O,EAAK,EAAG4O,IAAU,KAAK,CAAC,EAClCA,IAAU,MAAc,OACxBA,IAAU,IAAY,aACnB,WAAaA,GAAS,IAChC,CACA,EAAK,OAAO,EACX,OAAO,SAASf,EAAM,CAGrB,QAASrN,EAAI,EAAGA,EAAIiO,EAAa,OAAQjO,IACxC,GAAIgO,EAAa,OAAOC,EAAajO,CAAC,CAAC,IAAMqN,EAAK,OAAOY,EAAajO,CAAC,CAAC,EAAG,MAAO,GAGnF,GAAI,CAACkO,EAAK,OAAQ,OAAOC,EAAO,KAAKd,EAAK,IAAI,EAC9C,IAAIgB,EAASF,EAAO,KAAKd,EAAK,IAAI,EAClC,GAAIgB,GAAU,KAAM,MAAO,GAC3B,QAASrO,EAAI,EAAGA,EAAIkO,EAAK,OAAQlO,IAChCqN,EAAK,OAAOa,EAAKlO,CAAC,EAAE,CAAC,EAAIkO,EAAKlO,CAAC,EAAE,EAAIqO,EAAOrO,EAAI,CAAC,EAAI,mBAAmBqO,EAAOrO,EAAI,CAAC,CAAC,EAEtF,MAAO,EACT,CACA,kDCjBA,IAAIK,EAASH,GAAA,EAEToO,EAAQ,IAAI,OAAO,2EAA2E,EAElG,OAAAC,GAAiB,SAAS9O,EAAO+O,EAAQ,CACxC,IAAI5H,EAAS,CAAA,EAEb,GAAI4H,GAAU,KACb,QAAShP,KAAOC,EACXY,EAAO,KAAKZ,EAAOD,CAAG,GAAK,CAAC8O,EAAM,KAAK9O,CAAG,GAAKgP,EAAO,QAAQhP,CAAG,EAAI,IACxEoH,EAAOpH,CAAG,EAAIC,EAAMD,CAAG,OAIzB,SAASA,KAAOC,EACXY,EAAO,KAAKZ,EAAOD,CAAG,GAAK,CAAC8O,EAAM,KAAK9O,CAAG,IAC7CoH,EAAOpH,CAAG,EAAIC,EAAMD,CAAG,GAK1B,OAAOoH,CACR,kDC7CA,IAAItH,EAAQY,GAAA,EACRsK,EAAIlK,GAAA,EAEJyK,EAAgBxK,GAAA,EAChBuN,EAAgBW,GAAA,EAChBV,EAAkBW,GAAA,EAClBH,EAASI,GAAA,EAETvK,EAAW,CAAA,EAEf,SAAS2I,EAAuBtD,EAAW,CAC1C,GAAI,CACH,OAAO,mBAAmBA,CAAS,CACnC,MAAU,CACV,OAAOA,CACT,CACA,CAEA,OAAAmF,GAAiB,SAAS3D,EAASlC,EAAa,CAC/C,IAAI8F,EAAY5D,GAAW,KAExB,KACA,OAAOA,EAAQ,cAAiB,WAAaA,EAAQ,aAAeA,EAAQ,WAC3E6D,EAAI,QAAQ,QAAO,EAEnBC,EAAY,GAKZC,EAAQ,GACR5N,EAAQ,EAER6N,EAAUC,EAEVC,EAAkB/K,EAAUqF,EAAWhK,EAAO2P,GAAaC,EAE3DC,EAAa,CAChB,eAAgB,UAAW,CAC1B,OAAAlO,EAAQA,EAAQ,EAAI,EACb,EAAE,CAACA,GAASgD,IAAa+K,EAChC,EACD,SAAU,UAAW,CACpBlE,EAAQ,oBAAoB,WAAYsE,EAAW,EAAK,EACxDtE,EAAQ,oBAAoB,aAAcuE,EAAc,EAAK,CAC7D,EACD,KAAM,UAAW,CAChB,GAAI,GAACpO,GAASgD,IAAa+K,GAE3B,KAAIlP,EAAQ,CAACX,EAAMmK,EAAWhK,EAAM,IAAKA,CAAK,CAAC,EAC/C,OAAI0P,IAAiBlP,EAAQkP,EAAgB,OAAOlP,EAAM,CAAC,CAAC,GACrDA,EACP,CACH,EAEKwP,EAAOC,EAAM,KAAO,CAAA,EAExB,SAASF,GAAe,CACvBT,EAAY,GAGZ,IAAIY,EAAS1E,EAAQ,SAAS,KAC1ByE,EAAM,OAAO,CAAC,IAAM,MACvBC,EAAS1E,EAAQ,SAAS,OAAS0E,EAC/BD,EAAM,OAAO,CAAC,IAAM,MACvBC,EAAS1E,EAAQ,SAAS,SAAW0E,EACjCA,EAAO,CAAC,IAAM,MAAKA,EAAS,IAAMA,KAMxC,IAAItF,EAAOsF,EAAO,OAAM,EACtB,QAAQ,2BAA4B5C,CAAsB,EAC1D,MAAM2C,EAAM,OAAO,MAAM,EACvBrC,EAAOS,EAAczD,CAAI,EAE7B,OAAO,OAAOgD,EAAK,OAAQpC,EAAQ,QAAQ,KAAK,EAEhD,SAASO,EAAOlC,EAAG,CAClB,QAAQ,MAAMA,CAAC,EACfsG,EAAQV,EAAe,KAAM,CAAC,QAAS,EAAI,CAAC,CAC/C,CAEEW,EAAK,CAAC,EACN,SAASA,EAAK7P,EAAG,CAIhB,KAAOA,EAAIiP,EAAS,OAAQjP,IAC3B,GAAIiP,EAASjP,CAAC,EAAE,MAAMqN,CAAI,EAAG,CAC5B,IAAIyC,EAAUb,EAASjP,CAAC,EAAE,UACtB+P,GAAed,EAASjP,CAAC,EAAE,MAC3BgQ,GAAYF,EACZG,GAASZ,EAAa,SAASa,GAAM,CACxC,GAAID,KAAWZ,EACf,IAAIa,KAAST,EAAM,OAAOI,EAAK7P,EAAI,CAAC,EACpCyJ,EAAYyG,IAAQ,OAAS,OAAOA,GAAK,MAAS,YAAc,OAAOA,IAAS,YAAaA,GAAO,MACpGzQ,EAAQ4N,EAAK,OAAQ+B,GAAc/E,EAAMgF,EAAa,KACtDF,EAAkBW,EAAQ,OAASA,EAAU,KACzC1O,IAAU,EAAG2H,EAAY,OAAM,GAElC3H,EAAQ,EACR2H,EAAY,OAAO,KAAI,GAE9B,EAGS+G,EAAQ,MAAQ,OAAOA,GAAY,YACtCA,EAAU,CAAA,EACVG,GAAOD,EAAS,GAERF,EAAQ,QAChBhB,EAAE,KAAK,UAAY,CAClB,OAAOgB,EAAQ,QAAQzC,EAAK,OAAQhD,EAAM0F,EAAY,CAC7D,CAAO,EAAE,KAAKE,GAAQ5F,IAAS6E,EAAgB,KAAO1D,CAAM,EAElDyE,GAAO,KAAK,EACjB,MACL,CAGG,GAAI5F,IAAS6E,EACZ,MAAM,IAAI,MAAM,mCAAqCA,EAAgB,GAAG,EAEzEU,EAAQV,EAAe,KAAM,CAAC,QAAS,EAAI,CAAC,CAC/C,CACA,CAMC,SAASK,GAAY,CACfR,IACJA,EAAY,GAIZF,EAAUW,CAAY,EAEzB,CAEC,SAASI,EAAQvF,EAAMgD,EAAM8C,EAAS,CAErC,GADA9F,EAAOU,EAAcV,EAAMgD,CAAI,EAC3B2B,EAAO,CACVO,EAAS,EACT,IAAInO,EAAQ+O,EAAUA,EAAQ,MAAQ,KAClCC,EAAQD,EAAUA,EAAQ,MAAQ,KAClCA,GAAWA,EAAQ,QAASlF,EAAQ,QAAQ,aAAa7J,EAAOgP,EAAOV,EAAM,OAASrF,CAAI,EACzFY,EAAQ,QAAQ,UAAU7J,EAAOgP,EAAOV,EAAM,OAASrF,CAAI,CACnE,MAEGY,EAAQ,SAAS,KAAOyE,EAAM,OAASrF,CAE1C,CAEC,SAASqF,EAAMlG,EAAM6G,EAAcC,EAAQ,CAC1C,GAAI,CAAC9G,EAAM,MAAM,IAAI,UAAU,+CAA+C,EAc9E,GAZAyF,EAAW,OAAO,KAAKqB,CAAM,EAAE,IAAI,SAASZ,EAAO,CAClD,GAAIA,EAAM,CAAC,IAAM,IAAK,MAAM,IAAI,YAAY,+BAA+B,EAC3E,GAAK,wBAAyB,KAAKA,CAAK,EACvC,MAAM,IAAI,YAAY,uEAAuE,EAE9F,MAAO,CACN,MAAOA,EACP,UAAWY,EAAOZ,CAAK,EACvB,MAAO3B,EAAgB2B,CAAK,CAChC,CACG,CAAA,EACDR,EAAgBmB,EACZA,GAAgB,KAAM,CACzB,IAAIE,EAAczC,EAAcuC,CAAY,EAE5C,GAAI,CAACpB,EAAS,KAAK,SAAUjP,EAAG,CAAE,OAAOA,EAAE,MAAMuQ,CAAW,CAAC,CAAE,EAC9D,MAAM,IAAI,eAAe,+CAA+C,CAE5E,CAEM,OAAOtF,EAAQ,QAAQ,WAAc,WACxCA,EAAQ,iBAAiB,WAAYsE,EAAW,EAAK,EAC3CG,EAAM,OAAO,CAAC,IAAM,KAC9BzE,EAAQ,iBAAiB,aAAcuE,EAAc,EAAK,EAG3DR,EAAQ,GACRjG,EAAY,MAAMS,EAAM8F,CAAU,EAClCE,EAAY,CACd,CACC,OAAAE,EAAM,IAAM,SAASrF,EAAMgD,EAAM8C,EAAS,CACrCd,GAAc,OACjBc,EAAUA,GAAW,CAAA,EACrBA,EAAQ,QAAU,IAEnBd,EAAa,KACbO,EAAQvF,EAAMgD,EAAM8C,CAAO,CAC7B,EACCT,EAAM,IAAM,UAAW,CAAC,OAAON,EAAW,EAC1CM,EAAM,OAAS,KACfA,EAAM,KAAO,CACZ,KAAM,SAASzP,EAAO,CAMrB,IAAI4D,EAAQ2G,EACXvK,EAAM,MAAM,UAAY,IACxBsO,EAAOtO,EAAM,MAAO,CAAC,UAAW,SAAU,WAAY,SAAS,CAAC,EAChEA,EAAM,QACV,EACOkQ,EAASK,EAASC,EAQtB,OAAI5M,EAAM,MAAM,SAAW,EAAQA,EAAM,MAAM,WAC9CA,EAAM,MAAM,KAAO,KACnBA,EAAM,MAAM,eAAe,EAAI,SAI/BsM,EAAUlQ,EAAM,MAAM,QACtBuQ,EAAUvQ,EAAM,MAAM,QAEtBwQ,EAAO1F,EAAclH,EAAM,MAAM,KAAM5D,EAAM,MAAM,MAAM,EACzD4D,EAAM,MAAM,KAAO6L,EAAM,OAASe,EAClC5M,EAAM,MAAM,QAAU,SAASyF,EAAG,CACjC,IAAI1C,EACA,OAAO4J,GAAY,WACtB5J,EAAS4J,EAAQ,KAAKlH,EAAE,cAAeA,CAAC,EAC9BkH,GAAW,MAAQ,OAAOA,GAAY,UAEtC,OAAOA,EAAQ,aAAgB,YACzCA,EAAQ,YAAYlH,CAAC,EAcrB1C,IAAW,IAAS,CAAC0C,EAAE,mBAEtBA,EAAE,SAAW,GAAKA,EAAE,QAAU,GAAKA,EAAE,QAAU,KAE/C,CAACA,EAAE,cAAc,QAAUA,EAAE,cAAc,SAAW,UAEvD,CAACA,EAAE,SAAW,CAACA,EAAE,SAAW,CAACA,EAAE,UAAY,CAACA,EAAE,SAE9CA,EAAE,eAAc,EAChBA,EAAE,OAAS,GACXoG,EAAM,IAAIe,EAAM,KAAMN,CAAO,EAEnC,GAEUtM,CACP,CACH,EACC6L,EAAM,MAAQ,SAASlQ,EAAK,CAC3B,OAAOC,GAASD,GAAO,KAAOC,EAAMD,CAAG,EAAIC,CAC7C,EAEQiQ,CACR,kDClRA,IAAI3G,EAAc7I,GAAA,EAElB,OAAAwP,GAAiBpP,GAAA,EAAwB,OAAO,OAAW,IAAc,OAAS,KAAMyI,CAAW,kDCFnG,IAAIxH,EAAcrB,GAAA,EACd8K,EAAU1K,GAAA,EACVyI,EAAcxI,GAAA,EACdsB,EAAS4M,GAAA,EAETjE,EAAI,UAAa,CAAE,OAAOjJ,EAAY,MAAM,KAAM,SAAS,CAAC,EAChE,OAAAiJ,EAAE,EAAIjJ,EACNiJ,EAAE,MAAQjJ,EAAY,MACtBiJ,EAAE,SAAWjJ,EAAY,SACzBiJ,EAAE,SAAW,IACbA,EAAE,MAAQzB,EAAY,MACtByB,EAAE,MAAQkE,GAAA,EACVlE,EAAE,OAASmE,GAAA,EACXnE,EAAE,OAASzB,EAAY,OACvByB,EAAE,QAAUQ,EAAQ,QACpBR,EAAE,iBAAmBkG,GAAA,EACrBlG,EAAE,iBAAmBmG,GAAA,EACrBnG,EAAE,cAAgBoG,GAAA,EAClBpG,EAAE,cAAgBqG,GAAA,EAClBrG,EAAE,MAAQsG,GAAA,EACVtG,EAAE,OAASuG,GAAA,EACXvG,EAAE,OAAS3I,EAAO,OAElBmP,GAAiBxG,gCCvBXyG,GAEF,CAAC,EAQE,SAASC,GACdlQ,EACkB,CACd,GAAAiQ,GAASjQ,CAAI,EACf,OAAOiQ,GAASjQ,CAAI,EAEtB,MAAM,IAAI,MAAM,sBAAsBA,CAAI,iBAAiB,CAC7D,CAUO,SAASyI,EACdzI,EACAkP,EACAiB,EAAoB,GACpB,CACIF,GAASjQ,CAAI,GAAK,CAACmQ,EACb,QAAA,KAAK,4BAA4BnQ,CAAI,0BAA0B,EAEvEiQ,GAASjQ,CAAI,EAAIkP,CAErB,CC5BO,SAASkB,GAAsCC,EAAU,CAC1D,OAACA,EAAM,KAIPA,EAAM,OACD,KAEF7G,EAAE0G,GAAaG,EAAM,IAAI,EAAG,CAAE,KAAMA,EAAO,GANhD,QAAQ,MAAM,IAAI,MAAM,+EAA+E,EAAGA,CAAK,EACxG,KAMX,CCXO,SAASC,GAAYD,EAA+B,CACzD,OAAOE,GAAOF,EAAOG,GAAUH,CAAK,CAAC,CACvC,CAUgB,SAAAI,GAAYJ,EAA4BpQ,EAAmB,CACnE,MAAAyQ,EAAUC,GAAON,EAAOpQ,CAAK,EACnC,OAAA2Q,GAAWP,EAAOK,CAAO,EAClBA,CACT,CAEA,SAASF,GAAUH,EAA8B,CAE7C,GAAA,WAAYA,GACZA,EAAM,QACNA,EAAM,UAAY,MAClBA,EAAM,YAAYA,EAAM,OAEjB,OAAAA,EAAM,OAAOA,EAAM,QAAQ,EAEpC,GAAI,UAAWA,EACb,OAAOA,EAAM,KAEjB,CAEA,SAASO,GAAcP,EAA4BpQ,EAAgB,CAC7D,WAAYoQ,GAASA,EAAM,QAAUA,EAAM,UAAY,KACnDA,EAAA,OAAOA,EAAM,QAAQ,EAAIpQ,EACtB4Q,GAAYR,EAAO,OAAO,IACnCA,EAAM,MAAQpQ,EAElB,CAEA,SAAS4Q,GAAeC,EAAQtS,EAAuB,CACrD,MAAMoO,EAAO,OAAO,yBAAyBkE,EAAKtS,CAAG,EAC9C,MAAA,CAACoO,GAAQ,CAAC,CAACA,EAAK,UAAY,CAAC,CAACA,EAAK,GAC5C,CAEA,SAAS+D,GAAUvK,EAA6BnG,EAAU,CACjD,MAAA,UAAWmG,GAAUA,EAAO,MAAQA,EAAO,MAAM,OAAOnG,CAAK,EAAIA,CAC1E,CACA,SAASsQ,GAAUnK,EAA6BnG,EAAU,CACjD,MAAA,UAAWmG,GAAUA,EAAO,MAAQA,EAAO,MAAM,OAAOnG,CAAK,EAAIA,CAC1E,CCpDO,SAAS8Q,GAASlN,EAAqB,CAC5C,OAAO,OAAOA,GAAM,QACtB,CAKO,SAAS8I,GAAS9I,EAAqB,CAC5C,OAAO,OAAOA,GAAM,QACtB,CAKO,SAASmN,GAAWnN,EAAsC,CAC/D,OAAO,OAAOA,GAAM,UACtB,CAKO,SAASoN,GAAQpN,EAAoB,CACnC,OAAA,MAAM,QAAQA,CAAC,CACxB,CAKO,SAASqN,GAASrN,EAAqB,CAC5C,OAAOA,GAAK,MAAQ,OAAOA,GAAM,UAAY,CAACoN,GAAQpN,CAAC,CACzD,CAKgB,SAAAsN,EAAsCC,KAAUxI,EAAqB,CACnF,OAAOoI,GAAWI,CAAE,EAAIA,EAAG,GAAGxI,CAAI,EAAI,IACxC,CAKO,SAAS2B,GAAWtK,EAAsB,CAC/C,OAAO+Q,GAAW/Q,CAAK,EAAIA,EAAU,EAAAA,CACvC,CAKgB,SAAAoR,GAAUP,EAAeM,EAA4B,CACnE,OAAON,GAAO,KAAO,KAAOM,EAAGN,CAAG,CACpC,CAMgB,SAAAQ,GAAMzN,EAAW0N,EAAaC,EAAa,CACzD,GAAI3N,GAAK,KAAM,CACT,GAAA0N,GAAO,MAAQ1N,EAAI0N,EACd,OAAAA,EAEL,GAAAC,GAAO,MAAQ3N,EAAI2N,EACd,OAAAA,CACT,CAEK,OAAA3N,CACT,CAKO,SAAS4N,GACdC,EACQ,CACR,OAAKA,EAGDX,GAASW,CAAG,EACPA,EAELT,GAAQS,CAAG,EACNA,EAAI,IAAID,EAAQ,EAAE,KAAK,GAAG,EAE5B,OAAO,KAAKC,CAAG,EACnB,OAAQC,GAAOpH,GAAQmH,EAAIC,CAAE,CAAC,CAAC,EAC/B,OAAQA,GAAOZ,GAASY,CAAE,GAAK,CAAC,CAACA,CAAE,EACnC,KAAK,GAAG,EAXF,IAYX,CAMgB,SAAAC,GAAQ3R,EAAe4R,EAAgBC,EAAc,CAC5D,KAAA7R,EAAM,OAAS4R,GACZ5R,EAAA,GAAG6R,CAAI,GAAG7R,CAAK,GAElB,OAAAA,CACT,CAKgB,SAAA8R,EAAUvG,EAAcwG,EAAoB,CAC1D,MAAO,QAAQxG,CAAI,IAAMwG,EAAY,IAAIA,CAAS,GAAK,GACzD,CAMO,SAASC,GAAc3J,EAA8C,CAC1E,IAAI4J,EAAK,EACLC,EAAK,EACT,MAAI,YAAa7J,GACf4J,EAAK5J,EAAE,QAAQ,KAAK,CAAC,EAAE,MACvB6J,EAAK7J,EAAE,QAAQ,KAAK,CAAC,EAAE,QAEvB4J,EAAK5J,EAAE,MACP6J,EAAK7J,EAAE,OAEF,CAAC4J,EAAIC,CAAE,CAChB,CAEgB,SAAAC,GAAiB9J,EAAerC,EAAsBmC,EAA2B,CAC/FnC,EAASA,GAAUqC,EAAE,OACf,MAAA+J,EAAOpM,EAAO,sBAAsB,EACpCqM,EAAK,OAAO,aAAe,SAAS,gBAAgB,WACpDC,EAAK,OAAO,aAAe,SAAS,gBAAgB,UAEpDC,EAAKvM,EAAO,YACZwM,EAAKxM,EAAO,aAClB,GAAI,CAACiM,EAAIC,CAAE,EAAIF,GAAc3J,CAAC,EAC1BF,IACF8J,GAAM9J,EAAO,CAAC,EACd+J,GAAM/J,EAAO,CAAC,GAEV,MAAAsK,EAAIR,EAAKI,EAAKD,EAAK,KACnBM,EAAIR,EAAKI,EAAKF,EAAK,IAClB,MAAA,CACL,MAAOG,EACP,OAAQC,EACR,EAAAC,EACA,EAAAC,EACA,YAAaD,EAAIF,EACjB,YAAaG,EAAIF,CACnB,CACF,CAKO,SAASG,GACdC,EACA,CACO,OAAChU,GACNwS,GAAIxS,EAAK,MAAM,KAAOwN,GAASwG,EAAGxG,EAAMxN,CAAI,CAAC,CACjD,CASO,SAASiU,GAAS,CACvB,QAAAC,EACA,OAAAC,EACA,MAAAC,CACF,EAIG,CACD,MAAMC,EAAO,CACX,OAAQ,KACR,SAAW5K,GAAkB,CAC3B4K,EAAK,WAAW,EAChBA,EAAK,OAAS5K,EAAE,OACZyK,GACFA,EAAQzK,CAAC,EAEP0K,IACF,SAAS,iBAAiB,YAAaA,EAAQ,CAAE,QAAS,GAAO,EACjE,SAAS,iBAAiB,YAAaA,EAAQ,CAAE,QAAS,GAAO,GAE/DC,IACO,SAAA,iBAAiB,UAAWA,CAAK,EACjC,SAAA,iBAAiB,WAAYA,CAAK,EAClC,SAAA,iBAAiB,cAAeA,CAAK,EAElD,EACA,WAAY,IAAM,CAChBC,EAAK,OAAS,KACVF,IACO,SAAA,oBAAoB,YAAaA,CAAM,EACvC,SAAA,oBAAoB,YAAaA,CAAM,GAE9CC,IACO,SAAA,oBAAoB,UAAWA,CAAK,EACpC,SAAA,oBAAoB,WAAYA,CAAK,EACrC,SAAA,oBAAoB,cAAeA,CAAK,EAErD,EACA,QAAAF,EACA,OAAAC,EACA,MAAAC,CACF,EACO,OAAAC,CACT,CC1KA,MAAMC,GAAO,QAkKb1K,EAAsB0K,GAjKgClU,GAAU,CAC9D,IAAImU,EAAQ,EACRC,EAAU,GACV7O,EAAM,CAAC,EAAG,CAAC,EAEf,SAAS8O,EAAMrT,EAAe,CACrB,OAAAA,GAAS,IAAM,KAAK,GAAA,CAE7B,SAASsT,EAAMtT,EAAe,CACrB,OAAAA,GAAS,KAAK,GAAK,IAAA,CAE5B,SAASuT,EAASvT,EAAe,CAC/B,OAAOqR,IAAOrR,EAAQ,EAAI,IAAO,IAAK,EAAG,GAAG,CAAA,CAG9C,SAASwT,EAAW5U,EAA2B,CACvC,MAAAwN,EAAOxN,EAAK,MAAM,KAChBuU,EAAA9C,GAASjE,CAAI,GAAK+G,EACtB/G,EAAK,SACP+G,EAAQG,EAAMH,CAAK,GAELM,EAAA,CAAA,CAGlB,SAASC,EAAS3T,EAA0B,CAC1B0T,EAAA,EACV,MAAArH,EAAOpN,EAAM,MAAM,KACnBgB,EAAQoM,EAAK,OAASkH,EAAMH,CAAK,EAAIA,EACrCQ,EAAUnD,GAASpE,EAAMpM,CAAK,EACpCkR,EAAKnR,IAAS,QAAUqM,EAAK,QAAUA,EAAK,SAAUA,EAAMuH,CAAO,CAAA,CAGrE,SAASF,GAAkB,CACzBlP,EAAI,CAAC,EAAI,KAAK,IAAI4O,CAAK,EACvB5O,EAAI,CAAC,EAAI,KAAK,IAAI4O,CAAK,CAAA,CAGzB,SAASS,EAAWvL,EAAe,CACvB+K,EAAA,GACVS,EAAK,SAASxL,CAAC,CAAA,CAGb,IAAAyL,EACJ,MAAMD,EAAOhB,GAAS,CACpB,QAAUxK,GAAM,CACR,MAAA0L,EAAQ5B,GAAiB9J,CAAC,EAClByL,EAAA,CACZ,EAAEC,EAAM,EAAIA,EAAM,MAAQ,GAC1B,EAAEA,EAAM,EAAIA,EAAM,OAAS,EAC7B,EACAF,EAAK,OAAOxL,CAAC,CACf,EACA,OAASA,GAAM,CACbA,EAAE,eAAe,EAEjB,MAAM2L,EAAW7B,GAAiB9J,EAAGwL,EAAK,OAAO,cAAeC,CAAW,EACrEG,EAAKD,EAAS,YAAc,GAC5BE,EAAKF,EAAS,YAAc,GAC9BZ,IAEMD,EAAA,KAAK,MAAMc,EAAIC,CAAE,EAEzBf,GAASA,EAAQ,EAAI,EAAI,KAAK,GAAK,GAErCO,EAAS,OAAO,EAChBnK,EAAE,OAAO,CACX,EACA,MAAQlB,GAAM,CACZwL,EAAK,WAAW,EACNT,EAAA,GACVM,EAAS,QAAQ,EACjBnK,EAAE,OAAO,CAAA,CACX,CACD,EAEQ,SAAA4K,EAAW/D,EAAgBpQ,EAAe,CACjDmT,EAAQG,EAAMtT,CAAK,EACnB0T,EAAS,OAAO,CAAA,CAET,SAAAU,EAAYhE,EAAgBpQ,EAAe,CAClDmT,EAAQG,EAAMtT,CAAK,EACnB0T,EAAS,QAAQ,CAAA,CAGZ,MAAA,CACL,SAAU,IAAM,CACdG,EAAK,WAAW,CAClB,EACA,OAASjV,GAAS,CAChB4U,EAAW5U,CAAI,CACjB,EACA,SAAWA,GAAS,CAClB4U,EAAW5U,CAAI,CACjB,EACA,KAAM,IACG2K,EACL,MACA,CACE,MAAOuI,EAAUoB,EAAI,EACrB,MAAO,CACL,gBAAiB,GAAGG,EAAM,CAACF,CAAK,EAAI,EAAE,MACtC,kBAAmB,GAAIE,EAAMF,CAAK,EAAI,IAAO,GAAG,GAAA,CAEpD,EACA5J,EACE,qBACAA,EACE,WACA,CACE,MAAO,CACL,SAAU,WACV,MAAO,OACP,cAAe,MAAA,CAEnB,EACAA,EACE,iBACA,CACE,MAAOiI,GAAS,CACd,cAAe4B,CAAA,CAChB,EACD,MAAO,CACL,SAAU,WACV,IAAK,SACL,KAAM,SACN,MAAO,oBACP,OAAQ,mBAAA,CAEZ,EACA7J,EAAE,iBAAkB,CAClB,YAAaqK,EACb,aAAcA,EACd,MAAO,CACL,SAAU,WACV,MAAO,OACP,OAAQ,OACR,IAAK,QAAQL,EAAShP,EAAI,CAAC,CAAC,CAAC,WAC7B,KAAM,QAAQgP,EAAShP,EAAI,CAAC,CAAC,CAAC,UAAA,CAEjC,CAAA,CAAA,CACH,CAEJ,EACAgF,EACE,sBACAA,EAAE,QAASA,EAAE,MAAM,SAAS,CAAC,EAC7B4G,GAAyB,CACvB,KAAM,SACN,IAAK,EACL,IAAK,IACL,KAAM,GACN,MAAOkD,EAAMF,CAAK,EAClB,QAASgB,EACT,SAAUC,CACX,CAAA,CAAA,CAEL,CAEJ,CACF,CAE0C,EAmBnC,SAASC,GAAW,CAAE,KAAAC,EAAM,OAAA1C,EAAQ,OAAAjM,CAAO,EAA4B,CAAA,EAG5E,CACA2O,EAAOA,GAAQ,CAAE,EAAG,QAAS,EAAG,IAAI,EAC9B,MAAArH,EAAO,OAAO,KAAKqH,CAAI,EACvBC,EAAS,KACL,OAAO3C,GAAW,WAAaA,IAAWA,IAAW,EAExD,MAAA,CACL,OAAS5R,GAAe,CACtB,IAAIyS,EAAY,EACZC,EAAY,EAChB,UAAWnU,KAAO0O,EACR,OAAAqH,EAAK/V,CAAG,EAAG,CACjB,IAAK,QACHmU,EAAI1S,EAAMzB,CAAG,EACb,MACF,IAAK,OACCmU,EAAA,CAAC1S,EAAMzB,CAAG,EACd,MACF,IAAK,KACL,IAAK,QACCkU,EAAA,CAACzS,EAAMzB,CAAG,EACd,MACF,IAAK,OACL,IAAK,OACHkU,EAAIzS,EAAMzB,CAAG,CAEb,CAGN,MAAMiW,EAAID,EAAO,EACZ,OAAA9B,GAAA+B,EACA9B,GAAA8B,EACE,KAAK,MAAM9B,EAAGD,CAAC,GAAK,CAC7B,EACA,OAASU,GAAU,CACjB,MAAMqB,EAAID,EAAO,EACX9B,EAAI+B,EAAI,KAAK,IAAIrB,CAAK,EACtBT,EAAI8B,EAAI,KAAK,IAAIrB,CAAK,EACtBnT,EAAQ2F,EAAO,GAAK,CAAC,EAC3B,UAAWpH,KAAO0O,EACR,OAAAqH,EAAK/V,CAAG,EAAG,CACjB,IAAK,QACHyB,EAAMzB,CAAG,EAAImU,EACb,MACF,IAAK,OACG1S,EAAAzB,CAAG,EAAI,CAACmU,EACd,MACF,IAAK,KACL,IAAK,QACG1S,EAAAzB,CAAG,EAAI,CAACkU,EACd,MACF,IAAK,OACL,IAAK,OACHzS,EAAMzB,CAAG,EAAIkU,EACb,KAEA,CAGC,OAAAzS,CAAA,CAEX,CACF,CC3PA,MAAMkT,GAAO,WAgCb1K,EAAU0K,GA/BkDtU,GAAS,CACnE,SAAS8U,EAASrL,EAAU,CACpB,MAAA+D,EAAOxN,EAAK,MAAM,KAClB6V,EAAWpM,EAAE,OAA4B,QACzCsL,EAAUnD,GAASpE,EAAMqI,CAAO,EACjCvD,EAAA9E,EAAK,SAAUA,EAAMuH,CAAO,CAAA,CAE5B,MAAA,CACL,KAAMhB,GAAQvG,GAAS,CACf,MAAAqI,EAAUpE,GAASjE,CAAI,IAAM,GAC5B,OAAA7C,EACL,QACA,CACE,MAAOiI,GAAS,CACd,CAACM,EAAUoB,EAAI,CAAC,EAAG,GACnB,QAAAuB,EACA,SAAUrI,EAAK,QAChB,CAAA,CACH,EACA7C,EAAE,QAAS,CACT,KAAM,WACN,QAAAkL,EACA,SAAUf,EACV,SAAUtH,EAAK,QAAA,CAChB,EACDA,EAAK,IACP,CACD,CAAA,CACH,CACF,CAEiC,ECjE1B,SAASsI,GAAQC,EAAe,CACjC,IAAAC,EAAID,EAAI,EAAI,IACZE,EAAIxD,GAAMsD,EAAI,EAAG,EAAG,CAAC,EACrBG,EAAIzD,GAAMsD,EAAI,EAAG,EAAG,CAAC,EAErBI,EAAID,EAAID,EACRG,EAAID,GAAK,EAAI,KAAK,IAAMH,EAAI,GAAM,EAAK,CAAC,GACxCrL,EAAIuL,EAAIC,EAEZ,MAAME,EAAW,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EACpC,OAAIL,EAAI,IACNK,EAAI,EAAIF,EACRE,EAAI,EAAID,EACRC,EAAI,EAAI,GACCL,EAAI,KACbK,EAAI,EAAID,EACRC,EAAI,EAAIF,EACRE,EAAI,EAAI,GACCL,EAAI,KACbK,EAAI,EAAI,EACRA,EAAI,EAAIF,EACRE,EAAI,EAAID,GACCJ,EAAI,KACbK,EAAI,EAAI,EACRA,EAAI,EAAID,EACRC,EAAI,EAAIF,GACCH,EAAI,KACbK,EAAI,EAAID,EACRC,EAAI,EAAI,EACRA,EAAI,EAAIF,IAERE,EAAI,EAAIF,EACRE,EAAI,EAAI,EACRA,EAAI,EAAID,GAGVC,EAAI,GAAK1L,EACT0L,EAAI,GAAK1L,EACT0L,EAAI,GAAK1L,EAEF0L,CACT,CAUO,SAASC,GAAQD,EAAe,CACrC,IAAIT,EAAIS,EAAI,EACRE,EAAIF,EAAI,EACRG,EAAIH,EAAI,EAERH,EAAI,KAAK,IAAIN,EAAGW,EAAGC,CAAC,EACpBC,EAAIP,EAAI,KAAK,IAAIN,EAAGW,EAAGC,CAAC,EAExBP,EAAI,EACJD,EAAI,EACR,OAAIS,IAAM,IACRR,EAAIQ,EAAIP,EACJA,IAAMN,GACRI,GAAKO,EAAIC,GAAKC,GAAKF,EAAIC,EAAI,EAAI,GAC/BR,EAAKA,EAAI,EAAK,IACLE,IAAMK,GACVP,GAAAQ,EAAIZ,GAAKa,EAAI,EAClBT,EAAIA,EAAI,KAEHA,GAAAJ,EAAIW,GAAKE,EAAI,EAClBT,EAAIA,EAAI,KAIL,CAAE,EAAGA,EAAG,EAAGC,EAAG,EAAGC,CAAE,CAC5B,CCpFO,MAAMQ,EAAqD,CAChE,YAAoBC,EAA8BxO,EAAqB,CAAnD,KAAA,WAAAwO,EAA8B,KAAA,WAAAxO,CAAA,CAC3C,MAAMnD,EAAa,CACxBA,EAAIA,GAAK,CAAC,EACJ,MAAA+B,EAAe,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC9C,YAAK,WAAW,QAAQ,CAACpH,EAAKQ,IAAM,CAC3B4G,EAAApH,CAAG,GAAKqF,EAAE7E,CAAC,GAAK,IAAM,KAAK,WAAa,EAAI,IAAA,CACpD,EACM4G,CAAA,CAGF,OAAO6P,EAAY,CACxB,OAAO,KAAK,WAAW,IACpBjX,IAAS,KAAK,WAAaiX,EAAKjX,CAAG,EAAI,KAAK,MAAMiX,EAAKjX,CAAG,EAAI,GAAG,IAAM,CAC1E,CAAA,CAEJ,CChBO,MAAMkX,EAAkD,CAC7D,YAAoBF,EAAsB,CAAtB,KAAA,WAAAA,CAAA,CACb,MAAMvV,EAAe,CAC1BA,EAAQA,GAAS,gBACX,MAAA2F,EAAe,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EACxCyH,EAASpN,EACZ,QAAQ,eAAgB,EAAE,EAC1B,MAAM,SAAS,EACf,IAAI,MAAM,EACb,YAAK,WAAW,QAAQ,CAACzB,EAAKQ,IAAM,CAC3B4G,EAAApH,CAAG,GAAK6O,EAAOrO,CAAC,GAAK,IAAMR,IAAQ,IAAM,EAAI,IAAA,CACrD,EACMoH,CAAA,CAGF,OAAO6P,EAAY,CAEtB,OAAA,KAAK,WAAW,KAAK,EAAE,EACvB,IACA,KAAK,WACF,IAAKjX,GACGA,IAAQ,IAAMiX,EAAKjX,CAAG,EAAI,KAAK,MAAMiX,EAAKjX,CAAG,EAAI,GAAG,CAC5D,EACA,KAAK,IAAI,EACZ,GAAA,CAGN,CC1BO,MAAMmX,EAAkD,CAC7D,YAAoBH,EAAsB,CAAtB,KAAA,WAAAA,CAAA,CACb,MAAMvV,EAAgB,CAC3BA,EAAQA,GAAS,OACX,MAAA2F,EAAe,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC9C,IAAI/B,EAAY5D,EAAM,MAAM,YAAY,EAAE,CAAC,EAC3C,OAAI4D,EAAE,SAAW,KAAK,WAAW,SAC/BA,EAAIA,EACD,MAAM,EAAE,EACR,IAAK8N,GAAO,GAAGA,CAAE,GAAGA,CAAE,EAAE,EACxB,KAAK,EAAE,GAEZ,KAAK,WAAW,QAAQ,CAACnT,EAAKQ,IAAM,CAC3B4G,EAAApH,CAAG,EAAI,SAASqF,EAAE,OAAO7E,EAAI,EAAG,CAAC,EAAG,EAAE,EAAI,GAAA,CAClD,EACM4G,CAAA,CAGF,OAAO6P,EAAY,CAEtB,MAAA,IACA,KAAK,WACF,IAAKjX,GAAQoT,GAAQ,KAAK,MAAM6D,EAAKjX,CAAG,EAAI,GAAG,EAAE,SAAS,EAAE,EAAG,EAAG,GAAG,CAAC,EACtE,KAAK,EAAE,CAAA,CAGhB,CCzBO,MAAMoX,EAAoD,CAE/D,YAAoBJ,EAAsB,CAAtB,KAAA,WAAAA,EAClB,KAAK,cAAgBA,EAAW,MAAM,EAAE,QAAQ,CAAA,CAE3C,MAAM3R,EAAW,CACtBA,EAAIA,GAAK,EACH,MAAA+B,EAAe,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC9C,YAAK,WAAW,QAAQ,CAACpH,EAAKQ,IAAM,CAClC4G,EAAOpH,CAAG,GAAMqF,GAAM7E,EAAI,EAAM,KAAO,GAAA,CACxC,EACM4G,CAAA,CAGF,OAAO6P,EAAY,CAClB,MAAAxO,EAAM,KAAK,cACd,IAAKzI,GACJoT,GAAQ,KAAK,MAAM6D,EAAKjX,CAAG,EAAI,KAAO,CAAC,EAAE,SAAS,EAAE,EAAG,EAAG,GAAG,CAAA,EAE9D,KAAK,EAAE,EACH,OAAA,SAAS,KAAOyI,EAAK,EAAE,CAAA,CAElC,CCxBO,MAAM4O,EAC0C,CACrD,YAAoBL,EAA8BxO,EAAqB,CAAnD,KAAA,WAAAwO,EAA8B,KAAA,WAAAxO,CAAA,CAC3C,MAAMnD,EAA8B,CACzCA,EAAIA,GAAK,CAAC,EACJ,MAAA+B,EAAe,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC9C,YAAK,WAAW,QAAQ,CAACpH,EAAKQ,IAAM,CAC3B4G,EAAApH,CAAG,GAAKqF,EAAErF,CAAG,GAAK,IAAM,KAAK,WAAa,EAAI,IAAA,CACtD,EACMoH,CAAA,CAGF,OAAO6P,EAAY,CACxB,MAAM7P,EAAoC,CAAC,EAC3C,YAAK,WAAW,QAAQ,CAACpH,EAAKQ,IAAM,CAClC4G,EAAOpH,CAAG,GACP,KAAK,WAAaiX,EAAKjX,CAAG,EAAI,KAAK,MAAMiX,EAAKjX,CAAG,EAAI,GAAG,IAAM,CAAA,CAClE,EACMoH,CAAA,CAEX,CCfA,MAAMkQ,GAAoD,CAAC,EAQ3C,SAAAC,GAAkBC,EAAiB,MAA4B,CAC7E,GAAIA,KAAUF,GACZ,OAAOA,GAAUE,CAAM,EAEnB,MAAAR,GAAcQ,EAAO,MAAM,SAAS,EAAE,CAAC,GAAK,IAAI,MAAM,EAAE,EAC1D,MAAA,WAAW,KAAKA,CAAM,EACdF,GAAAE,CAAM,EAAI,IAAIT,GAAiBC,EAAY,QAAQ,KAAKQ,CAAM,CAAC,EAChE,WAAW,KAAKA,CAAM,EACrBF,GAAAE,CAAM,EAAI,IAAIH,GAAkBL,EAAY,QAAQ,KAAKQ,CAAM,CAAC,EACjE,KAAK,KAAKA,CAAM,EACzBF,GAAUE,CAAM,EAAI,IAAIJ,GAAkBJ,CAAU,EAC3C,SAAS,KAAKQ,CAAM,EAC7BF,GAAUE,CAAM,EAAI,IAAIN,GAAgBF,CAAU,EAElDM,GAAUE,CAAM,EAAI,IAAIL,GAAgBH,CAAU,EAE7CM,GAAUE,CAAM,CACzB,CCsDAvN,EAA4B,eAAiB5J,GAAS,CACpD,IAAIoX,EAAM,EACNC,EAAM,EACNjP,EAAM,EACN,EAAI,EAER,SAASkP,EAAQC,EAAIF,EAAKrS,EAAIoD,EAAW,CAChC,MAAA,CACL,EAAGgP,EAAM,IACT,EAAAG,EACA,EAAAvS,EACA,CACF,CAAA,CAGF,SAASwS,EAAOD,EAAIF,EAAKrS,EAAIoD,EAAK,CAChC,OAAO0N,GAAQwB,EAAQC,EAAGvS,CAAC,CAAC,CAAA,CAG9B,SAASyS,EAAQF,EAAIF,EAAKrS,EAAIoD,EAAKsP,EAAQ,EAAS,CAClD,MAAO,CAAE,GAAGF,EAAOD,EAAGvS,CAAC,EAAG,EAAG0S,CAAM,CAAA,CAGrC,SAASC,EAAO5B,EAAU,CACxBqB,EAAMrB,EAAI,EAAI,IACdsB,EAAMtB,EAAI,EACV3N,EAAM2N,EAAI,CAAA,CAGZ,SAAS6B,EAAQ7B,EAAW,CAC1B4B,EAAO5B,CAAG,EACV,EAAIA,EAAI,CAAA,CAGD,SAAA8B,EAAUN,EAAYvS,EAAY,CACzC,OAAOkS,GAAkB,MAAM,EAAE,OAAOO,EAAQF,EAAGvS,CAAC,CAAC,CAAA,CAG9C,SAAA8S,EAAWP,EAAYvS,EAAY,CAC1C,OAAOkS,GAAkB,OAAO,EAAE,OAAOO,EAAQF,EAAGvS,CAAC,CAAC,CAAA,CAGxD,SAAS+S,EAAWR,EAAIF,EAAKrS,EAAIoD,EAAKsP,EAAgB,EAAG,CAChD,OAAAR,GAAkB,QAAQ,EAAE,OAAOO,EAAQF,EAAGvS,EAAG0S,CAAK,CAAC,CAAA,CAGvD,SAAAM,EAAW5W,EAAmC+V,EAAgB,CACrE,MAAMP,EAAOM,GAAkBC,GAAU,KAAK,EAAE,MAAM/V,CAAK,EACnDwW,EAAA,CACN,GAAGtB,GAAQM,CAAI,EACf,EAAGA,EAAK,CAAA,CACT,CAAA,CAGH,SAASqB,EAAad,EAAgB,CACpC,OAAOD,GAAkBC,CAAM,EAAE,OAAOM,GAAS,CAAA,CAGnD,SAASS,GAAe,CACtB1F,GAAIxS,EAAK,MAAM,KAAOwN,GAAS,CACvB,MAAApM,EAAQ6W,EAAazK,EAAK,MAAM,EAChCuH,EAAUnD,GAASpE,EAAMpM,CAAK,EAC/BkR,EAAA9E,EAAK,QAASA,EAAMuH,CAAO,CAAA,CACjC,CAAA,CAGH,SAASoD,GAAgB,CACvB3F,GAAIxS,EAAK,MAAM,KAAOwN,GAAS,CACvB,MAAApM,EAAQ6W,EAAazK,EAAK,MAAM,EAChCuH,EAAUnD,GAASpE,EAAMpM,CAAK,EAC/BkR,EAAA9E,EAAK,SAAUA,EAAMuH,CAAO,CAAA,CAClC,CAAA,CAGH,SAASqD,GAAW,CAClB,OAAO5F,GAAIxS,EAAK,MAAM,KAAOwN,GACpBA,EAAK,QAAUA,EAAK,OAAO,MAAM,IAAI,CAC7C,CAAA,CAOH,SAAS6K,EAAO5O,EAAU,CACxBxJ,EAAMwJ,EAAG,GAAG,CAAA,CAGd,SAAS6O,EAAO7O,EAAU,CACxBxJ,EAAMwJ,EAAG,GAAG,CAAA,CAGd,SAAS8O,GAAO9O,EAAU,CACxBxJ,EAAMwJ,EAAG,GAAG,CAAA,CAGL,SAAAxJ,EAAMwJ,EAAU+O,EAAmB,CAC1C,MAAMC,EAAQhB,EAAQ,EACtBgB,EAAMD,CAAK,EAAI,SAAU/O,EAAE,OAA4B,MAAO,EAAE,EAAI,IAC7DkO,EAAArB,GAAQmC,CAAK,CAAC,EACRP,EAAA,EACCC,EAAA,CAAA,CAGhB,SAASO,EAASjP,EAAU,CAC1BuO,EACGvO,EAAE,OAA4B,MAC/B2O,EAAA,EAAa,OAAS,KACxB,EACaF,EAAA,EACCC,EAAA,CAAA,CAOZ,IAAA/Q,EACAuR,EACJ,SAASC,EAAYnP,EAAe,CAC3BkP,EAAA,KACPE,EAAWpP,EAAE,MAAqB,EAClCqP,EAAYrP,CAAC,CAAA,CAGf,SAASsP,EAAWtP,EAAe,CAC1BkP,EAAA,IACPE,EAAWpP,EAAE,MAAqB,EAClCqP,EAAYrP,CAAC,CAAA,CAGf,SAASuP,EAAWvP,EAAe,CAC1BkP,EAAA,IACPE,EAAWpP,EAAE,MAAqB,EAClCqP,EAAYrP,CAAC,CAAA,CAGf,SAASoP,EAAWI,EAAiB,CACvBC,EAAA,EACH9R,EAAA6R,EACH,MAAA3I,EAAU,CAAE,QAAS,EAAM,EACxB,SAAA,iBAAiB,YAAawI,EAAaxI,CAAO,EAClD,SAAA,iBAAiB,UAAW6I,EAAW7I,CAAO,EAC9C,SAAA,iBAAiB,YAAawI,EAAaxI,CAAO,EAClD,SAAA,iBAAiB,WAAY6I,EAAW7I,CAAO,EAC/C,SAAA,iBAAiB,cAAe6I,EAAW7I,CAAO,CAAA,CAG7D,SAAS4I,GAAc,CACZ,SAAA,oBAAoB,YAAaJ,CAAW,EAC5C,SAAA,oBAAoB,UAAWK,CAAS,EACxC,SAAA,oBAAoB,YAAaL,CAAW,EAC5C,SAAA,oBAAoB,WAAYK,CAAS,EACzC,SAAA,oBAAoB,cAAeA,CAAS,CAAA,CAGvD,SAASL,EAAYrP,EAAe,CAClC,GAAI,CAACrC,EACH,OAEFqC,EAAE,eAAe,EAEX,MAAA+J,EAAOpM,EAAO,sBAAsB,EACpCqM,EAAK,OAAO,aAAe,SAAS,gBAAgB,WACpDC,GAAK,OAAO,aAAe,SAAS,gBAAgB,UACpDC,GAAKvM,EAAO,YACZwM,GAAKxM,EAAO,aAClB,GAAI,CAACiM,GAAIC,EAAE,EAAIF,GAAc3J,CAAC,EAC9B4J,GAAKZ,IAAOY,GAAKI,EAAKD,EAAK,MAAQG,GAAI,EAAG,CAAC,EAC3CL,GAAKb,IAAOa,GAAKI,GAAKF,EAAK,KAAOI,GAAI,EAAG,CAAC,EAEtC+E,IAAS,OACLtB,EAAAhE,GACNjL,EAAM,EAAIkL,IAERqF,IAAS,MACXvB,EAAM,EAAI/D,IAERsF,IAAS,MACP,EAAAtF,IAGO6E,EAAA,EACbvN,EAAE,OAAO,CAAA,CAGX,SAASwO,GAAY,CACf/R,GAAU,OACHA,EAAA,KACG8R,EAAA,EACEf,EAAA,EAChB,CAGK,MAAA,CACL,SAAU,IAAM,CACFe,EAAA,CACd,EACA,OAAQ,IAAM,CACZ1G,GAAIxS,EAAK,MAAM,KAAOwN,GAAS,CAC7BwK,EAAWvG,GAASjE,CAAI,EAAGA,EAAK,MAAM,CAAA,CACvC,CACH,EACA,KAAM,IACGgF,GAAIxS,EAAK,MAAM,KAAOwN,GAAS,CACpC,MAAMoJ,EAAOa,EAAQ,EACd,OAAA9M,EACL,MACA,CACE,MAAOuI,EAAU1F,EAAK,IAAI,CAC5B,EACA7C,EACE,uBACAA,EAAE,+BAAgC,CAChC,MAAOyN,EAAA,EAAaN,EAAA,EAAeD,EAAU,EAC7C,SAAUa,CAAA,CACX,EACD/N,EAAE,+BAAgC,CAChC,IAAK,EACL,IAAK,IACL,KAAM,EACN,MAAO,KAAK,MAAMiM,EAAK,EAAI,GAAG,EAC9B,SAAUyB,CAAA,CACX,EACD1N,EAAE,+BAAgC,CAChC,IAAK,EACL,IAAK,IACL,KAAM,EACN,MAAO,KAAK,MAAMiM,EAAK,EAAI,GAAG,EAC9B,SAAU0B,CAAA,CACX,EACD3N,EAAE,+BAAgC,CAChC,IAAK,EACL,IAAK,IACL,KAAM,EACN,MAAO,KAAK,MAAMiM,EAAK,EAAI,GAAG,EAC9B,SAAU2B,EACX,CAAA,CACH,EACA5N,EACE,sBACAA,EACE,mBACA,CACE,SAAU,EACV,YAAaiO,EACb,aAAcA,EACd,MAAO,CACL,mBAAoB,GAAGb,EAAW,EAAG,EAAG,CAAC,CAAC,GAC1C,cAAe,MAAA,CAEnB,EACApN,EAAE,sBAAuB,CACvB,MAAO,CACL,WACE,oEACF,cAAe,OACf,iBAAkB,MAAA,CACpB,CACD,EACDA,EAAE,sBAAuB,CACvB,MAAO,CACL,WACE,sDACF,cAAe,OACf,iBAAkB,MAAA,CACpB,CACD,EACDA,EAAE,0BAA2B,CAC3B,MAAO,CACL,cAAe,OACf,iBAAkB,OAClB,mBAAoB,GAAGoN,EAAWX,EAAKC,EAAK,CAAC,CAAC,GAC9C,KAAM,GAAGA,EAAM,GAAG,IAClB,IAAK,IAAI,EAAIjP,GAAO,GAAG,GAAA,CAE1B,CAAA,CACH,EACAuC,EACE,kBACA,CACE,SAAU,EACV,YAAaoO,EACb,aAAcA,EACd,MAAO,CACL,cAAe,OACf,WACE,qGAAA,CAEN,EACApO,EAAE,yBAA0B,CAC1B,MAAO,CACL,cAAe,OACf,iBAAkB,OAClB,mBAAoB,GAAGoN,EAAW,EAAG,EAAG,CAAC,CAAC,GAC1C,SAAU,WACV,KAAM,IAAI,EAAIX,GAAO,GAAG,GAAA,CAE3B,CAAA,CACH,EACCgB,EAAS,EAENzN,EACE,kBACA,CACE,SAAU,EACV,YAAaqO,EACb,aAAcA,EACd,MAAO,CACL,cAAe,MAAA,CAEnB,EACArO,EAAE,qBAAsB,CACtB,MAAO,CACL,WAAY,6BAA6BoN,EACvCV,EACAjP,EACA,CAAA,CACD,KAAK2P,EAAWV,EAAKjP,EAAK,CAAC,CAAC,GAAA,CAC/B,CACD,EACDuC,EAAE,yBAA0B,CAC1B,MAAO,CACL,cAAe,OACf,iBAAkB,OAClB,SAAU,WACV,KAAM,GAAG,EAAI,GAAG,GAAA,CAEnB,CAAA,CAAA,EA3BH,IA4BA,CAER,CAAA,CACD,CAEL,CACF,CAAC,ECrVDf,EAAsB,QAAS,IAAM,CAC/B,IAAA4D,EACA4L,EAAS,GACThY,EACAwV,EAEE,MAAAyC,EAAgBnC,GAAkB,QAAQ,EAEhD,SAASoC,EAAWtZ,EAAyB,CAC3CwN,EAAOxN,EAAK,MAAM,KAClBoB,EAAQqQ,GAASjE,CAAI,EACdoJ,EAAAyC,EAAc,OAAOnC,GAAkB1J,EAAK,MAAM,EAAE,MAAMpM,CAAK,CAAC,CAAA,CAGzE,SAASmY,GAAS,CAChBH,EAAS,CAACA,CAAA,CAEH,SAAAI,EAAcvK,EAAqBjK,EAAQ,CAC5C,MAAA+P,EAAUnD,GAASpE,EAAMxI,CAAC,EAC3BsN,EAAA9E,EAAK,QAASA,EAAMuH,CAAO,CAAA,CAGzB,SAAA0E,EAAexK,EAAqBjK,EAAQ,CAC7C,MAAA+P,EAAUnD,GAASpE,EAAMxI,CAAC,EAC3BsN,EAAA9E,EAAK,SAAUA,EAAMuH,CAAO,CAAA,CAGnC,SAAS2E,GAAU,CACb,OAAAxH,GAAS9Q,CAAK,EACTA,EAEL0M,GAAS1M,CAAK,EACT,KAAO2R,GAAQ3R,EAAM,SAAS,EAAE,EAAG,EAAG,GAAG,EAE9CgR,GAAQhR,CAAK,EACRA,EACJ,IAAK0R,GAAgBA,EAAK,GAAKA,EAAK,EAAIA,EAAG,QAAQ,CAAC,EAAIA,CAAG,EAC3D,KAAK,KAAK,EAEXT,GAASjR,CAAK,EACT,OAAO,KAAKA,CAAK,EACrB,IAAKuY,GAAM,CACJ,MAAA7G,EAAM1R,EAAcuY,CAAC,EACpB,MAAA,GAAGA,CAAC,KAAK7G,EAAK,GAAKA,EAAK,EAAIA,EAAG,QAAQ,CAAC,EAAIA,CAAE,EAAA,CACtD,EACA,KAAK,GAAG,EAET1R,GAAS,KACJ,OAEF,GAAA,CAGF,MAAA,CACL,OAASpB,GAAS,CAChBsZ,EAAWtZ,CAAI,CACjB,EACA,SAAWA,GAAS,CAClBsZ,EAAWtZ,CAAI,CACjB,EACA,KAAM,IACJ2K,EACE,MACA,CACE,MAAOiI,GAAS,CACd,CAACM,EAAU1F,EAAK,IAAI,CAAC,EAAG,GACxB,CAAC0F,EAAU1F,EAAK,KAAO,OAAO,CAAC,EAAG4L,CACnC,CAAA,CACH,EACAzO,EACE,wBACA,CACE,MAAO,CAAE,mBAAoBiM,CAAK,EAClC,QAAS2C,CACX,EACAG,KAAa,GACf,EACAnI,GAA8B,CAC5B,KAAM,eACN,MAAAnQ,EACA,OAAQoM,EAAK,OACb,QAASgM,EACT,SAAUC,EACV,OAAQ,CAACL,CACV,CAAA,CAAA,CAEP,CACF,CAAC,EC3GD,MAAMQ,GAAiD,IAAM,CACvD,IAAAzY,EACAuR,EACAC,EACAkH,EACAC,EACAC,EACAC,EACA5Y,EACA6Y,EAEA7Z,EAGJ,SAASkZ,EAAWtZ,EAA4B,CACtCI,EAAAJ,EACF,MAAAwN,EAAOxN,EAAK,MAAM,KACxBmB,EAAOqM,EAAK,KACZwM,EAAWxM,EAAK,OAAS,SACzBkF,EAAMsH,GAAYxM,EAAK,KAAO,KAAO,EAAIA,EAAK,IAC9CmF,EAAMqH,GAAYxM,EAAK,KAAO,KAAO,EAAIA,EAAK,IAC9CqM,EAAOrM,EAAK,KACZpM,EAAQqQ,GAAiBjE,CAAI,EAC7BsM,EAAWtM,EAAK,SAChByM,EAAUD,GAAa5Y,EAAQsR,IAAQC,EAAMD,GAAQ,IAAM,CAAA,CAGpD,SAAAwH,EAAczQ,EAAuBzE,EAAW,CACnDA,EAAA5D,EAAQqR,GAAM,MAAMzN,CAAC,EAAI,KAAOA,EAAG0N,EAAKC,CAAG,EACzC,MAAAnF,EAAOpN,EAAM,MAAM,KACnB2U,EAAUnD,GAASpE,EAAMxI,CAAC,EAChCsN,EAAK7I,IAAM,QAAU+D,EAAK,QAAUA,EAAK,SAAUA,EAAMuH,CAAO,EAChEpK,EAAE,OAAO,CAAA,CAGX,SAASwP,EAAQ1Q,EAAU,CACzB,MAAMwP,EAAKxP,EAAE,OACbyQ,EAAc,QAAS,WAAWjB,EAAG,KAAK,CAAC,CAAA,CAG7C,SAASnE,EAASrL,EAAU,CAC1B,MAAMwP,EAAKxP,EAAE,OACbyQ,EAAc,SAAU,WAAWjB,EAAG,KAAK,CAAC,CAAA,CAG9C,SAASmB,EAAMpV,EAAW,CACpB,OAAAA,EAAAyN,GAAMzN,EAAG0N,EAAKC,CAAG,EACjBkH,GAAQ,OACV7U,EAAI,KAAK,MAAMA,EAAI6U,CAAI,EAAIA,GAEtB,WAAW7U,EAAE,QAAQ,CAAC,CAAC,CAAA,CAGhC,IAAIiQ,EAAOhB,GAAS,CAClB,QAAUxK,GAAM,CACdwL,EAAK,OAAOxL,CAAC,CACf,EACA,OAASA,GAAM,CACbA,EAAE,eAAe,EACjB,MAAM8N,EAAIhE,GAAiB9J,EAAGwL,EAAK,MAAM,EAAE,YAC3CiF,EAAc,QAASE,EAAM1H,EAAM6E,GAAK5E,EAAMD,EAAI,CAAC,CACrD,EACA,MAAO,IAAM,CACXwH,EAAc,SAAU9Y,CAAK,EAC7B6T,EAAK,WAAW,CAAA,CAClB,CACD,EAED,SAASoF,EAAY5Q,EAAe,CAC7BqQ,GACH7E,EAAK,SAASxL,CAAC,CACjB,CAGF,SAAS6Q,EAAU7Q,EAAkB,CAC7B,MAAA8Q,EAAO9Q,EAAE,KAAOA,EAAE,QAElB+Q,GAAOX,GAAQ,IADTU,IAAS,YAAc,GAAKA,IAAS,aAAe,EAAI,GAEhEC,GACFN,EAAc,SAAUE,GAAOhZ,GAAS,GAAKoZ,CAAG,CAAC,CACnD,CAGF,SAASC,EAAQhR,EAAe,CAC9BA,EAAE,eAAe,EACX,MAAAiR,GAAOjR,EAAE,QAAU,GAAM,GAAKgJ,GAAMhJ,EAAE,OAAQ,GAAI,CAAC,EACnD+Q,GAAOX,GAAQ,IAAOa,EACxBF,GACFN,EAAc,SAAUE,GAAOhZ,GAAS,GAAKoZ,CAAG,CAAC,CACnD,CAGF,SAASG,GAAU,CACP,CAGZ,SAASC,IAAS,CACN,CAGZ,SAASC,GAAgB,CAChB,OAAAlQ,EACL,iBACA,CACE,MAAO,qBACP,MAAOiI,GAAS,CACd,SAAU,CAAC,CAACkH,CAAA,CACb,EACD,GAAIA,EACA,CAAA,EACA,CACE,SAAU,EACV,YAAaO,EACb,aAAcA,EACd,UAAWC,EACX,QAASG,CAAA,CAEjB,EACA9P,EAAE,qBAAsB,CACtB,MAAO,CACL,MAAO,GAAGsP,CAAO,IACjB,iBAAkB,OAClB,cAAe,MAAA,CAElB,CAAA,CACH,CAAA,CAGK,MAAA,CACL,SAAU,IAAM,CACdhF,EAAK,WAAW,CAClB,EACA,OAASjV,GAAS,CAChBsZ,EAAWtZ,CAAI,CACjB,EACA,SAAWA,GAAS,CAClBsZ,EAAWtZ,CAAI,CACjB,EACA,KAAM,IACG2K,EACL,MACA,CACE,MAAOuI,EAAU/R,CAAI,CACvB,EACA6Y,EAAWa,IAAW,KACtBlQ,EAAE,uBAAwB,CACxB,IAAA+H,EACA,IAAAC,EACA,KAAAkH,EACA,MAAAzY,EACA,QAAS+Y,EACT,SAAUrF,EACV,QAAS2F,EACT,QAASE,EACT,OAAQC,GACR,YAAAb,EACA,SAAAD,CACD,CAAA,CACH,CAEJ,CACF,EAEAlQ,EAAU,SAAUgQ,EAAe,EACnChQ,EAAU,SAAUgQ,EAAe,EC3KnC,MAAMtF,GAAO,QACPwG,GAAgB,CAAC,EAAG,CAAC,EACrBC,GAAe,CAAC,IAAK,GAAG,EAC9BnR,EAAsB0K,GAAOlU,GAAU,CACjC,IAAA4a,EACAC,EACAC,EAASJ,GACTK,EAASL,GACTM,EAAK,EACLC,EAAK,EACLxH,EAAI,EACJC,EAAI,EACJwH,EACAC,EACAC,EAEJ,SAAS5G,EAAW5U,EAA2B,CACvC,MAAAwN,EAAOxN,EAAK,MAAM,KAClBqO,EAAOb,EAAK,MAAQuN,GAC1BC,EAAK3M,EAAK,CAAC,EACX4M,EAAK5M,EAAK,CAAC,EACL,MAAAjN,GAAaqQ,GAASjE,CAAI,GAAK,CACnC,CAACwN,CAAE,EAAGI,EACN,CAACH,CAAE,EAAGI,CACR,EACAG,EAAOhO,EAAK,KACP4N,EAAAha,GAAM4Z,CAAE,GAAK,EACbK,EAAAja,GAAM6Z,CAAE,GAAK,EAClBC,EAAS1N,EAAK,QAAU0N,EACxBC,EAAS3N,EAAK,QAAU2N,EACnBtH,GAAAuH,EAAKF,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIA,EAAO,CAAC,GACvCpH,GAAAuH,EAAKF,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIA,EAAO,CAAC,GAC5C,MAAMM,EAAQjO,EAAK,MACfiO,IACIH,GAAAG,EAAM,CAAC,EAAIP,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIA,EAAO,CAAC,GAC7CK,GAAAE,EAAM,CAAC,EAAIN,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIA,EAAO,CAAC,GACrD,CAGF,SAASO,GAAc,CAChBN,EAAAF,EAAO,CAAC,GAAKA,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAKrH,EACtCwH,EAAAF,EAAO,CAAC,GAAKA,EAAO,CAAC,EAAIA,EAAO,CAAC,GAAKrH,EACvC0H,EAAO,IACTJ,EAAK,KAAK,MAAMA,EAAKI,CAAI,EAAIA,EAC7BH,EAAK,KAAK,MAAMA,EAAKG,CAAI,EAAIA,EACxB3H,GAAAuH,EAAKF,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIA,EAAO,CAAC,GACvCpH,GAAAuH,EAAKF,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAIA,EAAO,CAAC,GAC9C,CAGF,SAASrG,EAAS3T,EAA0B,CAC9Bua,EAAA,EACN,MAAAlO,EAAOpN,EAAM,MAAM,KACnBgB,EAAaqQ,GAASjE,CAAI,GAAK,CACnC,CAACwN,CAAE,EAAGI,EACN,CAACH,CAAE,EAAGI,CACR,EACAja,EAAM4Z,CAAE,EAAII,EACZha,EAAM6Z,CAAE,EAAII,EACZ/I,EAAKnR,IAAS,QAAUqM,EAAK,QAAUA,EAAK,SAAUA,EAAMpM,CAAK,CAAA,CAGnE,SAASua,EAAYlS,EAAe,CAClCwL,EAAK,SAASxL,CAAC,CAAA,CAGjB,MAAMwL,EAAOhB,GAAS,CACpB,OAASxK,GAAM,CACbA,EAAE,eAAe,EACjB,MAAMrC,EAAS6N,EAAK,OACdzB,EAAOpM,EAAO,sBAAsB,EACpCqM,GAAK,OAAO,aAAe,SAAS,gBAAgB,WACpDC,EAAK,OAAO,aAAe,SAAS,gBAAgB,UAEpDC,EAAKvM,EAAO,YACZwM,EAAKxM,EAAO,aAClB,GAAI,CAACiM,EAAIC,CAAE,EAAIF,GAAc3J,CAAC,EAC9BoK,EAAIpB,IAAOY,EAAKI,GAAKD,EAAK,MAAQG,EAAI,EAAG,CAAC,EAC1CG,EAAIrB,IAAOa,EAAKI,EAAKF,EAAK,KAAOI,EAAI,EAAG,CAAC,EAEzCkB,EAAS,OAAO,EAChBnK,EAAE,OAAO,CACX,EACA,MAAO,IAAM,CACXsK,EAAK,WAAW,EACZqG,GAAM,MAAQC,GAAM,OAClB1H,EAAAyH,EACAxH,EAAAyH,EACJzG,EAAS,OAAO,GAElBA,EAAS,QAAQ,EACjBnK,EAAE,OAAO,CAAA,CACX,CACD,EAEM,MAAA,CACL,SAAUsK,EAAK,WACf,OAAQL,EACR,SAAUA,EACV,KAAM,IACJjK,EACE,MACA,CACE,MAAOuI,EAAUoB,EAAI,EACrB,SAAU,EACV,YAAaqH,EACb,aAAcA,CAChB,EACAhR,EAAE,gBAAiB,CACjB,MAAO,CACL,iBAAkB,OAClB,SAAU,WACV,KAAM,EACN,MAAO,EACP,IAAK,GAAGmJ,EAAI,GAAG,IACf,OAAQ,KAAA,CACV,CACD,EACDnJ,EAAE,gBAAiB,CACjB,MAAO,CACL,iBAAkB,OAClB,SAAU,WACV,KAAM,GAAGkJ,EAAI,GAAG,IAChB,IAAK,EACL,OAAQ,EACR,MAAO,KAAA,CACT,CACD,EACDlJ,EAAE,gBAAiB,CACjB,MAAO,CACL,iBAAkB,OAClB,KAAM,GAAGkJ,EAAI,GAAG,IAChB,IAAK,GAAGC,EAAI,GAAG,IACf,SAAU,WACV,MAAO,OACP,OAAQ,OACR,aAAc,OACd,cAAe,OACf,OAAQ,kBACR,gBAAiB,MACjB,aAAc,qCAAA,CAEjB,CAAA,CAAA,CAEP,CACF,CAAC,ECvHD,MAAMQ,GAAO,WACPsH,GAAc,CAAC,IAAK,IAAK,GAAG,EAClChS,EAAyB0K,GAAOtU,GAAS,CAC9B,SAAA8U,EAAS3T,EAA0BqX,EAAexT,EAAW,CAC9D,MAAAwI,EAAOxN,EAAK,MAAM,KAClBoB,EAAaqQ,GAASjE,CAAI,GAAK,CAAC,EACtCpM,EAAMoX,CAAK,EAAI,MAAMxT,CAAC,EAAI,KAAOA,EAC3B,MAAA+P,EAAUnD,GAASpE,EAAMpM,CAAK,EAC/BkR,EAAAnR,IAAS,QAAUqM,EAAK,QAAUA,EAAK,SAAUA,EAAMuH,EAASyD,CAAK,CAAA,CAGrE,MAAA,CACL,KAAMzE,GAAQvG,GAAS,CACf,MAAAa,EAAOb,EAAK,MAAQoO,GACpBxa,EAAQqQ,GAASjE,CAAI,EACpB,OAAA7C,EACL,MACA,CACE,MAAOuI,EAAUoB,EAAI,CACvB,EACAjG,EAAK,IAAKmK,GACDjH,GAAyB,CAC9B,KAAM,SACN,IAAK/D,EAAK,IACV,IAAKA,EAAK,IACV,KAAMA,EAAK,KACX,MAAOpM,GAAA,YAAAA,EAAQoX,GACf,SAAUhL,EAAK,SACf,QAAS,CAACqO,EAAG7W,IAAc8P,EAAS,QAAS0D,EAAOxT,CAAC,EACrD,SAAU,CAAC6W,EAAG7W,IAAc8P,EAAS,SAAU0D,EAAOxT,CAAC,EACvD,YAAawT,CAAA,CACd,CACF,CACH,CACD,CAAA,CACH,CACF,CAAC,ECvGD,MAAMsD,GAAoB,CAAC,EAoE3B,SAASC,GAAqBC,EAAwC,CACpE,MAAMC,EAAsB,CAAC,EAC7B,UAAWnJ,KAAMkJ,EAAK,CACpB,GAAI9J,GAASY,CAAE,GAAKhF,GAASgF,CAAE,EAAG,CAC5BmJ,EAAA,KAAK,CAAE,MAAOnJ,EAAI,MAAO,OAAOA,CAAE,EAAG,EACzC,QAAA,CAEF,GAAI,UAAWA,EAAI,CACjBmJ,EAAI,KAAKnJ,CAAE,EACX,QAAA,CACF,CAEK,OAAAmJ,CACT,CAEA,SAASC,GACPF,EACyD,CACzD,MAAMC,EAA+D,CAAC,EACtE,UAAWnJ,KAAMkJ,EACX9J,GAASY,CAAE,GAAKhF,GAASgF,CAAE,GAAKA,GAAM,KACpCmJ,EAAA,KAAK,CAAE,MAAOnJ,EAAI,MAAO,OAAOA,CAAE,EAAG,EAChC,UAAWA,EACpBmJ,EAAI,KAAKnJ,CAAE,EACF,YAAaA,GACtBmJ,EAAI,KAAK,CACP,MAAOnJ,EAAG,MACV,SAAUA,EAAG,SACb,QAAS,MAAM,QAAQA,EAAG,OAAO,EAC7BiJ,GAAqBjJ,EAAG,OAAO,EAC/BqJ,GAAkBrJ,EAAG,OAAO,CAAA,CACjC,EAGE,OAAAmJ,CACT,CAEA,SAASE,GAAkBlK,EAA+C,CACxE,OAAO,OAAO,KAAKA,CAAG,EACnB,KAAA,EACA,IAAKtS,IAAS,CAAE,MAAOsS,EAAItS,CAAG,EAAG,MAAOA,GAAM,CACnD,CAEA,SAASyc,GACPpc,EACyD,CACnD,MAAAsQ,EAAUtQ,EAAK,MAAM,KAAK,QAEhC,OAAKsQ,EAID,MAAM,QAAQA,CAAO,EAChB4L,GAAiB5L,CAAO,EAE1B6L,GAAkB7L,CAAO,EANvBwL,EAOX,CAEAlS,EAAuB,SAAW5J,GAAS,CACrC,IAAAsQ,EAEJ,SAAS+L,GAAmB,CACpB,MAAA7O,EAAOxN,EAAK,MAAM,KAClBoB,EAAQqQ,GAASjE,CAAI,EAC3B,IAAIrN,EAAI,EACR,UAAWmc,KAAMhM,EACf,GAAI,YAAagM,EACJ,UAAAC,KAAMD,EAAG,QAAS,CACvB,GAAAC,EAAG,QAAUnb,EACR,OAAAjB,EAETA,GAAA,KAEG,CACD,GAAAmc,EAAG,QAAUlb,EACR,OAAAjB,EAETA,GAAA,CAEJ,CAGF,SAASqc,EAAe3S,EAAe,CACrC,IAAI1J,EAAI,EACR,UAAWmc,KAAMhM,EACf,GAAI,YAAagM,EACJ,UAAAC,KAAMD,EAAG,QAAS,CAC3B,GAAInc,IAAM0J,EACR,OAAO0S,EAAG,MAEPpc,GAAA,CAAA,KAEF,CACL,GAAIA,IAAM0J,EACR,OAAOyS,EAAG,MAEPnc,GAAA,CAAA,CAGF,OAAA,IAAA,CAGT,SAAS2U,EAASrL,EAAU,CAC1B,MAAMwP,EAAKxP,EAAE,OACP+D,EAAOxN,EAAK,MAAM,KAClBoB,EAAQob,EAAevD,EAAG,aAAa,EACvClE,EAAUnD,GAASpE,EAAMpM,CAAK,EAC/BkR,EAAA9E,EAAK,SAAUA,EAAMuH,CAAO,CAAA,CAG5B,MAAA,CACL,KAAMhB,GAAQvG,IACZ8C,EAAU8L,GAAWpc,CAAI,EAClB2K,EACL,SACA,CACE,MAAOuI,EAAU1F,EAAK,IAAI,EAC1B,cAAe6O,EAAiB,EAChC,SAAUvH,EACV,SAAUtH,EAAK,QACjB,EACA8C,EAAQ,IAAKwC,GACP,YAAaA,EACRnI,EACL,WACA,CACE,SAAU,CAAC,CAACmI,EAAG,SACf,MAAOA,EAAG,OAAS,EACrB,EACAA,EAAG,QAAQ,IAAI2J,EAAM,CACvB,EAEKA,GAAO3J,CAAE,CACjB,CACH,EACD,CACH,CACF,CAAC,EAED,SAAS2J,GAAO3J,EAAkB,CACzB,OAAAnI,EACL,SACA,CACE,MAAOmI,EAAG,MACV,MAAOA,EAAG,MACV,SAAU,CAAC,CAACA,EAAG,QACjB,EACAA,EAAG,OAAS,EACd,CACF,CC1KA,MAAMwB,GAAO,YACPoI,GAAO,CAAC,MAAO,OAAO,EAoQ5B9S,EAA0B0K,GAnQoClU,GAAU,CACtE,IAAIuc,EAAM,EACNC,EAAQ,EACRC,EAAW,GAEXC,EAAQ,CAAC,EAAG,CAAC,EACbC,EAAU,CAAC,EAAG,CAAC,EAEfC,EAEJ,SAASvI,EAAMrT,EAAe,CACrB,OAAAA,GAAS,IAAM,KAAK,GAAA,CAE7B,SAASsT,EAAMtT,EAAe,CACrB,OAAAA,GAAS,KAAK,GAAK,IAAA,CAE5B,SAASuT,EAASvT,EAAe,CAC/B,OAAOqR,IAAOrR,EAAQ,EAAI,IAAO,IAAK,EAAG,GAAG,CAAA,CAG9C,SAAS6b,EAAKjd,EAA+B,CACrC,MAAAwN,EAAOxN,EAAK,MAAM,KAClBoB,EAAaqQ,GAASjE,CAAI,GAAK,CACnC,IAAKA,EAAK,OAASiH,EAAMkI,CAAG,EAAIA,EAChC,MAAOnP,EAAK,OAASiH,EAAMmI,CAAK,EAAIA,CACtC,EACM,CAACM,EAAMC,CAAM,EAAI3P,EAAK,MAAQkP,GACpC,MAAO,CAAE,KAAAlP,EAAM,MAAApM,EAAO,KAAA8b,EAAM,OAAAC,CAAO,CAAA,CAGrC,SAASvI,EAAW5U,EAA+B,CACjD,KAAM,CAAE,KAAAwN,EAAM,MAAApM,EAAO,KAAA8b,EAAM,OAAAC,CAAO,EAAIF,EAAKjd,CAAI,EAO/C,IANM2c,EAAAvb,EAAM8b,CAAI,GAAK,EACbN,EAAAxb,EAAM+b,CAAM,GAAK,EACrB3P,EAAK,SACPmP,EAAMjI,EAAMiI,CAAG,EACfC,EAAQlI,EAAMkI,CAAK,GAEdA,EAAQ,GACbA,GAAS,KAAK,GAET,KAAAA,EAAQ,KAAK,IAClBA,GAAS,KAAK,GAELC,EAAAD,EAAQ,KAAK,GAAK,EACb/H,EAAA,CAAA,CAGlB,SAASC,EAAS3T,EAA0B,CAC1B0T,EAAA,EAChB,KAAM,CAAE,KAAArH,EAAM,MAAApM,EAAO,KAAA8b,EAAM,OAAAC,CAAO,EAAIF,EAAK7c,CAAK,EAChDgB,EAAM8b,CAAI,EAAI1P,EAAK,OAASiH,EAAMkI,CAAG,EAAIA,EACzCvb,EAAM+b,CAAM,EAAI3P,EAAK,OAASiH,EAAMmI,CAAK,EAAIA,EACvC,MAAA7H,EAAUnD,GAASpE,EAAMpM,CAAK,EACpCkR,EAAKnR,IAAS,QAAUqM,EAAK,QAAUA,EAAK,SAAUA,EAAMuH,CAAO,CAAA,CAGrE,SAASF,GAAkB,CACzBiI,EAAM,CAAC,EAAI,KAAK,IAAIH,CAAG,EACvBG,EAAM,CAAC,EAAI,KAAK,IAAIH,CAAG,EACfI,EAAA,CAAC,EAAI,KAAK,IAAIH,CAAK,EAAI,KAAK,IAAID,CAAG,EACnCI,EAAA,CAAC,EAAI,KAAK,IAAIH,CAAK,EAAI,KAAK,IAAID,CAAG,CAAA,CAG7C,SAAS3H,EAAWvL,EAAe,CACnBuT,EAAA,MACd/H,EAAK,SAASxL,CAAC,CAAA,CAEjB,SAAS2T,EAAa3T,EAAe,CACrBuT,EAAA,QACd/H,EAAK,SAASxL,CAAC,CAAA,CAGb,IAAAyL,EACJ,MAAMD,EAAOhB,GAAS,CACpB,QAAUxK,GAAM,CACR,MAAA0L,EAAQ5B,GAAiB9J,CAAC,EAClByL,EAAA,CACZ,EAAEC,EAAM,EAAIA,EAAM,MAAQ,GAC1B,EAAEA,EAAM,EAAIA,EAAM,OAAS,EAC7B,EACAF,EAAK,OAAOxL,CAAC,CACf,EACA,OAASA,GAAM,CACbA,EAAE,eAAe,EAEjB,MAAM2L,EAAW7B,GAAiB9J,EAAGwL,EAAK,OAAO,cAAeC,CAAW,EACrEG,EAAKD,EAAS,YAAc,GAC5BE,EAAKF,EAAS,YAAc,GAClC,GAAI4H,IAAgB,MAEZL,EAAA,KAAK,MAAMtH,EAAIC,CAAE,EAEvBqH,GAAOA,EAAM,EAAI,EAAI,KAAK,GAAK,UACtBK,IAAgB,QAAS,CAGlC,MAAMK,EAAKP,EACLQ,EAAK,CAAChI,EAAID,CAAE,EACZkI,GAAKF,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAID,EAAG,CAAC,EAAIC,EAAG,CAAC,GAAK,KAAK,KAAKD,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,CAAC,EAEnFT,EAAQ,KAAK,GAAKnK,GAAM8K,EAAG,EAAG,EAAG,EAC7BV,IACFD,EAAQ,KAAK,GAAKA,EACpB,CAEF9H,EAAS,OAAO,EAChBnK,EAAE,OAAO,CACX,EACA,MAAQlB,GAAM,CACZwL,EAAK,WAAW,EACF+H,EAAA,KACdlI,EAAS,QAAQ,EACjBnK,EAAE,OAAO,CAAA,CACX,CACD,EAEQ,SAAA4K,EAAW/D,EAAgBpQ,EAAe,CACjDub,EAAMjI,EAAMtT,CAAK,EACjB0T,EAAS,OAAO,CAAA,CAET,SAAAU,EAAYhE,EAAgBpQ,EAAe,CAClDub,EAAMjI,EAAMtT,CAAK,EACjB0T,EAAS,QAAQ,CAAA,CAGV,SAAA0I,GAAahM,EAAgBpQ,EAAe,CACnDwb,EAAQlI,EAAMtT,CAAK,EACnB0T,EAAS,OAAO,CAAA,CAET,SAAA2I,EAAcjM,EAAgBpQ,EAAe,CACpDwb,EAAQlI,EAAMtT,CAAK,EACnB0T,EAAS,QAAQ,CAAA,CAEV,SAAA4I,EAAiBlM,EAAgBpQ,EAAgB,CAC7Cyb,EAAAzb,EACXwb,EAAQ,KAAK,GAAKA,EAClB9H,EAAS,QAAQ,EACN,WAAA,IAAMnK,EAAE,QAAQ,CAAA,CAGtB,MAAA,CACL,SAAU,IAAM,CACdsK,EAAK,WAAW,CAClB,EACA,OAASjV,GAAS,CAChB4U,EAAW5U,CAAI,CACjB,EACA,SAAWA,GAAS,CAClB4U,EAAW5U,CAAI,CACjB,EACA,KAAM,IACG2K,EACL,MACA,CACE,MAAOuI,EAAUoB,EAAI,EACrB,MAAO,CACL,kBAAmB,GAAGG,EAAM,CAACkI,CAAG,EAAI,EAAE,KAAA,CAE1C,EACAhS,EACE,qBACAA,EACE,WACA,CACE,MAAO,CACL,SAAU,WACV,MAAO,OACP,cAAe,MAAA,CAEnB,EACAA,EACE,eACA,CACE,MAAOiI,GAAS,CACd,cAAeoK,IAAgB,KAAA,CAChC,EACD,MAAO,CACL,SAAU,WACV,IAAK,SACL,KAAM,SACN,MAAO,oBACP,OAAQ,mBAAA,CAEZ,EACArS,EAAE,eAAgB,CAChB,YAAaqK,EACb,aAAcA,EACd,MAAO,CACL,SAAU,WACV,MAAO,OACP,OAAQ,OACR,IAAK,QAAQL,EAASmI,EAAM,CAAC,CAAC,CAAC,WAC/B,KAAM,QAAQnI,EAASmI,EAAM,CAAC,CAAC,CAAC,UAAA,CAEnC,CAAA,CACH,EACAnS,EACE,iBACA,CACE,MAAOiI,GAAS,CACd,cAAeoK,IAAgB,OAAA,CAChC,EACD,MAAO,CACL,SAAU,WACV,IAAK,SACL,KAAM,SACN,MAAO,oBACP,OAAQ,mBAAA,CAEZ,EACArS,EAAE,iBAAkB,CAClB,YAAayS,EACb,aAAcA,EACd,MAAO,CACL,SAAU,WACV,MAAO,OACP,OAAQ,OACR,IAAK,QAAQzI,EAASoI,EAAQ,CAAC,CAAC,CAAC,WACjC,KAAM,QAAQpI,EAASoI,EAAQ,CAAC,CAAC,CAAC,UAAA,CAErC,CAAA,CAAA,CACH,CAEJ,EACApS,EACE,sBACAA,EAAE,QAASA,EAAE,MAAM,OAAO,CAAC,EAC3B4G,GAAyB,CACvB,KAAM,SACN,IAAK,EACL,IAAK,IACL,KAAM,GACN,MAAOkD,EAAMkI,CAAG,EAChB,QAASpH,EACT,SAAUC,CAAA,CACX,EACD7K,EAAE,QAASA,EAAE,MAAM,SAAS,CAAC,EAC7B4G,GAAyB,CACvB,KAAM,SACN,IAAK,EACL,IAAK,IACL,KAAM,GACN,MAAOkD,EAAMmI,CAAK,EAClB,QAASY,GACT,SAAUC,CAAA,CACX,EACDlM,GAA2B,CACzB,KAAM,WACN,MAAOsL,EACP,KAAM,WACN,SAAUa,CACX,CAAA,CAAA,CAEL,CAEJ,CACF,CAEkD,EA2B3C,SAASC,GAAe,CAC7B,KAAAjI,EACA,OAAA1C,EACA,OAAAjM,CACF,EAAgC,GAAqD,CACnF2O,EAAOA,GAAQ,CAAE,EAAG,QAAS,EAAG,KAAM,EAAG,MAAO,EAC1C,MAAArH,EAAO,OAAO,KAAKqH,CAAI,EACvBC,EAAS,KACL,OAAO3C,GAAW,WAAaA,IAAWA,IAAW,EAExD,MAAA,CACL,OAAS5R,GAAe,CACtB,IAAIyS,EAAY,EACZC,EAAY,EACZ8J,EAAY,EAChB,UAAWje,KAAO0O,EACR,OAAAqH,EAAK/V,CAAG,EAAG,CACjB,IAAK,QACHmU,EAAI1S,EAAMzB,CAAG,EACb,MACF,IAAK,OACCmU,EAAA,CAAC1S,EAAMzB,CAAG,EACd,MACF,IAAK,OACHkU,EAAIzS,EAAMzB,CAAG,EACb,MACF,IAAK,QACCkU,EAAA,CAACzS,EAAMzB,CAAG,EACd,MACF,IAAK,KACHie,EAAIxc,EAAMzB,CAAG,EACb,MACF,IAAK,OACCie,EAAA,CAACxc,EAAMzB,CAAG,EACd,KAEA,CAGN,MAAMiW,EAAID,EAAO,EACZ,OAAA9B,GAAA+B,EACA9B,GAAA8B,EACAgI,GAAAhI,EACE,CACL,IAAK,KAAK,MAAM9B,EAAGD,CAAC,GAAK,EACzB,MAAO,KAAK,KAAK,KAAK,KAAKA,EAAIA,EAAIC,EAAIA,CAAC,EAAI8J,CAAC,GAAK,CACpD,CACF,EACA,OAAQ,CAAC,CAAE,IAAAjB,EAAK,MAAAC,KAA4C,CAC1D,MAAMhH,EAAID,EAAO,EACX9B,EAAI+B,EAAI,KAAK,IAAIgH,CAAK,EAAI,KAAK,IAAID,CAAG,EACtC7I,EAAI8B,EAAI,KAAK,IAAIgH,CAAK,EAAI,KAAK,IAAID,CAAG,EACtCiB,EAAIhI,EAAI,KAAK,IAAIgH,CAAK,EACtBxb,GAAQ2F,GAAA,YAAAA,MAAc,CAAC,EAC7B,UAAWpH,KAAO0O,EACR,OAAAqH,EAAK/V,CAAG,EAAG,CACjB,IAAK,QACHyB,EAAMzB,CAAG,EAAImU,EACb,MACF,IAAK,OACG1S,EAAAzB,CAAG,EAAI,CAACmU,EACd,MACF,IAAK,OACH1S,EAAMzB,CAAG,EAAIkU,EACb,MACF,IAAK,QACGzS,EAAAzB,CAAG,EAAI,CAACkU,EACd,MACF,IAAK,KACHzS,EAAMzB,CAAG,EAAIie,EACb,MACF,IAAK,OACGxc,EAAAzB,CAAG,EAAI,CAACie,EACd,KAEA,CAGC,OAAAxc,CAAA,CAEX,CACF,CC1XAwI,EAAqB,OAAS5J,GAAS,CACrC,SAAS8U,EAASrL,EAAU,CAC1B,MAAMwP,EAAKxP,EAAE,OACP+D,EAAOxN,EAAK,MAAM,KAClB+U,EAAUnD,GAASpE,EAAMyL,EAAG,KAAK,EAClC3G,EAAA7I,EAAE,OAAS,QAAU+D,EAAK,QAAUA,EAAK,SAAUA,EAAMuH,CAAO,CAAA,CAGhE,MAAA,CACL,KAAMhB,GAAQvG,GACL7C,EAAE,qBAAsB,CAC7B,MAAOuI,EAAU1F,EAAK,IAAI,EAC1B,MAAOiE,GAASjE,CAAI,EACpB,QAASsH,EACT,SAAUA,EACV,YAAatH,EAAK,YAClB,SAAUA,EAAK,QAAA,CAChB,CACF,CACH,CACF,CAAC,EC3CD,MAAM8G,GAAO,YACPuJ,GAAsB,CAAC,EAE7BjU,EAAyB0K,GAAM,KACtB,CACL,KAAMP,GAAQvG,GAAS,CACf,MAAA3N,EAAW2N,EAAK,UAAYqQ,GAClC,OAAArQ,EAAK,OAASsQ,GAAetQ,EAAK,OAAQ3N,CAAQ,EAC3C8K,EAAE,SAAS,CAAC,EAAG9K,EAAS,IAAI,CAACke,EAAO5d,KACzC4d,EAAM,KAAO,QACbA,EAAM,YAAc,GACdA,EAAA,UAAY5d,IAAMqN,EAAK,OACtB+D,GAAwBwM,CAAK,EACrC,CAAC,CACH,CAAA,CACH,EACD,EAED,SAASD,GAAejU,EAAemU,EAAoB,CACzD,IAAIjX,EAAS,KACb,QAAS5G,EAAI,EAAGA,EAAI6d,EAAK,OAAQ7d,IAC/B,GAAI,CAAC6d,EAAK7d,CAAC,EAAE,UAAW,CACtB,GAAIA,IAAM0J,EACD,OAAA1J,EAEL4G,GAAU,OACHA,EAAA5G,EACX,CAGG,OAAA4G,CACT,CCtBA,MAAMuN,GAAO,YACb1K,EAA0B0K,GAAM,KACvB,CACL,KAAMP,GAAQvG,GACZ,OAAA,OAAA7C,EACE,MACA,CACE,MAAOiI,GAAS,CACd,CAACM,EAAUoB,EAAI,CAAC,EAAG,GACnB,CAACpB,EAAUoB,GAAM,YAAY,CAAC,EAAG9G,EAAK,UAAA,CACvC,EACD,MAAOA,EAAK,KACd,EACA7C,EAAE,SAAS,CAAC,GAAGsT,EAAAzQ,EAAK,WAAL,YAAAyQ,EAAe,IAAI1M,GAAY,CAAA,EAChD,CAEJ,EACD,ECOD,MAAM+C,GAAO,QACb1K,EAAsB0K,GAAOtU,GAAS,CACpC,SAASke,EAAQzU,EAAe,CAC9B+I,GAAIxS,EAAK,MAAM,KAAOwN,GAAS,CACxBA,EAAA,UAAY,CAACA,EAAK,UAClB8E,EAAA9E,EAAK,SAAUA,CAAI,EACpBA,EAAK,UACF8E,EAAA9E,EAAK,WAAYA,CAAI,EAErB8E,EAAA9E,EAAK,SAAUA,CAAI,CAC1B,CACD,CAAA,CAEH,SAAS+C,EAAM/C,EAAkB,CAC/B,MAAI,CAACA,EAAK,OAAS,CAACA,EAAK,YAChB,KAEF7C,EACL,MACA,CACE,MAAOuI,EAAUoB,GAAM,OAAO,EAC9B,QAAS9G,EAAK,YAAc0Q,EAAU,IACxC,EACA1Q,EAAK,KACP,CAAA,CAEF,SAAS3N,EAAS2N,EAAkB,OAClC,OAAIA,EAAK,WAAa,CAACA,EAAK,SACnB,CAAC,GAEHyQ,EAAAzQ,EAAK,WAAL,YAAAyQ,EAAe,IAAKnL,GACrBZ,GAASY,EAAG,KAAK,EACZnI,EACL,MACA,CAAE,MAAOuI,EAAUoB,GAAM,SAAS,CAAE,EACpC3J,EAAE,QAASmI,EAAG,KAAK,EACnBnI,EAAE,UAAW4G,GAAYuB,CAAE,CAAC,CAC9B,EAEKvB,GAAYuB,CAAE,EACtB,CAGI,MAAA,CACL,KAAMiB,GAAQvG,GACZ7C,EACE,MACA,CACE,MAAOiI,GAAS,CACd,CAACM,EAAUoB,EAAI,CAAC,EAAG,GACnB,CAACpB,EAAUoB,GAAM,aAAa,CAAC,EAAG9G,EAAK,YACvC,CAAC0F,EAAUoB,GAAM,WAAW,CAAC,EAAG9G,EAAK,SAAA,CACtC,EACD,MAAOA,EAAK,KACd,EACA7C,EAAE,SAAS,CAAC,EAAG,CAAC4F,EAAM/C,CAAI,CAAC,CAAC,EAC5B7C,EAAE,SAAS,CAAA,EAAI,CAAC9K,EAAS2N,CAAI,CAAC,CAAC,CAAA,CACjC,CAEJ,CACF,CAAC,ECxFD5D,EAAoB,OAAQ,KACnB,CACL,KAAMmK,GAAQvG,GAAS,CACf,MAAA2Q,EAAO3Q,EAAK,UAAY,CAAC,EACzBxE,EAASyJ,GAAMjF,EAAK,QAAU,EAAG,EAAG2Q,EAAK,OAAS,CAAC,EACnDC,EAAMD,EAAKnV,CAAM,EAChB,OAAA2B,EACL,MACA,CACE,MAAOuI,EAAU1F,EAAK,IAAI,CAC5B,EACA7C,EACE,MACA,CACE,IAAK,GAAG6C,EAAK,IAAI,QACjB,MAAO0F,EAAU,GAAG1F,EAAK,IAAI,OAAO,CACtC,EACA2Q,EAAK,IAAI,CAACrL,EAAIjJ,IACLc,EACL,wBACA,CACE,IAAK,GAAG6C,EAAK,IAAI,IAAI3D,CAAK,GAC1B,QAAS,IAAO2D,EAAK,OAAS3D,EAC9B,MAAOb,IAAWa,EAAQ,YAAc,EAC1C,EACAiJ,EAAG,OAASA,EAAG,KACjB,CACD,CACH,EACAnI,EAAE,SAAS,CAAE,IAAK,SAAS6C,EAAK,MAAM,IAAM,CAC1C+D,GAAwB,CACtB,KAAM,QACN,SAAU6M,EAAI,SACd,MAAOA,EAAI,KACZ,CAAA,CACF,CAAA,CACH,CACD,CAAA,CACH,EACD,ECrCD,MAAMjd,GAAO,SACbyI,EAAuBzI,GAAOnB,IACrB,CACL,KAAM+T,GAAQvG,GACZ7C,EACExJ,GACA,CACE,KAAAA,GACA,MAAO+R,EAAU/R,EAAI,EACrB,QAAS,IAAMmR,EAAK9E,EAAK,QAASA,CAAI,EACtC,SAAUA,EAAK,QACjB,EACAA,EAAK,IAAA,CACP,CAEJ,EACD,ECtBD5D,EAFgB,UAEiB,KACxB,CACL,KAAMmK,GAAQvG,GAAS7C,EAAE,SAAS,GAAI,CAAC6C,EAAK,OAAO,CAAC,CAAC,CACvD,EACD,ECUD,MAAM8G,GAAO,QACb1K,EAAsB,QAAU5J,GAAS,CACvC,MAAMke,EAAU,IAAM,CAChB1L,GAAAxS,EAAK,MAAM,KAAOwN,GAAS8E,EAAK9E,EAAK,QAASA,CAAI,CAAC,CACzD,EACA,SAAS6Q,EAAOC,EAAc,CAC5B,GAAI,CAACA,EACI,OAAA,KAEH,KAAA,CAACzK,EAAGC,CAAC,GAAKwK,GAAQ,OAAO,MAAM,GAAG,EAAE,IAAI,MAAM,EAEpD,MAAO,IADWxK,EAAID,GAAM,GAAK,GAChB,GAAA,CAEnB,SAAS0K,EAAM/Q,EAAkB,CAC3B,GAAAM,GAASN,EAAK,KAAK,EACd,MAAA,GAAGA,EAAK,KAAK,KAElB,GAAA0E,GAAS1E,EAAK,KAAK,EACrB,OAAOA,EAAK,KACd,CAEK,MAAA,CACL,KAAMuG,GAAQvG,IACJ,MAAM,QAAQA,EAAK,GAAG,EAAIA,EAAK,IAAM,CAACA,EAAK,GAAG,GAAG,IAAKgR,GACrD7T,EACL,UACA,CACE,MAAOiI,GAAS,CACd,CAACM,EAAUoB,EAAI,CAAC,EAAG,GACnB,CAACpB,EAAUoB,GAAM,QAAQ,CAAC,EAAG,CAAC,CAAC9G,EAAK,MAAA,CACrC,EACD,MAAO,CACL,gBAAiB6Q,EAAO7Q,EAAK,MAAM,EACnC,aAAcA,EAAK,KAAO,MAC1B,MAAO+Q,EAAM/Q,CAAI,CAAA,CAErB,EACA7C,EAAE,MAAO,CACP,IAAA6T,EACA,QAASN,CACV,CAAA,CACH,CACD,CACF,CACH,CACF,CAAC,ECiBD,SAASO,EAAiCC,EAAqBC,EAAiB,CAC9E,cAAO,KAAKA,CAAS,EAAE,QAAShf,GAAgB,CACtC+e,EAAA/e,CAAc,EAAIgf,EAAUhf,CAAc,CAAA,CACnD,EACM+e,CACT,CAEA,SAASE,IAAqE,CAC5E,IAAIC,EAAgB,KAChBC,EAAmB,CAAC,EACpBvM,EAGJ,QAASpS,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACnC,MAAA4e,EAAM,UAAU5e,CAAC,EACnB+R,GAAS6M,CAAG,EACNF,EAAAE,EACC1M,GAAS0M,CAAG,EACdD,EAAAC,EACE5M,GAAW4M,CAAG,IAClBxM,EAAAwM,EACP,CAOF,GAJIF,IACFC,EAAK,MAAQD,GAGXtM,EAAI,CACN,MAAMyM,EAAW,KAAK,SACtB,KAAK,SAAW,CAAC,EACjBzM,EAAG,IAAI,EACPuM,EAAK,SAAW,KAAK,SACrB,KAAK,SAAWE,CAAA,CAEX,OAAAF,CACT,CAGA,SAASG,IAA6E,CACpF,IAAIH,EAAmB,CAAC,EAEpB,OAAA,UAAU,OAAS,IACdA,EAAA,UAAU,CAAC,GAAKA,EAClBA,EAAA,OAAS,UAAU,CAAC,EACpBA,EAAA,SAAW,UAAU,CAAC,EACvBA,EAAK,QAAU,SACjBA,EAAK,MAAQ,OAAOA,EAAK,UAAY,EAAE,IAGvC,UAAU,SAAW,IAChBA,EAAA,UAAU,CAAC,GAAKA,GAGlBA,CACT,CAMO,MAAMI,EAAQ,CAAd,aAAA,CAIL,KAAO,SAA6B,CAAC,CAAA,CAQ9B,OAAgC,CACrC,MAAMJ,EAA4BF,GAAW,MAAM,KAAM,SAAS,EAC3D,OAAA,KAAK,IAAgBH,EAAOK,EAAM,CACvC,KAAM,QACN,SAAUA,EAAK,SACf,MAAO,KACP,MAAOA,EAAK,KAAA,CACb,CAAC,CAAA,CASG,aAAsC,CAC3C,MAAMA,EAA4BF,GAAW,MAAM,KAAM,SAAS,EAC3D,OAAA,KAAK,IAAgBH,EAAOK,EAAM,CACvC,KAAM,QACN,SAAUA,EAAK,SACf,YAAa,GACb,MAAO,KACP,MAAOA,EAAK,KAAA,CACb,CAAC,CAAA,CASG,WAAwC,CAC7C,MAAMA,EAAgCF,GAAW,MAAM,KAAM,SAAS,EAC/D,OAAA,KAAK,IAAoBH,EAAOK,EAAM,CAC3C,KAAM,YACN,SAAUA,EAAK,QAAA,CAChB,CAAC,CAAA,CASG,MAA8B,CACnC,MAAMA,EAA2BF,GAAW,MAAM,KAAM,SAAS,EAC1D,OAAA,KAAK,IAAeH,EAAOK,EAAM,CACtC,KAAM,OACN,OAAQA,EAAK,QAAU,EACvB,SAAUA,EAAK,QAAA,CAChB,CAAC,CAAA,CASG,WAAwC,CAC7C,MAAMA,EAAgCF,GAAW,MAAM,KAAM,SAAS,EAC/D,OAAA,KAAK,IAAoBH,EAAOK,EAAM,CAC3C,KAAM,YACN,SAAUA,EAAK,QAAA,CAChB,CAAC,CAAA,CAMG,UAA0B,CAC/B,MAAMA,EAA+BG,GAAa,MAAM,KAAM,SAAS,EACvE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,UAAY,CAAA,CACnC,CAAA,CAMK,MAAkB,CACvB,MAAMA,EAA2BG,GAAa,MAAM,KAAM,SAAS,EACnE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,MAAQ,CAAA,CAC/B,CAAA,CAMK,QAAsB,CAC3B,MAAMA,EAA6BG,GAAa,MAAM,KAAM,SAAS,EACrE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,QAAU,CAAA,CACjC,CAAA,CAMK,QAAsB,CAC3B,MAAMA,EAA6BG,GAAa,MAAM,KAAM,SAAS,EACrE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,QAAU,CAAA,CACjC,CAAA,CAMK,UAA0B,CAC/B,MAAMA,EAA+BG,GAAa,MAAM,KAAM,SAAS,EACvE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,UAAY,CAAA,CACnC,CAAA,CAKK,QAAsB,CAC3B,MAAMA,EAA6BG,GAAa,MAAM,KAAM,SAAS,EACrE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,QAAU,CAAA,CACjC,CAAA,CAMK,OAAoB,CACzB,MAAMA,EAA4BG,GAAa,MAAM,KAAM,SAAS,EACpE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,OAAS,CAAA,CAChC,CAAA,CAMK,aAAgC,CACrC,MAAMA,EAAkCG,GAAa,MAAM,KAAM,SAAS,EAC1E,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,cAAgB,CAAA,CACvC,CAAA,CAMK,OAAoB,CACzB,MAAMA,EAA4BG,GAAa,MAAM,KAAM,SAAS,EACpE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,OAAS,CAAA,CAChC,CAAA,CAMK,WAA4B,CACjC,MAAMA,EAAgCG,GAAa,MAAM,KAAM,SAAS,EACxE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,WAAa,CAAA,CACpC,CAAA,CAMK,OAAoB,CACzB,MAAMA,EAA4BG,GAAa,MAAM,KAAM,SAAS,EACpE,OAAO,KAAK,IACVR,EAAOK,EAAM,CAAE,KAAM,OAAS,CAAA,CAChC,CAAA,CAGK,OAAUD,EAAezX,EAAW+X,EAA0B,CAAA,EAAI,CACvE,OAAO,KAAK,MAAMN,EAAQO,GAAO,CAC/B,UAAWzf,KAAOyH,EAAQ,CACpB,GAAA,CAAC+X,EAAOxf,CAAG,EAAG,CAEhB,OAAQ,OADMyH,EAAOzH,CAAG,EACF,CACpB,IAAK,SACAyf,EAAA,OAAOhY,EAAQzH,CAAG,EACrB,MACF,IAAK,SACAyf,EAAA,KAAKhY,EAAQzH,CAAG,EACnB,MACF,IAAK,UACAyf,EAAA,SAAShY,EAAQzH,CAAG,EACvB,KAAA,CAEJ,QAAA,CAEM,OAAAwf,EAAOxf,CAAG,EAAE,KAAM,CACxB,IAAK,OACHyf,EAAG,KAAKhY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EAChC,MACF,IAAK,SACHyf,EAAG,OAAOhY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EAClC,MACF,IAAK,WACHyf,EAAG,SAAShY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EACpC,MACF,IAAK,SACHyf,EAAG,OAAOhY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EAClC,MACF,IAAK,QACHyf,EAAG,MAAMhY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EACjC,MACF,IAAK,eACHyf,EAAG,YAAYhY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EACvC,MACF,IAAK,QACHyf,EAAG,MAAMhY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EACjC,MACF,IAAK,YACHyf,EAAG,UAAUhY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EACrC,MACF,IAAK,QACHyf,EAAG,MAAMhY,EAAQzH,EAAKwf,EAAOxf,CAAG,CAAC,EACjC,KACF,CAEF,CACF,CACD,CAAA,CASK,OAAOG,EAAcgf,EAA6B,GAAI,CAC5D,OAAO,KAAK,IACVL,EAAOK,EAAM,CACX,KAAM,SACN,KAAAhf,CACD,CAAA,CACH,CAAA,CAWK,OAAQ,CACb,MAAMgf,EAA4BF,GAAW,MAAM,KAAM,SAAS,EAC3D,OAAA,KAAK,IAAgBH,EAAOK,EAAM,CACvC,KAAM,OAAA,CACP,CAAC,CAAA,CAUG,QAAQD,EAAexX,EAAgByX,EAA8B,CAAA,EAAI,CAC9E,OAAO,KAAK,IACVL,EAAOK,EAAM,CACX,KAAM,UACN,MAAAD,EACA,QAAAxX,CACD,CAAA,CACH,CAAA,CAsBK,IAA8BgY,EAAuB,CAC1D,YAAK,SAAS,KACZZ,EAAOY,EAAK,CACV,OAAQ,IAAM,CACZ,MAAMlf,EAAI,KAAK,SAAS,QAAQkf,CAAG,EAC/Blf,GAAK,GACF,KAAA,SAAS,OAAOA,EAAG,CAAC,CAC3B,CAEH,CAAA,CACH,EACOkf,CAAA,CAEX,CC1dO,MAAMC,GAAI3U,EAQV,SAASb,GAAMkK,EAAe,CAC7B,MAAAuL,EAAU,IAAIL,GACpB,OAAAlL,EAAGuL,CAAO,EACHA,EAAQ,QACjB,CASgB,SAAA7V,GAAgCuP,EAAsBzL,EAAgC,CAGpG,GAFAyL,EAAK,OAAOA,GAAO,SAAW,SAAS,cAAcA,CAAE,EAAIA,EACxDA,EAAA,UAAU,IAAI,WAAW,EACxB,CAACzL,EACD7C,EAAA,MAAMsO,EAAI,IAAI,UACP,MAAM,QAAQzL,CAAI,EAC3B7C,EAAE,MAAMsO,EAAI,CACV,KAAM,IACJ1H,GAAwB,CACtB,KAAM,QACN,SAAU/D,CACX,CAAA,CAAA,CACJ,UACQ2E,GAAW3E,CAAI,EAAG,CACrB,MAAA+R,EAAU,IAAIL,GACpB1R,EAAK+R,CAAO,EACZ5U,EAAE,MAAMsO,EAAI,CACV,KAAM,IACJ1H,GAAwB,CACtB,KAAM,QACN,SAAUgO,EAAQ,QACnB,CAAA,CAAA,CACJ,CAAA,MAED5U,EAAE,MAAMsO,EAAI,CACV,KAAM,IAAM1H,GAAY/D,CAAI,CAAA,CAC7B,CAEL,CAQO,SAASgS,GAAQvG,EAAsB,CAC5CA,EAAK,OAAOA,GAAO,SAAW,SAAS,cAAcA,CAAE,EAAIA,EACzDtO,EAAA,MAAMsO,EAAI,IAAI,CAClB,CAaO,SAASpQ,IAAS,CACvB8B,EAAE,OAAO,CACX","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]}
|