UNPKG

56.8 kBSource Map (JSON)View Raw
1{"version":3,"file":"preact.umd.js","sources":["../src/options.js","../src/create-element.js","../src/component.js","../src/render.js","../src/create-context.js","../src/constants.js","../src/util.js","../src/diff/children.js","../src/diff/props.js","../src/diff/index.js","../src/clone-element.js"],"sourcesContent":["/** @type {import('./internal').Options} */\nconst options = {};\n\nexport default options;\n","import options from './options';\nimport { assign } from './util';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tprops = assign({}, props);\n\n\tif (arguments.length>3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (let i=3; i<arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children!=null) {\n\t\tprops.children = children;\n\t}\n\n\t// \"type\" may be undefined during development. The check is needed so that\n\t// we can display a nice error message with our debug helpers\n\tif (type!=null && type.defaultProps!=null) {\n\t\tfor (let i in type.defaultProps) {\n\t\t\tif (props[i]===undefined) props[i] = type.defaultProps[i];\n\t\t}\n\t}\n\tlet ref = props.ref;\n\tlet key = props.key;\n\tif (ref!=null) delete props.ref;\n\tif (key!=null) delete props.key;\n\n\treturn createVNode(type, props, key, ref);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_lastDomChild: null,\n\t\t_component: null,\n\t\tconstructor: undefined\n\t};\n\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode => vnode!=null && vnode.constructor === undefined;\n\n/**\n * Coerce an untrusted value into a VNode\n * Specifically, this should be used anywhere a user could provide a boolean, string, or number where\n * a VNode or Component is desired instead\n * @param {boolean | string | number | import('./internal').VNode} possibleVNode A possible VNode\n * @returns {import('./internal').VNode | null}\n */\nexport function coerceToVNode(possibleVNode) {\n\tif (possibleVNode == null || typeof possibleVNode === 'boolean') return null;\n\tif (typeof possibleVNode === 'string' || typeof possibleVNode === 'number') {\n\t\treturn createVNode(null, possibleVNode, null, null);\n\t}\n\n\t// Clone vnode if it has already been used. ceviche/#57\n\tif (possibleVNode._dom!=null || possibleVNode._component!=null) {\n\t\tlet vnode = createVNode(possibleVNode.type, possibleVNode.props, possibleVNode.key, null);\n\t\tvnode._dom = possibleVNode._dom;\n\t\treturn vnode;\n\t}\n\n\treturn possibleVNode;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n\t// this.constructor // When component is functional component, this is reset to functional component\n\t// if (this.state==null) this.state = {};\n\t// this.state = {};\n\t// this._dirty = true;\n\t// this._renderCallbacks = []; // Only class components\n\n\t// Other properties that Component will have set later,\n\t// shown here as commented out for quick reference\n\t// this.base = null;\n\t// this._context = null;\n\t// this._vnode = null;\n\t// this._nextState = null; // Only class components\n\t// this._processingException = null; // Always read, set only when handling error\n\t// this._pendingError = null; // Always read, set only when handling error. This is used to indicate at diffTime to set _processingException\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s = (this._nextState!==this.state && this._nextState) || (this._nextState = assign({}, this.state));\n\n\t// if update() mutates state in-place, skip the copy:\n\tif (typeof update!=='function' || (update = update(s, this.props))) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update==null) return;\n\n\tif (this._vnode) {\n\t\tthis._force = false;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tthis._force = true;\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type === 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} c The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom,\n\t\tforce = component._force;\n\tcomponent._force = false;\n\tif (parentDom) {\n\t\tlet mounts = [];\n\t\tlet newDom = diff(parentDom, vnode, assign({}, vnode), component._context, parentDom.ownerSVGElement!==undefined, null, mounts, force, oldDom == null ? getDomSibling(vnode) : oldDom);\n\t\tcommitRoot(mounts, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet q = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb) => void}\n */\nconst defer = typeof Promise=='function' ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce = options.debounceRendering;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif ((!c._dirty && (c._dirty = true) && q.push(c) === 1) ||\n\t (prevDebounce !== options.debounceRendering)) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(options.debounceRendering || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet p;\n\tq.sort((a, b) => b._vnode._depth - a._vnode._depth);\n\twhile ((p=q.pop())) {\n\t\t// forceUpdate's callback argument is reused here to indicate a non-forced update.\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\tlet oldVNode = isHydrating ? null : replaceNode && replaceNode._children || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\tlet mounts = [];\n\tdiff(\n\t\tparentDom,\n\t\tisHydrating ? parentDom._children = vnode : (replaceNode || parentDom)._children = vnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? null\n\t\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tmounts,\n\t\tfalse,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating,\n\t);\n\tcommitRoot(mounts, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\n/**\n *\n * @param {any} defaultValue\n */\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (props.value !== _props.value) {\n\t\t\t\t\t\tctx[context._id].props.value = _props.value;\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\t// Check if still mounted\n\t\t\t\t\t\t\tif (c._parentDom) {\n\t\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\t\tenqueueRender(c);\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\tthis.sub = (c) => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\treturn context;\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { diff, unmount, applyRef } from './index';\nimport { coerceToVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} context The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} mounts The list of components\n * which have mounted\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(parentDom, newParentVNode, oldParentVNode, context, isSvg, excessDomChildren, mounts, oldDom, isHydrating) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t}\n\t\telse if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t}\n\t\telse {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti=0;\n\tnewParentVNode._children = toChildArray(newParentVNode._children, childVNode => {\n\n\t\tif (childVNode!=null) {\n\t\t\tchildVNode._parent = newParentVNode;\n\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t// (holes).\n\t\t\toldVNode = oldChildren[i];\n\n\t\t\tif (oldVNode===null || (oldVNode && childVNode.key == oldVNode.key && childVNode.type === oldVNode.type)) {\n\t\t\t\toldChildren[i] = undefined;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\tfor (j=0; j<oldChildrenLength; j++) {\n\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\tif (oldVNode && childVNode.key == oldVNode.key && childVNode.type === oldVNode.type) {\n\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\toldVNode = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\tnewDom = diff(parentDom, childVNode, oldVNode, context, isSvg, excessDomChildren, mounts, null, oldDom, isHydrating);\n\n\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t(refs || (refs=[])).push(j, childVNode._component || newDom, childVNode);\n\t\t\t}\n\n\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\tif (newDom!=null) {\n\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t}\n\n\t\t\t\tif (childVNode._lastDomChild != null) {\n\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t// have a non-null _lastDomChild. Continue the diff from the end of\n\t\t\t\t\t// this Fragment's DOM tree.\n\t\t\t\t\tnewDom = childVNode._lastDomChild;\n\n\t\t\t\t\t// Eagerly cleanup _lastDomChild. We don't need to persist the value because\n\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t// diffing Components and Fragments.\n\t\t\t\t\tchildVNode._lastDomChild = null;\n\t\t\t\t}\n\t\t\t\telse if (excessDomChildren==oldVNode || newDom!=oldDom || newDom.parentNode==null) {\n\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\touter: if (oldDom==null || oldDom.parentNode!==parentDom) {\n\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\t\t\t\tfor (sibDom=oldDom, j=0; (sibDom=sibDom.nextSibling) && j<oldChildrenLength; j+=2) {\n\t\t\t\t\t\t\tif (sibDom==newDom) {\n\t\t\t\t\t\t\t\tbreak outer;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Browsers will infer an option's `value` from `textContent` when\n\t\t\t\t\t// no value is present. This essentially bypasses our code to set it\n\t\t\t\t\t// later in `diff()`. It works fine in all browsers except for IE11\n\t\t\t\t\t// where it breaks setting `select.value`. There it will be always set\n\t\t\t\t\t// to an empty string. Re-applying an options value will fix that, so\n\t\t\t\t\t// there are probably some internal data structures that aren't\n\t\t\t\t\t// updated properly.\n\t\t\t\t\t//\n\t\t\t\t\t// To fix it we make sure to reset the inferred value, so that our own\n\t\t\t\t\t// value check in `diff()` won't be skipped.\n\t\t\t\t\tif (newParentVNode.type == 'option') {\n\t\t\t\t\t\tparentDom.value = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldDom = newDom.nextSibling;\n\n\t\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t\t// At this point, if childVNode._lastDomChild existed, then\n\t\t\t\t\t// newDom = childVNode._lastDomChild per line 101. Else it is\n\t\t\t\t\t// the same as childVNode._dom, meaning this component returned\n\t\t\t\t\t// only a single DOM node\n\t\t\t\t\tnewParentVNode._lastDomChild = newDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ti++;\n\t\treturn childVNode;\n\t});\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove children that are not part of any vnode.\n\tif (excessDomChildren!=null && typeof newParentVNode.type !== 'function') for (i=excessDomChildren.length; i--; ) if (excessDomChildren[i]!=null) removeNode(excessDomChildren[i]);\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i=oldChildrenLength; i--; ) if (oldChildren[i]!=null) unmount(oldChildren[i], oldChildren[i]);\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @param {(vnode: import('../internal').VNode) => import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {import('../internal').VNode[]} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children==null || typeof children === 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t}\n\telse if (Array.isArray(children)) {\n\t\tfor (let i=0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t}\n\telse {\n\t\tflattened.push(callback ? callback(coerceToVNode(children)) : children);\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (!(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif ((!hydrate || typeof newProps[i]=='function') && i!=='value' && i!=='checked' && oldProps[i]!==newProps[i]) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t}\n\telse {\n\t\tstyle[key] = typeof value==='number' && IS_NON_DIMENSIONAL.test(key)===false ? value+'px' : value==null ? '' : value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tname = isSvg ? (name==='className' ? 'class' : name) : (name==='class' ? 'className' : name);\n\n\tif (name==='key' || name === 'children') {}\n\telse if (name==='style') {\n\t\tconst s = dom.style;\n\n\t\tif (typeof value==='string') {\n\t\t\ts.cssText = value;\n\t\t}\n\t\telse {\n\t\t\tif (typeof oldValue==='string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) for (let i in oldValue) {\n\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) for (let i in value) {\n\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0]==='o' && name[1]==='n') {\n\t\tlet useCapture = name !== (name=name.replace(/Capture$/, ''));\n\t\tlet nameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t}\n\t\telse {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t}\n\telse if (\n\t\tname!=='list'\n\t\t&& name!=='tagName'\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\t&& name!=='form'\n\t\t&& !isSvg\n\t\t&& (name in dom)\n\t) {\n\t\tdom[name] = value==null ? '' : value;\n\t}\n\telse if (typeof value!=='function' && name!=='dangerouslySetInnerHTML') {\n\t\tif (name!==(name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value==null || value===false) {\n\t\t\t\tdom.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);\n\t\t\t}\n\t\t}\n\t\telse if (value==null || value===false) {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t\telse {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component, enqueueRender } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren, toChildArray } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} context The current context object\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} mounts A list of newly\n * mounted components\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diff(parentDom, newVNode, oldVNode, context, isSvg, excessDomChildren, mounts, force, oldDom, isHydrating) {\n\tlet tmp, newType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif (tmp = options._diff) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType==='function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && context[tmp._id];\n\t\t\tlet cctx = tmp ? (provider ? provider.props.value : tmp._defaultValue) : context;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, cctx); // eslint-disable-line new-cap\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, cctx);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = cctx;\n\t\t\t\tc._context = context;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState==null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps!=null) {\n\t\t\t\tassign(c._nextState==c.state ? (c._nextState = assign({}, c._nextState)) : c._nextState, newType.getDerivedStateFromProps(newProps, c._nextState));\n\t\t\t}\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (newType.getDerivedStateFromProps==null && c.componentWillMount!=null) c.componentWillMount();\n\t\t\t\tif (c.componentDidMount!=null) mounts.push(c);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (newType.getDerivedStateFromProps==null && force==null && c.componentWillReceiveProps!=null) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, cctx);\n\t\t\t\t}\n\n\t\t\t\tif (!force && c.shouldComponentUpdate!=null && c.shouldComponentUpdate(newProps, c._nextState, cctx)===false) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldDom!=null ? oldDom!==oldVNode._dom ? oldDom : oldVNode._dom : null;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) newVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t}\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate!=null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, cctx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\tc.context = cctx;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (tmp = options._render) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment = tmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = toChildArray(isTopLevelFragment ? tmp.props.children : tmp);\n\n\t\t\tif (c.getChildContext!=null) {\n\t\t\t\tcontext = assign(assign({}, context), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate!=null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(parentDom, newVNode, oldVNode, context, isSvg, excessDomChildren, mounts, oldDom, isHydrating);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\twhile (tmp=c._renderCallbacks.pop()) {\n\t\t\t\tif (c._nextState) { c.state = c._nextState; }\n\t\t\t\ttmp.call(c);\n\t\t\t}\n\n\t\t\t// Don't call componentDidUpdate on mount or when we bailed out via\n\t\t\t// `shouldComponentUpdate`\n\t\t\tif (!isNew && oldProps!=null && c.componentDidUpdate!=null) {\n\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tnewVNode._dom = diffElementNodes(oldVNode._dom, newVNode, oldVNode, context, isSvg, excessDomChildren, mounts, isHydrating);\n\t\t}\n\n\t\tif (tmp = options.diffed) tmp(newVNode);\n\t}\n\tcatch (e) {\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\nexport function commitRoot(mounts, root) {\n\tlet c;\n\twhile ((c = mounts.pop())) {\n\t\ttry {\n\t\t\tc.componentDidMount();\n\t\t}\n\t\tcatch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n\n\tif (options._commit) options._commit(root);\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} context The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} mounts An array of newly\n * mounted components\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(dom, newVNode, oldVNode, context, isSvg, excessDomChildren, mounts, isHydrating) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type==='svg' || isSvg;\n\n\tif (dom==null && excessDomChildren!=null) {\n\t\tfor (i=0; i<excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\t\t\tif (child!=null && (newVNode.type===null ? child.nodeType===3 : child.localName===newVNode.type)) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom==null) {\n\t\tif (newVNode.type===null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\t\tdom = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type) : document.createElement(newVNode.type);\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t}\n\n\tif (newVNode.type===null) {\n\t\tif (oldProps !== newProps) {\n\t\t\tif (excessDomChildren!=null) excessDomChildren[excessDomChildren.indexOf(dom)] = null;\n\t\t\tdom.data = newProps;\n\t\t}\n\t}\n\telse if (newVNode!==oldVNode) {\n\t\tif (excessDomChildren!=null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html!=oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = newHtml && newHtml.__html || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\tnewVNode._children = newVNode.props.children;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (!newHtml) {\n\t\t\tdiffChildren(dom, newVNode, oldVNode, context, newVNode.type==='foreignObject' ? false : isSvg, excessDomChildren, mounts, EMPTY_OBJ, isHydrating);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (('value' in newProps) && newProps.value!==undefined && newProps.value !== dom.value) dom.value = newProps.value==null ? '' : newProps.value;\n\t\t\tif (('checked' in newProps) && newProps.checked!==undefined && newProps.checked !== dom.checked) dom.checked = newProps.checked;\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref=='function') ref(value);\n\t\telse ref.current = value;\n\t}\n\tcatch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif (r = vnode.ref) {\n\t\tapplyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type !== 'function') {\n\t\tskipRemove = (dom = vnode._dom)!=null;\n\t}\n\n\tvnode._dom = vnode._lastDomChild = null;\n\n\tif ((r = vnode._component)!=null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif (r = vnode._children) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom!=null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} oldVNode The oldVNode of the vnode\n * that threw, if this VNode threw while diffing\n */\n(options)._catchError = function (error, vnode, oldVNode) {\n\n\t/** @type {import('../internal').Component} */\n\tlet component;\n\n\tfor (; vnode = vnode._parent;) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (component.constructor && component.constructor.getDerivedStateFromError!=null) {\n\t\t\t\t\tcomponent.setState(component.constructor.getDerivedStateFromError(error));\n\t\t\t\t}\n\t\t\t\telse if (component.componentDidCatch!=null) {\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\treturn enqueueRender(component._pendingError = component);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n};\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./index').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length>2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\treturn createVNode(vnode.type, props, props.key || vnode.key, props.ref || vnode.ref);\n}\n"],"names":["options","isValidElement","q","defer","prevDebounce","IS_HYDRATE","i","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","assign","obj","props","let","removeNode","node","parentNode","removeChild","createElement","type","children","ref","key","arguments","length","push","defaultProps","undefined","createVNode","vnode","_children","_parent","_depth","_dom","_lastDomChild","_component","constructor","Fragment","coerceToVNode","possibleVNode","Component","context","getDomSibling","childIndex","indexOf","sibling","updateParentDomPointers","child","base","enqueueRender","c","_dirty","debounceRendering","process","p","component","mounts","newDom","oldDom","parentDom","force","sort","a","b","_vnode","pop","_parentDom","_force","diff","_context","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","isSvg","excessDomChildren","isHydrating","j","oldVNode","sibDom","firstChildDom","refs","oldChildren","oldChildrenLength","toChildArray","childVNode","outer","appendChild","nextSibling","insertBefore","value","unmount","applyRef","callback","flattened","Array","isArray","diffProps","dom","newProps","oldProps","hydrate","setProperty","setStyle","style","test","name","oldValue","s","useCapture","nameLower","cssText","replace","toLowerCase","slice","addEventListener","eventProxy","_listeners","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","setAttribute","e","this","event","newVNode","tmp","isNew","oldState","snapshot","clearProcessingException","provider","cctx","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","prototype","render","doRender","sub","state","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","_render","getChildContext","getSnapshotBeforeUpdate","call","componentDidUpdate","diffElementNodes","diffed","_catchError","root","_commit","oldHtml","newHtml","nodeType","localName","document","createTextNode","createElementNS","data","childNodes","dangerouslySetInnerHTML","__html","innerHTML","checked","current","parentVNode","skipRemove","r","componentWillUnmount","replaceNode","_root","setState","update","forceUpdate","Promise","then","bind","resolve","setTimeout","error","getDerivedStateFromError","componentDidCatch","defaultValue","ctx","Consumer","Provider","subs","_props","some","old","splice"],"mappings":"gLACMA,ECsFOC,EC0ETC,EAMEC,EAWFC,EC7KEC,ECHKC,ECFEC,EAAY,GACZC,EAAY,GACZC,EAAqB,kECK3B,SAASC,EAAOC,EAAKC,OACtBC,IAAIP,KAAKM,EAAOD,EAAIL,GAAKM,EAAMN,YAU9B,SAASQ,EAAWC,OACtBC,EAAaD,EAAKC,WAClBA,GAAYA,EAAWC,YAAYF,GLTjC,SAASG,EAAcC,EAAMP,EAAOQ,GAApC,IAMId,EAWAA,EAINe,EACAC,iBArBJV,EAAQF,EAAO,GAAIE,GAEfW,UAAUC,OAAO,MACpBJ,EAAW,CAACA,GAEHd,EAAE,EAAGA,EAAEiB,UAAUC,OAAQlB,IACjCc,EAASK,KAAKF,EAAUjB,OAGZ,MAAVc,IACHR,EAAMQ,SAAWA,GAKR,MAAND,GAAiC,MAAnBA,EAAKO,iBACbpB,KAAKa,EAAKO,kBACHC,IAAXf,EAAMN,KAAgBM,EAAMN,GAAKa,EAAKO,aAAapB,WAIrDgB,EAAMV,EAAMU,IACP,OAFLD,EAAMT,EAAMS,aAEMT,EAAMS,IACnB,MAALC,UAAkBV,EAAMU,IAErBM,EAAYT,EAAMP,EAAOU,EAAKD,GAe/B,SAASO,EAAYT,EAAMP,EAAOU,EAAKD,OAGvCQ,EAAQ,MACbV,QACAP,MACAU,MACAD,EACAS,IAAW,KACXC,IAAS,KACTC,IAAQ,EACRC,IAAM,KACNC,EAAe,KACfC,IAAY,KACZC,iBAAaT,UAGV3B,EAAQ6B,OAAO7B,EAAQ6B,MAAMA,GAE1BA,EAOD,SAASQ,EAASzB,UACjBA,EAAMQ,SAiBP,SAASkB,EAAcC,MACR,MAAjBA,GAAkD,kBAAlBA,EAA6B,OAAO,QAC3C,iBAAlBA,GAAuD,iBAAlBA,SACxCX,EAAY,KAAMW,EAAe,KAAM,SAIvB,MAApBA,EAAcN,KAAwC,MAA1BM,EAAcJ,IAAkB,KAC3DN,EAAQD,EAAYW,EAAcpB,KAAMoB,EAAc3B,MAAO2B,EAAcjB,IAAK,aACpFO,EAAMI,IAAOM,EAAcN,IACpBJ,SAGDU,ECjGD,SAASC,EAAU5B,EAAO6B,QAC3B7B,MAAQA,OACR6B,QAAUA,EA4ET,SAASC,EAAcb,EAAOc,MAClB,MAAdA,SAEId,EAAME,IACVW,EAAcb,EAAME,IAASF,EAAME,IAAQD,IAAUc,QAAQf,GAAS,GACtE,aAGAgB,EACGF,EAAad,EAAMC,IAAUN,OAAQmB,OAG5B,OAFfE,EAAUhB,EAAMC,IAAUa,KAEa,MAAhBE,EAAQZ,WAIvBY,EAAQZ,UASY,mBAAfJ,EAAMV,KAAsBuB,EAAcb,GAAS,KA2BlE,SAASiB,EAAwBjB,GAAjC,IAGWvB,EACJyC,KAHyB,OAA1BlB,EAAQA,EAAME,MAAwC,MAApBF,EAAMM,IAAoB,KAChEN,EAAMI,IAAOJ,EAAMM,IAAWa,KAAO,KAC5B1C,EAAI,EAAGA,EAAIuB,EAAMC,IAAUN,OAAQlB,OAE9B,OADTyC,EAAQlB,EAAMC,IAAUxB,KACO,MAAdyC,EAAMd,IAAc,CACxCJ,EAAMI,IAAOJ,EAAMM,IAAWa,KAAOD,EAAMd,iBAKtCa,EAAwBjB,IA+B1B,SAASoB,EAAcC,KACvBA,EAAEC,MAAWD,EAAEC,KAAS,IAAuB,IAAdjD,EAAEuB,KAAKyB,IACzC9C,IAAiBJ,EAAQoD,qBAC7BhD,EAAeJ,EAAQoD,mBACtBpD,EAAQoD,mBAAqBjD,GAAOkD,IAKvC,SAASA,QACJC,EAxEoBC,EAOnBC,EACAC,EAPD5B,EACH6B,EACAC,EACAC,MAqED1D,EAAE2D,cAAMC,EAAGC,UAAMA,EAAEC,IAAOhC,IAAS8B,EAAEE,IAAOhC,MACpCsB,EAAEpD,EAAE+D,OAEPX,EAAEH,MArEFK,OAAAA,EACAC,OAAAA,EANJC,GADG7B,GADoB0B,EA4EOD,GA3ETU,KACN/B,IACf0B,EAAYJ,EAAUW,IACtBN,EAAQL,EAAUY,EACnBZ,EAAUY,GAAS,EACfR,IACCH,EAAS,GACTC,EAASW,EAAKT,EAAW9B,EAAOnB,EAAO,GAAImB,GAAQ0B,EAAUc,SAAsC1C,IAA5BgC,EAAUW,gBAA6B,KAAMd,EAAQI,EAAiB,MAAVF,EAAiBhB,EAAcb,GAAS6B,GAC/Ka,EAAWf,EAAQ3B,GAEf4B,GAAUC,GACbZ,EAAwBjB,KK7GpB,SAAS2C,EAAab,EAAWc,EAAgBC,EAAgBjC,EAASkC,EAAOC,EAAmBpB,EAAQE,EAAQmB,GAApH,IACFvE,EAAGwE,EAAGC,EAAUtB,EAAQuB,EAAQC,EAAeC,EAI/CC,EAAeT,GAAkBA,EAAe5C,KAActB,EAE9D4E,EAAoBD,EAAY3D,UAMhCkC,GAAUnD,IAEZmD,EADwB,MAArBkB,EACMA,EAAkB,GAEnBQ,EACC1C,EAAcgC,EAAgB,GAG9B,MAIXpE,EAAE,EACFmE,EAAe3C,IAAYuD,EAAaZ,EAAe3C,aAAWwD,MAEjD,MAAZA,EAAkB,IACrBA,EAAWvD,IAAU0C,EACrBa,EAAWtD,IAASyC,EAAezC,IAAS,EAQ7B,QAFf+C,EAAWI,EAAY7E,KAECyE,GAAYO,EAAWhE,KAAOyD,EAASzD,KAAOgE,EAAWnE,OAAS4D,EAAS5D,KAClGgE,EAAY7E,QAAKqB,WAKZmD,EAAE,EAAGA,EAAEM,EAAmBN,IAAK,KACnCC,EAAWI,EAAYL,KAGPQ,EAAWhE,KAAOyD,EAASzD,KAAOgE,EAAWnE,OAAS4D,EAAS5D,KAAM,CACpFgE,EAAYL,QAAKnD,QAGlBoD,EAAW,QAObtB,EAASW,EAAKT,EAAW2B,EAHzBP,EAAWA,GAAYxE,EAGwBkC,EAASkC,EAAOC,EAAmBpB,EAAQ,KAAME,EAAQmB,IAEnGC,EAAIQ,EAAWjE,MAAQ0D,EAAS1D,KAAOyD,IAC1CI,IAASA,EAAK,KAAKzD,KAAKqD,EAAGQ,EAAWnD,KAAcsB,EAAQ6B,GAIlD,MAAR7B,EAAc,IACI,MAAjBwB,IACHA,EAAgBxB,GAGe,MAA5B6B,EAAWpD,EAIduB,EAAS6B,EAAWpD,EAKpBoD,EAAWpD,EAAgB,UAEvB,GAAI0C,GAAmBG,GAAYtB,GAAQC,GAA6B,MAAnBD,EAAOzC,WAAkB,CAKlFuE,EAAO,GAAY,MAAR7B,GAAgBA,EAAO1C,aAAa2C,EAC9CA,EAAU6B,YAAY/B,OAElB,KAECuB,EAAOtB,EAAQoB,EAAE,GAAIE,EAAOA,EAAOS,cAAgBX,EAAEM,EAAmBN,GAAG,KAC3EE,GAAQvB,QACL8B,EAGR5B,EAAU+B,aAAajC,EAAQC,GAaL,UAAvBe,EAAetD,OAClBwC,EAAUgC,MAAQ,IAIpBjC,EAASD,EAAOgC,YAEkB,mBAAvBhB,EAAetD,OAKzBsD,EAAevC,EAAgBuB,WAKlCnD,IACOgF,IAGRb,EAAexC,IAAOgD,EAGC,MAAnBL,GAA0D,mBAAxBH,EAAetD,KAAqB,IAAKb,EAAEsE,EAAkBpD,OAAQlB,KAAiC,MAAtBsE,EAAkBtE,IAAUQ,EAAW8D,EAAkBtE,QAG1KA,EAAE8E,EAAmB9E,KAA2B,MAAhB6E,EAAY7E,IAAUsF,EAAQT,EAAY7E,GAAI6E,EAAY7E,OAG3F4E,MACE5E,EAAI,EAAGA,EAAI4E,EAAK1D,OAAQlB,IAC5BuF,EAASX,EAAK5E,GAAI4E,IAAO5E,GAAI4E,IAAO5E,IAchC,SAAS+E,EAAajE,EAAU0E,EAAUC,MAC/B,MAAbA,IAAmBA,EAAY,IAErB,MAAV3E,GAAsC,kBAAbA,EACxB0E,GAAUC,EAAUtE,KAAKqE,EAAS,YAElC,GAAIE,MAAMC,QAAQ7E,OACjBP,IAAIP,EAAE,EAAGA,EAAIc,EAASI,OAAQlB,IAClC+E,EAAajE,EAASd,GAAIwF,EAAUC,QAIrCA,EAAUtE,KAAKqE,EAAWA,EAASxD,EAAclB,IAAaA,UAGxD2E,ECxLD,SAASG,EAAUC,EAAKC,EAAUC,EAAU1B,EAAO2B,OACrDhG,MAECA,KAAK+F,EACH/F,KAAK8F,GACVG,EAAYJ,EAAK7F,EAAG,KAAM+F,EAAS/F,GAAIqE,OAIpCrE,KAAK8F,EACHE,GAA+B,mBAAbF,EAAS9F,IAAuB,UAAJA,GAAmB,YAAJA,GAAiB+F,EAAS/F,KAAK8F,EAAS9F,IAC1GiG,EAAYJ,EAAK7F,EAAG8F,EAAS9F,GAAI+F,EAAS/F,GAAIqE,GAKjD,SAAS6B,EAASC,EAAOnF,EAAKqE,GACd,MAAXrE,EAAI,GACPmF,EAAMF,YAAYjF,EAAKqE,GAGvBc,EAAMnF,GAAsB,iBAARqE,IAAmD,IAA/BlF,EAAmBiG,KAAKpF,GAAeqE,EAAM,KAAc,MAAPA,EAAc,GAAKA,EAYjH,SAASY,EAAYJ,EAAKQ,EAAMhB,EAAOiB,EAAUjC,GAAjD,IAKQkC,EAWkBvG,EAMHA,EAUjBwG,EACAC,KA9BM,SAFXJ,EAAOhC,EAAgB,cAAPgC,EAAqB,QAAUA,EAAgB,UAAPA,EAAiB,YAAcA,IAE1D,aAATA,QACf,GAAW,UAAPA,KACFE,EAAIV,EAAIM,MAEK,iBAARd,EACVkB,EAAEG,QAAUrB,MAER,IACkB,iBAAXiB,IACVC,EAAEG,QAAU,GACZJ,EAAW,MAGRA,EAAU,IAAStG,KAAKsG,EACrBjB,GAASrF,KAAKqF,GACnBa,EAASK,EAAGvG,EAAG,OAIbqF,EAAO,IAASrF,KAAKqF,EACnBiB,GAAYjB,EAAMrF,KAAOsG,EAAStG,IACtCkG,EAASK,EAAGvG,EAAGqF,EAAMrF,QAON,MAAVqG,EAAK,IAAsB,MAAVA,EAAK,IAC1BG,EAAaH,KAAUA,EAAKA,EAAKM,QAAQ,WAAY,KACrDF,EAAYJ,EAAKO,cACrBP,GAAQI,KAAaZ,EAAMY,EAAYJ,GAAMQ,MAAM,GAE/CxB,GACEiB,GAAUT,EAAIiB,iBAAiBT,EAAMU,EAAYP,IACrDX,EAAImB,IAAenB,EAAImB,EAAa,KAAKX,GAAQhB,GAGlDQ,EAAIoB,oBAAoBZ,EAAMU,EAAYP,IAIpC,SAAPH,GACU,YAAPA,GAGO,SAAPA,IACChC,GACAgC,KAAQR,EAEZA,EAAIQ,GAAe,MAAPhB,EAAc,GAAKA,EAER,mBAARA,GAA6B,4BAAPgB,IACjCA,KAAQA,EAAOA,EAAKM,QAAQ,WAAY,KAChC,MAAPtB,IAAuB,IAARA,EAClBQ,EAAIqB,kBAAkB,+BAAgCb,EAAKO,eAG3Df,EAAIsB,eAAe,+BAAgCd,EAAKO,cAAevB,GAGzD,MAAPA,IAAuB,IAARA,EACvBQ,EAAIuB,gBAAgBf,GAGpBR,EAAIwB,aAAahB,EAAMhB,IAU1B,SAAS0B,EAAWO,UACZC,KAAKP,EAAWM,EAAEzG,MAAMnB,EAAQ8H,MAAQ9H,EAAQ8H,MAAMF,GAAKA,GCpG5D,SAASxD,EAAKT,EAAWoE,EAAUhD,EAAUtC,EAASkC,EAAOC,EAAmBpB,EAAQI,EAAOF,EAAQmB,GAAvG,IACFmD,EAUE9E,EAAG+E,EAAO5B,EAAU6B,EAAUC,EAAUC,EACxChC,EAKAiC,EACAC,EAjBGC,EAAUR,EAAS5G,aAICQ,IAAzBoG,EAAS3F,YAA2B,OAAO,MAE3C4F,EAAMhI,EAAQwI,MAAOR,EAAID,OAG5BxC,EAAO,GAAqB,mBAAVgD,EAAsB,IAEnCnC,EAAW2B,EAASnH,MAKpByH,GADJL,EAAMO,EAAQE,cACQhG,EAAQuF,EAAIU,KAC9BJ,EAAON,EAAOK,EAAWA,EAASzH,MAAM+E,MAAQqC,EAAIW,IAAiBlG,EAGrEsC,EAAS5C,IAEZiG,GADAlF,EAAI6E,EAAS5F,IAAa4C,EAAS5C,KACNyG,IAAuB1F,EAAE2F,KAIlD,cAAeN,GAAWA,EAAQO,UAAUC,OAC/ChB,EAAS5F,IAAae,EAAI,IAAIqF,EAAQnC,EAAUkC,IAGhDP,EAAS5F,IAAae,EAAI,IAAIV,EAAU4D,EAAUkC,GAClDpF,EAAEd,YAAcmG,EAChBrF,EAAE6F,OAASC,GAERX,GAAUA,EAASY,IAAI/F,GAE3BA,EAAEtC,MAAQwF,EACLlD,EAAEgG,QAAOhG,EAAEgG,MAAQ,IACxBhG,EAAET,QAAU6F,EACZpF,EAAEmB,IAAW5B,EACbwF,EAAQ/E,EAAEC,KAAS,EACnBD,EAAEiG,IAAmB,IAIJ,MAAdjG,EAAEkG,MACLlG,EAAEkG,IAAalG,EAAEgG,OAEoB,MAAlCX,EAAQc,0BACX3I,EAAOwC,EAAEkG,KAAYlG,EAAEgG,MAAShG,EAAEkG,IAAa1I,EAAO,GAAIwC,EAAEkG,KAAelG,EAAEkG,IAAYb,EAAQc,yBAAyBjD,EAAUlD,EAAEkG,MAInInB,EACmC,MAAlCM,EAAQc,0BAAwD,MAAtBnG,EAAEoG,oBAA0BpG,EAAEoG,qBACnD,MAArBpG,EAAEqG,mBAAyB/F,EAAO/B,KAAKyB,OAEvC,IACkC,MAAlCqF,EAAQc,0BAAyC,MAAPzF,GAA4C,MAA7BV,EAAEsG,2BAC9DtG,EAAEsG,0BAA0BpD,EAAUkC,IAGlC1E,GAAkC,MAAzBV,EAAEuG,wBAAuF,IAAxDvG,EAAEuG,sBAAsBrD,EAAUlD,EAAEkG,IAAYd,GAAe,KAC7GpF,EAAEtC,MAAQwF,EACVlD,EAAEgG,MAAQhG,EAAEkG,IACZlG,EAAEC,KAAS,EACXD,EAAEc,IAAS+D,EACXA,EAAS9F,IAAe,MAARyB,EAAeA,IAASqB,EAAS9C,IAAOyB,EAASqB,EAAS9C,IAAO,KACjF8F,EAASjG,IAAYiD,EAASjD,IACzBkG,EAAM,EAAGA,EAAMD,EAASjG,IAAUN,OAAQwG,IAC1CD,EAASjG,IAAUkG,KAAMD,EAASjG,IAAUkG,GAAKjG,IAAUgG,SAE1DxC,EAGoB,MAAvBrC,EAAEwG,qBACLxG,EAAEwG,oBAAoBtD,EAAUlD,EAAEkG,IAAYd,OAIhDjC,EAAWnD,EAAEtC,MACbsH,EAAWhF,EAAEgG,MAEbhG,EAAET,QAAU6F,EACZpF,EAAEtC,MAAQwF,EACVlD,EAAEgG,MAAQhG,EAAEkG,KAERpB,EAAMhI,EAAQ2J,MAAS3B,EAAID,GAE/B7E,EAAEC,KAAS,EACXD,EAAEc,IAAS+D,EACX7E,EAAEgB,IAAaP,EAEfqE,EAAM9E,EAAE6F,OAAO7F,EAAEtC,MAAOsC,EAAEgG,MAAOhG,EAAET,SAEnCsF,EAASjG,IAAYuD,EADW,MAAP2C,GAAeA,EAAI7G,MAAQkB,GAAuB,MAAX2F,EAAI1G,IACb0G,EAAIpH,MAAMQ,SAAW4G,GAErD,MAAnB9E,EAAE0G,kBACLnH,EAAU/B,EAAOA,EAAO,GAAI+B,GAAUS,EAAE0G,oBAGpC3B,GAAoC,MAA3B/E,EAAE2G,0BACf1B,EAAWjF,EAAE2G,wBAAwBxD,EAAU6B,IAGhD1D,EAAab,EAAWoE,EAAUhD,EAAUtC,EAASkC,EAAOC,EAAmBpB,EAAQE,EAAQmB,GAE/F3B,EAAEF,KAAO+E,EAAS9F,IAEX+F,EAAI9E,EAAEiG,IAAiBlF,OACzBf,EAAEkG,MAAclG,EAAEgG,MAAQhG,EAAEkG,KAChCpB,EAAI8B,KAAK5G,GAKL+E,GAAmB,MAAV5B,GAAwC,MAAtBnD,EAAE6G,oBACjC7G,EAAE6G,mBAAmB1D,EAAU6B,EAAUC,GAGtCC,IACHlF,EAAE2F,IAAgB3F,EAAE0F,IAAuB,WAI5Cb,EAAS9F,IAAO+H,EAAiBjF,EAAS9C,IAAM8F,EAAUhD,EAAUtC,EAASkC,EAAOC,EAAmBpB,EAAQqB,IAG5GmD,EAAMhI,EAAQiK,SAAQjC,EAAID,GAE/B,MAAOH,GACN5H,EAAQkK,IAAYtC,EAAGG,EAAUhD,UAG3BgD,EAAS9F,IAGV,SAASsC,EAAWf,EAAQ2G,WAC9BjH,EACIA,EAAIM,EAAOS,WAEjBf,EAAEqG,oBAEH,MAAO3B,GACN5H,EAAQkK,IAAYtC,EAAG1E,EAAEc,KAIvBhE,EAAQoK,KAASpK,EAAQoK,IAAQD,GAiBtC,SAASH,EAAiB7D,EAAK4B,EAAUhD,EAAUtC,EAASkC,EAAOC,EAAmBpB,EAAQqB,GAA9F,IACKvE,EASIyC,EA+BHsH,EACAC,EAxCDjE,EAAWtB,EAASnE,MACpBwF,EAAW2B,EAASnH,SAGxB+D,EAAwB,QAAhBoD,EAAS5G,MAAgBwD,EAExB,MAALwB,GAAgC,MAAnBvB,MACXtE,EAAE,EAAGA,EAAEsE,EAAkBpD,OAAQlB,OAE1B,OADLyC,EAAQ6B,EAAkBtE,MACI,OAAhByH,EAAS5G,KAA+B,IAAjB4B,EAAMwH,SAAexH,EAAMyH,YAAYzC,EAAS5G,MAAO,CACjGgF,EAAMpD,EACN6B,EAAkBtE,GAAK,cAMjB,MAAL6F,EAAW,IACM,OAAhB4B,EAAS5G,YACLsJ,SAASC,eAAetE,GAEhCD,EAAMxB,EAAQ8F,SAASE,gBAAgB,6BAA8B5C,EAAS5G,MAAQsJ,SAASvJ,cAAc6G,EAAS5G,MAEtHyD,EAAoB,YAGD,OAAhBmD,EAAS5G,KACRkF,IAAaD,IACO,MAAnBxB,IAAyBA,EAAkBA,EAAkBhC,QAAQuD,IAAQ,MACjFA,EAAIyE,KAAOxE,GAGJ2B,IAAWhD,IACI,MAAnBH,IACHA,EAAoBpE,EAAU2G,MAAM2C,KAAK3D,EAAI0E,aAK1CR,GAFJhE,EAAWtB,EAASnE,OAASL,GAENuK,wBACnBR,EAAUlE,EAAS0E,wBAIlBjG,IACAyF,GAAWD,KAETC,GAAYD,GAAWC,EAAQS,QAAQV,EAAQU,SACnD5E,EAAI6E,UAAYV,GAAWA,EAAQS,QAAU,KAKhD7E,EAAUC,EAAKC,EAAUC,EAAU1B,EAAOE,GAE1CkD,EAASjG,IAAYiG,EAASnH,MAAMQ,SAG/BkJ,GACJ9F,EAAa2B,EAAK4B,EAAUhD,EAAUtC,EAAyB,kBAAhBsF,EAAS5G,MAAiCwD,EAAOC,EAAmBpB,EAAQjD,EAAWsE,GAIlIA,IACC,UAAWuB,QAA8BzE,IAAjByE,EAAST,OAAqBS,EAAST,QAAUQ,EAAIR,QAAOQ,EAAIR,MAAwB,MAAhBS,EAAST,MAAc,GAAKS,EAAST,OACrI,YAAaS,QAAgCzE,IAAnByE,EAAS6E,SAAuB7E,EAAS6E,UAAY9E,EAAI8E,UAAS9E,EAAI8E,QAAU7E,EAAS6E,WAInH9E,EASD,SAASN,EAASxE,EAAKsE,EAAO9D,OAEnB,mBAALR,EAAiBA,EAAIsE,GAC3BtE,EAAI6J,QAAUvF,EAEpB,MAAOiC,GACN5H,EAAQkK,IAAYtC,EAAG/F,IAYlB,SAAS+D,EAAQ/D,EAAOsJ,EAAaC,GAArC,IACFC,EAOAlF,EAqBM7F,KA3BNN,EAAQ4F,SAAS5F,EAAQ4F,QAAQ/D,IAEjCwJ,EAAIxJ,EAAMR,MACbwE,EAASwF,EAAG,KAAMF,GAIdC,GAAoC,mBAAfvJ,EAAMV,OAC/BiK,EAAiC,OAAnBjF,EAAMtE,EAAMI,MAG3BJ,EAAMI,IAAOJ,EAAMK,EAAgB,KAEP,OAAvBmJ,EAAIxJ,EAAMM,KAAmB,IAC7BkJ,EAAEC,yBAEJD,EAAEC,uBAEH,MAAO1D,GACN5H,EAAQkK,IAAYtC,EAAGuD,GAIzBE,EAAErI,KAAOqI,EAAEnH,IAAa,QAGrBmH,EAAIxJ,EAAMC,QACJxB,EAAI,EAAGA,EAAI+K,EAAE7J,OAAQlB,IACzB+K,EAAE/K,IAAIsF,EAAQyF,EAAE/K,GAAI6K,EAAaC,GAI9B,MAALjF,GAAWrF,EAAWqF,GAI3B,SAAS6C,EAASpI,EAAOsI,EAAOzG,UACxBoF,KAAKzF,YAAYxB,EAAO6B,GNxTzB,SAASsG,EAAOlH,EAAO8B,EAAW4H,GAAlC,IAGF1G,EACAE,EAGAvB,EANAxD,EAAQwL,KAAOxL,EAAQwL,IAAM3J,EAAO8B,GAGpCoB,GADAF,EAAc0G,IAAgBlL,GACL,KAAOkL,GAAeA,EAAYzJ,KAAa6B,EAAU7B,IACtFD,EAAQX,EAAcmB,EAAU,KAAM,CAACR,IAEnC2B,EAAS,GACbY,EACCT,EACAkB,EAAclB,EAAU7B,IAAYD,GAAS0J,GAAe5H,GAAW7B,IAAYD,EACnFkD,GAAYxE,EACZA,OAC8BoB,IAA9BgC,EAAUW,gBACViH,IAAgB1G,EACb,CAAC0G,GACDxG,EACC,KACAvE,EAAU2G,MAAM2C,KAAKnG,EAAUkH,YACnCrH,GACA,EACA+H,GAAehL,EACfsE,GAEDN,EAAWf,EAAQ3B,GHtCd7B,EAAU,GCsFHC,WAAiB4B,UAAgB,MAAPA,QAAqCF,IAAtBE,EAAMO,aChD5DI,EAAUsG,UAAU2C,SAAW,SAASC,EAAQ5F,OAE3Ce,EAAKgB,KAAKuB,MAAavB,KAAKqB,OAASrB,KAAKuB,MAAgBvB,KAAKuB,IAAa1I,EAAO,GAAImH,KAAKqB,SAG5E,mBAATwC,IAAwBA,EAASA,EAAO7E,EAAGgB,KAAKjH,UAC1DF,EAAOmG,EAAG6E,GAIC,MAARA,GAEA7D,KAAK7D,WACHG,GAAS,EACV2B,GAAU+B,KAAKsB,IAAiB1H,KAAKqE,GACzC7C,EAAc4E,QAShBrF,EAAUsG,UAAU6C,YAAc,SAAS7F,GACtC+B,KAAK7D,MAIJ8B,GAAU+B,KAAKsB,IAAiB1H,KAAKqE,QACpC3B,GAAS,EACdlB,EAAc4E,QAchBrF,EAAUsG,UAAUC,OAAS1G,EA6EzBnC,EAAI,GAMFC,EAAwB,mBAATyL,QAAsBA,QAAQ9C,UAAU+C,KAAKC,KAAKF,QAAQG,WAAaC,WAWxF5L,EAAeJ,EAAQoD,kBOiK1BpD,EAASkK,IAAc,SAAU+B,EAAOpK,EAAOkD,WAG3CxB,EAEG1B,EAAQA,EAAME,SACfwB,EAAY1B,EAAMM,OAAgBoB,EAAUqF,WAE3CrF,EAAUnB,aAA+D,MAAhDmB,EAAUnB,YAAY8J,yBAClD3I,EAAUkI,SAASlI,EAAUnB,YAAY8J,yBAAyBD,QAE9D,CAAA,GAAiC,MAA7B1I,EAAU4I,2BAClB5I,EAAU4I,kBAAkBF,UAKtBhJ,EAAcM,EAAUsF,IAAgBtF,GAEhD,MAAOqE,GACNqE,EAAQrE,QAKLqE,GNvWD5L,EAAaE,ECHRD,EAAI,uBD8CR,SAAiBuB,EAAO8B,GAC9BoF,EAAOlH,EAAO8B,EAAWtD,qDFyBnB,iBACC,oDSjED,SAAsBwB,EAAOjB,UACnCA,EAAQF,EAAOA,EAAO,GAAImB,EAAMjB,OAAQA,GACpCW,UAAUC,OAAO,IAAGZ,EAAMQ,SAAWZ,EAAU2G,MAAM2C,KAAKvI,UAAW,IAClEK,EAAYC,EAAMV,KAAMP,EAAOA,EAAMU,KAAOO,EAAMP,IAAKV,EAAMS,KAAOQ,EAAMR,sBNL3E,SAAuB+K,GAAvB,IACAC,EAAM,GAEN5J,EAAU,CACfiG,IAAK,OAASpI,IACdqI,IAAeyD,EACfE,kBAAS1L,EAAO6B,UACR7B,EAAMQ,SAASqB,IAEvB8J,kBAAS3L,OAED4L,gBADF3E,KAAK+B,kBACH4C,EAAO,QACR5C,kCACJyC,EAAI5J,EAAQiG,KAAOb,EACZwE,QAEH5C,+BAAwBgD,GACxB7L,EAAM+E,QAAU8G,EAAO9G,QAC1B0G,EAAI5J,EAAQiG,KAAK9H,MAAM+E,MAAQ8G,EAAO9G,MACtC6G,EAAKE,cAAKxJ,GAELA,EAAEgB,MACLhB,EAAET,QAAUgK,EAAO9G,MACnB1C,EAAcC,aAKb+F,aAAO/F,GACXsJ,EAAK/K,KAAKyB,OACNyJ,EAAMzJ,EAAEoI,qBACZpI,EAAEoI,gCACDkB,EAAKI,OAAOJ,EAAK5J,QAAQM,GAAI,GAC7ByJ,GAAOA,EAAI7C,KAAK5G,MAIZtC,EAAMQ,kBAIfqB,EAAQ6J,SAAS7D,YAAchG,EAExBA"}
\No newline at end of file